{"version":3,"file":"index.mjs","sources":["../../src/configs/tailwind-config.ts","../../node_modules/classnames/index.js","../../src/components/icon/assets/index.tsx","../../src/components/icon/icon.tsx","../../src/components/shared/icon-set/icon-set.tsx","../../src/utils/create-synthetic-event.ts","../../src/utils/debounce.ts","../../src/utils/get-date-string.ts","../../src/utils/normalizeText.ts","../../src/utils/string-to-boolean.ts","../../src/utils/expand-ref.ts","../../src/utils/async-trigger.ts","../../src/hooks/use-window-size.tsx","../../src/hooks/use-breakpoints-to-number.ts","../../src/components/accordion/accordion.tsx","../../src/components/accordion-group/accordion-group.tsx","../../src/components/anchor/anchor.tsx","../../src/components/tooltip/tooltip.tsx","../../src/components/button/button.tsx","../../src/components/avatar/interactive-avatar.tsx","../../src/components/avatar/non-interactive-avatar.tsx","../../src/components/avatar/avatar.tsx","../../src/components/dropdown/internals/internal-dropdown-context.tsx","../../src/components/dropdown/internals/internal-dropdown-filter-section.tsx","../../src/components/dropdown/internals/internal-dropdown-no-results.tsx","../../src/components/dropdown/internals/internal-dropdown-option.tsx","../../src/components/dropdown/internals/internal-dropdown-section.tsx","../../src/components/dropdown/internals/internal-dropdown-select-all-section.tsx","../../src/components/dropdown/internals/internal-dropdown.tsx","../../src/components/dropdown/internals/use-dropdown-state.tsx","../../src/components/dropdown/dropdown.tsx","../../src/components/dropdown/dropdown-section.tsx","../../src/components/dropdown/dropdown-option.tsx","../../src/components/avatar-group/visible-count-avatar-group.tsx","../../src/components/avatar-group/avatar-group.tsx","../../src/components/back-to-top/back-to-top.tsx","../../src/components/breadcrumb/desktop/breadcrumb-desktop.tsx","../../src/components/breadcrumb/mobile/breadcrumb-mobile.tsx","../../src/components/breadcrumb/breadcrumb.tsx","../../src/components/toggle-group/toggle-group.tsx","../../src/components/button-group/button-group.tsx","../../src/components/pill/pill.tsx","../../src/components/cards/shared/use-blocked-link.tsx","../../src/components/cards/card-article/card-article.tsx","../../src/components/cards/card-collection/card-collection.tsx","../../src/components/cards/card-emphasize/card-emphasize.tsx","../../src/components/link-wrapper/link-wrapper.tsx","../../src/components/cards/card-error/card-error.tsx","../../src/components/shared/bookmark-icon/bookmark-icon.tsx","../../src/components/cards/card-expandable/card-accordion/card-accordion.tsx","../../src/components/cards/card-expandable/card-expandable.tsx","../../src/components/cards/shared/use-blocked-link-v2.tsx","../../src/components/cards/card-frame/card-frame.tsx","../../src/components/cards/card-full-image/card-full-image.tsx","../../src/components/cards/card-hero-helper/card-hero-helper.tsx","../../src/components/cards/card-hero-index/card-hero-index.tsx","../../src/components/cards/card-hero-sitemap/card-hero-sitemap.tsx","../../src/components/cards/card-highlight/shared/inner-highlight-card.tsx","../../src/components/cards/card-highlight/card-highlight.tsx","../../src/components/cards/card-highlight-newsletter/card-highlight-newsletter.tsx","../../src/components/cards/card-highlight-single/card-highlight-single.tsx","../../src/components/cards/card-links/card-links.tsx","../../src/components/list/item.tsx","../../src/components/list/list.tsx","../../src/components/cards/card-no-results/card-no-results.tsx","../../src/components/cards/card-single/card-single.tsx","../../src/components/cards/card-topic/card-topic.tsx","../../src/components/cards/card-action/card-action-variants.ts","../../src/components/cards/card-action/card-action.tsx","../../src/components/cards/card-illustrative/card-illustrative-variants.ts","../../src/components/cards/card-illustrative/utils/image-utils.ts","../../src/components/cards/card-illustrative/card-illustrative.tsx","../../src/components/cards/card-general/variants.ts","../../src/components/cards/card-general/card-general.tsx","../../src/components/cards/status-card/status-card.tsx","../../src/components/shared/feedback/feedback.tsx","../../src/components/shared/helper-text/helper-text.tsx","../../src/components/checkbox/checkbox.tsx","../../src/components/cards/card-notification/card-notification.tsx","../../src/components/checkbox-group/checkbox-group.tsx","../../src/components/dialog/dialog.tsx","../../src/components/drawer/drawer.tsx","../../src/components/ratings/rating-buttons/rating-buttons.tsx","../../src/components/ratings/rating-icons/rating-icons.tsx","../../src/components/feedback/feedback.tsx","../../src/components/footer/shared-components/footer-brand-badge.tsx","../../src/components/footer/shared-components/footer-caption-partners.tsx","../../src/components/footer/shared-components/footer-social-useful-copyright.tsx","../../src/components/footer/shared-components/footer-main.tsx","../../src/components/footer/federated-footer/federated-footer-card.tsx","../../src/components/footer/federated-footer/federated-footer.tsx","../../src/components/footer/public-footer/public-footer-contacts.tsx","../../src/components/footer/public-footer/public-footer-highlight-card.tsx","../../src/components/footer/public-footer/public-footer-highlight-card-links.tsx","../../src/components/footer/public-footer/public-footer-highlight.tsx","../../src/components/footer/public-footer/public-footer-main-plus-card-links.tsx","../../src/components/footer/public-footer/public-footer.tsx","../../src/components/glossary-letters/glossary-letters.tsx","../../src/components/header/internals/context/data-context/header-data-context.tsx","../../src/components/header/general-bar/areas/area.tsx","../../src/components/header/general-bar/areas/areas.tsx","../../src/components/header/general-bar/general-bar.tsx","../../src/components/header/internals/context/data-context/utils/areas-utils.ts","../../src/components/header/general-bar/authenticated/authenticated-footer-action.tsx","../../src/components/header/general-bar/authenticated/authenticated-header.tsx","../../src/components/header/general-bar/authenticated/authenticated.tsx","../../src/components/header/general-bar/authenticated/authenticated-body.tsx","../../src/components/header/general-bar/authenticated/authenticated-body-link.tsx","../../src/components/header/general-bar/authenticated/authenticated-footer.tsx","../../src/components/header/internals/context/data-context/utils/authenticated-utils.ts","../../src/components/header/brand/brand.tsx","../../src/components/header/brand/institutional.tsx","../../src/components/header/brand/logo.tsx","../../src/components/header/internals/context/data-context/utils/brand-utils.ts","../../src/components/header/internals/context/data-context/utils/general-utils.ts","../../src/components/header/general-bar/languages/language.tsx","../../src/components/header/general-bar/languages/languages.tsx","../../src/components/header/internals/context/data-context/utils/languages-utils.ts","../../src/components/header/navigation-bar/navigation-bar.tsx","../../src/components/header/navigation-bar/navigation-freestyle.tsx","../../src/components/header/navigation-bar/navigation-link.tsx","../../src/components/header/navigation-bar/navigation-root.tsx","../../src/components/header/internals/context/data-context/utils/navigation-utils.ts","../../src/components/header/general-bar/search/custom-search.tsx","../../src/components/header/general-bar/search/default-search.tsx","../../src/components/header/general-bar/search/search.tsx","../../src/components/header/general-bar/search/search-input-container.tsx","../../src/components/header/general-bar/search/search-related-link.tsx","../../src/components/header/general-bar/search/search-related-links.tsx","../../src/components/header/general-bar/search/search-related-links-title.tsx","../../src/components/header/general-bar/search/search-title.tsx","../../src/components/input-search-bar/equalizer/equalizer.tsx","../../src/components/input-search-bar/input-search-bar.tsx","../../src/components/header/internals/context/data-context/utils/search-utils.ts","../../src/components/header/general-bar/unauthenticated/unauthenticated.tsx","../../src/components/header/general-bar/unauthenticated/unauthenticated-link.tsx","../../src/components/header/internals/context/data-context/utils/unauthenticated-utils.ts","../../src/components/header/general-bar/direct-link/direct-link.tsx","../../src/components/header/general-bar/direct-link/direct-link-go-back.tsx","../../src/components/header/general-bar/direct-link/direct-link-title.tsx","../../src/components/header/general-bar/direct-link/direct-link-short-description.tsx","../../src/components/header/general-bar/direct-link/direct-link-section-title.tsx","../../src/components/header/general-bar/direct-link/direct-link-anchor.tsx","../../src/components/header/internals/context/menu-context/header-menu-context.tsx","../../src/components/header/internals/context/menu-context/menu-type.enum.ts","../../src/components/header/internals/general-bar/direct-link/internal-direct-link-go-back.tsx","../../src/components/header/internals/general-bar/direct-link/internal-direct-link-title.tsx","../../src/components/header/internals/general-bar/direct-link/internal-direct-link-short-description.tsx","../../src/components/header/internals/general-bar/direct-link/internal-direct-link-section-title.tsx","../../src/components/header/internals/general-bar/direct-link/internal-direct-link-anchor.tsx","../../src/components/header/internals/context/data-context/utils/direct-link-utils.tsx","../../src/components/header/internals/context/data-context/header-data-controller.tsx","../../src/components/header/internals/context/external-context/header-external-controller.tsx","../../src/components/header/internals/shared/hooks/use-scrolling.tsx","../../src/components/header/internals/context/menu-context/header-menu-controller.tsx","../../src/components/header/internals/shared/custom-header-link/custom-header-link.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-body.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-footer.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated-drawer-header.tsx","../../src/components/header/internals/general-bar/authenticated/Internal-authenticated-drawer.tsx","../../src/components/header/internals/shared/panel-menu/panel-menu.tsx","../../src/components/header/navigation-bar/related-navigation-link.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger.tsx","../../src/components/header/internals/shared/institutional/internal-institutional.tsx","../../src/components/header/internals/general-bar/areas/internal-area.tsx","../../src/components/header/internals/general-bar/areas/internal-areas.tsx","../../src/components/header/internals/general-bar/authenticated/internal-authenticated.tsx","../../src/components/header/internals/general-bar/languages/internal-language.tsx","../../src/components/header/internals/general-bar/languages/internal-languages-layout.tsx","../../src/components/header/internals/general-bar/languages/internal-languages.tsx","../../src/components/header/internals/general-bar/search/internal-custom-search-layout.tsx","../../src/components/header/internals/general-bar/search/internal-search-layout.tsx","../../src/components/header/internals/general-bar/search/internal-search.tsx","../../src/components/header/internals/general-bar/unauthenticated/internal-unauthenticated-layout.tsx","../../src/components/header/internals/general-bar/unauthenticated/internal-unauthenticated.tsx","../../src/components/header/internals/general-bar/direct-link/internal-direct-link.tsx","../../src/components/header/internals/general-bar/internal-general-bar.tsx","../../src/components/header/internals/navigation-bar/logo/internal-logo.tsx","../../src/components/header/internals/navigation-bar/navigation-list/internal-navigation-link-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-list/internal-navigation-list.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-context.tsx","../../src/components/header/internals/shared/modal-menu/modal-menu.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-modal-content.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-modal-navbar.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-navigation-modal-layout.tsx","../../src/components/header/internals/navigation-bar/navigation-modal/internal-navigation-modal.tsx","../../src/components/header/internals/navigation-bar/internal-navigation-bar.tsx","../../src/components/header/internals/internal-header.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-dialog.tsx","../../src/components/header/internals/shared/custom-modal/custom-modal-provider.tsx","../../src/components/header/header.tsx","../../src/components/input-date/contexts/date-picker-state.context.tsx","../../src/components/input-date/utils/is-same-day.ts","../../src/components/input-date/utils/get-closest-available-day.ts","../../src/components/input-date/utils/start-end-dates-comparators.ts","../../src/components/input-date/contexts/use-date-picker-state-context.tsx","../../src/components/input-date/utils/is-date-in-same-month.ts","../../src/components/input-date/utils/is-day-on-array.ts","../../src/components/input-date/utils/parse-input-date.ts","../../src/components/input-date/date-picker-dropdown-body/date-picker-dropdown-body.tsx","../../src/components/input-date/date-picker-dropdown-footer/date-picker-dropdown-footer.tsx","../../src/components/input-date/date-picker-dropdown-header/date-picker-dropdown-header.tsx","../../src/components/input-date/date-picker-dropdown.tsx","../../src/components/input-date/utils/parse-date.ts","../../src/components/input-date/date-text/date-text.tsx","../../src/components/input-date/input-date.tsx","../../src/components/input-email-bar/input-email-bar.tsx","../../src/components/input-number/input-number.tsx","../../src/components/input-password/input-password.tsx","../../src/components/input-phone/resources/config.ts","../../src/components/input-phone/input-phone.tsx","../../src/components/input-range/input-range.tsx","../../src/components/input-search/input-search.tsx","../../src/components/input-select/input-select.tsx","../../src/components/input-text/input-text.tsx","../../src/components/input-textarea/input-textarea.tsx","../../src/components/input-time/utils/format-time.ts","../../src/components/input-time/contexts/time-input-state.context.tsx","../../src/components/input-time/time-text/time-text.tsx","../../src/components/toggle/toggle.tsx","../../src/components/input-time/time-picker-dropdown-body/time-picker-dropdown-body.tsx","../../src/components/input-time/time-picker-dropdown-footer/time-picker-dropdown-footer.tsx","../../src/components/input-time/time-picker-dropdown.tsx","../../src/components/input-time/input-time.tsx","../../src/components/loader-dialog/loader-dialog.tsx","../../src/components/loader-dialog/loader-dialog-context.tsx","../../src/components/loader-dialog/loader-provider.tsx","../../src/components/modal-dialog/modal-context.tsx","../../src/components/modal-dialog/modal-dialog.tsx","../../src/components/modal-dialog/modal-provider.tsx","../../src/components/panel-switcher/helper.tsx","../../src/components/panel-switcher/desktop/panel-switcher-desktop.tsx","../../src/components/panel-switcher/mobile/panel-switcher-mobile.tsx","../../src/components/panel-switcher/panel-switcher-container.tsx","../../src/components/tabs/tab-body.tsx","../../src/components/tabs/tab-header.tsx","../../src/components/tabs/tab.tsx","../../src/components/tabs/desktop/tabs-desktop.tsx","../../src/components/tabs/mobile/tabs-mobile.tsx","../../src/components/tabs/tabs.tsx","../../src/components/panel-switcher/panel-switcher.tsx","../../src/components/popup-dialog/popup-context.tsx","../../src/components/popup-dialog/popup-dialog.tsx","../../src/components/popup-dialog/popup-provider.tsx","../../src/components/progress-bar/progress-bar.tsx","../../src/components/progress-bar-group/progress-bar-group.tsx","../../src/components/radio/radio.tsx","../../src/components/quiz/quiz-option/quiz-option.tsx","../../src/components/quiz/quiz-options/quiz-options.tsx","../../src/components/quiz/quiz-item-summary/quiz-item-summary.tsx","../../src/components/radio-button-group/radio-button-group.tsx","../../src/components/scribbles/assets/index.tsx","../../src/components/scribbles/scribbles.tsx","../../src/components/search-pagination/search-page.tsx","../../src/components/search-pagination/search-pagination-number-overlay.tsx","../../src/components/search-pagination/search-pagination.tsx","../../src/components/sidebar/utils/openOnCurrentItem.ts","../../src/components/sidebar/sidebar-item-navigation-mobile/sidebar-item-navigation-mobile.tsx","../../src/components/sidebar/sidebar.tsx","../../src/components/sidebar/utils/setIconsExpandCollapsed.ts","../../src/components/sidebar/utils/setInitialSidebarItem.ts","../../src/components/sidebar/utils/toggleSidebarItem.ts","../../src/components/sidebar/utils/toggleSidebarItemChildren.ts","../../src/components/sidebar/sidebar-filter/sidebar-item-filter.tsx","../../src/components/sidebar/utils/getParentTreeItem.ts","../../src/components/sidebar/utils/navigationSidebarItemHandler.ts","../../src/components/sidebar/utils/toggleExpandAllSiblingItems.ts","../../src/components/sidebar/utils/keyboardSidebarItemHandlers.ts","../../src/components/sidebar/sidebar-navigation/sidebar-item-navigation.tsx","../../src/components/sidebar/sidebar-item.tsx","../../src/components/skip-navigation/skip-navigation-multiple.tsx","../../src/components/skip-navigation/skip-navigation-single.tsx","../../src/components/skip-navigation/skip-navigation.tsx","../../src/components/step-list/step-list.tsx","../../src/components/stepper/step.tsx","../../src/components/stepper/stepper.tsx","../../src/components/switch/switch.tsx","../../src/components/table/table-body.tsx","../../src/components/table/table-caption.tsx","../../src/components/table/table-cell.tsx","../../src/components/table/table-footer.tsx","../../src/components/table/table-header.tsx","../../src/components/table/table-header-cell.tsx","../../src/components/table/table-row.tsx","../../src/components/table/table-pagination.tsx","../../src/components/table/table.tsx","../../src/components/table/table-selection-cell.tsx","../../src/components/table/table-selection-header-cell.tsx","../../src/components/tag/tag.tsx","../../src/components/timelines/shared/timeline-event/timeline-event.tsx","../../src/components/timelines/shared/timeline-event-vertical/timeline-event-vertical.tsx","../../src/components/timelines/timeline-vertical/timeline-vertical.tsx","../../src/components/timelines/timeline-horizontal/timeline-horizontal.tsx","../../src/components/toasts/toast-context.tsx","../../src/components/toasts/toast.tsx","../../src/components/toasts/use-toast.ts","../../src/components/toasts/toast-provider.tsx","../../src/components/uploader/shared/file-list.tsx","../../src/components/uploader/shared/use-file-upload.tsx","../../src/components/uploader/button-uploader/button-uploader.tsx","../../src/components/uploader/drag-and-drop-uploader/drag-and-drop-uploader.tsx","../../src/components/footer-v2/helpers.ts","../../src/components/footer-v2/footer.tsx","../../src/components/footer-v2/logo-section/logo-section-container/logo-section-container.tsx","../../src/components/footer-v2/logo-section/logo-section-freestyle/logo-section-freestyle.tsx","../../src/components/footer-v2/logo-section/logo-section-main-logo/logo-section-main-logo.tsx","../../src/components/footer-v2/logo-section/logo-section-accessibility-logo/logo-section-accessibility-logo.tsx","../../src/components/footer-v2/financing-section/financing-section-container.tsx","../../src/components/footer-v2/links-section/links-section-container/links-section-container.tsx","../../src/components/footer-v2/links-section/links-section-social-links/links-section-social-links.tsx","../../src/components/footer-v2/links-section/links-section-related-links/links-section-related-links.tsx","../../src/components/footer-v2/links-section/links-section-related-links/links-section-related-links-copyright/links-section-related-links-copyright.tsx","../../src/components/footer-v2/links-section/links-section-social-links/links-section-social-links-label/links-section-social-links-label.tsx","../../src/components/footer-v2/shared/footer-disclaimer/footer-disclaimer.tsx","../../src/components/footer-v2/shared/footer-generic-logo/footer-generic-logo.tsx","../../src/components/footer-v2/shared/footer-link/footer-link.tsx","../../src/components/navigation-rail/helper.ts","../../src/components/navigation-rail/navigation-rail.tsx","../../src/components/navigation-rail/components/expand-button/expand-button.tsx","../../src/components/navigation-rail/components/expand-button-outside/expand-button-outside.tsx","../../src/components/navigation-rail/components/navigation-rail-anchor/navigation-rail-anchor.tsx","../../src/components/navigation-rail/components/action-button/action-button.tsx","../../src/components/navigation-rail/components/navigation-rail-drawer/navigation-rail-drawer.tsx","../../src/components/ecosystem-bar/helper.ts","../../src/utils/get-children.ts","../../src/components/ecosystem-bar/ecosystem-bar.tsx","../../src/components/ecosystem-bar/components/ecosystem-bar-button/ecosystem-bar-button.tsx","../../src/components/ecosystem-bar/components/ecosystem-bar-content/ecosystem-bar-content.tsx"],"sourcesContent":["import type { Config } from 'tailwindcss';\r\nimport { PluginAPI } from 'tailwindcss/types/config';\r\n\r\nconst AgoraTailwindConfig = {\r\n  content: [],\r\n  theme: {\r\n    extend: {\r\n      borderWidth: {\r\n        DEFAULT: '1px',\r\n        0: '0',\r\n        1: '1px',\r\n        2: '2px',\r\n        3: '3px',\r\n        4: '4px'\r\n      },\r\n      content: {\r\n        empty: \"''\"\r\n      },\r\n      gridTemplateRows: {\r\n        7: 'repeat(7, minmax(0, 1fr))',\r\n        8: 'repeat(8, minmax(0, 1fr))',\r\n        9: 'repeat(9, minmax(0, 1fr))',\r\n        10: 'repeat(10, minmax(0, 1fr))'\r\n      },\r\n      gridTemplateColumns: {\r\n        '1-auto': 'auto',\r\n        '2-auto': 'auto auto',\r\n        '3-auto': 'auto auto auto',\r\n        '4-auto': 'auto auto auto auto',\r\n        '5-auto': 'auto auto auto auto auto',\r\n        '6-auto': 'auto auto auto auto auto auto',\r\n        '7-auto': 'auto auto auto auto auto auto auto',\r\n        '8-auto': 'auto auto auto auto auto auto auto auto',\r\n        '9-auto': 'auto auto auto auto auto auto auto auto auto',\r\n        '10-auto': 'auto auto auto auto auto auto auto auto auto auto',\r\n        '11-auto': 'auto auto auto auto auto auto auto auto auto auto auto',\r\n        '12-auto': 'auto auto auto auto auto auto auto auto auto auto auto auto'\r\n      },\r\n      opacity: {\r\n        16: '0.16',\r\n        32: '0.32'\r\n      },\r\n      minWidth: {\r\n        initial: 'initial'\r\n      },\r\n      maxWidth: {\r\n        initial: 'initial'\r\n      },\r\n      minHeight: {\r\n        initial: 'initial'\r\n      },\r\n      maxHeight: {\r\n        initial: 'initial'\r\n      },\r\n      zIndex: {\r\n        dropdown: '1000',\r\n        backdrop: '2000',\r\n        sticky: '3000',\r\n        fixed: '4000',\r\n        drawer: '5000',\r\n        dialog: '6000',\r\n        toast: '7000',\r\n        tooltip: '8000'\r\n      }\r\n    },\r\n    screens: {\r\n      xs: '360px',\r\n      md: '768px',\r\n      xl: '1280px'\r\n    },\r\n    fontFamily: {\r\n      sans: ['Noto Sans', 'sans-serif']\r\n    },\r\n    fontSize: {\r\n      'base': '16px',\r\n      // Typography / S\r\n      's-regular': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '400' }],\r\n      's-medium': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '500' }],\r\n      's-semibold': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '600' }],\r\n      's-bold': ['0.875rem', { lineHeight: '1.5rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / M\r\n      'm-light': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'm-regular': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'm-medium': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'm-semibold': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'm-bold': ['1rem', { lineHeight: '1.75rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / L\r\n      'l-light': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'l-regular': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'l-medium': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'l-semibold': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'l-bold': ['1.25rem', { lineHeight: '2rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / XL\r\n      'xl-light': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '300' }],\r\n      'xl-regular': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '400' }],\r\n      'xl-medium': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '500' }],\r\n      'xl-semibold': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '600' }],\r\n      'xl-bold': ['1.5rem', { lineHeight: '2.25rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / 2XL\r\n      '2xl-light': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '300' }],\r\n      '2xl-regular': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '400' }],\r\n      '2xl-medium': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '500' }],\r\n      '2xl-semibold': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '600' }],\r\n      '2xl-bold': ['2rem', { lineHeight: '3rem', letterSpacing: '0', fontWeight: '700' }],\r\n      // Typography / 3XL\r\n      '3xl-light': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '300' }],\r\n      '3xl-regular': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '400' }],\r\n      '3xl-medium': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '500' }],\r\n      '3xl-semibold': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '600' }],\r\n      '3xl-bold': ['2.5rem', { lineHeight: '3.75rem', letterSpacing: '0', fontWeight: '700' }]\r\n    },\r\n    borderRadius: {\r\n      none: '0px',\r\n      4: '4px',\r\n      8: '8px',\r\n      16: '16px',\r\n      24: '24px',\r\n      32: '32px',\r\n      full: '100%'\r\n    },\r\n    colors: {\r\n      transparent: 'transparent',\r\n      white: '#FFFFFF',\r\n      black: '#000000',\r\n      focus: '#F408FC',\r\n      backdrop: 'rgba(43, 54, 60, 0.96)',\r\n      mask: {\r\n        'image': 'rgba(43, 54, 60, 0.8)',\r\n        'neutral-900': '#2B363CCC',\r\n        'primary-900': '#021C51CC',\r\n        'secondary-900': '#0D4C75CC'\r\n      },\r\n      neutral: {\r\n        50: '#F7F8FA',\r\n        100: '#F1F3F8',\r\n        200: '#E1E4EA',\r\n        300: '#CDD2DC',\r\n        400: '#BAC0CC',\r\n        500: '#9CA6B8',\r\n        600: '#8893AA',\r\n        700: '#64718B',\r\n        800: '#475164',\r\n        900: '#2B363C'\r\n      },\r\n      primary: {\r\n        50: '#FAFCFF',\r\n        100: '#F2F6FF',\r\n        200: '#E5EEFF',\r\n        300: '#BBD1FD',\r\n        400: '#5F93FC',\r\n        500: '#1A65FA',\r\n        600: '#034AD8',\r\n        700: '#0338A2',\r\n        800: '#002B82',\r\n        900: '#021C51'\r\n      },\r\n      secondary: {\r\n        50: '#F5FBFF',\r\n        100: '#EBF6FF',\r\n        200: '#E3F4FF',\r\n        300: '#CCEAFF',\r\n        400: '#A0D8FE',\r\n        500: '#1CA3FC',\r\n        600: '#1993E3',\r\n        700: '#1682CA',\r\n        800: '#12669E',\r\n        900: '#0D4C75'\r\n      },\r\n      informative: {\r\n        50: '#E5F6FF',\r\n        100: '#E5F6FF',\r\n        200: '#A5DEFF',\r\n        300: '#77CEFF',\r\n        400: '#49BCFF',\r\n        500: '#0079BF',\r\n        600: '#00598C',\r\n        700: '#0B486B',\r\n        800: '#083752',\r\n        900: '#00121C'\r\n      },\r\n      success: {\r\n        50: '#E5FFF6',\r\n        100: '#C2F2E2',\r\n        200: '#7ACCB1',\r\n        300: '#36B289',\r\n        400: '#1F9970',\r\n        500: '#008558',\r\n        600: '#00724C',\r\n        700: '#005539',\r\n        800: '#013926',\r\n        900: '#001C13'\r\n      },\r\n      warning: {\r\n        50: '#FFF9E5',\r\n        100: '#FFF2CC',\r\n        200: '#FFE699',\r\n        300: '#FFE699',\r\n        400: '#FFD966',\r\n        500: '#FBCB3C',\r\n        600: '#FBBB3C',\r\n        700: '#F2A222',\r\n        800: '#B06112',\r\n        900: '#80460D'\r\n      },\r\n      danger: {\r\n        50: '#FEF1F2',\r\n        100: '#FEE1E3',\r\n        200: '#FEC8CC',\r\n        300: '#FCA6AD',\r\n        400: '#F8727D',\r\n        500: '#DE2D3B',\r\n        600: '#D12332',\r\n        700: '#C41826',\r\n        800: '#B20917',\r\n        900: '#86131D'\r\n      }\r\n    },\r\n    spacing: {\r\n      0: '0px',\r\n      8: '8px',\r\n      16: '16px',\r\n      24: '24px',\r\n      32: '32px',\r\n      40: '40px',\r\n      48: '48px',\r\n      56: '56px',\r\n      64: '64px',\r\n      72: '72px',\r\n      80: '80px',\r\n      88: '88px',\r\n      96: '96px',\r\n      104: '104px',\r\n      112: '112px',\r\n      120: '120px',\r\n      128: '128px',\r\n      256: '256px',\r\n      '1/4': '25%',\r\n      '1/2': '50%',\r\n      'full': '100%',\r\n      'initial': 'initial'\r\n    },\r\n    boxShadow: {\r\n      'none': '0 0 #0000',\r\n      'top-lower': '0px -4px 4px 0px rgba(0, 0, 0, 0.16)',\r\n      'top-low': '0px -8px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'top-medium': '0px -16px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'top-high': '0px -16px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'top-higher': '0px -16px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'center-lower': '0px 0px 4px 0px rgba(0, 0, 0, 0.32)',\r\n      'center-low': '0px 0px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'center-medium': '0px 0px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'center-high': '0px 0px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'center-higher': '0px 0px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'bottom-lower': '0px 4px 4px 0px rgba(0, 0, 0, 0.16)',\r\n      'bottom-low': '0px 8px 8px 0px rgba(0, 0, 0, 0.08)',\r\n      'bottom-medium': '0px 16px 16px 0px rgba(0, 0, 0, 0.08)',\r\n      'bottom-high': '0px 16px 16px 0px rgba(0, 0, 0, 0.16)',\r\n      'bottom-higher': '0px 16px 16px 0px rgba(0, 0, 0, 0.32)',\r\n      'inner': '0px 4px 4px 0px rgba(0, 0, 0, 0.32) inset'\r\n    },\r\n    transitionDuration: {\r\n      DEFAULT: '200ms'\r\n    },\r\n    container: {\r\n      padding: {\r\n        xs: '32px',\r\n        md: '64px',\r\n        xl: '0px'\r\n      }\r\n    }\r\n  },\r\n  plugins: [\r\n    // Override to class .container max-screen resolution\r\n    ({ addComponents }: PluginAPI) => {\r\n      addComponents({\r\n        '.container': {\r\n          maxWidth: '1216px'\r\n        }\r\n      });\r\n    },\r\n\r\n    // Function to use variable colors inside css\r\n    // Ex: var(--color-primary-100)\r\n    function ({ addBase, theme }: PluginAPI) {\r\n      interface ColorObject {\r\n        [key: string]: string;\r\n      }\r\n\r\n      function extractColorVars(colorObj: ColorObject, colorGroup = ''): ColorObject {\r\n        return Object.keys(colorObj).reduce((vars, colorKey) => {\r\n          const value = colorObj[colorKey];\r\n\r\n          if (typeof value === 'string') {\r\n            return {\r\n              ...vars,\r\n              [`--color${colorGroup}-${colorKey}`]: value\r\n            } as ColorObject;\r\n          }\r\n\r\n          const extractedColorVar = extractColorVars(value, `-${colorKey}`);\r\n\r\n          return { ...vars, ...extractedColorVar } as ColorObject;\r\n        }, {});\r\n      }\r\n\r\n      addBase({\r\n        ':root, :host, ::backdrop': extractColorVars(theme('colors'))\r\n      });\r\n    }\r\n  ],\r\n  safelist: [\r\n    {\r\n      //pattern to be able to dynamically build stories in which we change the DOM\r\n      pattern: /(border|bg|fill|text|stroke|gap)-[^/]+$/,\r\n      variants: ['hover', 'focus', 'xs', 'md', 'xl']\r\n    }\r\n  ]\r\n} satisfies Config;\r\n\r\nexport { AgoraTailwindConfig };\r\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { ComponentType, lazy, LazyExoticComponent } from 'react';\nimport { SVGIconProps } from '@/models';\n\nexport const iconList: Record<string, LazyExoticComponent<ComponentType<SVGIconProps>>> = {\n  //  Authentication\n  'agora-line-biometric': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-biometric')),\n  'agora-solid-biometric': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-biometric')),\n  'agora-line-digital': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-digital')),\n  'agora-solid-digital': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-digital')),\n  //  Business & Payment\n  'agora-line-buildings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-buildings')),\n  'agora-solid-buildings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-buildings')),\n  'agora-line-money-taxes': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-money-taxes')),\n  'agora-solid-money-taxes': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-money-taxes')),\n  'agora-line-award': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-award')),\n  'agora-solid-award': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-award')),\n  'agora-line-calculator': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-calculator')),\n  'agora-solid-calculator': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-calculator')),\n  'agora-line-credit-card': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-credit-card')),\n  'agora-solid-credit-card': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-credit-card')),\n  'agora-line-ticket': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-ticket')),\n  'agora-solid-ticket': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-ticket')),\n  'agora-line-wallet': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-wallet')),\n  'agora-solid-wallet': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-wallet')),\n  'agora-line-tag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-tag')),\n  'agora-solid-tag': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-tag')),\n  'agora-line-shopping-basket': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-shopping-basket')),\n  'agora-solid-shopping-basket': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-shopping-basket')),\n  'agora-line-shopping-cart': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-shopping-cart')),\n  'agora-solid-shopping-cart': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-shopping-cart')),\n  'agora-line-coins': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-coins')),\n  'agora-solid-coins': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-coins')),\n  //  Communication\n  'agora-line-thumbs-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-thumbs-up')),\n  'agora-line-thumbs-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-thumbs-down')),\n  'agora-solid-thumbs-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-thumbs-up')),\n  'agora-solid-thumbs-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-thumbs-down')),\n  'agora-line-bell': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bell')),\n  'agora-solid-bell': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bell')),\n  'agora-line-help-support': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-help-support')),\n  'agora-solid-help-support': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-help-support')),\n  'agora-line-chat': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chat')),\n  'agora-solid-chat': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chat')),\n  'agora-line-mail': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mail')),\n  'agora-solid-mail': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mail')),\n  'agora-line-mail-open': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mail-open')),\n  'agora-solid-mail-open': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mail-open')),\n  'agora-line-at-sign': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-at-sign')),\n  'agora-solid-at-sign': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-at-sign')),\n  'agora-line-speak': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-speak')),\n  'agora-solid-speak': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-speak')),\n  //  Common Actions\n  'agora-line-expand-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-expand-right')),\n  'agora-solid-expand-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-expand-right')),\n  'agora-line-expand-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-expand-left')),\n  'agora-solid-expand-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-expand-left')),\n  'agora-line-home': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-home')),\n  'agora-solid-home': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-home')),\n  'agora-line-star': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-star')),\n  'agora-solid-star': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-star')),\n  'agora-line-log-in': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-log-in')),\n  'agora-solid-log-in': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-log-in')),\n  'agora-line-log-out': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-log-out')),\n  'agora-solid-log-out': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-log-out')),\n  'agora-line-search': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-search')),\n  'agora-solid-search': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-search')),\n  'agora-line-menu': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-menu')),\n  'agora-solid-menu': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-menu')),\n  'agora-line-external-link': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-external-link')),\n  'agora-solid-external-link': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-external-link')),\n  'agora-line-check-all': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check-all')),\n  'agora-solid-check-all': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check-all')),\n  'agora-line-more-horizontal': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-more-horizontal')),\n  'agora-solid-more-horizontal': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-more-horizontal')),\n  'agora-line-more-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-more-vertical')),\n  'agora-solid-more-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-more-vertical')),\n  'agora-line-refresh-ccw': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-refresh-ccw')),\n  'agora-solid-refresh-ccw': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-refresh-ccw')),\n  'agora-line-dashboard': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-dashboard')),\n  'agora-solid-dashboard': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-dashboard')),\n  'agora-line-layers-menu': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-layers-menu')),\n  'agora-solid-layers-menu': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-layers-menu')),\n  //  Health & Care\n  'agora-line-health': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-health')),\n  'agora-solid-health': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-health')),\n  'agora-line-cross': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-cross')),\n  'agora-solid-cross': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-cross')),\n  'agora-line-hospital': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-hospital')),\n  'agora-solid-hospital': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-hospital')),\n  'agora-line-hand-heart': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-hand-heart')),\n  'agora-solid-hand-heart': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-hand-heart')),\n  'agora-line-flash-on': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-flash-on')),\n  'agora-solid-flash-on': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-flash-on')),\n  'agora-line-flash-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-flash-off')),\n  'agora-solid-flash-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-flash-off')),\n  'agora-line-camera-switch': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-camera-switch')),\n  'agora-solid-camera-switch': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-camera-switch')),\n  'agora-line-minimize': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-minimize')),\n  'agora-solid-minimize': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-minimize')),\n  'agora-line-maximize': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-maximize')),\n  'agora-solid-maximize': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-maximize')),\n  'agora-line-expand': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-expand')),\n  'agora-solid-expand': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-expand')),\n  'agora-line-reduce': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-reduce')),\n  'agora-solid-reduce': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-reduce')),\n  'agora-line-qr-code': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-qr-code')),\n  'agora-solid-qr-code': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-qr-code')),\n  'agora-line-panel-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-panel-right')),\n  'agora-solid-panel-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-panel-right')),\n  'agora-line-panel-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-panel-left')),\n  'agora-solid-panel-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-panel-left')),\n  'agora-line-panel-top': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-panel-top')),\n  'agora-solid-panel-top': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-panel-top')),\n  'agora-line-panel-bottom': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-panel-bottom')),\n  'agora-solid-panel-bottom': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-panel-bottom')),\n  //  Data Visualization\n  'agora-line-bar-chart': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bar-chart')),\n  'agora-solid-bar-chart': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bar-chart')),\n  'agora-line-pie-chart': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-pie-chart')),\n  'agora-solid-pie-chart': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-pie-chart')),\n  'agora-line-table': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-table')),\n  'agora-solid-table': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-table')),\n  //  Environment\n  'agora-line-tree': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-tree')),\n  'agora-solid-tree': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-tree')),\n  //  File\n  'agora-line-folder': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-folder')),\n  'agora-solid-folder': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-folder')),\n  'agora-line-file': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-file')),\n  'agora-solid-file': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-file')),\n  'agora-line-document': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-document')),\n  'agora-solid-document': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-document')),\n  'agora-line-book-open': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-book-open')),\n  'agora-solid-book-open': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-book-open')),\n  'agora-line-package': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-package')),\n  'agora-solid-package': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-package')),\n  'agora-line-file-share': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-file-share')),\n  'agora-solid-file-share': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-file-share')),\n  //  Formatting\n  'agora-line-filter': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-filter')),\n  'agora-solid-filter': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-filter')),\n  'agora-line-edit': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-edit')),\n  'agora-solid-edit': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-edit')),\n  'agora-line-plus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plus-circle')),\n  'agora-solid-plus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plus-circle')),\n  'agora-line-plus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plus')),\n  'agora-solid-plus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plus')),\n  'agora-line-minus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-minus-circle')),\n  'agora-solid-minus-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-minus-circle')),\n  'agora-line-minus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-minus')),\n  'agora-solid-minus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-minus')),\n  'agora-line-upload': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-upload')),\n  'agora-solid-upload': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-upload')),\n  'agora-line-download': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-download')),\n  'agora-solid-download': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-download')),\n  'agora-line-paperclip': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-paperclip')),\n  'agora-solid-paperclip': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-paperclip')),\n  'agora-line-list': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-list')),\n  'agora-solid-list': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-list')),\n  'agora-line-settings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-settings')),\n  'agora-solid-settings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-settings')),\n  'agora-line-bullet': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bullet')),\n  'agora-solid-bullet': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bullet')),\n  'agora-line-sort-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-vertical')),\n  'agora-solid-sort-vertical': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-vertical')),\n  'agora-line-sort-generic-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-generic-down')),\n  'agora-solid-sort-generic-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-generic-down')),\n  'agora-line-sort-generic-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-generic-up')),\n  'agora-solid-sort-generic-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-generic-up')),\n  'agora-line-sort-alpha-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-alpha-down')),\n  'agora-solid-sort-alpha-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-alpha-down')),\n  'agora-line-sort-alpha-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-sort-alpha-up')),\n  'agora-solid-sort-alpha-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-sort-alpha-up')),\n  'agora-line-trash': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-trash')),\n  'agora-solid-trash': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-trash')),\n  'agora-line-print': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-print')),\n  'agora-solid-print': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-print')),\n  'agora-line-delete': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-delete')),\n  'agora-solid-delete': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-delete')),\n  'agora-line-copy': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-copy')),\n  'agora-solid-copy': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-copy')),\n  'agora-line-grade': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-grade')),\n  'agora-solid-grade': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-grade')),\n  //  Food & Drinks\n  'agora-line-coffee': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-coffee')),\n  'agora-solid-coffee': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-coffee')),\n  //  Hardware\n  'agora-line-hardware-settings': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-hardware-settings')),\n  'agora-solid-hardware-settings': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-hardware-settings')),\n  'agora-line-wifi': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-wifi')),\n  'agora-solid-wifi': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-wifi')),\n  //  Maps & Travel\n  'agora-line-plane': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-plane')),\n  'agora-solid-plane': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-plane')),\n  'agora-line-driving': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-driving')),\n  'agora-solid-driving': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-driving')),\n  'agora-line-map': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-map')),\n  'agora-solid-map': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-map')),\n  'agora-line-map-pin': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-map-pin')),\n  'agora-solid-map-pin': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-map-pin')),\n  'agora-line-target': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-target')),\n  'agora-solid-target': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-target')),\n  'agora-line-briefcase': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-briefcase')),\n  'agora-solid-briefcase': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-briefcase')),\n  'agora-line-flag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-flag')),\n  'agora-solid-flag': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-flag')),\n  'agora-line-message': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-message')),\n  'agora-solid-message': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-message')),\n  //  Media\n  'agora-line-video-on': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-video-on')),\n  'agora-solid-video-on': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-video-on')),\n  'agora-line-video-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-video-off')),\n  'agora-solid-video-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-video-off')),\n  'agora-line-mic-on': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mic-on')),\n  'agora-solid-mic-on': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mic-on')),\n  'agora-line-mic-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mic-off')),\n  'agora-solid-mic-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mic-off')),\n  'agora-line-movie': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-movie')),\n  'agora-solid-movie': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-movie')),\n  'agora-line-camera': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-camera')),\n  'agora-solid-camera': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-camera')),\n  'agora-line-monitor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-monitor')),\n  'agora-solid-monitor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-monitor')),\n  'agora-line-airplay': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-airplay')),\n  'agora-solid-airplay': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-airplay')),\n  'agora-line-mega-phone': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-mega-phone')),\n  'agora-solid-mega-phone': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-mega-phone')),\n  'agora-line-volume-max': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-max')),\n  'agora-solid-volume-max': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-max')),\n  'agora-line-volume-min': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-min')),\n  'agora-solid-volume-min': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-min')),\n  'agora-line-volume-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-off')),\n  'agora-solid-volume-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-off')),\n  'agora-line-volume-mute': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-volume-mute')),\n  'agora-solid-volume-mute': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-volume-mute')),\n  'agora-line-music': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-music')),\n  'agora-solid-music': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-music')),\n  'agora-line-globe': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-globe')),\n  'agora-solid-globe': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-globe')),\n  'agora-line-smartphone': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-smartphone')),\n  'agora-solid-smartphone': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-smartphone')),\n  //  Navigation\n  'agora-line-arrow-down-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down-anchor')),\n  'agora-solid-arrow-down-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down-anchor')),\n  'agora-line-arrow-up-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up-anchor')),\n  'agora-solid-arrow-up-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up-anchor')),\n  'agora-line-arrow-right-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right-anchor')),\n  'agora-solid-arrow-right-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right-anchor')),\n  'agora-line-arrow-left-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left-anchor')),\n  'agora-solid-arrow-left-anchor': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left-anchor')),\n  'agora-line-arrow-down-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down-circle')),\n  'agora-solid-arrow-down-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down-circle')),\n  'agora-line-arrow-up-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up-circle')),\n  'agora-solid-arrow-up-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up-circle')),\n  'agora-line-arrow-right-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right-circle')),\n  'agora-solid-arrow-right-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right-circle')),\n  'agora-line-arrow-left-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left-circle')),\n  'agora-solid-arrow-left-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left-circle')),\n  'agora-line-arrow-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-up')),\n  'agora-solid-arrow-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-up')),\n  'agora-line-arrow-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-down')),\n  'agora-solid-arrow-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-down')),\n  'agora-line-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-right')),\n  'agora-solid-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-right')),\n  'agora-line-arrow-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-arrow-left')),\n  'agora-solid-arrow-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-arrow-left')),\n  'agora-line-chevron-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-down')),\n  'agora-solid-chevron-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-down')),\n  'agora-line-chevron-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-up')),\n  'agora-solid-chevron-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-up')),\n  'agora-line-chevron-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-right')),\n  'agora-solid-chevron-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-right')),\n  'agora-line-chevron-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevron-left')),\n  'agora-solid-chevron-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevron-left')),\n  'agora-line-chevrons-down': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-down')),\n  'agora-solid-chevrons-down': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-down')),\n  'agora-line-chevrons-up': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-up')),\n  'agora-solid-chevrons-up': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-up')),\n  'agora-line-chevrons-left': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-left')),\n  'agora-solid-chevrons-left': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-left')),\n  'agora-line-chevrons-right': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-chevrons-right')),\n  'agora-solid-chevrons-right': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-chevrons-right')),\n  //  Privacy & Security\n  'agora-line-shield': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-shield')),\n  'agora-solid-shield': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-shield')),\n  'agora-line-unlock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-unlock')),\n  'agora-solid-unlock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-unlock')),\n  'agora-line-lock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-lock')),\n  'agora-solid-lock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-lock')),\n  'agora-line-eye': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-eye')),\n  'agora-solid-eye': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-eye')),\n  'agora-line-eye-off': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-eye-off')),\n  'agora-solid-eye-off': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-eye-off')),\n  // Public institutions\n  'agora-line-court': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-court')),\n  'agora-solid-court': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-court')),\n  'agora-line-social-security': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-social-security')),\n  'agora-solid-social-security': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-social-security')),\n  'agora-line-education': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-education')),\n  'agora-solid-education': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-education')),\n  //  Social\n  'agora-line-twitter-x': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-twitter-x')),\n  'agora-solid-twitter-x': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-twitter-x')),\n  'agora-line-twitter': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-twitter')),\n  'agora-solid-twitter': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-twitter')),\n  'agora-line-instagram': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-instagram')),\n  'agora-solid-instagram': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-instagram')),\n  'agora-line-facebook': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-facebook')),\n  'agora-solid-facebook': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-facebook')),\n  'agora-line-youtube': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-youtube')),\n  'agora-solid-youtube': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-youtube')),\n  'agora-line-linkedin': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-linkedin')),\n  'agora-solid-linkedin': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-linkedin')),\n  'agora-line-share': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-share')),\n  'agora-solid-share': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-share')),\n  'agora-line-bookmark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bookmark')),\n  'agora-solid-bookmark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bookmark')),\n  'agora-line-like': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-like')),\n  'agora-solid-like': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-like')),\n  'agora-line-whatsapp': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-whatsapp')),\n  'agora-solid-whatsapp': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-whatsapp')),\n  //  Status\n  'agora-line-x-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-x-circle')),\n  'agora-solid-x-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-x-circle')),\n  'agora-line-x': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-x')),\n  'agora-solid-x': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-x')),\n  'agora-line-check-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check-circle')),\n  'agora-solid-check-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check-circle')),\n  'agora-line-check': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-check')),\n  'agora-solid-check': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-check')),\n  'agora-line-question-mark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-question-mark')),\n  'agora-solid-question-mark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-question-mark')),\n  'agora-line-alert-circle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-alert-circle')),\n  'agora-solid-alert-circle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-alert-circle')),\n  'agora-line-info-mark': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-info-mark')),\n  'agora-solid-info-mark': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-info-mark')),\n  'agora-line-alert-triangle': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-alert-triangle')),\n  'agora-solid-alert-triangle': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-alert-triangle')),\n  'agora-line-loader': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-loader')),\n  'agora-solid-loader': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-loader')),\n  'agora-line-smile-sad': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-smile-sad')),\n  'agora-solid-smile-sad': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-smile-sad')),\n  'agora-line-smile-happy': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-smile-happy')),\n  'agora-solid-smile-happy': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-smile-happy')),\n  'agora-line-smile-error': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-smile-error')),\n  'agora-solid-smile-error': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-smile-error')),\n  //  Transportation\n  'agora-line-bus': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bus')),\n  'agora-solid-bus': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bus')),\n  'agora-line-truck': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-truck')),\n  'agora-solid-truck': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-truck')),\n  //  Time\n  'agora-line-calendar': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-calendar')),\n  'agora-solid-calendar': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-calendar')),\n  'agora-line-clock': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-clock')),\n  'agora-solid-clock': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-clock')),\n  //  User\n  'agora-line-user-group': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-user-group')),\n  'agora-solid-user-group': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-user-group')),\n  'agora-line-user': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-user')),\n  'agora-solid-user': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-user')),\n  //  People\n  'agora-line-baby': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-baby')),\n  'agora-solid-baby': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-baby')),\n  'agora-line-user-check': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-user-check')),\n  'agora-solid-user-check': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-user-check')),\n  'agora-line-user-uncheck': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-user-uncheck')),\n  'agora-solid-user-uncheck': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-user-uncheck')),\n  //  Others\n  'agora-line-placeholder': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-placeholder')),\n  'agora-solid-placeholder': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-placeholder')),\n  'agora-line-bookmark-card': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-bookmark-card')),\n  'agora-solid-bookmark-card': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-bookmark-card')),\n  'agora-drag-dots': lazy<ComponentType<SVGIconProps>>(() => import('./other/drag-dots')),\n  'agora-number-default': lazy<ComponentType<SVGIconProps>>(() => import('./other/number-default')),\n  'agora-number-hover': lazy<ComponentType<SVGIconProps>>(() => import('./other/number-hover')),\n  //Language\n  'agora-line-lgp': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-lgp')),\n  'agora-solid-lgp': lazy<ComponentType<SVGIconProps>>(() => import('./solid/solid-lgp')),\n  // Default icon - Should not be listable\n  'no-icon': lazy<ComponentType<SVGIconProps>>(() => import('./other/agora')),\n  'no-icon-line': lazy<ComponentType<SVGIconProps>>(() => import('./other/agora-line'))\n};\n\nexport const allIcons = Object.keys(iconList).filter((c) => c !== 'no-icon' && c !== 'no-icon-line');\n\nexport type IconName = (typeof allIcons)[number];\n\nexport const isBundledIcon = (name: string) => {\n  return allIcons.includes(name);\n};\n","import React, { ComponentProps, ComponentType, FC, HTMLProps, LazyExoticComponent, memo, Suspense, SVGProps } from 'react';\n\nimport classNames from 'classnames';\n\nimport { SVGIconProps } from '@/models';\n\nimport { iconList, IconName, isBundledIcon } from './assets/index';\n\nimport './icon.css';\n\nconst iconsCache: Record<IconName, LazyExoticComponent<ComponentType<SVGIconProps>>> = {};\n\nconst loadIcon = (name: IconName): LazyExoticComponent<ComponentType<SVGIconProps>> => {\n  const cachedIcon = iconsCache[name];\n\n  if (cachedIcon) {\n    return cachedIcon;\n  }\n\n  const lazyComponent = iconList[name];\n\n  iconsCache[name] = lazyComponent;\n\n  return lazyComponent;\n};\n\n/**\n * Allowed icon dimensions.\n */\nexport type IconDimensions = 'xs' | 's' | 'm' | 'l' | 'xl' | 'xxl' | 'xxxl';\n\ntype BasicIconProps = SVGProps<SVGSVGElement> & HTMLProps<HTMLImageElement>;\n\nexport interface IconProps extends BasicIconProps {\n  /**\n   * Sets the icon dimension.\n   */\n  dimensions?: IconDimensions;\n  /**\n   * Icon name to use. Can be an external image url.\n   */\n  name?: IconName;\n  /**\n   * Callback to run when image is loaded.\n   */\n  onIconLoad?: () => void;\n  /**\n   * Callback to run when image fails to load.\n   */\n  onIconError?: () => void;\n}\n\nconst InternalIcon: FC<IconProps> = ({ dimensions = 'm', name = 'no-icon', onIconLoad, onIconError, ...props }) => {\n  const applyDefaultColor = !props.className?.match('fill-') && !props.className?.match('text-') && name !== 'no-icon-line';\n\n  const classes = classNames(\n    'icon',\n    {\n      [`icon-${dimensions?.toLowerCase()}`]: dimensions,\n      'fill-[var(--color-primary-600)]': applyDefaultColor,\n      'text-[var(--color-primary-600)]': applyDefaultColor\n    },\n    props.className\n  );\n\n  const onLoad = () => {\n    onIconLoad?.();\n  };\n\n  const onError = () => {\n    onIconError?.();\n  };\n\n  const shouldRenderImage = name !== 'no-icon' && name !== 'no-icon-line' && !isBundledIcon(name);\n\n  //  SRC OR BASE-64\n  if (shouldRenderImage) {\n    // Assume that it is a base64 image and let the browser do his work\n    return <img {...props} src={name} alt={props.alt} className={classes} onLoad={onLoad} onError={onError} />;\n  }\n\n  const LazyComponent = loadIcon(name);\n\n  const fullProps = {\n    ...props,\n    className: classes,\n    title: props.title ?? props.alt\n  } as ComponentProps<'svg'>;\n\n  return (\n    LazyComponent && (\n      <Suspense>\n        <LazyComponent {...fullProps} />\n      </Suspense>\n    )\n  );\n};\n\nexport const Icon = memo(InternalIcon, (prevProps, nextProps) => {\n  return prevProps.name === nextProps.name && prevProps.className === nextProps.className && prevProps.dimensions === nextProps.dimensions;\n});\n","import React, { Children, ComponentProps, FC, isValidElement, ReactElement } from 'react';\nimport { Icon, IconProps } from '../../icon/icon';\n\nexport type IconSetState = 'default' | 'hover' | 'focused' | 'active' | 'checked';\n\nexport interface IconItemProps extends IconProps {\n  state?: IconSetState;\n}\n\nexport const IconItem: FC<IconItemProps> = ({ state, ...props }) => {\n  return <Icon data-state={state} {...props} />;\n};\n\nexport interface IconSetProps extends ComponentProps<'div'> {\n  state?: IconSetState;\n  children?: ReactElement<IconItemProps> | Array<ReactElement<IconItemProps>>;\n}\n\nconst IconSet: FC<IconSetProps> = ({ ref = null, className, state = 'default', children, ...props }) => {\n  return (\n    <div {...props} ref={ref} className={className}>\n      {Children.toArray(children).map((child) => {\n        if (!isValidElement<IconItemProps>(child)) {\n          return null;\n        }\n\n        const { state: childState, ...childProps } = child.props;\n\n        const iconClassName = `${child.props.className} ${childState === state ? '!block' : '!hidden'}`;\n\n        return <Icon {...childProps} aria-hidden key={childState} className={iconClassName} />;\n      })}\n    </div>\n  );\n};\n\nexport { IconSet };\n","import { SyntheticEvent } from 'react';\n\nexport function createSyntheticEvent<T>(target: T, eventType: string): SyntheticEvent<T> {\n  const event = new Event(eventType, { bubbles: true });\n\n  Object.defineProperty(event, 'target', { writable: false, value: target });\n\n  let isDefaultPrevented = false;\n  let isPropagationStopped = false;\n\n  const preventDefault = () => {\n    isDefaultPrevented = true;\n    event.preventDefault();\n  };\n\n  const stopPropagation = () => {\n    isPropagationStopped = true;\n    event.stopPropagation();\n  };\n\n  return {\n    nativeEvent: event,\n    currentTarget: event.currentTarget as EventTarget & T,\n    target: event.target as EventTarget & T,\n    bubbles: event.bubbles,\n    cancelable: event.cancelable,\n    defaultPrevented: event.defaultPrevented,\n    eventPhase: event.eventPhase,\n    isTrusted: event.isTrusted,\n    preventDefault,\n    isDefaultPrevented: () => isDefaultPrevented,\n    stopPropagation,\n    isPropagationStopped: () => isPropagationStopped,\n    persist: () => {},\n    timeStamp: event.timeStamp,\n    type: event.type\n  };\n}\n","import { useEffect, useRef, useState } from 'react';\n\ntype Timer = string | number | NodeJS.Timeout | undefined;\ntype FunctionType = (arg: string) => void;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst debounce = (func: FunctionType, timeout = 300) => {\n  let timer: Timer;\n\n  return (args: string) => {\n    if (timer) {\n      clearTimeout(timer);\n      timer = undefined;\n    }\n\n    timer = setTimeout(() => {\n      func(args);\n    }, timeout);\n  };\n};\n\nexport { debounce };\n\nexport const useDebounceHook = (func: FunctionType, timeout = 300) => {\n  const timer = useRef<Timer>(null);\n  const [args, setArgs] = useState<string>('');\n\n  useEffect(() => {\n    if (timer.current) {\n      clearTimeout(timer.current);\n    }\n\n    timer.current = setTimeout(() => {\n      func(args);\n    }, timeout);\n\n    return () => {\n      if (timer.current) {\n        clearTimeout(timer.current);\n      }\n    };\n  }, [func, timeout, args]);\n\n  return {\n    setArgs\n  };\n};\n","export const getDateString = (d: Date) => {\n  let dayString = d.getDate().toString();\n\n  if (dayString.length < 2) {\n    dayString = `0${dayString}`;\n  }\n\n  let monthString = (d.getMonth() + 1).toString();\n  if (monthString.length < 2) {\n    monthString = `0${monthString}`;\n  }\n\n  const yearString = d.getFullYear();\n\n  return `${dayString}/${monthString}/${yearString}`;\n};\n","const normalizeText = (text: string) => {\n  return text\n    .toLocaleLowerCase()\n    .normalize('NFD')\n    .replace(/[\\u0300-\\u036f]/g, '');\n};\nexport { normalizeText };\n","/**\n * Convert string like value to Boolean\n */\nconst stringToBoolean = (value: boolean | string | undefined): boolean => {\n  // some params could be undefined (not required)\n  if (typeof value === 'undefined') {\n    return false;\n  }\n\n  // if primitive boolean return self-value\n  if (typeof value === 'boolean') {\n    return value;\n  }\n\n  return value === 'true';\n};\n\nexport { stringToBoolean };\n","import { Ref, RefObject, useImperativeHandle, useRef } from 'react';\n\nexport function useExpandedRef<T>(ref: Ref<T> | null, innerRef: RefObject<HTMLElement | null>, data: T): RefObject<T | null> {\n  const externalRef = useRef<T>(null);\n\n  useImperativeHandle(ref, () => {\n    externalRef.current = innerRef.current as T;\n\n    if (externalRef.current) {\n      const { focus: _, ...safeData } = data as Record<string, unknown>;\n      Object.assign(externalRef.current, safeData);\n    }\n\n    return externalRef.current;\n  });\n\n  return externalRef;\n}\n","// eslint-disable-next-line @typescript-eslint/ban-types\nconst asyncTrigger = (func: Function, timeout = 10) => {\n  setTimeout(func, timeout);\n};\n\nexport { asyncTrigger };\n","import { useEffect, useState } from 'react';\n\nconst useWindowSize = (fallback = { width: 1920, height: 1080 }) => {\n  const [size, setSize] = useState(() => {\n    if (typeof window !== 'undefined') {\n      return { width: window.innerWidth, height: window.innerHeight };\n    }\n    return fallback;\n  });\n\n  useEffect(() => {\n    const updateSize = () => {\n      setSize({ width: window.innerWidth, height: window.innerHeight });\n    };\n\n    updateSize();\n    window.addEventListener('resize', updateSize);\n    return () => window.removeEventListener('resize', updateSize);\n  }, []);\n\n  return size;\n};\n\nexport { useWindowSize };\n","import { AgoraTailwindConfig } from '@/configs/tailwind-config';\n\nconst useBreakpointScreenValues = () => {\n  const xsScreen = Number(AgoraTailwindConfig.theme.screens.xs.replaceAll('px', ''));\n  const mdScreen = Number(AgoraTailwindConfig.theme.screens.md.replaceAll('px', ''));\n  const xlScreen = Number(AgoraTailwindConfig.theme.screens.xl.replaceAll('px', ''));\n\n  return {\n    xsScreen,\n    mdScreen,\n    xlScreen\n  };\n};\n\nexport { useBreakpointScreenValues };\n","import classNames from 'classnames';\nimport React, {\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  ReactElement,\n  ReactNode,\n  SyntheticEvent,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\nimport { Icon } from '@/components/icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\n\nimport { createSyntheticEvent } from '@/utils/create-synthetic-event';\nimport { useExpandedRef } from '@/utils/expand-ref';\nimport './accordion.css';\n\nexport interface AccordionElement extends HTMLDivElement {\n  /**\n   *  Expand the accordion.\n   */\n  expand: () => void;\n  /**\n   *  Expand the accordion without triggering any event (onExpanded and onChange will not be triggered).\n   */\n  silentExpand: () => void;\n  /**\n   *  Collapse the accordion.\n   */\n  collapse: () => void;\n  /**\n   *  Collapse the accordion without triggering any event (onCollapse and onChange will not be triggered).\n   */\n  silentCollapse: () => void;\n  /**\n   *  Toggles the content of the accordion.\n   */\n  toggle: () => void;\n  /**\n   *  Toggles the accordion without triggering any event (onCollapse, onExpanded and onChange will not be triggered).\n   */\n  silentToggle: () => void;\n  /**\n   *  Current value of the expanded state of the accordion.\n   */\n  isExpanded: boolean;\n}\n\nexport interface AccordionProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Accordion header title.\n   */\n  headingTitle?: ReactNode;\n  /**\n   * Accordion heading level title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Accordion content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if an icon is shown previously of title.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<AccordionElement | undefined>) => void | undefined;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n}\n\ntype eventToTriggerType = Record<'name', 'expand' | 'collapse' | null>;\n\nconst Accordion: FC<AccordionProps> = ({\n  ref = null,\n  children,\n  hasIcon,\n  leadingIcon,\n  leadingIconHover,\n  darkMode = false,\n  headingTitle,\n  'headingLevel': Component = 'h3',\n  className = '',\n  defaultExpanded,\n  'expanded': expandedFromProps,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  'aria-label': ariaLabel,\n  ...props\n}): ReactElement => {\n  const generatedId = useId();\n\n  const isControlled = typeof expandedFromProps != 'undefined';\n\n  const hasDefaultValue = typeof defaultExpanded != 'undefined';\n\n  const [internalExpandedValue, setInternalExpandedValue] = useState(hasDefaultValue ? stringToBoolean(defaultExpanded) : false);\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n  const isMobile = width < mdScreen;\n\n  // Internally, we need to deal with some value. Depending on whether the component is controlled or not, that value comes from its props or from its internal state.\n  const expanded = isControlled ? stringToBoolean(expandedFromProps) : internalExpandedValue;\n\n  const [eventToTrigger, setEventToTrigger] = useState<eventToTriggerType>({ name: null });\n\n  const summaryRef = useRef<HTMLElement | null>(null);\n  const hadFocusRef = useRef(false);\n\n  const expand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n\n    setEventToTrigger({ name: 'expand' });\n  };\n\n  const silentExpand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n  };\n\n  const collapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n\n    setEventToTrigger({ name: 'collapse' });\n  };\n\n  const silentCollapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n  };\n\n  const toggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n\n    if (expanded) {\n      setEventToTrigger({ name: 'collapse' });\n    }\n\n    if (!expanded) {\n      setEventToTrigger({ name: 'expand' });\n    }\n  };\n\n  const silentToggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const externalRef = useExpandedRef<AccordionElement>(ref as React.RefObject<AccordionElement>, innerRef, {\n    isExpanded: expanded,\n    expand,\n    silentExpand,\n    collapse,\n    silentCollapse,\n    toggle,\n    silentToggle\n  } as AccordionElement);\n\n  const onExpandedRef = useRef(onExpanded);\n  onExpandedRef.current = onExpanded;\n  const onCollapsedRef = useRef(onCollapsed);\n  onCollapsedRef.current = onCollapsed;\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n\n  useEffect(() => {\n    if (eventToTrigger.name === 'expand') {\n      const expandedEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'expand');\n      onExpandedRef.current?.(expandedEvt);\n    }\n\n    if (eventToTrigger.name === 'collapse') {\n      const collapsedEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'collapse');\n      onCollapsedRef.current?.(collapsedEvt);\n    }\n\n    const changeEvt = createSyntheticEvent<AccordionElement | undefined>(externalRef.current ?? undefined, 'change');\n    onChangeRef.current?.(changeEvt);\n  }, [eventToTrigger, externalRef]);\n\n  useEffect(() => {\n    if (hadFocusRef.current && summaryRef.current) {\n      summaryRef.current.focus();\n    }\n    hadFocusRef.current = false;\n  }, [expanded]);\n\n  const AccordionClassName = classNames('agora-accordion', className, {\n    'accordion-open': expanded,\n    'active-state': activeState === 'active',\n    'mobile': isMobile,\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const AccordionBodyClassName = classNames('accordion-body', { 'accordion-body-block': expanded });\n  const AccordionIconClassName = classNames('icon icon-chevron', { 'icon-chevron-flip': expanded });\n\n  const onClickHandler = () => {\n    hadFocusRef.current = document.activeElement === summaryRef.current;\n    toggle();\n    setActiveState('default');\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Space') {\n      setActiveState('active');\n    }\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Space') {\n      setActiveState('default');\n    }\n  };\n\n  const onMouseDownHandler = () => {\n    setActiveState('active');\n  };\n\n  const onMouseUpHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseLeaveHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseEnterHandler = () => {\n    setActiveState('hover');\n  };\n\n  return (\n    <div className={AccordionClassName} {...props} ref={innerRef}>\n      <Component className=\"flex justify-start items-center w-full\">\n        <details className=\"accordion-details\" key={expanded ? 'open' : 'closed'} open={expanded}>\n          <summary\n            ref={summaryRef}\n            aria-label={ariaLabel}\n            className=\"accordion-header\"\n            aria-expanded={expanded}\n            id={`agora-accordion-${generatedId}-control`}\n            aria-controls={`agora-accordion-${generatedId}-region`}\n            onClick={onClickHandler}\n            onKeyDown={onKeyDownHandler}\n            onKeyUp={onKeyUpHandler}\n            onMouseDown={onMouseDownHandler}\n            onMouseUp={onMouseUpHandler}\n            onMouseLeave={onMouseLeaveHandler}\n            onMouseEnter={onMouseEnterHandler}\n          >\n            <div className=\"accordion-header-button-wrapper\">\n              {stringToBoolean(hasIcon) && (leadingIcon || leadingIconHover) && (\n                <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                  <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? leadingIconHover} aria-hidden />\n                  <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? leadingIcon} aria-hidden />\n                  <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? leadingIconHover} aria-hidden />\n                </IconSet>\n              )}\n\n              {headingTitle && <span className=\"title\">{headingTitle}</span>}\n\n              <div className=\"icon-wrapper trailing\">\n                <Icon className={AccordionIconClassName} name=\"agora-line-chevron-down\" aria-hidden />\n              </div>\n            </div>\n          </summary>\n          <section\n            className={AccordionBodyClassName}\n            id={`agora-accordion-${generatedId}-region`}\n            aria-labelledby={`agora-accordion-${generatedId}-control`}\n          >\n            <div className=\"children-wrapper\">{children}</div>\n          </section>\n        </details>\n      </Component>\n    </div>\n  );\n};\n\nexport { Accordion };\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  createRef,\n  FC,\n  isValidElement,\n  ReactElement,\n  RefObject,\n  SyntheticEvent,\n  useId,\n  useMemo\n} from 'react';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Accordion, AccordionElement, AccordionProps } from '@/components/accordion';\nimport './accordion-group.css';\n\nexport interface AccordionGroupProps extends ComponentProps<'ul'> {\n  /**\n   * List of accordion components to use as children of the group.\n   */\n  children?: ReactElement<AccordionProps> | Array<ReactElement<AccordionProps>>;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst AccordionGroup: FC<AccordionGroupProps> = ({ className = '', children, darkMode = false, ...props }) => {\n  const generatedAccordionGroupId = useId();\n\n  const accordionsRefMap = useMemo(() => new Map<string, RefObject<AccordionElement | null>>(), []);\n\n  const updateRefMap = (id: string) => {\n    accordionsRefMap.forEach((acc, key) => {\n      if (key !== id) {\n        acc.current?.silentCollapse();\n      }\n    });\n  };\n\n  const renderAccordions = Children.toArray(children).map((child, index) => {\n    if (!isValidElement<AccordionProps>(child)) {\n      return null;\n    }\n\n    const id = `accordion-group-${generatedAccordionGroupId}-accordion-${index}`;\n    const newRef = createRef<AccordionElement>();\n    accordionsRefMap.set(id, newRef);\n\n    const onExpanded = (evt: SyntheticEvent<AccordionElement | undefined>) => {\n      updateRefMap(id);\n      child.props.onExpanded?.(evt);\n    };\n\n    return (\n      <li key={id}>\n        <Accordion {...child.props} ref={newRef} onExpanded={onExpanded} darkMode={darkMode} />\n      </li>\n    );\n  });\n\n  const AccordionGroupClassName = classNames('agora-accordion-group', 'mt-0 p-0 w-full', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  return (\n    <ul className={AccordionGroupClassName} {...props}>\n      {renderAccordions}\n    </ul>\n  );\n};\n\nexport { AccordionGroup };\n","/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, MouseEvent, ReactElement, ReactNode, useRef, useState } from 'react';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\nimport './anchor.css';\n\n/**\n * The available variants of the anchors. This variants will define the background and border color of the anchors.\n */\nexport type AnchorVariant = 'primary' | 'informative' | 'neutral' | 'success' | 'warning' | 'danger';\n\n/**\n * The available anchor appearances. Defines the anchor shape.\n */\nexport type AnchorAppearance = 'link' | 'text';\n\nexport interface AnchorProps extends ComponentProps<'a'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The anchor appearance. Define the anchor shape.\n   */\n  appearance?: AnchorAppearance;\n  /**\n   * The variant of the anchor. This variants will define the background and border color of the given Anchor.\n   */\n  variant?: AnchorVariant;\n  /**\n   * Defines if the anchor should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the anchor uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the leading icon to be displayed when the anchor is active. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconActive?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed when the anchor is active. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconActive?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if anchor is inline text or not. An inline element does not start on a new line and takes up as much width as necessary. See https://www.w3schools.com/html/html_blocks.asp.\n   */\n  inline?: BooleanProp;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst Anchor: FC<AnchorProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'text',\n  variant = 'primary',\n  fullWidth = false,\n  hasIcon = false,\n  iconOnly = false,\n  leadingIcon,\n  leadingIconHover,\n  leadingIconActive,\n  trailingIcon,\n  trailingIconHover,\n  trailingIconActive,\n  children,\n  className = '',\n  inline = false,\n  ...props\n}): ReactElement => {\n  const innerRef = useRef<HTMLAnchorElement>(null);\n  useExpandedRef<HTMLAnchorElement>(ref, innerRef, {} as HTMLAnchorElement);\n\n  const anchorClassName = classNames(\n    `agora-anchor`,\n\n    `agora-anchor-${appearance}-${variant}`,\n\n    { 'agora-anchor-full': fullWidth },\n\n    { 'inline-flex items-center': !props.hidden },\n\n    { 'justify-center min-h-[44px] min-w-[44px] py-8': !stringToBoolean(inline) },\n\n    { 'justify-start': stringToBoolean(inline) },\n\n    { 'agora-anchor-with-icon': stringToBoolean(hasIcon) || stringToBoolean(iconOnly) },\n\n    { 'is-icon-only': stringToBoolean(iconOnly) },\n\n    { 'dark-mode': stringToBoolean(darkMode) },\n\n    className\n  );\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const handleClick = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n\n    props.onClick?.(evt);\n  };\n\n  const handleMouseEnter = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('hover');\n    }\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const handleMouseLeave = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n\n    props.onMouseLeave?.(evt);\n  };\n\n  const handleMouseDown = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('active');\n    }\n\n    props.onMouseDown?.(evt);\n  };\n\n  const handleMouseUp = (evt: MouseEvent<HTMLAnchorElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onBlur = () => {\n    innerRef.current?.classList.remove('active');\n    setActiveState('default');\n  };\n\n  return (\n    <a\n      {...props}\n      className={anchorClassName}\n      ref={innerRef}\n      onClick={handleClick}\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      onMouseDown={handleMouseDown}\n      onMouseUp={handleMouseUp}\n      onBlur={onBlur}\n      onKeyDown={props.onKeyDown}\n    >\n      {hasIcon && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIconActive ?? leadingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n\n      {!iconOnly && children && <span className=\"children-wrapper\">{children}</span>}\n\n      {hasIcon && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIconActive ?? trailingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n    </a>\n  );\n};\n\nexport { Anchor };\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  cloneElement,\n  FC,\n  FocusEvent,\n  FocusEventHandler,\n  HtmlHTMLAttributes,\n  isValidElement,\n  MouseEvent,\n  MouseEventHandler,\n  ReactNode,\n  RefObject,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport './tooltip.css';\n\nconst TOOLTIP_CHANGE_EVENT_NAME = 'agora-ds-tooltip-change';\n\ninterface EnrichedChildren {\n  'ref': RefObject<HTMLElement | null>;\n  'onMouseEnter': MouseEventHandler;\n  'onMouseLeave': MouseEventHandler;\n  'onFocus': FocusEventHandler;\n  'onBlur': FocusEventHandler;\n  'children'?: ReactNode;\n  'aria-describedby': string;\n}\n\n/**\n * The available variants of the Tooltip. This variants will define the background of the Tooltip.\n */\nexport type TooltipVariant = 'light' | 'dark' | 'info';\n/**\n * The available positions of the Tooltip. This positions will define the position of the Tooltip.\n */\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n/**\n * The available alignments of the Tooltip. This alignments will define the alignment of the Tooltip.\n */\nexport type TooltipAlignment = 'start' | 'center' | 'end';\n\nexport interface TooltipProps extends Omit<HtmlHTMLAttributes<HTMLDivElement>, 'title'> {\n  /**\n   * The variant of the Tooltip.\n   */\n  variant?: TooltipVariant;\n  /**\n   * The position of the Tooltip.\n   */\n  position?: TooltipPosition;\n  /**\n   * The alignment of the Tooltip.\n   */\n  alignment?: TooltipAlignment;\n  /**\n   * The title of the Tooltip.\n   */\n  title?: ReactNode;\n  /**\n   * If the Tooltip has a title.\n   */\n  hasTitle?: BooleanProp;\n  /**\n   * The description of the Tooltip.\n   */\n  description: ReactNode;\n  /**\n   * The element where the tooltip is attached to.\n   */\n  children?: ReactNode;\n}\n\nexport const Tooltip: FC<TooltipProps> = ({\n  hasTitle,\n  variant = 'dark',\n  position = 'top',\n  alignment = 'center',\n  title,\n  description,\n  children,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const ref = useRef<HTMLElement>(null);\n\n  const [top, setTop] = useState(0);\n  const [left, setLeft] = useState(0);\n  const [width, setWidth] = useState(0);\n  const [height, setHeight] = useState(0);\n\n  const setDimensions = useCallback(() => {\n    if (ref.current) {\n      const rect = ref.current?.getBoundingClientRect();\n\n      if (rect) {\n        setTop(rect.top + window.scrollY);\n        setLeft(rect.left + window.scrollX);\n        setWidth(rect.width);\n        setHeight(rect.height);\n      }\n    }\n  }, []);\n\n  const propsClone = useMemo(() => ({ ...props }), [props]);\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const TooltipContainerClassName = classNames('tooltip-container absolute z-tooltip', props.className);\n\n  const TooltipClassName = classNames('tooltip', {\n    [`tooltip--${variant}`]: variant,\n    [`tooltip--${position}--${alignment}`]: position && alignment\n  });\n\n  const [visibility, setVisibility] = useState(false);\n\n  const showTooltip = () => {\n    setVisibility(true);\n    const event = new CustomEvent<string | undefined>(TOOLTIP_CHANGE_EVENT_NAME, { detail: propsClone.id });\n    document.dispatchEvent(event);\n  };\n\n  const hideTooltip = () => {\n    setVisibility(false);\n  };\n\n  const handleEscapeKey = (event: KeyboardEvent) => {\n    if (event.key === 'Escape') {\n      setVisibility(false);\n    }\n  };\n\n  const handleTooltipMouseLeave = useCallback(() => {\n    hideTooltip();\n  }, []);\n\n  useEffect(() => {\n    document.addEventListener('keydown', handleEscapeKey);\n\n    const handleTooltipChange = (customEventArgs: CustomEvent) => {\n      if (customEventArgs.detail !== propsClone.id) {\n        setVisibility(false);\n      }\n    };\n\n    document.addEventListener(TOOLTIP_CHANGE_EVENT_NAME, handleTooltipChange as EventListener);\n\n    return () => {\n      document.removeEventListener('keydown', handleEscapeKey);\n      document.removeEventListener(TOOLTIP_CHANGE_EVENT_NAME, handleTooltipChange as EventListener);\n    };\n  }, [propsClone.id]);\n\n  const parsedChildren = Children.map(children, (child) => {\n    if (!isValidElement<EnrichedChildren>(child)) {\n      return child;\n    }\n\n    const onMouseEnter = (evt: MouseEvent) => {\n      setDimensions();\n\n      showTooltip();\n\n      child.props.onMouseEnter?.(evt);\n    };\n\n    const onMouseLeave = (evt: MouseEvent) => {\n      const relatedElement = evt.relatedTarget as HTMLElement;\n\n      const isOutsideTooltipArea =\n        relatedElement && !relatedElement.classList.contains('tooltip') && !relatedElement.classList.contains('tooltip-extra-hover-area');\n\n      if (isOutsideTooltipArea) {\n        hideTooltip();\n      }\n\n      child.props.onMouseLeave?.(evt);\n    };\n\n    const onFocus = (evt: FocusEvent) => {\n      setDimensions();\n\n      showTooltip();\n\n      child.props.onFocus?.(evt);\n    };\n\n    const onBlur = (evt: FocusEvent) => {\n      hideTooltip();\n\n      child.props.onBlur?.(evt);\n    };\n\n    return cloneElement<EnrichedChildren>(child, { ref, onMouseEnter, onMouseLeave, onFocus, onBlur, 'aria-describedby': propsClone.id });\n  });\n\n  useEffect(() => {\n    const cb = () => {\n      setDimensions();\n    };\n\n    document.addEventListener('scroll', cb);\n\n    return () => {\n      document.removeEventListener('scroll', cb);\n    };\n  }, [setDimensions]);\n\n  const topPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '-10px',\n        left: '0px',\n        transform: 'translateY(-100%)'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: '-10px',\n        left: `${width / 2}px`,\n        transform: 'translateY(-100%) translateX(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: '-10px',\n        left: `${width}px`,\n        transform: 'translateY(-100%) translateX(-100%)'\n      };\n    }\n  }, [alignment, width]);\n\n  const bottomPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: `${height + 10}px`,\n        left: '0px',\n        transform: 'none'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height + 10}px`,\n        left: `${width / 2}px`,\n        transform: 'translateX(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height + 10}px`,\n        left: `${width}px`,\n        transform: 'translateX(-100%)'\n      };\n    }\n  }, [alignment, height, width]);\n\n  const leftPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '0px',\n        left: '-10px',\n        transform: 'translateX(-100%)'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height / 2}px`,\n        left: '-10px',\n        transform: 'translateX(-100%) translateY(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height}px`,\n        left: '-10px',\n        transform: 'translateX(-100%) translateY(-100%)'\n      };\n    }\n  }, [alignment, height]);\n\n  const rightPositioning = useMemo(() => {\n    if (alignment === 'start') {\n      return {\n        top: '0px',\n        left: `${width + 10}px`,\n        transform: 'none'\n      };\n    }\n\n    if (alignment === 'center') {\n      return {\n        top: `${height / 2}px`,\n        left: `${width + 10}px`,\n        transform: 'translateY(-50%)'\n      };\n    }\n\n    if (alignment === 'end') {\n      return {\n        top: `${height}px`,\n        left: `${width + 10}px`,\n        transform: 'translateY(-100%)'\n      };\n    }\n  }, [alignment, height, width]);\n\n  const tooltipPosition = useMemo(() => {\n    switch (position) {\n      case 'top':\n        return topPositioning;\n      case 'bottom':\n        return bottomPositioning;\n      case 'left':\n        return leftPositioning;\n      case 'right':\n        return rightPositioning;\n    }\n  }, [position, topPositioning, bottomPositioning, leftPositioning, rightPositioning]);\n\n  const TooltipContent = useMemo(() => {\n    return (\n      <div\n        className={TooltipContainerClassName}\n        style={{\n          top: `${top}px`,\n          left: `${left}px`\n        }}\n        onMouseLeave={handleTooltipMouseLeave}\n        role=\"none\"\n      >\n        <div className=\"relative w-full h-full\">\n          <div {...propsClone} style={{ ...tooltipPosition }} id={propsClone.id} className={TooltipClassName} role=\"tooltip\">\n            {stringToBoolean(hasTitle) && <div className=\"title\">{title}</div>}\n            <p className=\"description\">{description}</p>\n            <div className=\"tooltip-extra-hover-area\" role=\"none\" />\n          </div>\n        </div>\n      </div>\n    );\n  }, [\n    TooltipClassName,\n    TooltipContainerClassName,\n    description,\n    hasTitle,\n    handleTooltipMouseLeave,\n    title,\n    propsClone,\n    tooltipPosition,\n    top,\n    left\n  ]);\n\n  const memoPortal = useMemo(() => {\n    if (visibility) {\n      return createPortal(TooltipContent, document.body);\n    }\n    return null;\n  }, [visibility, TooltipContent]);\n\n  return (\n    <>\n      {parsedChildren}\n      {memoPortal}\n    </>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useImperativeHandle, useRef, useState } from 'react';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetState } from '../shared/icon-set/icon-set';\n\nimport './button.css';\n\n/**\n * The available variants of the button. This variants will define the background and border color of the button.\n */\nexport type ButtonVariant = 'primary' | 'neutral' | 'success' | 'warning' | 'danger' | 'informative';\n\n/**\n * The available button appearances. Defines the button shape.\n */\nexport type ButtonAppearance = 'solid' | 'outline' | 'link';\n\nexport interface ButtonProps extends ComponentProps<'button'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  appearance?: ButtonAppearance;\n  /**\n   * The variant of the button. This variants will define the background and border color of the given Button.\n   */\n  variant?: ButtonVariant;\n  /**\n   * Defines if the button should be fluid.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Data attributes.\n   * Allow when implemented interface add data-* attribute.\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst Button: FC<ButtonProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'solid',\n  variant = 'primary',\n  fullWidth = false,\n  hasIcon = false,\n  iconOnly = false,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  children,\n  className = '',\n  ...props\n}) => {\n  const innerButtonRef = useRef<HTMLButtonElement | null>(null);\n  useImperativeHandle(ref, () => innerButtonRef.current as HTMLButtonElement);\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const buttonClassName = classNames(\n    { 'flex items-center justify-center content-center': !props.hidden },\n\n    `agora-btn ${fullWidth ? 'agora-btn-full' : ''} agora-btn-${appearance}-${variant}`,\n\n    {\n      [`agora-btn-with-icon`]: stringToBoolean(hasIcon),\n      'is-icon-only': stringToBoolean(iconOnly)\n    },\n\n    { darkMode: stringToBoolean(darkMode) },\n    className\n  );\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      innerButtonRef.current?.classList.add('active');\n\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      innerButtonRef.current?.classList.remove('active');\n      setActiveState('default');\n\n      innerButtonRef.current?.setAttribute('data-custom-triggered-click', 'true');\n      innerButtonRef.current?.click();\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    innerButtonRef.current?.classList.remove('active');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseDownHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n    innerButtonRef.current?.classList.add('active');\n    props.onMouseDown?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseUpHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    innerButtonRef.current?.classList.remove('active');\n    props.onMouseUp?.(evt);\n  };\n\n  const onClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    //  TRUE MOUSE CLICK OR TOUCH CLICK\n    if (evt.detail > 0) {\n      setActiveState(isTouchDevice ? 'default' : 'hover');\n      props.onClick?.(evt);\n      return;\n    }\n\n    //  CLICK FROM KEYBOARD\n\n    //  NEED TO CHECK THIS ATTRIBUTE BECAUSE FIREFOX DOES NOT TRIGGER CLICK EVENTS WHENEVER THE ENTER/SPACE/NUMPADENTER KEY IS PRESSED.\n    //  TO FIX THAT INCONSISTENCY, WE ADD A CUSTOM ATTRIBUTE TO SIGNAL THE ARTIFICIAL CLICK TRIGGER AND PREVENT THE CHROMIUM BASED BROWSERS OF DUPLICATE CLICK EVENTS.\n    //  ON KEYUP THE CLICK EVENT IS TRIGGERED AND WILL BE ADDED THE CUSTOM ATTRIBUTE. THEN, IF THE BROWSER TRIGGERED ANOTHER CLICK, THE HANDLER WILL NOT FIND THE CUSTOM ATTRIBUTE AND WILL NOT TRIGGER A DUPLICATED EVENT.\n    const shouldTriggerClick = innerButtonRef.current?.getAttribute('data-custom-triggered-click') === 'true';\n    innerButtonRef.current?.removeAttribute('data-custom-triggered-click');\n\n    if (!shouldTriggerClick) {\n      evt.preventDefault();\n      return;\n    }\n\n    setActiveState('default');\n    props.onClick?.(evt);\n  };\n\n  return (\n    <button\n      {...props}\n      className={buttonClassName}\n      ref={innerButtonRef}\n      onClick={onClickHandler}\n      onKeyDown={onKeyDownHandler}\n      onKeyUp={onKeyUpHandler}\n      onMouseDown={onMouseDownHandler}\n      onMouseUp={onMouseUpHandler}\n      onMouseLeave={onMouseLeaveHandler}\n      onMouseEnter={onMouseEnterHandler}\n    >\n      {hasIcon && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n\n      {!iconOnly && children && <span className=\"children-wrapper\">{children}</span>}\n\n      {hasIcon && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n    </button>\n  );\n};\n\nexport { Button };\n","import React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nimport { Button } from '@/components/button';\n\nexport interface InteractiveAvatarProps extends ComponentProps<'div'> {\n  alt?: string;\n  className?: string;\n  onActivate?: () => void;\n  children?: ReactNode;\n}\n\nconst InteractiveAvatar: FC<InteractiveAvatarProps> = ({\n  ref = null,\n  className,\n  onActivate,\n  children,\n  alt,\n  'aria-haspopup': ariaHasPopup,\n  'aria-expanded': ariaExpanded,\n  'aria-current': ariaCurrent,\n  'aria-label': ariaLabel,\n  role,\n  tabIndex,\n  ...props\n}): ReactElement => {\n  const onClickHandler = () => {\n    onActivate?.();\n  };\n\n  return (\n    <div ref={ref} {...props} className={className}>\n      <Button\n        {...(ariaHasPopup !== undefined ? { 'aria-haspopup': ariaHasPopup } : {})}\n        {...(ariaExpanded !== undefined ? { 'aria-expanded': ariaExpanded } : {})}\n        {...(ariaCurrent !== undefined ? { 'aria-current': ariaCurrent } : {})}\n        {...(role !== undefined ? { role: role.toString() } : {})}\n        {...(tabIndex !== undefined ? { tabIndex: tabIndex } : {})}\n        aria-label={alt ?? ariaLabel}\n        type=\"button\"\n        className={className}\n        onClick={onClickHandler}\n      >\n        {children}\n      </Button>\n    </div>\n  );\n};\n\nexport { InteractiveAvatar };\n","import React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nexport interface NonInteractiveAvatarProps extends ComponentProps<'div'> {\n  alt?: string;\n  className?: string;\n  children?: ReactNode;\n}\n\nconst NonInteractiveAvatar: FC<NonInteractiveAvatarProps> = ({ ref = null, className, children, alt, ...props }): ReactElement => {\n  return (\n    <div ref={ref} {...props} role={alt ? 'img' : undefined} aria-label={alt} className={className}>\n      {children}\n    </div>\n  );\n};\n\nexport { NonInteractiveAvatar };\n","import React, { ComponentProps, FC, ReactElement, ReactNode, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Icon, IconName } from '@/components/icon';\nimport { Tooltip, TooltipAlignment, TooltipPosition } from '@/components/tooltip';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { InteractiveAvatar } from './interactive-avatar';\nimport { NonInteractiveAvatar } from './non-interactive-avatar';\n\nimport './avatar.css';\n\n/**\n *  The available avatar types. Each of them define the appearance of the avatar image.\n */\nexport type AvatarType = 'image' | 'icon' | 'initials' | 'empty';\n/**\n * The available badge positions. Each of them defines the location of the badge on the avatar.\n */\nexport type AvatarBadgePosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n/**\n * The available badge variants. Each of them defines the color of the badge.\n */\nexport type AvatarBadgeVariant = 'primary' | 'secondary' | 'neutral' | 'informative' | 'success' | 'warning' | 'danger';\n/**\n * The available badge appearances. Defines solid or outline style.\n */\nexport type AvatarBadgeAppearance = 'solid' | 'outline';\n/**\n * The available badge sizes. Defines badge size.\n */\nexport type AvatarBadgeSize = 'default' | 'large';\n\nexport interface AvatarProps extends ComponentProps<'div'> {\n  /**\n   *  Defines the appearance of the avatar.\n   */\n  avatarType?: AvatarType;\n  /**\n   *  Defines the avatar source path. Depending on the selected avatar type the source requires:\n   *    1. Image - Path to an external image URL. In case an invalid path was given, alt text will be displayed.\n   *    2. Icon - Icon name that exists in AgoraDS. In case an invalid icon name was given, the default Agora icon will be displayed.\n   *    3. Initials - First two letters of a given text. It is possible to insert more than two letters, but it will always show the first two and it will capitalize them.\n   *\n   *    If no source was given or if the user inserts \"no-icon\" in the field for any of the available avatar types, the default Agora image will be displayed.\n   */\n  srcPath?: IconName;\n  /**\n   *  Avatar information, such as user name or other, that is only required in interactive avatars.\n   */\n  information?: ReactNode;\n  /**\n   *  Defines an alternative text of the avatar image.\n   */\n  alt?: string;\n  /**\n   *  The flag to place a badge on the avatar.\n   */\n  hasBadge?: BooleanProp;\n  /**\n   *  Defines the avatar badge position.\n   */\n  badgePosition?: AvatarBadgePosition;\n  /**\n   *  Defines the position of the avatar tooltip.\n   */\n  tooltipPosition?: TooltipPosition;\n  /**\n   * Defines the avatar badge variant. This variant will define the color of the badge.\n   */\n  badgeVariant?: AvatarBadgeVariant;\n  /**\n  /**\n   *  The defines the align the avatar tooltip alignment.\n   */\n  tooltipAlignment?: TooltipAlignment;\n  /**\n   *  Defines the avatar badge appearance.\n   */\n  badgeAppearance?: AvatarBadgeAppearance;\n  /**\n   *  Defines the avatar badge size.\n   */\n  badgeSize?: AvatarBadgeSize;\n  /**\n   *  Makes the avatar interactive. An interactive avatar can be focused by clicking on it, or pressing Space, Enter or NumpadEnter.\n   */\n  interactive?: BooleanProp;\n  /**\n   *  Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Callback to run whenever the avatar is activated.\n   */\n  onActivate?: () => void;\n}\n\nconst Avatar: FC<AvatarProps> = ({\n  ref = null,\n  className,\n  avatarType = 'icon',\n  srcPath,\n  hasBadge,\n  information,\n  badgePosition = 'top-right',\n  badgeVariant = 'danger',\n  badgeAppearance = 'solid',\n  badgeSize = 'large',\n  tooltipPosition = 'bottom',\n  tooltipAlignment = 'center',\n  interactive,\n  darkMode,\n  onActivate,\n  ...props\n}): ReactElement => {\n  const containerClasses = classNames('agora-avatar', className, {\n    interactive,\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const memoContent = useMemo(() => {\n    const parsedAvatarType = srcPath ? avatarType : 'icon';\n\n    const avatarClasses = classNames(`avatar avatar-${parsedAvatarType}`);\n\n    const badgeClasses = classNames(className, {\n      [`badge badge-${badgePosition} badge-${badgeSize} badge-${badgeAppearance}-${badgeVariant}`]: stringToBoolean(hasBadge)\n    });\n\n    if (avatarType === 'initials' && srcPath && srcPath.trim().length !== 0) {\n      return (\n        <>\n          <div className={avatarClasses}>{srcPath.slice(0, 2)}</div>\n          {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n        </>\n      );\n    }\n\n    if (avatarType === 'empty') {\n      return (\n        <>\n          <Icon name=\"./hand.png\" className={avatarClasses} aria-hidden />\n          {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n        </>\n      );\n    }\n\n    return (\n      <>\n        <Icon name={srcPath} className={avatarClasses} aria-hidden />\n        {stringToBoolean(hasBadge) && <div className={badgeClasses} />}\n      </>\n    );\n  }, [className, avatarType, srcPath, hasBadge, badgePosition, badgeVariant, badgeAppearance, badgeSize]);\n\n  if (stringToBoolean(interactive)) {\n    return (\n      <div className=\"agora-avatar-container\" ref={ref}>\n        <Tooltip\n          alignment={tooltipAlignment}\n          className=\"avatar-tooltip\"\n          description={information}\n          position={tooltipPosition}\n          variant={stringToBoolean(darkMode) ? 'dark' : 'light'}\n        >\n          <InteractiveAvatar {...props} className={containerClasses} onActivate={onActivate}>\n            {memoContent}\n          </InteractiveAvatar>\n        </Tooltip>\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"agora-avatar-container\" ref={ref}>\n      <NonInteractiveAvatar {...props} className={containerClasses}>\n        {memoContent}\n      </NonInteractiveAvatar>\n    </div>\n  );\n};\n\nexport { Avatar };\n","import { createContext, useContext } from 'react';\nimport { DropdownType } from '../dropdown-type';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSectionProps } from './internal-dropdown-section';\n\nexport interface InternalDropdownContextProps {\n  type: DropdownType;\n  sections: InternalDropdownSectionProps[];\n  options: InternalDropdownOptionProps[];\n  selectedOptions: InternalDropdownOptionProps[];\n\n  visibility?: boolean;\n  show: () => void;\n  hide: () => void;\n\n  first: () => void;\n  prev: () => void;\n  next: () => void;\n  last: () => void;\n\n  selectOption: (props: InternalDropdownOptionProps) => void;\n  selectSectionOptions: (name: string) => void;\n  isAllSectionOptionsSelected: (name: string) => boolean;\n\n  hasSectionOptionsToInteract: (name: string) => boolean;\n  selectAll: () => void;\n  isAllSelected: boolean;\n  isAllDisabled: boolean;\n\n  applyFilter: (filter: string) => void;\n  activeFilter: string;\n  resetFilter: () => void;\n\n  lastSelectedOption?: string;\n  setLastSelectedOption: (optionId: string | undefined) => void;\n}\n\nexport const InternalDropdownContext = createContext<InternalDropdownContextProps>({} as InternalDropdownContextProps);\n\nexport const useInternalDropdownContext = (): InternalDropdownContextProps => {\n  return useContext(InternalDropdownContext);\n};\n","import { Icon } from '@/components/icon';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useDebounceHook } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  ChangeEvent,\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent,\n  RefObject,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useRef,\n  useState\n} from 'react';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-filter-section.css';\n\nexport interface InternalDropdownFilterSectionRef extends RefObject<HTMLInputElement> {\n  filterElem: HTMLLIElement | null;\n  resetFilter: () => void;\n}\n\nexport interface InternalDropdownFilterSectionProps extends ComponentProps<'input'> {\n  darkMode?: BooleanProp;\n  className?: string;\n  debounceTimeout?: number;\n}\n\nconst InternalDropdownFilterSection: FC<InternalDropdownFilterSectionProps> = ({\n  debounceTimeout = 300,\n  ref = null,\n  darkMode,\n  className,\n  ...props\n}) => {\n  const dropdownContext = useInternalDropdownContext();\n  const visibility = dropdownContext.visibility;\n  const applyFilter = dropdownContext.applyFilter;\n  const hide = dropdownContext.hide;\n  const next = dropdownContext.next;\n\n  const [currentFilter, setCurrentFilter] = useState('');\n\n  const debouncedApplyFilter = useDebounceHook(applyFilter, debounceTimeout);\n\n  const onInputChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentFilter(evt.target.value);\n  };\n\n  const generatedId = useId();\n\n  const inputId = String(props.id ?? `agora-dropdown-filter-${generatedId}`).replaceAll(':', '');\n  const inputAriaLabel = props['aria-label'];\n  const inputPlaceholder = props.placeholder;\n  const labelText = inputAriaLabel || inputPlaceholder || 'Search';\n\n  useEffect(() => {\n    setCurrentFilter(dropdownContext.activeFilter);\n  }, [dropdownContext.activeFilter]);\n\n  useEffect(() => {\n    debouncedApplyFilter.setArgs(currentFilter.toLowerCase());\n  }, [currentFilter, debouncedApplyFilter]);\n\n  const resetFilter = () => {\n    setCurrentFilter('');\n  };\n\n  const inputRef = useRef<HTMLInputElement>(null);\n  const innerRef = useRef<HTMLLIElement>(null);\n  useImperativeHandle(ref, () => {\n    return {\n      current: inputRef.current,\n      filterElem: innerRef.current,\n      resetFilter\n    } as InternalDropdownFilterSectionRef & HTMLInputElement;\n  }, [innerRef]);\n\n  const onKeyDownCaptureHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const code = evt.code;\n\n    if (code === 'Tab') {\n      evt.preventDefault();\n      evt.stopPropagation();\n\n      hide();\n    }\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const code = evt.code;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'ArrowDown':\n        next();\n        break;\n    }\n  };\n\n  const onMouseDownCaptureHandler = (evt: MouseEvent<SVGElement | HTMLImageElement>) => {\n    evt.preventDefault();\n    inputRef.current?.focus();\n  };\n\n  useEffect(() => {\n    if (innerRef.current && visibility) {\n      const { height } = innerRef.current.getBoundingClientRect();\n      innerRef.current.setAttribute('data-filter-section-height', `${height}`);\n    }\n  }, [visibility]);\n\n  const dropdownFilterClasses = classNames('agora-dropdown-filter-section', className, { 'dark-mode': stringToBoolean(darkMode) });\n\n  return (\n    <ul className={dropdownFilterClasses} role=\"presentation\">\n      <li className=\"agora-dropdown-filter-section-item\" ref={innerRef} role=\"presentation\">\n        <label htmlFor={inputId} className=\"sr-only\" tabIndex={-1}>\n          {labelText}\n        </label>\n\n        <input\n          ref={inputRef}\n          {...props}\n          id={inputId}\n          className={'input-filter'}\n          type=\"text\"\n          value={currentFilter}\n          onChange={onInputChange}\n          onKeyDownCapture={onKeyDownCaptureHandler}\n          onKeyDown={onKeyDownHandler}\n        />\n        <Icon className=\"input-icon\" name=\"agora-line-search\" aria-hidden onMouseDownCapture={onMouseDownCaptureHandler} />\n      </li>\n    </ul>\n  );\n};\n\nexport { InternalDropdownFilterSection };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport './internal-dropdown-no-results.css';\n\nexport interface InternalNoResultsProps extends ComponentPropsWithoutRef<'div'> {\n  label: ReactNode;\n  darkMode?: BooleanProp;\n}\n\nexport const InternalNoResults: FC<InternalNoResultsProps> = ({ className, darkMode, label, ...props }) => {\n  const classes = classNames('agora-dropdown-no-results', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  return (\n    <div {...props} className={classes}>\n      <div className=\"label\">{label}</div>\n    </div>\n  );\n};\n","import { Icon } from '@/components/icon';\nimport { BooleanProp, IconPosition } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { DropdownType } from '../dropdown-type';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-option.css';\n\nconst OptionComponent: FC<{ type: DropdownType; hasIcon?: BooleanProp; icon?: string; children: ReactNode }> = ({\n  type,\n  icon,\n  hasIcon,\n  children\n}) => {\n  if (type === 'checkbox') {\n    return (\n      <span className=\"flex gap-8 w-full\">\n        <Icon className=\"checkbox-mark\" name=\"agora-line-check\" aria-hidden />\n        <span className=\"option-content\">{children}</span>\n        {stringToBoolean(hasIcon) && <Icon className=\"option-icon\" name={icon} aria-hidden />}\n      </span>\n    );\n  }\n\n  if (!stringToBoolean(hasIcon)) {\n    return <span className=\"option-content\">{children}</span>;\n  }\n\n  return (\n    <>\n      <Icon className=\"option-icon\" name={icon} aria-hidden />\n      <span className=\"option-content\">{children}</span>\n    </>\n  );\n};\n\nexport interface InternalDropdownOptionProps extends ComponentProps<'li'> {\n  className?: string;\n  darkMode?: BooleanProp;\n  name?: string;\n  value: string;\n  children: ReactNode;\n  hasIcon?: BooleanProp;\n  icon?: string;\n  iconPosition?: IconPosition;\n  disabled?: BooleanProp;\n  selected?: BooleanProp;\n  filtered?: BooleanProp;\n  sectionOptionId?: string;\n  onRangeSelection?: (optionId: string, isShiftClick: boolean) => void;\n}\n\nconst InternalDropdownOption: FC<InternalDropdownOptionProps> = ({\n  ref = null,\n  className,\n  darkMode,\n  disabled,\n  selected,\n  filtered,\n  hasIcon,\n  icon,\n  iconPosition = 'leading',\n  children,\n  name,\n  value,\n  onRangeSelection,\n  sectionOptionId = '',\n  ...props\n}) => {\n  const internalDropdownOptionRef = useRef<HTMLLIElement | null>(null);\n  useImperativeHandle(ref, () => internalDropdownOptionRef.current as HTMLLIElement);\n\n  const parsedIconName = icon?.replace('solid', 'line');\n  const [iconName, setIconName] = useState(parsedIconName ?? '');\n\n  const dropdownContext = useInternalDropdownContext();\n  const selectOption = dropdownContext.selectOption;\n  const options = dropdownContext.options;\n  const last = dropdownContext.last;\n  const first = dropdownContext.first;\n  const next = dropdownContext.next;\n  const prev = dropdownContext.prev;\n  const type = dropdownContext.type;\n  const hide = dropdownContext.hide;\n\n  const optionWrapperClasses = classNames(\n    'agora-dropdown-option',\n    className,\n\n    { [type]: type },\n    { disabled: stringToBoolean(disabled) },\n    { selected: stringToBoolean(selected) },\n    { filtered: stringToBoolean(filtered) },\n    {\n      'dark-mode': stringToBoolean(darkMode),\n      'leading-icon': stringToBoolean(hasIcon) && iconPosition === 'leading',\n      'trailing-icon': stringToBoolean(hasIcon) && iconPosition === 'trailing'\n    }\n  );\n\n  const select = () => {\n    const option = options.find((opt) => {\n      return opt.value === value && opt.name === name;\n    });\n\n    if (option) {\n      selectOption(option);\n    }\n  };\n\n  const handleRangeSelectionAndSelect = (isShiftClick: boolean) => {\n    // For checkbox with shift+click, handle range selection\n    if (type === 'checkbox' && isShiftClick && onRangeSelection && sectionOptionId) {\n      onRangeSelection(sectionOptionId, isShiftClick);\n      return;\n    }\n\n    // For all other cases, perform regular selection\n    select();\n\n    // Update last selected option for future range selections\n    if (onRangeSelection && sectionOptionId) {\n      onRangeSelection(sectionOptionId, false);\n    }\n  };\n\n  const onKeyDownCaptureHandler = (evt: KeyboardEvent<HTMLLIElement>) => {\n    const code = evt.code;\n\n    //  SPACE, UP AND DOWN TRIGGERS SCROLLING BEHAVIOUR. ITS MUST BE HANDLED IN KEYDOWN CAPTURE TO PREVENT IT.\n    if (code === 'Space' || code === 'Enter' || code === 'NumpadEnter') {\n      evt.stopPropagation();\n      evt.preventDefault();\n      handleRangeSelectionAndSelect(evt.shiftKey);\n    }\n\n    if (code === 'Tab') {\n      evt.stopPropagation();\n      evt.preventDefault();\n\n      hide();\n    }\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLLIElement>) => {\n    const { code } = evt;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'ArrowUp':\n        prev();\n        break;\n      case 'ArrowDown':\n        next();\n        break;\n      case 'Home':\n        first();\n        break;\n      case 'End':\n        last();\n        break;\n    }\n  };\n\n  const onMouseDownCapture = (evt: MouseEvent<HTMLLIElement>) => {\n    if (disabled) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const clickHandler = (evt: MouseEvent<HTMLLIElement>) => {\n    if (disabled) {\n      evt.preventDefault();\n      evt.stopPropagation();\n      return;\n    }\n\n    handleRangeSelectionAndSelect(evt.shiftKey);\n  };\n\n  const applySolidIcon = () => {\n    if (!disabled) {\n      setIconName((lastIconName) => lastIconName.replace('line', 'solid'));\n    }\n  };\n\n  const applyLineIcon = () => {\n    if (!disabled) {\n      setIconName((lastIconName) => lastIconName.replace('solid', 'line'));\n    }\n  };\n\n  useEffect(() => {\n    if (!internalDropdownOptionRef?.current) return;\n\n    const optionHeight = internalDropdownOptionRef.current.getBoundingClientRect().height;\n    internalDropdownOptionRef.current.setAttribute('data-section-option-height', `${optionHeight}`);\n  });\n\n  return (\n    <li\n      ref={internalDropdownOptionRef}\n      className={optionWrapperClasses}\n      role=\"option\"\n      tabIndex={disabled ? -1 : 0}\n      aria-selected={stringToBoolean(selected)}\n      onKeyDown={onKeyDownHandler}\n      onKeyDownCapture={onKeyDownCaptureHandler}\n      onMouseDownCapture={onMouseDownCapture}\n      onClick={clickHandler}\n      onMouseEnter={applySolidIcon}\n      onMouseMove={applySolidIcon}\n      onMouseLeave={applyLineIcon}\n      data-section-option-id={sectionOptionId}\n      {...props}\n    >\n      <OptionComponent type={type} hasIcon={stringToBoolean(hasIcon)} icon={iconName}>\n        {children}\n      </OptionComponent>\n    </li>\n  );\n};\n\nexport { InternalDropdownOption };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { createRef, FC, ReactElement, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { InternalDropdownOption, InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-section.css';\n\nexport interface InternalDropdownSectionProps {\n  darkMode?: BooleanProp;\n  className?: string;\n  name: string;\n  label?: string;\n  hideLabel: BooleanProp;\n  children: ReactElement<InternalDropdownOptionProps> | ReactElement<InternalDropdownOptionProps>[];\n}\n\nexport const InternalDropdownSection: FC<InternalDropdownSectionProps> = ({ darkMode, className, name, label = '', hideLabel }) => {\n  const dropdownContext = useInternalDropdownContext();\n  const options = dropdownContext.options;\n  const type = dropdownContext.type;\n  const visibility = dropdownContext.visibility;\n  const lastSelectedOption = dropdownContext.lastSelectedOption;\n  const setLastSelectedOption = dropdownContext.setLastSelectedOption;\n\n  const sectionNameRef = useRef<HTMLLIElement>(null);\n\n  const sectionClassNames = classNames('agora-dropdown-section', className, { 'dark-mode': stringToBoolean(darkMode) });\n\n  const handleRangeSelection = useCallback(\n    (currentOptionId: string, isShiftClick: boolean) => {\n      // Always update the last selected option for non-shift clicks\n      if (!isShiftClick) {\n        setLastSelectedOption(currentOptionId);\n        return;\n      }\n\n      // Handle range selection only for checkbox type with shift+click\n      if (type !== 'checkbox' || !lastSelectedOption) {\n        setLastSelectedOption(currentOptionId);\n        return;\n      }\n\n      const sectionOptions = options.filter((opt) => opt.name === name);\n      const lastIndex = sectionOptions.findIndex((opt) => `${name}-${type}-${opt.value}` === lastSelectedOption);\n      const currentIndex = sectionOptions.findIndex((opt) => `${name}-${type}-${opt.value}` === currentOptionId);\n\n      if (lastIndex === -1 || currentIndex === -1) {\n        setLastSelectedOption(currentOptionId);\n        return;\n      }\n\n      const startIndex = Math.min(lastIndex, currentIndex);\n      const endIndex = Math.max(lastIndex, currentIndex);\n\n      // Get the current option to determine if we're selecting or deselecting\n      const currentOption = sectionOptions[currentIndex];\n      const shouldSelect = !currentOption.selected;\n\n      // Select/deselect all options in the range\n      for (let i = startIndex; i <= endIndex; i++) {\n        const option = sectionOptions[i];\n\n        // Only change selection if it's different from desired state\n        if (option.selected !== shouldSelect) {\n          dropdownContext.selectOption(option);\n        }\n      }\n\n      // Update last selected to current for future range selections\n      setLastSelectedOption(currentOptionId);\n    },\n    [dropdownContext, lastSelectedOption, name, setLastSelectedOption, type, options]\n  );\n\n  const sectionOptions = useMemo(() => {\n    return options\n      .filter((opt) => opt.name === name)\n      .map((props: InternalDropdownOptionProps) => {\n        const key = `${name}-${type}-${props.value}`;\n\n        const optionClassNames = classNames(props.className, {\n          'no-section-name': type !== 'checkbox' && stringToBoolean(hideLabel)\n        });\n\n        const newRef = createRef<HTMLLIElement>();\n\n        return (\n          <InternalDropdownOption\n            {...props}\n            key={key}\n            sectionOptionId={key}\n            ref={newRef}\n            className={optionClassNames}\n            darkMode={darkMode}\n            onRangeSelection={handleRangeSelection}\n          />\n        );\n      });\n  }, [options, name, type, handleRangeSelection, hideLabel, darkMode]);\n\n  useEffect(() => {\n    if (sectionNameRef.current && visibility) {\n      const sectionNameHeight = sectionNameRef.current.getBoundingClientRect().height;\n      sectionNameRef.current.setAttribute('data-section-name-height', `${sectionNameHeight}`);\n    }\n  }, [visibility, type]);\n\n  const labelVisible = !stringToBoolean(hideLabel);\n\n  return (\n    <ul className={sectionClassNames} role=\"group\" {...(labelVisible ? { 'aria-labelledby': name } : {})}>\n      {labelVisible && (\n        <li ref={sectionNameRef} className=\"section-name\" id={name} role=\"presentation\">\n          {label}\n        </li>\n      )}\n      {sectionOptions}\n    </ul>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { Icon } from '@/components/icon';\nimport React, { FC, KeyboardEvent as ReactKeyboardEvent, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { stringToBoolean } from '@/utils';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport './internal-dropdown-select-all-section.css';\n\nexport interface InternalDropdownSelectAllSectionProps {\n  darkMode?: BooleanProp;\n  className?: string;\n  label: string;\n}\n\nexport const InternalDropdownSelectAllSection: FC<InternalDropdownSelectAllSectionProps> = ({ darkMode, className, label }) => {\n  const ref = useRef<HTMLLIElement>(null);\n\n  const dropdownContext = useInternalDropdownContext();\n  const visibility = dropdownContext.visibility;\n  const isAllDisabled = dropdownContext.isAllDisabled;\n  const isAllSelected = dropdownContext.isAllSelected;\n  const selectAll = dropdownContext.selectAll;\n  const last = dropdownContext.last;\n  const first = dropdownContext.first;\n  const next = dropdownContext.next;\n  const prev = dropdownContext.prev;\n  const hide = dropdownContext.hide;\n\n  const onKeydown = (evt: ReactKeyboardEvent<HTMLInputElement>) => {\n    const { code } = evt;\n\n    switch (code) {\n      case 'Escape':\n        //  ESCAPE WITH NVDA ACTIVE BUG\n        //  https://github.com/nvaccess/nvda/issues/4428\n        hide();\n        break;\n      case 'ArrowUp':\n        prev();\n        break;\n      case 'ArrowDown':\n        next();\n        break;\n      case 'Home':\n        first();\n        break;\n      case 'End':\n        last();\n        break;\n      case 'Space':\n        evt.preventDefault();\n        selectAll();\n        break;\n      case 'Enter':\n      case 'NumpadEnter':\n        selectAll();\n        break;\n    }\n  };\n\n  const clickHandler = () => {\n    selectAll();\n  };\n  useEffect(() => {\n    const currentRef = ref.current;\n\n    const handler = (evt: KeyboardEvent) => {\n      if (evt.code === 'Tab') {\n        evt.stopPropagation();\n        evt.preventDefault();\n\n        hide();\n      }\n    };\n\n    if (currentRef) {\n      currentRef.addEventListener('keydown', handler, true);\n    }\n\n    return () => {\n      if (currentRef) {\n        currentRef.removeEventListener('keydown', handler, true);\n      }\n    };\n  }, [hide]);\n\n  useEffect(() => {\n    const currentRef = ref.current;\n\n    if (currentRef && visibility) {\n      const { height } = currentRef.getBoundingClientRect();\n      currentRef.setAttribute('data-select-all-section-height', `${height}`);\n    }\n  }, [visibility]);\n\n  const dropdownselectAllSectionClassNames = classNames('agora-dropdown-select-all-section', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const dropdownAllOptionClassNames = classNames('agora-dropdown-all-option', {\n    'is-selected': isAllSelected\n  });\n\n  return (\n    <ul className={dropdownselectAllSectionClassNames} role=\"presentation\">\n      <li ref={ref} className={dropdownAllOptionClassNames} role=\"application\" aria-roledescription=\" \">\n        <div\n          className=\"agora-dropdown-all-option-item\"\n          tabIndex={0}\n          role=\"checkbox\"\n          aria-checked={isAllSelected}\n          aria-disabled={isAllDisabled}\n          onKeyDown={onKeydown}\n          onClick={clickHandler}\n        >\n          <Icon name=\"agora-line-check\" aria-hidden />\n          <span>{label}</span>\n        </div>\n      </li>\n    </ul>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode, Ref, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { useInternalDropdownContext } from './internal-dropdown-context';\nimport { InternalDropdownFilterSection, InternalDropdownFilterSectionRef } from './internal-dropdown-filter-section';\nimport { InternalNoResults } from './internal-dropdown-no-results';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSection } from './internal-dropdown-section';\nimport { InternalDropdownSelectAllSection } from './internal-dropdown-select-all-section';\nimport './internal-dropdown.css';\n\nexport interface InternalDropdownElement extends HTMLDivElement {\n  resetFilter: () => void;\n}\n\nexport interface InternalDropdownProps extends ComponentProps<'div'> {\n  darkMode?: BooleanProp;\n\n  optionsVisible?: number;\n\n  searchable?: BooleanProp;\n\n  searchAriaLabel?: string;\n\n  searchPlaceholder?: string;\n\n  noSearchResults?: ReactNode;\n\n  searchDebounceTimeout?: number;\n\n  onInputSearchChange?: (value: string) => void;\n\n  selectAllLabel?: string;\n}\n\nconst InternalDropdown: FC<InternalDropdownProps> = ({\n  ref = null,\n  darkMode,\n  selectAllLabel,\n  searchPlaceholder,\n  searchAriaLabel,\n  searchable,\n  optionsVisible = 6,\n  noSearchResults = '',\n  ...props\n}: InternalDropdownProps) => {\n  const context = useInternalDropdownContext();\n  const visibility = context.visibility;\n  const activeFilter = context.activeFilter;\n  const sections = context.sections;\n  const options = context.options;\n  const type = context.type;\n\n  const filterRef = useRef<InternalDropdownFilterSectionRef>(null);\n  const resetFilter = useCallback(() => {\n    if (searchable && filterRef.current) {\n      filterRef.current.resetFilter();\n    }\n  }, [searchable]);\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<InternalDropdownElement>(ref as Ref<InternalDropdownElement>, innerRef, { resetFilter } as InternalDropdownElement);\n\n  const isOpenRef = useRef(false);\n\n  const [maxHeightStyleProp, setMaxHeightStyleProp] = useState('');\n\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const getFilterSectionHeight = useCallback(() => {\n    if (innerRef.current && searchable) {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-filter-section-item');\n\n      const elem = (queryResults[0] as HTMLDivElement) ?? null;\n\n      if (elem) {\n        const val = elem.getAttribute('data-filter-section-height');\n        return val ? Number(val) : 0;\n      }\n    }\n\n    return 0;\n  }, [searchable]);\n\n  const getSelectAllSectionHeight = useCallback(() => {\n    if (innerRef.current && type === 'checkbox') {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-all-option');\n\n      const elem = (queryResults[0] as HTMLDivElement) ?? null;\n\n      if (elem) {\n        const val = elem.getAttribute('data-select-all-section-height');\n        return val ? Number(val) : 0;\n      }\n    }\n\n    return 0;\n  }, [type]);\n\n  const getVisibleSectionNamesHeight = useCallback((visibleSections: string[]) => {\n    let heightCount = 0;\n\n    if (innerRef.current) {\n      const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-section .section-name');\n\n      queryResults.forEach((elem) => {\n        const sectionName = elem.getAttribute('data-section-option-id');\n\n        if (sectionName && visibleSections.includes(sectionName)) {\n          const val = elem.getAttribute('data-section-name-height');\n          heightCount = heightCount + (val ? Number(val) : 0);\n        }\n      });\n    }\n\n    return heightCount;\n  }, []);\n\n  const getVisibleOptionsHeight = useCallback(\n    (visibleOptions: InternalDropdownOptionProps[]) => {\n      let heightCount = 0;\n\n      if (innerRef.current) {\n        const visibleOptionsKeys = visibleOptions.map((opt) => `${opt.name}-${type}-${opt.value}`);\n\n        const queryResults = innerRef.current.querySelectorAll('.agora-dropdown-section .agora-dropdown-option');\n\n        queryResults.forEach((elem) => {\n          const optionId = elem.getAttribute('data-section-option-id');\n\n          if (optionId && visibleOptionsKeys.includes(optionId)) {\n            const val = elem.getAttribute('data-section-option-height');\n            heightCount = heightCount + (val ? Number(val) : 0);\n          }\n        });\n      }\n\n      return heightCount;\n    },\n    [type]\n  );\n\n  const getListboxBorderWidths = useCallback(() => {\n    if (!innerRef.current) {\n      return 0;\n    }\n\n    const computedStyle = getComputedStyle(innerRef.current);\n\n    if (computedStyle) {\n      const borderTopWidth = parseFloat(computedStyle.borderTopWidth);\n      const borderBottomWidth = parseFloat(computedStyle.borderBottomWidth);\n      return borderTopWidth + borderBottomWidth;\n    }\n\n    return 0;\n  }, [innerRef]);\n\n  useEffect(() => {\n    if (visibility) {\n      isOpenRef.current = true;\n    }\n  }, [visibility]);\n\n  useEffect(() => {\n    if (!visibility) return;\n\n    if (isOpenRef.current && innerRef.current) {\n      innerRef.current.scrollTop = 0;\n    }\n\n    const visibleOptions = options.filter((opt) => !opt.filtered);\n\n    if (visibleOptions.length > optionsVisible) {\n      const containedOptions = visibleOptions.slice(0, optionsVisible);\n      const visibleSections = [...new Set(containedOptions.map((opt) => opt.name ?? '').filter((opt) => !!opt))];\n\n      let maxHeight = 0;\n      maxHeight += getFilterSectionHeight();\n      maxHeight += getSelectAllSectionHeight();\n      maxHeight += getVisibleSectionNamesHeight(visibleSections);\n      maxHeight += getVisibleOptionsHeight(containedOptions);\n\n      if (maxHeight > 0) {\n        maxHeight += getListboxBorderWidths();\n        setMaxHeightStyleProp(`${maxHeight}px`);\n      } else {\n        setMaxHeightStyleProp('none');\n      }\n    } else {\n      setMaxHeightStyleProp('none');\n    }\n\n    isOpenRef.current = false;\n  }, [\n    visibility,\n    type,\n    activeFilter,\n    options,\n    optionsVisible,\n    getFilterSectionHeight,\n    getSelectAllSectionHeight,\n    getVisibleSectionNamesHeight,\n    getVisibleOptionsHeight,\n    getListboxBorderWidths\n  ]);\n\n  const dropdownClasses = classNames('agora-dropdown', propsClone.className, { visible: visibility });\n\n  const hasOptions = useMemo(() => options.length > 0, [options]);\n  const hasSectionsWithResults = useMemo(() => options.some((opt) => !opt.filtered), [options]);\n  const allSectionResultsDisabled = useMemo(() => {\n    const visibleResults = options.filter((opt) => !opt.filtered);\n    return hasSectionsWithResults && visibleResults.findIndex((opt) => !opt.disabled) === -1;\n  }, [hasSectionsWithResults, options]);\n  const sectionWithResults = useMemo(() => options.filter((opt) => !opt.filtered).map((opt) => opt.name), [options]);\n\n  return (\n    <div\n      className={dropdownClasses}\n      ref={innerRef}\n      style={{\n        maxHeight: maxHeightStyleProp === '' ? '0px' : maxHeightStyleProp,\n        overflowY: maxHeightStyleProp === '' ? 'hidden' : 'auto'\n      }}\n    >\n      <div {...propsClone} role=\"listbox\">\n        {searchable && (\n          <InternalDropdownFilterSection\n            ref={filterRef as Ref<HTMLInputElement>}\n            darkMode={darkMode}\n            aria-label={searchAriaLabel}\n            placeholder={searchPlaceholder}\n          />\n        )}\n\n        {type === 'checkbox' && hasSectionsWithResults && !allSectionResultsDisabled && selectAllLabel && (\n          <InternalDropdownSelectAllSection darkMode={darkMode} label={selectAllLabel} />\n        )}\n\n        {hasSectionsWithResults &&\n          sections\n            .filter((s) => sectionWithResults.indexOf(s.name) >= 0)\n            .map((section, index) => {\n              const key = `agora-dropdown-option-${propsClone.id}-${index}`;\n              return <InternalDropdownSection darkMode={darkMode} key={key} {...section} />;\n            })}\n\n        {(!hasOptions || !hasSectionsWithResults) && <InternalNoResults darkMode={darkMode} label={noSearchResults} />}\n      </div>\n    </div>\n  );\n};\n\nexport { InternalDropdown };\n","import { Children, ReactElement, RefObject, useCallback, useEffect, useMemo, useState } from 'react';\nimport { DropdownOptionProps } from '../dropdown-option';\nimport { DropdownSectionProps } from '../dropdown-section';\nimport { DropdownType } from '../dropdown-type';\nimport { InternalDropdownElement } from './internal-dropdown';\nimport { InternalDropdownContextProps } from './internal-dropdown-context';\nimport { InternalDropdownOptionProps } from './internal-dropdown-option';\nimport { InternalDropdownSectionProps } from './internal-dropdown-section';\nimport { asyncTrigger } from '@/utils';\n\nexport const useDropdownState = (\n  internalDropdownRef: RefObject<InternalDropdownElement>,\n  type: DropdownType,\n  hideSectionNames: boolean,\n  onChange?: (options: DropdownOptionProps[]) => void,\n  onSearchChange?: (term: string, options: DropdownOptionProps[]) => void,\n  onShow?: () => void,\n  onHide?: () => void,\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]\n) => {\n  //  #region \"OPTIONS\"\n  const [sections, setSections] = useState<Array<InternalDropdownSectionProps>>([]);\n  const [options, setOptions] = useState<Array<InternalDropdownOptionProps>>([]);\n  const [backupOptions, setBackupOptions] = useState<InternalDropdownOptionProps[]>([]);\n  const [lastSelectedOption, setLastSelectedOption] = useState<string | undefined>(undefined);\n\n  useEffect(() => {\n    const parsedSectionProps: Array<InternalDropdownSectionProps> = [];\n    const parsedOptionProps: Array<InternalDropdownOptionProps> = [];\n\n    if (children) {\n      if (!Array.isArray(children)) {\n        parsedSectionProps.push({\n          ...children.props,\n          hideLabel: hideSectionNames\n        } as InternalDropdownSectionProps);\n      } else {\n        Children.forEach(children, (c) => {\n          parsedSectionProps.push({\n            ...c.props,\n            hideLabel: hideSectionNames\n          } as InternalDropdownSectionProps);\n        });\n      }\n    }\n\n    parsedSectionProps.forEach((sec) => {\n      Children.forEach(sec.children, (opt) => {\n        parsedOptionProps.push({\n          ...opt.props,\n          name: sec.name\n        });\n      });\n    });\n\n    setSections(parsedSectionProps);\n    setOptions(parsedOptionProps);\n    setBackupOptions(parsedOptionProps);\n  }, [children, type, hideSectionNames]);\n\n  //  #endregion \"OPTIONS\"\n\n  //  #region \"FILTER\"\n  const [activeFilter, setActiveFilter] = useState('');\n\n  const applyFilter = (newFilter: string) => {\n    setActiveFilter((lastFilter) => {\n      if (lastFilter === newFilter) {\n        return lastFilter;\n      }\n\n      setOptions((lastOptions) => {\n        const newOptions = lastOptions.map((opt) => {\n          if (newFilter === '') {\n            //  CLEAR FILTER\n            return { ...opt, filtered: false };\n          }\n\n          const val = opt.value.toLowerCase();\n          const childrenVal = opt.children?.toString().toLowerCase();\n\n          const notFound = !val.includes(newFilter) && !childrenVal?.toString().includes(newFilter);\n\n          return {\n            ...opt,\n            filtered: notFound\n          };\n        });\n\n        if (onSearchChange) {\n          const results = newOptions.filter((opt) => !opt.filtered);\n          onSearchChange(newFilter, results);\n        }\n\n        return newOptions;\n      });\n\n      return newFilter;\n    });\n  };\n\n  const resetFilter = useCallback((): void => {\n    setActiveFilter('');\n    setOptions(backupOptions);\n  }, [backupOptions]);\n\n  //  #endregion \"FILTER\"\n\n  //  #region \"NAVIGATION\"\n\n  const focusElem = (elem?: HTMLElement) => {\n    if (elem) {\n      elem.focus();\n      elem.scrollIntoView({ behavior: 'instant', block: 'center', inline: 'start' });\n    }\n  };\n\n  const first = useCallback(() => {\n    if (internalDropdownRef.current) {\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      const idx = Array.from(domOptions).findIndex((opt) => {\n        return (opt as HTMLElement).tabIndex === 0;\n      });\n\n      if (idx >= 0) {\n        focusElem(domOptions[idx] as HTMLElement);\n      }\n    }\n  }, [internalDropdownRef]);\n\n  const last = useCallback(() => {\n    if (internalDropdownRef.current) {\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const idx = Array.from(domOptions).findLastIndex((opt) => {\n          return (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef]);\n\n  const next = useCallback((): void => {\n    if (internalDropdownRef.current) {\n      const current = document.activeElement;\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const currentIndex = Array.from(domOptions).findIndex((opt) => {\n          return opt.isEqualNode(current);\n        });\n\n        const idx = Array.from(domOptions).findIndex((opt, i) => {\n          return i > currentIndex && (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef]);\n\n  const prev = useCallback((): void => {\n    if (internalDropdownRef.current) {\n      const current = document.activeElement;\n      const inputFilter = Array.from(internalDropdownRef.current?.querySelectorAll('.input-filter') ?? []);\n      const selectAll = Array.from(internalDropdownRef.current?.querySelectorAll('.agora-dropdown-all-option-item') ?? []);\n      const opts = Array.from(internalDropdownRef.current?.querySelectorAll('[role=\"option\"]:not(.filtered)') ?? []);\n      const domOptions = [...inputFilter, ...selectAll, ...opts];\n\n      if (domOptions.length > 0) {\n        const currentIndex = Array.from(domOptions).findIndex((opt) => {\n          return opt.isEqualNode(current);\n        });\n\n        const idx = Array.from(domOptions).findLastIndex((opt, i) => {\n          return i < currentIndex && (opt as HTMLElement).tabIndex === 0;\n        });\n\n        if (idx >= 0) {\n          focusElem(domOptions[idx] as HTMLElement);\n        }\n      }\n    }\n  }, [internalDropdownRef]);\n\n  //  #endregion \"NAVIGATION\"\n\n  //  #region \"VISIBILITY\"\n  const [visibility, setVisibility] = useState(false);\n\n  const show = useCallback(() => {\n    if (internalDropdownRef.current) {\n      onShow?.();\n      internalDropdownRef.current?.scrollTo?.(0, 0);\n    }\n\n    setVisibility(true);\n  }, [onShow, internalDropdownRef]);\n\n  const hide = useCallback(() => {\n    onHide?.();\n    setVisibility(false);\n    resetFilter();\n  }, [resetFilter, onHide]);\n\n  //  #endregion \"VISIBILITY\"\n\n  //  #region \"SELECTION\"\n  const triggerOnChange = useCallback(\n    (newOptions: InternalDropdownOptionProps[]) => {\n      const selectedOptions = newOptions\n        .filter((o) => o.selected)\n        .map((o) => {\n          return {\n            selected: o.selected,\n            value: o.value,\n            className: o.className,\n            disabled: o.disabled,\n            hasIcon: o.hasIcon,\n            icon: o.icon,\n            iconPosition: o.iconPosition,\n            children: o.children\n          } as DropdownOptionProps;\n        });\n\n      if (type === 'text' && selectedOptions.length > 0) {\n        hide();\n      }\n\n      //  NEED THIS TO PREVENT MULTIPLE SET STATES WITH RENDERING IN PROCESS\n      //  BY SETTING THIS SET TIMEOUT WE ALLOW REACT TO FULLY RENDER AND THEN TRIGGER THE ONCHANGE\n      //  ON CHANGE MY SET A NEW STATE ON DROPDOWN AND INITIATE A NEW RENDER OF THE COMPONENT\n      asyncTrigger(() => onChange?.(selectedOptions));\n    },\n    [onChange, hide, type]\n  );\n\n  const isMultiSelection = useMemo(() => {\n    return type === 'checkbox';\n  }, [type]);\n\n  const selectOption = useCallback(\n    (option: InternalDropdownOptionProps): void => {\n      if (option.disabled || option.filtered) {\n        return;\n      }\n\n      setOptions((lastOptions) => {\n        const newOptions = lastOptions.map((opt) => {\n          const isProvidedOption = option.name === opt.name && option.value === opt.value;\n\n          if (isMultiSelection) {\n            return {\n              ...opt,\n              selected: isProvidedOption ? !opt.selected : opt.selected\n            };\n          }\n\n          return {\n            ...opt,\n            selected: isProvidedOption ? !opt.selected : false\n          };\n        });\n\n        triggerOnChange(newOptions);\n\n        return newOptions;\n      });\n    },\n    [setOptions, isMultiSelection, triggerOnChange]\n  );\n\n  const isAllSectionOptionsSelected = useCallback(\n    (sectionName: string): boolean => {\n      const availableOptions = options.filter((opt) => opt.name === sectionName && !opt.filtered && !opt.disabled);\n      const hasOptionsUnselected = availableOptions.some((opt) => !opt.selected);\n      return availableOptions.length > 0 && !hasOptionsUnselected;\n    },\n    [options]\n  );\n\n  const selectSectionOptions = useCallback(\n    (sectionName: string): void => {\n      setOptions((lastOptions) => {\n        const allOptionsSelected = isAllSectionOptionsSelected(sectionName);\n\n        const newOptions = lastOptions.map((opt) => {\n          const isInSectionProvided = sectionName === opt.name;\n          return {\n            ...opt,\n            selected: !opt.filtered && !opt.disabled && isInSectionProvided ? !allOptionsSelected : opt.selected\n          };\n        });\n\n        triggerOnChange(newOptions);\n\n        return newOptions;\n      });\n    },\n    [setOptions, isAllSectionOptionsSelected, triggerOnChange]\n  );\n\n  const hasSectionOptionsToInteract = useCallback(\n    (sectionName: string): boolean => {\n      const availableOptions = options.filter((opt) => opt.name === sectionName && !opt.filtered && !opt.disabled);\n      return availableOptions.length > 0;\n    },\n    [options]\n  );\n\n  const isAllSelected = useMemo(() => {\n    const availableOptions = options.filter((opt) => !opt.filtered && !opt.disabled);\n    const hasOptionsUnselected = availableOptions.some((opt) => !opt.selected);\n    return availableOptions.length > 0 && !hasOptionsUnselected;\n  }, [options]);\n\n  const isAllDisabled = useMemo(() => {\n    const availableOptions = options.filter((opt) => !opt.filtered);\n    const hasOptionsNotDisabled = availableOptions.some((opt) => !opt.disabled);\n    return availableOptions.length > 0 && !hasOptionsNotDisabled;\n  }, [options]);\n\n  const selectedOptions = useMemo(() => {\n    const availableOptions = options.filter((opt) => !opt.filtered && !opt.disabled);\n    return availableOptions.filter((opt) => opt.selected);\n  }, [options]);\n\n  const selectAll = useCallback((): void => {\n    setOptions((lastOptions) => {\n      const newOptions = lastOptions.map((opt) => {\n        return {\n          ...opt,\n          selected: !opt.filtered && !opt.disabled ? !isAllSelected : opt.selected\n        };\n      });\n\n      triggerOnChange(newOptions);\n\n      return newOptions;\n    });\n  }, [setOptions, isAllSelected, triggerOnChange]);\n\n  //  #endregion \"SELECTION\"\n\n  return {\n    type,\n    sections,\n    options,\n    selectedOptions,\n\n    visibility,\n    show,\n    hide,\n\n    first,\n    prev,\n    next,\n    last,\n\n    selectOption,\n    hasSectionOptionsToInteract,\n    selectSectionOptions,\n    isAllSectionOptionsSelected,\n\n    isAllDisabled,\n    isAllSelected,\n    selectAll,\n\n    applyFilter,\n    activeFilter,\n    resetFilter,\n    lastSelectedOption,\n    setLastSelectedOption\n  } as InternalDropdownContextProps;\n};\n","import { BooleanProp } from '@/models';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, ReactNode, Ref, useEffect, useRef } from 'react';\n\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport { DropdownOptionProps } from './dropdown-option';\nimport { DropdownSectionProps } from './dropdown-section';\nimport { DropdownType } from './dropdown-type';\nimport { InternalDropdown, InternalDropdownElement } from './internals/internal-dropdown';\nimport { InternalDropdownContext, InternalDropdownContextProps } from './internals/internal-dropdown-context';\nimport { useDropdownState } from './internals/use-dropdown-state';\n\nexport interface DropdownElement extends HTMLDivElement {\n  visibility: boolean;\n  show: () => void;\n  hide: () => void;\n  first: () => void;\n  last: () => void;\n  selectedOptions: DropdownOptionProps[];\n  applyFilter: (filter: string) => void;\n  resetFilter: () => void;\n}\n\nexport interface DropdownProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   *  The flag to set dark mode as active or not.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Toggles visibility on section names. It also removes the name from accessibility tree.\n   */\n  hideSectionNames?: BooleanProp;\n  /**\n   *  Number of visible options to display in the Dropdown. Remaining items will be accessible via scroll bar.\n   */\n  optionsVisible?: number;\n  /**\n   *  Define the type of sections that will be used. They can be of type \"text\" or \"checkbox\".\n   */\n  type?: DropdownType;\n  /**\n   *  Callback to run whenever the dropdown becomes visible.\n   */\n  onShow?: () => void;\n  /**\n   *  Callback to run whenever the dropdown becomes hidden.\n   */\n  onHide?: () => void;\n  /**\n   *  List of section to render.\n   */\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[];\n  /**\n   *  Callback to run whenever the select state of an option changes.\n   */\n  onChange?: (options: DropdownOptionProps[]) => void;\n  /**\n   *  Enable the search bar to filter options.\n   */\n  searchable?: BooleanProp;\n  /**\n   *  Accessible text for the input search bar.\n   */\n  searchAriaLabel?: string;\n  /**\n   *  Placeholder text for input search bar.\n   */\n  searchPlaceholder?: string;\n  /**\n   *  Text to show when filtering return no results.\n   */\n  noSearchResults?: ReactNode;\n  /**\n   *  Delay to apply before starting filtering results.\n   */\n  searchDebounceTimeout?: number;\n  /**\n   *  Callback to run whenever the filter runs. Called using the filter term and the filtered result options.\n   */\n  onSearchChange?: (value: string, options: DropdownOptionProps[]) => void;\n  /**\n   *  Text to display in the \"select all options across all sections\" option.\n   */\n  selectAllLabel?: string;\n  /**\n   *  Controls the visibility of the dropdown. If not provided, the component will manage its own state.\n   */\n  showDropdown?: boolean;\n}\n\nexport const showDropdownHandler = (showDropdown: boolean | undefined, dropdownState: InternalDropdownContextProps) => {\n  if (showDropdown === undefined) return;\n\n  if (showDropdown) {\n    dropdownState.show();\n  } else {\n    dropdownState.hide();\n  }\n};\n\nconst Dropdown: FC<DropdownProps> = ({\n  showDropdown,\n  ref = null,\n  darkMode = false,\n  type = 'text',\n  onChange,\n  onSearchChange,\n  onShow,\n  onHide,\n  children,\n  hideSectionNames = false,\n  ...props\n}) => {\n  const innerRef = useRef<InternalDropdownElement>(null!);\n\n  const dropdownState = useDropdownState(\n    innerRef,\n    type,\n    stringToBoolean(hideSectionNames),\n    onChange,\n    onSearchChange,\n    onShow,\n    onHide,\n    children\n  );\n\n  useEffect(() => showDropdownHandler(showDropdown, dropdownState), [dropdownState, showDropdown]);\n\n  //  CALL ON CHANGE TO INITIALIZE COMPONENTS THAT USE DROPDOWN WITH INITIAL DATA\n  const firstCall = useRef(false);\n  useEffect(() => {\n    if (!firstCall.current) {\n      firstCall.current = true;\n\n      const options: DropdownOptionProps[] = [];\n\n      Children.forEach(children, (sectionChild) => {\n        if (isValidElement<DropdownSectionProps>(sectionChild)) {\n          Children.forEach(sectionChild.props.children, (optionChild) => {\n            if (isValidElement<DropdownOptionProps>(optionChild) && optionChild.props.selected) {\n              options.push(optionChild.props);\n            }\n          });\n        }\n      });\n    }\n  }, [children]);\n\n  // Close dropdown when clicking outside of it\n  useEffect(() => {\n    const handleMouseDown = (evt: MouseEvent) => {\n      if (!dropdownState.visibility) return;\n\n      const target = evt.target as HTMLElement | null;\n      if (!target) return;\n\n      if (innerRef.current?.contains(target)) return;\n\n      // Ignores clicks on the related combobox to allow toggling from outside the component\n      if (target.closest('[role=\"combobox\"]')) return;\n\n      dropdownState.hide();\n    };\n\n    document.addEventListener('mousedown', handleMouseDown);\n\n    return () => {\n      document.removeEventListener('mousedown', handleMouseDown);\n    };\n  }, [dropdownState]);\n\n  useExpandedRef<DropdownElement>(ref as Ref<DropdownElement>, innerRef, {\n    visibility: dropdownState.visibility,\n    show: dropdownState.show,\n    hide: dropdownState.hide,\n    first: dropdownState.first,\n    last: dropdownState.last,\n    selectedOptions: dropdownState.selectedOptions,\n    applyFilter: dropdownState.applyFilter,\n    resetFilter: dropdownState.resetFilter\n  } as DropdownElement);\n\n  return (\n    <InternalDropdownContext value={dropdownState}>\n      <InternalDropdown {...props} ref={innerRef} darkMode={darkMode}>\n        {children}\n      </InternalDropdown>\n    </InternalDropdownContext>\n  );\n};\n\nexport { Dropdown };\n","import React, { FC, ReactElement } from 'react';\nimport { DropdownOptionProps } from './dropdown-option';\n\nexport interface DropdownSectionProps {\n  /**\n   * Additional classnames to use in the section.\n   */\n  className?: string;\n  /**\n   * Unique group name identifier for the section.\n   */\n  name: string;\n  /**\n   * Label for the group section.\n   */\n  label?: string;\n  /**\n   * List section options.\n   */\n  children: ReactElement<DropdownOptionProps> | ReactElement<DropdownOptionProps>[];\n}\n\nexport const DropdownSection: FC<DropdownSectionProps> = () => <></>;\n","import React, { FC, ReactNode } from 'react';\nimport { BooleanProp, IconPosition } from '@/models';\n\nexport interface DropdownOptionProps {\n  /**\n   * Additional classnames to set to the option.\n   */\n  className?: string;\n  /**\n   * The value of the option.\n   */\n  value: string;\n  /**\n   * Visual representation of the option.\n   */\n  children: ReactNode;\n  /**\n   * Enables icon placement.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon to use.\n   */\n  icon?: string;\n  /**\n   * Defines the positioning of the icon.\n   */\n  iconPosition?: IconPosition;\n  /**\n   * Sets the option in the disable state.\n   */\n  disabled?: BooleanProp;\n  /**\n   * Sets the option in the selected state.\n   */\n  selected?: BooleanProp;\n}\n\nexport const DropdownOption: FC<DropdownOptionProps> = () => <></>;\n","import React, {\n  Children,\n  cloneElement,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  Ref,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport { AvatarProps } from '@/components/avatar';\nimport { Button } from '@/components/button';\nimport { Dropdown, DropdownElement, DropdownOption, DropdownSection } from '@/components/dropdown';\n\nexport interface VisibleCountAvatarGroupProps extends ComponentPropsWithoutRef<'div'> {\n  children: ReactElement<AvatarProps> | Array<ReactElement<AvatarProps>>;\n  visibleCount: number;\n  avatarCount: number;\n  visibleCountAriaLabel?: string;\n}\n\nexport const handleWithAvailableSpace = (containerDropdownRef: HTMLDivElement | null, containerRef: HTMLDivElement | null) => {\n  if (!containerDropdownRef || !containerRef) {\n    return false;\n  }\n\n  const distanceFromLeft = containerRef.getBoundingClientRect().left ?? 0;\n  const freeSpace = window.innerWidth - distanceFromLeft;\n  const result = freeSpace - containerDropdownRef.clientWidth;\n\n  containerDropdownRef.style.left = `${result >= 0 ? 0 : result}px`;\n  return true;\n};\n\nexport const VisibleCountAvatarGroup: FC<VisibleCountAvatarGroupProps> = ({\n  avatarCount,\n  visibleCount,\n  visibleCountAriaLabel,\n  children\n}) => {\n  const containerDropdownRef = useRef<HTMLDivElement>(null);\n\n  const hoverBridgeClassname = 'pt-56';\n\n  const generatedId = useId();\n\n  const countValue = visibleCount >= 0 ? `+${avatarCount - visibleCount}` : `+${avatarCount}`;\n\n  const avatarCountList = Children.map(children, (avatar, index) => {\n    if (index >= visibleCount && isValidElement(avatar)) {\n      return cloneElement(avatar);\n    }\n\n    return null;\n  });\n\n  const dropdownRef = useRef<DropdownElement>(null);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    buttonRef.current?.focus();\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n    dropdownRef.current?.first();\n  };\n\n  const handleKeydown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n    if (code === 'Escape' && dropdownRef.current) {\n      dropdownRef.current.hide();\n    }\n  };\n\n  const handleClick = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const onMouseEnterHandler = () => {\n    dropdownRef.current?.show();\n  };\n\n  const onMouseLeaveHandler = () => {\n    dropdownRef.current?.hide();\n  };\n\n  useEffect(() => {\n    const currentContainerRef = containerRef.current;\n\n    if (currentContainerRef) {\n      currentContainerRef.addEventListener('mouseenter', onMouseEnterHandler);\n      currentContainerRef.addEventListener('mouseleave', onMouseLeaveHandler);\n    }\n\n    return () => {\n      if (currentContainerRef) {\n        currentContainerRef.removeEventListener('mouseenter', onMouseEnterHandler);\n        currentContainerRef.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    };\n  }, []);\n\n  return (\n    <div\n      ref={containerRef}\n      className=\"avatar-visible-count-wrapper\"\n      onMouseOver={() => handleWithAvailableSpace(containerDropdownRef.current, containerRef.current)}\n      onFocus={() => {}}\n    >\n      <Button\n        ref={buttonRef}\n        className=\"avatar-visible-count\"\n        onClick={handleClick}\n        onKeyDown={handleKeydown}\n        role=\"combobox\"\n        aria-expanded={isDropdownVisible}\n        aria-controls={`${generatedId}-dropdown-avatar-group-container`}\n        aria-label={countValue}\n      >\n        <span aria-hidden>{countValue}</span>\n      </Button>\n\n      <div className={hoverBridgeClassname}>\n        <div ref={containerDropdownRef} className=\"absolute bottom-8 left-0 w-full min-w-[296px]\">\n          <Dropdown\n            id={`${generatedId}-dropdown-avatar-group-container`}\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            onHide={onHide}\n            onShow={onShow}\n            type=\"text\"\n            hideSectionNames\n          >\n            <DropdownSection name={`avatar-list-${generatedId}`} aria-label={visibleCountAriaLabel}>\n              {avatarCountList.map((avatar, index) => {\n                const avatarKey = `avatar-group-${generatedId}-option-${index}`;\n                if (avatar.props.avatarType !== 'initials') {\n                  return (\n                    <DropdownOption\n                      key={avatarKey}\n                      value={avatar.props.information?.toString() ?? ''}\n                      hasIcon\n                      icon={avatar.props.srcPath}\n                      iconPosition=\"leading\"\n                    >\n                      {avatar.props.information}\n                    </DropdownOption>\n                  );\n                } else {\n                  return (\n                    <DropdownOption key={avatarKey} value={avatar.props.information?.toString() ?? ''}>\n                      <div className=\"dropdown-option-content\">\n                        <div className=\"avatar-type-initials\">{avatar}</div>\n                        {avatar.props.information}\n                      </div>\n                    </DropdownOption>\n                  );\n                }\n              })}\n            </DropdownSection>\n          </Dropdown>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, cloneElement, ComponentPropsWithoutRef, FC, isValidElement, ReactElement, useId } from 'react';\nimport { AvatarProps } from '../avatar';\nimport './avatar-group.css';\nimport { VisibleCountAvatarGroup } from './visible-count-avatar-group';\n\nexport interface AvatarGroupProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * List of avatar components to use as children of the group.\n   */\n  children: ReactElement<AvatarProps> | Array<ReactElement<AvatarProps>>;\n  /**\n   * Number of avatars that will be visible in the group. Once it exceeds that number a separate icon will show how many more avatars there are left. Clicking on the icon with the number will preview the other avatars as well.\n   */\n  visibleCount?: number;\n  /**\n   * Accessible text for the dropdown containing the remaining avatars.\n   */\n  visibleCountAriaLabel?: string;\n  /**\n   * Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst AvatarGroup: FC<AvatarGroupProps> = ({\n  className,\n  children,\n  visibleCount,\n  darkMode,\n  visibleCountAriaLabel,\n  ...props\n}): ReactElement => {\n  const generatedAvatarGroupId = useId();\n\n  const avatarGroupClasses = classNames('avatar-group', className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const avatarCount = Children.toArray(children).length;\n  const totalVisibleAvatars = visibleCount ?? avatarCount;\n\n  const renderAvatarListItem = (child: ReactElement<AvatarProps>, index: number) => {\n    const id = `avatar-group-${generatedAvatarGroupId}-avatar-${index}`;\n\n    return (\n      <li key={id}>\n        {cloneElement<AvatarProps>(child, {\n          darkMode\n        } as AvatarProps)}\n      </li>\n    );\n  };\n\n  return (\n    <ul {...props} className={avatarGroupClasses}>\n      {Children.map(children, (child, index) => {\n        if (index < totalVisibleAvatars && isValidElement(child)) {\n          return renderAvatarListItem(child, index);\n        }\n\n        return null;\n      })}\n      {avatarCount > totalVisibleAvatars && (\n        <li key={`avatar-group-${generatedAvatarGroupId}-visible-count`}>\n          <VisibleCountAvatarGroup\n            visibleCount={totalVisibleAvatars}\n            avatarCount={avatarCount}\n            visibleCountAriaLabel={visibleCountAriaLabel}\n          >\n            {children}\n          </VisibleCountAvatarGroup>\n        </li>\n      )}\n    </ul>\n  );\n};\n\nexport { AvatarGroup };\n","import React, { ComponentProps, FC, ReactElement, ReactNode, useId } from 'react';\n\nimport { Button } from '@/components/button';\nimport { Tooltip, TooltipAlignment, TooltipPosition, TooltipVariant } from '@/components/tooltip';\nimport { BooleanProp } from '@/models';\nimport classNames from 'classnames';\n\nexport interface BackToTopProps extends ComponentProps<'button'> {\n  /**\n   * The variant of the Tooltip.\n   */\n  tooltipVariant?: TooltipVariant;\n  /**\n   * Position of the tooltip to shows when the user focus or hovers the component.\n   */\n  tooltipPosition?: TooltipPosition;\n  /**\n   * Alignment of the tooltip shown whenever the user focus or hovers the component.\n   */\n  tooltipAlignment?: TooltipAlignment;\n  /**\n   * If the Tooltip has a title.\n   */\n  hasTooltipTitle?: BooleanProp;\n  /**\n   * The title of the Tooltip.\n   */\n  tooltipTitle?: ReactNode;\n  /**\n   * Tooltip description to show when user focus or hovers the component.\n   */\n  tooltipDescription: ReactNode;\n}\n\nconst BackToTop: FC<BackToTopProps> = ({\n  ref = null,\n  tooltipVariant = 'light',\n  tooltipAlignment = 'start',\n  tooltipPosition = 'right',\n  hasTooltipTitle,\n  tooltipTitle,\n  tooltipDescription,\n  ...props\n}): ReactElement => {\n  const backToTopClassName = classNames('!rounded-full shadow-bottom-higher', props.className);\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const goToTop = () => {\n    window.scrollTo({\n      top: 0,\n      behavior: 'smooth'\n    });\n  };\n\n  return (\n    <Tooltip\n      id={`tooltip-${propsClone.id}`}\n      variant={tooltipVariant}\n      alignment={tooltipAlignment}\n      position={tooltipPosition}\n      hasTitle={hasTooltipTitle}\n      title={tooltipTitle}\n      description={tooltipDescription}\n    >\n      <Button\n        {...propsClone}\n        ref={ref}\n        hasIcon\n        leadingIcon=\"agora-line-chevron-up\"\n        leadingIconHover=\"agora-line-chevron-up\"\n        iconOnly\n        onClick={goToTop}\n        className={backToTopClassName}\n      />\n    </Tooltip>\n  );\n};\n\nexport { BackToTop };\n","import React, { FC, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor } from '@/components/anchor';\nimport { BreadcrumbProps } from '@/components/breadcrumb';\nimport { Icon } from '@/components/icon';\n\nimport './breadcrumb-desktop.css';\n\nexport const BreadcrumbDesktop: FC<BreadcrumbProps> = ({ items, darkMode, ...props }) => {\n  const generatedId = useId();\n\n  const ariaLabel = props['aria-label'] ?? 'Breadcrumb';\n\n  const BreadcrumbClassName = classNames(props.className, 'agora-breadcrumb-desktop');\n  const iconClassName = classNames('mx-[4px]', {\n    'fill-white': darkMode,\n    'fill-[var(--color-neutral-900)]': !darkMode\n  });\n\n  return (\n    <nav className={BreadcrumbClassName} aria-label={ariaLabel}>\n      <ol className=\"flex gap-y-8 flex-wrap items-center\">\n        {items.map((link, index) => {\n          const key = `${generatedId}-${index}`;\n\n          return (\n            <li key={key} className=\"flex flex-row items-center\">\n              {index !== 0 && <Icon name=\"agora-line-chevron-right\" dimensions=\"m\" aria-hidden=\"true\" className={iconClassName} />}\n              {index === items.length - 1 || !link.url ? (\n                <span aria-current=\"page\">{link.label}</span>\n              ) : (\n                <Anchor\n                  darkMode={darkMode}\n                  variant=\"neutral\"\n                  appearance=\"text\"\n                  href={link.url}\n                  className=\"text-s-regular !underline-offset-8\"\n                >\n                  {link.label}\n                </Anchor>\n              )}\n            </li>\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n","import React, { FC, KeyboardEvent as ReactKeyboardEvent, useEffect, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor } from '@/components/anchor';\nimport { BreadcrumbProps } from '@/components/breadcrumb';\nimport { Button } from '@/components/button';\n\nimport './breadcrumb-mobile.css';\n\nexport const BreadcrumbMobile: FC<BreadcrumbProps> = ({ sectionTitle, items, darkMode, ...props }) => {\n  const generatedId = useId();\n  const [isExpanded, setIsExpanded] = useState(false);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const listRef = useRef<HTMLOListElement>(null);\n  const BreadcrumbClassName = classNames(props.className, 'agora-breadcrumb-mobile');\n  const breadcrumbIndents = Array.from({ length: items.length }, (_, index) => `${index * 8}px`);\n\n  const ariaLabel = props['aria-label'] ?? 'Breadcrumb';\n\n  /**\n   * Function used to close the breadcrumb menu.\n   */\n  const closeMenuClickHandler = (evt: MouseEvent) => {\n    if (listRef?.current && evt.target && !listRef.current.contains(evt.target as HTMLElement)) {\n      setIsExpanded(false);\n    }\n  };\n\n  const handleTabKey = (evt: ReactKeyboardEvent<HTMLAnchorElement>) => {\n    const linkList = listRef.current?.querySelectorAll('a');\n    const target = evt.target as HTMLAnchorElement;\n    const liParentNode = target.parentNode as HTMLLIElement;\n\n    if (linkList && linkList.length > 1) {\n      if (evt.shiftKey) {\n        const firstLiChild = linkList[0].parentNode as HTMLLIElement;\n        if (firstLiChild === liParentNode) {\n          evt.preventDefault();\n          linkList[linkList.length - 1]?.focus();\n        }\n      } else {\n        const lastLiWithChildAnchor = linkList[linkList.length - 1].parentNode as HTMLLIElement;\n        if (lastLiWithChildAnchor === liParentNode) {\n          evt.preventDefault();\n          linkList[0]?.focus();\n        }\n      }\n    }\n  };\n\n  /**\n   * Function used to set Keyboard Keydown Behavior.\n   */\n  const setKeyboardKeydownBehavior = (evt: ReactKeyboardEvent<HTMLAnchorElement>) => {\n    if (evt.key === 'Escape' || evt.key === 'Esc') {\n      setIsExpanded(false);\n      buttonRef.current?.focus();\n    }\n\n    if (evt.key === 'Tab') {\n      handleTabKey(evt);\n    }\n\n    if (evt.key === 'Enter') {\n      setIsExpanded(false);\n    }\n  };\n\n  /**\n   * Used to setup the Event Listeners (mouse and keyboard).\n   */\n  useEffect(() => {\n    if (isExpanded) {\n      document.addEventListener('mousedown', closeMenuClickHandler);\n\n      /**\n       * Focus the first link when opening the menu.\n       */\n      const firstLink = listRef.current?.querySelectorAll('a');\n      if (firstLink && firstLink?.length > 0) {\n        firstLink[0]?.focus();\n      }\n    }\n\n    return () => {\n      document.removeEventListener('mousedown', closeMenuClickHandler);\n    };\n  }, [isExpanded]);\n\n  /**\n   * Function used to Expand the breadcrumb Menu.\n   */\n  const expandMenu = () => {\n    setIsExpanded((expanded) => {\n      return !expanded;\n    });\n  };\n\n  return (\n    <nav aria-label={ariaLabel} className={BreadcrumbClassName}>\n      <Button\n        type=\"button\"\n        ref={buttonRef}\n        aria-expanded={isExpanded}\n        aria-controls={`agora-mobile-breadcrumb-menu-${generatedId}`}\n        onClick={expandMenu}\n        hasIcon\n        leadingIcon=\"agora-line-chevron-left\"\n        leadingIconHover=\"agora-solid-chevron-left\"\n        appearance=\"link\"\n        variant=\"neutral\"\n        darkMode={stringToBoolean(darkMode)}\n      >\n        {items.at(-1)?.label}\n      </Button>\n\n      <ol id={`agora-mobile-breadcrumb-menu-${generatedId}`} className={`${!isExpanded ? 'hidden' : 'flex'}`} ref={listRef}>\n        {sectionTitle && (\n          <li>\n            <p className=\"[&>*]:text-s-semibold  text-s-semibold [&>*]:text-[var(--color-neutral-500)] text-[var(--color-neutral-500)]\">\n              {sectionTitle}\n            </p>\n          </li>\n        )}\n        {items.map((link, index) => {\n          const id = `agora-mobile-breadcrumb-link-${generatedId}${index}`;\n          const breadcrumbItemIndent = breadcrumbIndents[index];\n\n          if (index === items.length - 1 || !link.url) {\n            return (\n              <li id={id} key={id} style={{ paddingLeft: breadcrumbItemIndent }}>\n                <span aria-current=\"page\" className=\"inline-flex items-center min-h-[44px]\">\n                  {link.label}\n                </span>\n              </li>\n            );\n          }\n\n          return (\n            <li id={id} key={id} style={{ paddingLeft: breadcrumbItemIndent }}>\n              <Anchor variant=\"neutral\" appearance=\"link\" href={link.url} onKeyDown={setKeyboardKeydownBehavior}>\n                {link.label}\n              </Anchor>\n            </li>\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n","import React, { FC, HTMLProps, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { BreadcrumbDesktop } from './desktop/breadcrumb-desktop';\nimport { BreadcrumbMobile } from './mobile/breadcrumb-mobile';\n\nexport interface BreadcrumbLink {\n  /**\n   * The Breadcrumb page link url.\n   */\n  url: string;\n  /**\n   * The Breadcrumb page link label.\n   */\n  label: ReactNode;\n}\n\nexport interface BreadcrumbProps extends HTMLProps<HTMLDivElement> {\n  /**\n   * The links that make up the breadcrumb in hierarchical order.\n   */\n  items: BreadcrumbLink[];\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Section title. Only visible on mobile resolutions.\n   */\n  sectionTitle?: ReactNode;\n}\n\nexport const Breadcrumb: FC<BreadcrumbProps> = ({ items, ...props }) => {\n  const baseClasses = classNames('agora-breadcrumb', props.className, {\n    'dark-mode': stringToBoolean(props.darkMode)\n  });\n\n  const desktopBreadcrumbClassnames = classNames(baseClasses, 'xs:hidden xl:flex');\n  const mobileBreadcrumbClassnames = classNames(baseClasses, 'xs:flex xl:hidden');\n\n  return (\n    <>\n      <BreadcrumbDesktop {...props} items={items} className={desktopBreadcrumbClassnames} />\n      <BreadcrumbMobile {...props} items={items} className={mobileBreadcrumbClassnames} />\n    </>\n  );\n};\n","import React, {\n  ChangeEvent,\n  Children,\n  cloneElement,\n  ComponentProps,\n  FC,\n  isValidElement,\n  ReactElement,\n  Ref,\n  useId,\n  useRef,\n  useState\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { ToggleAppearance, ToggleProps, ToggleVariant } from '@/components/toggle';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport './toggle-group.css';\nimport { useWindowSize } from '@/hooks';\n\nexport type ToggleGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface ToggleGroupElement extends HTMLDivElement {\n  /**\n   *  Current checked values of the toggle group.\n   */\n  value: string[];\n}\n\nexport interface ToggleGroupProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Defines the appearance of the children toggles.\n   */\n  appearance?: ToggleAppearance;\n  /**\n   * Defines if the children toggles are full width.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Toggles the dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines the variant of the children toggles.\n   */\n  variant?: ToggleVariant;\n  /**\n   * List of toggle components to aggregate.\n   */\n  children?: ReactElement<ToggleProps> | ReactElement<ToggleProps>[];\n  /**\n   * Defines the orientation of the toggle group.\n   */\n  orientation?: ToggleGroupOrientation;\n  /**\n   * Defines if it is allowed to have more than one toggle checked.\n   */\n  multiple?: BooleanProp;\n  /**\n   * Defines the checked toggle or toggles.\n   */\n  value?: string | string[];\n  /**\n   * Defines the default checked toggle or toggles.\n   */\n  defaultValue?: string | string[];\n  /**\n   * Event handler called whenever one of the children toggles changes their checked value.\n   */\n  onChange?: (val: string[]) => void;\n  /**\n   * React ref object to the toggle group.\n   */\n  ref?: Ref<ToggleGroupElement>;\n}\n\nexport const useHandlerOrientationChange = (\n  ignoreHandlerOrientation: boolean,\n  innerRef: React.RefObject<HTMLDivElement | null>,\n  orientationState: ToggleGroupOrientation,\n  setOrientationState: React.Dispatch<React.SetStateAction<ToggleGroupOrientation>>,\n  componentWidth: number,\n  setComponentWidth: React.Dispatch<React.SetStateAction<number>>\n) => {\n  const { width } = useWindowSize();\n  if (ignoreHandlerOrientation) return;\n  const currentComponentWidth = innerRef.current?.offsetWidth || 0;\n\n  if (currentComponentWidth > componentWidth) {\n    setComponentWidth(currentComponentWidth);\n  }\n\n  if (componentWidth > width && orientationState === 'horizontal') {\n    setOrientationState('vertical');\n  }\n\n  if (componentWidth <= width && orientationState === 'vertical') {\n    setOrientationState('horizontal');\n  }\n};\n\nconst ToggleGroup: FC<ToggleGroupProps> = ({\n  ref = null,\n  appearance = 'button',\n  variant = 'primary',\n  fullWidth = false,\n  darkMode = false,\n  orientation = 'horizontal',\n  multiple = true,\n  value: valueFromProps,\n  defaultValue,\n  onChange: onChangeFromProps,\n  className,\n  children,\n  ...props\n}) => {\n  const [orientationState, setOrientationState] = useState(orientation);\n  const [componentWidth, setComponentWidth] = useState(0);\n\n  const generatedId = useId();\n  const toggleGroupClassName = classNames(\n    'agora-toggle-group',\n    orientationState,\n    { buttons: appearance === 'button' },\n    { icons: appearance === 'icon' },\n    { 'full-width': stringToBoolean(fullWidth) },\n    className\n  );\n\n  const isControlled = typeof valueFromProps !== 'undefined';\n\n  const hasDefaultValue = typeof defaultValue !== 'undefined';\n  const parsedDefaultValue = hasDefaultValue ? (!Array.isArray(defaultValue) ? [defaultValue] : defaultValue) : [];\n\n  const [internalValue, setInternalValue] = useState(hasDefaultValue ? parsedDefaultValue : []);\n\n  const value = isControlled ? (!Array.isArray(valueFromProps) ? [valueFromProps] : valueFromProps) : internalValue;\n\n  const parsedChildren = Children.map(children, (child, index) => {\n    if (!isValidElement<ToggleProps>(child)) {\n      return null;\n    }\n\n    const parsedChildValue = child.props.value ?? `${generatedId}-v-${index}`;\n\n    const checkedValues = stringToBoolean(multiple) ? value : [value[0]];\n\n    const isChecked = !!checkedValues.find((cv) => cv === parsedChildValue);\n\n    const onChange = (evt: ChangeEvent<HTMLInputElement>) => {\n      if (stringToBoolean(multiple)) {\n        let newVals = [...value];\n        if (newVals.find((v) => v === evt.target.value)) {\n          newVals = newVals.filter((v) => v !== evt.target.value);\n        } else {\n          newVals.push(evt.target.value);\n        }\n\n        setInternalValue(newVals);\n\n        onChangeFromProps?.(newVals);\n      } else {\n        const newVal = [evt.target.value];\n        onChangeFromProps?.(newVal);\n        setInternalValue(newVal);\n      }\n    };\n\n    return cloneElement(child, {\n      appearance,\n      variant,\n      fullWidth: stringToBoolean(fullWidth),\n      darkMode: stringToBoolean(darkMode),\n      value: parsedChildValue,\n      checked: isChecked,\n      defaultChecked: undefined,\n      onChange: onChange\n    });\n  });\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<HTMLDivElement>(ref, innerRef, {\n    value: internalValue\n  } as ToggleGroupElement);\n\n  const ignoreHandlerOrientation = !!(orientation === 'vertical' || fullWidth);\n\n  useHandlerOrientationChange(ignoreHandlerOrientation, innerRef, orientationState, setOrientationState, componentWidth, setComponentWidth);\n\n  return (\n    <div {...props} ref={innerRef} className={toggleGroupClassName} role={stringToBoolean(multiple) ? 'group' : 'radiogroup'}>\n      {parsedChildren}\n    </div>\n  );\n};\n\nexport { ToggleGroup };\n","import { ButtonProps, ButtonVariant } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  cloneElement,\n  FC,\n  HtmlHTMLAttributes,\n  isValidElement,\n  ReactElement,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport './button-group.css';\nimport { useHandlerOrientationChange } from '../toggle-group/toggle-group';\n\nexport type ButtonGroupOrientation = 'horizontal' | 'vertical';\n\nexport interface ButtonGroupProps extends Omit<HtmlHTMLAttributes<HTMLDivElement>, 'onChange'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The variant of the buttons. This variants will define the background and border color of the given Button.\n   */\n  variant?: ButtonVariant;\n  /**\n   *Defines if the button should be fluid.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   *  List of button components to use as children of the group.\n   */\n  children?: ReactElement<ButtonProps> | Array<ReactElement<ButtonProps>>;\n  /**\n   * Defines vertical or horizontal orientation.\n   */\n  orientation?: ButtonGroupOrientation;\n}\n\nconst ButtonGroup: FC<ButtonGroupProps> = ({\n  variant = 'primary',\n  fullWidth = false,\n  children,\n  darkMode,\n  orientation = 'horizontal',\n  ...props\n}) => {\n  const [orientationState, setOrientationState] = useState(orientation);\n  const [componentWidth, setComponentWidth] = useState(0);\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const childrenButtons: Array<ReactElement<ButtonProps>> = useMemo(() => {\n    const ret: Array<ReactElement<ButtonProps>> = [];\n\n    if (Array.isArray(children)) {\n      children.forEach((child) => {\n        if (isValidElement<ButtonProps>(child)) {\n          ret.push(child);\n        }\n      });\n    } else if (isValidElement<ButtonProps>(children)) {\n      ret.push(children);\n    }\n\n    return ret;\n  }, [children]);\n\n  const buttonGroupClasses = classNames(\n    'button-group',\n    propsClone.className,\n    orientationState,\n    { full: stringToBoolean(fullWidth) },\n    { darkMode: stringToBoolean(darkMode) }\n  );\n\n  const buttonGroupContainer = classNames('agora-button-group', { 'w-fit': !stringToBoolean(fullWidth) });\n\n  const innerRef = useRef(null);\n\n  const ignoreHandlerOrientation = !!(orientation === 'vertical' || fullWidth);\n\n  useHandlerOrientationChange(ignoreHandlerOrientation, innerRef, orientationState, setOrientationState, componentWidth, setComponentWidth);\n\n  return (\n    <div ref={innerRef} className={buttonGroupContainer}>\n      {/* button group */}\n      <div {...propsClone} className={buttonGroupClasses} role=\"group\" aria-label={propsClone['aria-label']} id={propsClone.id}>\n        {Children.map(childrenButtons, (child, index) => {\n          return cloneElement<ButtonProps>(child, {\n            ...child.props,\n            id: child.props.id ?? `${propsClone.id}-button-${index}`,\n            variant: variant,\n            appearance: 'outline',\n            onClick: (evt) => {\n              child.props.onClick?.(evt);\n            },\n            darkMode: stringToBoolean(darkMode)\n          } as ButtonProps);\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport { ButtonGroup };\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './pill.css';\n\n/**\n * The available variants of the pill. This variants will define the background and border color of the pill.\n */\nexport type PillVariant = 'primary' | 'secondary' | 'neutral' | 'informative' | 'success' | 'warning' | 'danger';\n\n/**\n * The available pill appearances. Defines the pill shape.\n */\nexport type PillAppearance = 'solid' | 'outline';\n\n/**\n * The available pill size. Defines the pill size.\n */\nexport type PillSize = 'default' | 'large';\n\nexport interface PillProps extends ComponentProps<'div'> {\n  /**\n   * The pill appearance. Define the pill Shape.\n   */\n  appearance?: PillAppearance;\n  /**\n   * The variant of the pill. This variants will define the background and border color of the given Pill.\n   */\n  variant?: PillVariant;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Pill or Circular pill style.\n   */\n  circular?: BooleanProp;\n  /**\n   * Size of pill.\n   */\n  size?: PillSize;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const Pill: FC<PillProps> = ({\n  appearance = 'solid',\n  variant = 'primary',\n  children,\n  className,\n  circular = false,\n  size = 'default',\n  darkMode = false,\n  ...props\n}) => {\n  /**\n   * Building pill class name dynamically according parameters.\n   */\n  const pillClassName = classNames(\n    {\n      'inline-flex items-center justify-center': !props.hidden,\n      'agora-pill-circular': stringToBoolean(circular),\n      'agora-pill-large': size === 'large',\n      'dark-mode': stringToBoolean(darkMode)\n    },\n\n    `agora-pill agora-pill-${appearance}-${variant}`,\n    className\n  );\n\n  return (\n    <span className={pillClassName} {...props}>\n      <span className=\"children-wrapper\">{children}</span>\n    </span>\n  );\n};\n","import { RefObject, useCallback, useEffect } from 'react';\n\nexport interface IUseBlockedLink {\n  parentCardRef: RefObject<HTMLDivElement | null>;\n  anchorRef: RefObject<HTMLAnchorElement | null>;\n  blockedLink?: boolean;\n}\n\nconst useBlockedLink = ({ parentCardRef, anchorRef, blockedLink = false }: IUseBlockedLink) => {\n  const activateLink = useCallback(() => {\n    const event = new MouseEvent('click', {\n      detail: 1\n    });\n\n    anchorRef.current?.dispatchEvent(event);\n  }, [anchorRef]);\n\n  const onClickCaptureHandler = useCallback(\n    (evt: MouseEvent) => {\n      const target = evt.target as HTMLElement;\n      if (target.tagName !== 'A' && !target.matches('a *')) {\n        //  Is blocked link\n        //  Is not an anchor nor a child of an anchor\n        //  Trigger main link\n\n        evt.stopPropagation();\n        evt.preventDefault();\n        activateLink();\n      }\n    },\n    [activateLink]\n  );\n\n  const onMouseEnterHandler = useCallback(() => {\n    (anchorRef?.current as HTMLAnchorElement).classList.add('hover');\n  }, [anchorRef]);\n\n  const onMouseLeaveHandler = useCallback(() => {\n    (anchorRef?.current as HTMLAnchorElement).classList.remove('hover');\n  }, [anchorRef]);\n\n  useEffect(() => {\n    const anchorElement = anchorRef?.current as HTMLAnchorElement;\n    const parentCardElem = parentCardRef?.current as HTMLDivElement;\n\n    if (parentCardElem && anchorElement) {\n      if (blockedLink) {\n        parentCardElem.classList.add('blocked-link');\n        parentCardElem.addEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.addEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseleave', onMouseLeaveHandler);\n      } else {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    }\n\n    return () => {\n      if (parentCardElem) {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n      }\n    };\n  }, [parentCardRef, anchorRef, blockedLink, activateLink, onClickCaptureHandler, onMouseEnterHandler, onMouseLeaveHandler]);\n};\n\nexport { useBlockedLink };\n","import { Anchor, AnchorProps } from '@/components/anchor';\nimport { Pill, PillProps } from '@/components/pill';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ImgHTMLAttributes, ReactNode, useRef } from 'react';\nimport { useBlockedLink } from '../shared/use-blocked-link';\nimport './card-article.css';\n\nexport type CardArticleVariant = 'default' | 'indented';\n\nexport interface CardArticleProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Defines if the card is indented.\n   */\n  variant?: CardArticleVariant;\n  /**\n   *  Image card to draw in the card if specified.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * The flag to set the pill.\n   */\n  hasPill?: BooleanProp;\n  /**\n   * Pill props.\n   */\n  pill?: PillProps;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * Subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Definition of the anchor to be draw if specified.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Makes the whole card clickable and activates the link.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardArticle: FC<CardArticleProps> = ({\n  hasPill = false,\n  pill,\n  mainAnchor,\n  blockedLink = false,\n  children,\n  image,\n  headingLevel: Heading = 'h3',\n  title,\n  subtitle,\n  variant = 'default',\n  className,\n  ...props\n}) => {\n  const cardArticleRef = useRef<HTMLDivElement | null>(null);\n  const cardArticleAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const onlyAnchor = !title && !subtitle && !children && !hasPill && !!mainAnchor && !mainAnchor.hidden;\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    children: !title && !subtitle && !!children,\n    pill: !title && !subtitle && !children && !!hasPill,\n    anchor: onlyAnchor\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    subtitle: false,\n    children: false,\n    pill: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.subtitle = !title && !!subtitle;\n      anchorPlacement.children = !title && !subtitle && !!children;\n      anchorPlacement.pill = !title && !subtitle && !children && !!hasPill;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" ref={cardArticleAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" ref={cardArticleAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardArticleRef,\n    anchorRef: cardArticleAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardClassNames = classNames(\n    'agora-card-article',\n    { indented: variant === 'indented' },\n    { default: variant === 'default' },\n    className,\n    { 'has-image': !!image },\n    { 'only-anchor': onlyAnchor }\n  );\n\n  const anchorContainerClassNames = classNames(\n    'anchor-container',\n    { 'icon-only': mainAnchorClone?.iconOnly },\n    { 'has-siblings': !onlyAnchor }\n  );\n\n  return (\n    <div {...props} role=\"presentation\" ref={cardArticleRef} className={cardClassNames}>\n      {image && (\n        <div className=\"container-image w-full\">\n          <img src={image.src} className=\"card-image w-full\" alt={image.alt} />\n        </div>\n      )}\n\n      <div className=\"container-body\">\n        {hasPill && pill && (\n          <div className=\"pill-container\">\n            <Pill {...pill}>{buildText(pill.children, mainAnchorClone, anchorPlacement.pill, headingPlacement.pill)}</Pill>\n          </div>\n        )}\n\n        {subtitle && (\n          <div className=\"subtitle-container\">\n            {buildText(subtitle, mainAnchorClone, anchorPlacement.subtitle, headingPlacement.subtitle)}\n          </div>\n        )}\n\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>}\n\n        {children && (\n          <div className=\"children-container\">\n            {buildText(children, mainAnchorClone, anchorPlacement.children, headingPlacement.children)}\n          </div>\n        )}\n\n        {anchorPlacement.anchor && (\n          <div className={anchorContainerClassNames}>\n            {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-collection.css';\n\nexport interface CardCollectionProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Card Collection heading level title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Defines the subtitle\n   */\n  subtitle?: ReactNode;\n  /**\n   * Defines the title\n   */\n  title?: ReactNode;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardCollection: FC<CardCollectionProps> = ({\n  headingLevel: Heading = 'h2',\n  subtitle,\n  title,\n  mainAnchor,\n  blockedLink = false,\n  className,\n  ...props\n}) => {\n  const cardCollectionRef = useRef<HTMLDivElement | null>(null);\n\n  const cardCollectionAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const CardCollectionClass = classNames('agora-card-collection', className);\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    anchor: !title && !subtitle && !!mainAnchor && !mainAnchor.hidden\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    subtitle: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.subtitle = !title && !!subtitle;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} variant=\"neutral\" darkMode appearance=\"link\" ref={cardCollectionAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} variant=\"neutral\" darkMode appearance=\"link\" ref={cardCollectionAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardCollectionRef,\n    anchorRef: cardCollectionAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const anchorContainerClassNames = classNames('anchor-container', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} role=\"presentation\" ref={cardCollectionRef} className={CardCollectionClass}>\n      <div className=\"card-info\">\n        {subtitle && (\n          <div className=\"subtitle-container\">\n            {buildText(subtitle, mainAnchorClone, anchorPlacement.subtitle, headingPlacement.subtitle)}\n          </div>\n        )}\n\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>}\n\n        {anchorPlacement.anchor && (\n          <div className={anchorContainerClassNames}>\n            {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n          </div>\n        )}\n      </div>\n      <div className=\"custom-svg-container -z-10 absolute top-0 left-0 min-w-full min-h-full w-full h-full flex justify-center items-center bg-[var(--color-primary-900)] xs:py-0 md:py-64 xl:py-128\">\n        <svg\n          className=\"custom-svg\"\n          width=\"100%\"\n          height=\"100%\"\n          viewBox=\"0 0 384 378\"\n          aria-hidden\n          xmlns=\"http://www.w3.org/2000/svg\"\n          fill=\"none\"\n        >\n          <g opacity=\"0.04\" stroke=\"white\" strokeWidth=\"24\" strokeMiterlimit=\"9.56677\" strokeLinecap=\"round\">\n            <path d=\"M-436 189.113C-237.528 189.113 -202.994 271.214 -118.581 252.744C-42.7446 236.151 30.3181 89.0689 81.1009 93.8569C133.588 98.8049 4.82279 267.863 60.1717 290.185C105.121 308.314 250.971 -0.840043 299.676 13.483C357.976 30.624 189.186 355.513 249.579 364.748C308.959 373.827 348.241 135.047 419.085 122.245C483.27 110.647 497 189.113 742 189.113\" />\n          </g>\n        </svg>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button, ButtonProps } from '@/components/button';\nimport { Icon, IconProps } from '@/components/icon';\n\nimport './card-emphasize.css';\n\n/**\n * The available alignments of the card emphasize.\n */\nexport type CardEmphasizeAlignment = 'left' | 'center' | 'right';\n\nexport interface CardEmphasizeProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Definition of the icon to use in the card.\n   */\n  icon?: IconProps;\n  /**\n   * The card title.\n   */\n  title?: ReactNode;\n  /**\n   * The card description.\n   */\n  description?: ReactNode;\n  /**\n   * Card main button definition.\n   */\n  mainButton?: ButtonProps;\n  /**\n   * Apply the alignment specified in all card content.\n   */\n  alignment?: CardEmphasizeAlignment;\n}\n\nexport const CardEmphasize: FC<CardEmphasizeProps> = ({\n  icon,\n  title,\n  description,\n  mainButton,\n  alignment = 'left',\n  className,\n  ...props\n}) => {\n  const cardEmphasizeClasseNames = classNames('agora-card-emphasize', `card-${alignment}`, className);\n\n  const iconProps = {\n    ...icon,\n    className: classNames('card-emphasize-icon', icon?.className)\n  };\n\n  const buttonProps = {\n    ...mainButton,\n    className: classNames('card-emphasize-button', mainButton?.className)\n  } as ButtonProps;\n\n  return (\n    <div {...props} role=\"presentation\" className={cardEmphasizeClasseNames}>\n      {icon && <Icon {...iconProps} />}\n      {title && <div className=\"card-emphasize-title\">{title}</div>}\n      {description && <div className=\"card-emphasize-description\">{description}</div>}\n      {mainButton && <Button {...buttonProps} />}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './link-wrapper.css';\n\nexport type LinkWrapperAppearance = 'link' | 'text';\n\nexport type LinkWrapperVariant = 'primary' | 'informative' | 'neutral' | 'success' | 'warning' | 'danger';\n\nexport interface LinkWrapperProps extends Omit<ComponentProps<'span'>, 'children'> {\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The anchor appearance. Define the anchor Shape.\n   */\n  appearance?: LinkWrapperAppearance;\n  /**\n   * The variant of the anchor. This variants will define the background and border color of the given Anchor\n   */\n  variant?: LinkWrapperVariant;\n  /**\n   * Defines if the anchor should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if anchor is inline text or not. An inline element does not start on a new line and takes up as much width as necessary. See https://www.w3schools.com/html/html_blocks.asp.\n   */\n  inline?: BooleanProp;\n  /**\n   * Children anchor.\n   */\n  children?: ReactNode;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nconst LinkWrapper: FC<LinkWrapperProps> = ({\n  ref = null,\n  darkMode = false,\n  appearance = 'text',\n  variant = 'primary',\n  fullWidth = false,\n  children,\n  className = '',\n  inline = false,\n  ...props\n}) => {\n  const anchorContainerClassName = classNames(\n    'agora-link-wrapper',\n    `agora-link-wrapper-${appearance}-${variant}`,\n    { 'dark-mode': stringToBoolean(darkMode) },\n\n    { 'full-width': fullWidth },\n\n    { 'inline-flex items-center': !props.hidden },\n    { 'justify-center min-h-[44px] min-w-[44px] py-8': !stringToBoolean(inline) },\n    { 'justify-start': stringToBoolean(inline) },\n\n    className\n  );\n\n  return (\n    <span {...props} ref={ref} className={anchorContainerClassName}>\n      {children}\n    </span>\n  );\n};\n\nexport { LinkWrapper };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './card-error.css';\n\nexport interface CardErrorProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   *  The card icon.\n   */\n  icon?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   *  Navigation link used to go back from the error page. It can be a native anchor or any other type of link (example: NextJS link, ReactRouter Link, etc...).\n   */\n  backLink?: ReactNode;\n  /**\n   * The status message of the card.\n   */\n  statusCodeMessage?: ReactNode;\n  /**\n   * The dark mode of the card.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const CardError: FC<CardErrorProps> = ({\n  icon,\n  title,\n  subtitle,\n  description,\n  backLink,\n  statusCodeMessage,\n  darkMode = false,\n  className = '',\n  ...props\n}) => {\n  const CardLinksClasses = classNames('card-error', stringToBoolean(darkMode) ? 'dark' : 'default', className);\n\n  return (\n    <div className={CardLinksClasses} {...props}>\n      {icon && <div className=\"icon-container\">{icon}</div>}\n      {title && <div className=\"title\">{title}</div>}\n      {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n      {description && <div className=\"description\">{description}</div>}\n      {backLink && (\n        <div className=\"go-back\">\n          <LinkWrapper darkMode={stringToBoolean(darkMode)} variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}>\n            {backLink}\n          </LinkWrapper>\n        </div>\n      )}\n      {statusCodeMessage && <div className=\"status-code-message\">{statusCodeMessage}</div>}\n    </div>\n  );\n};\n","import React, { HTMLProps } from 'react';\n\nexport interface BookmarkIconProps extends HTMLProps<SVGSVGElement> {\n  fill?: string;\n  fillTop?: string;\n}\n\nexport const BookmarkIcon = ({ fill = '#BBD1FD', fillTop = '#034AD8', ...props }: BookmarkIconProps) => {\n  const newProps = { ...props };\n  delete newProps.alt;\n  delete newProps.title;\n  delete newProps.color;\n\n  return (\n    <svg width=\"24\" height=\"32\" viewBox=\"0 0 24 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...newProps} role=\"img\">\n      {props.title && <title>{props.title}</title>}\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M0.923077 0C0.413276 0 0 0.421379 0 0.941176V31.0588C0 31.4134 0.195426 31.7379 0.505561 31.8982C0.815697 32.0586 1.18791 32.0276 1.46846 31.8182L12 23.9544L22.5315 31.8182C22.8121 32.0276 23.1843 32.0586 23.4944 31.8982C23.8046 31.7379 24 31.4134 24 31.0588V0.941176C24 0.421379 23.5867 0 23.0769 0H0.923077Z\"\n        fill={fill}\n      />\n      <path\n        fillRule=\"evenodd\"\n        clipRule=\"evenodd\"\n        d=\"M0.923077 0C0.413276 0 0 0.421379 0 0.941176V5.64706H24V0.941176C24 0.421379 23.5867 0 23.0769 0H0.923077Z\"\n        fill={fillTop}\n      />\n    </svg>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, SyntheticEvent, useEffect, useId, useRef, useState } from 'react';\n\nimport { Icon } from '@/components/icon';\n\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { createSyntheticEvent } from '@/utils/create-synthetic-event';\nimport { useExpandedRef } from '@/utils/expand-ref';\n\nimport './card-accordion.css';\n\n/**\n * The available variants of the accordion. Those variants will define the style of the accordion.\n */\nexport type CardAccordionVariant =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900';\n\nexport interface CardAccordionElement extends HTMLDivElement {\n  /**\n   *  Expand the accordion.\n   */\n  expand: () => void;\n  /**\n   *  Collapse the accordion.\n   */\n  collapse: () => void;\n  /**\n   *  Toggles the content of the accordion.\n   */\n  toggle: () => void;\n  /**\n   *  Current value of the expanded state of the accordion.\n   */\n  isExpanded: boolean;\n}\n\nexport interface CardAccordionProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * The variant of the accordion. Those variants will define the style of the accordion.\n   */\n  variant?: CardAccordionVariant;\n  /**\n   * Accordion header title.\n   */\n  headingTitle?: ReactNode;\n  /**\n   * Accordion content.\n   */\n  children?: ReactNode;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n}\n\ntype eventToTriggerType = Record<'name', 'expand' | 'collapse' | null>;\n\nconst CardAccordion: FC<CardAccordionProps> = ({\n  ref = null,\n  children,\n  variant = 'white',\n  headingTitle,\n  className = '',\n  defaultExpanded,\n  'expanded': expandedFromProps,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  'aria-label': ariaLabel,\n  ...props\n}): ReactElement => {\n  const generatedId = useId();\n\n  const isControlled = typeof expandedFromProps != 'undefined';\n\n  const hasDefaultValue = typeof defaultExpanded != 'undefined';\n\n  const [internalExpandedValue, setInternalExpandedValue] = useState(hasDefaultValue ? stringToBoolean(defaultExpanded) : false);\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n  const isMobile = width < mdScreen;\n\n  // Internally, we need to deal with some value. Depending on whether the component is controlled or not, that value comes from its props or from its internal state.\n  const expanded = isControlled ? stringToBoolean(expandedFromProps) : internalExpandedValue;\n\n  const previousEventToTrigger = useRef<eventToTriggerType>({ name: null });\n  const [eventToTrigger, setEventToTrigger] = useState<eventToTriggerType>({ name: null });\n\n  const summaryRef = useRef<HTMLElement | null>(null);\n  const hadFocusRef = useRef(false);\n\n  const expand = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(true);\n    }\n\n    setEventToTrigger({ name: 'expand' });\n  };\n\n  const collapse = () => {\n    if (!isControlled) {\n      setInternalExpandedValue(false);\n    }\n\n    setEventToTrigger({ name: 'collapse' });\n  };\n\n  const toggle = () => {\n    // If the component is uncontrolled, we need to update our internal value here.\n    if (!isControlled) {\n      setInternalExpandedValue(!expanded);\n    }\n\n    if (expanded) {\n      setEventToTrigger({ name: 'collapse' });\n    }\n\n    if (!expanded) {\n      setEventToTrigger({ name: 'expand' });\n    }\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const externalRef = useExpandedRef<CardAccordionElement>(ref as React.RefObject<CardAccordionElement>, innerRef, {\n    isExpanded: expanded,\n    expand,\n    collapse,\n    toggle\n  } as CardAccordionElement);\n\n  if (eventToTrigger.name === 'expand') {\n    const expandedEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'expand');\n    onExpanded?.(expandedEvt);\n  }\n\n  if (eventToTrigger.name === 'collapse') {\n    const collapsedEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'collapse');\n    onCollapsed?.(collapsedEvt);\n  }\n\n  if (eventToTrigger.name !== previousEventToTrigger.current.name) {\n    previousEventToTrigger.current.name = eventToTrigger.name;\n\n    const changeEvt = createSyntheticEvent<CardAccordionElement | undefined>(externalRef.current ?? undefined, 'change');\n    onChange?.(changeEvt);\n  }\n\n  useEffect(() => {\n    if (hadFocusRef.current && summaryRef.current) {\n      summaryRef.current.focus();\n    }\n    hadFocusRef.current = false;\n  }, [expanded]);\n\n  const AccordionClassName = classNames(\n    'agora-card-accordion',\n    className,\n    {\n      'card-accordion-open': expanded,\n      'mobile': isMobile\n    },\n    variant\n  );\n\n  const DarkBackground = variant == 'primary-500' || variant == 'primary-700' || variant == 'primary-900';\n\n  const AccordionBodyClassName = classNames('card-accordion-body', {\n    'card-accordion-body-block': expanded,\n    'dark-background': DarkBackground\n  });\n\n  const AccordionIconClassName = classNames('icon icon-chevron', { 'icon-chevron-flip': expanded, 'dark-background': DarkBackground });\n\n  const HeaderClassName = classNames('card-accordion-header', `card-accordion-header-${variant}`);\n\n  const onClickHandler = () => {\n    hadFocusRef.current = document.activeElement === summaryRef.current;\n    toggle();\n  };\n\n  return (\n    <div className={AccordionClassName} {...props} ref={innerRef}>\n      <div className=\"flex justify-start items-center w-full\">\n        <details className=\"card-accordion-details\" key={expanded ? 'open' : 'closed'} open={expanded}>\n          <summary\n            ref={summaryRef}\n            aria-label={ariaLabel}\n            className={HeaderClassName}\n            aria-expanded={expanded}\n            id={`agora-card-accordion-${generatedId}-control`}\n            aria-controls={`agora-accordion-${generatedId}-region`}\n            onClick={onClickHandler}\n          >\n            <div className=\"card-accordion-header-button-wrapper\">\n              <div className=\"icon-wrapper leading\">\n                <Icon className={AccordionIconClassName} name=\"agora-line-chevron-down\" aria-hidden />\n              </div>\n\n              {headingTitle && <span className=\"title\">{headingTitle}</span>}\n            </div>\n          </summary>\n          <section\n            className={AccordionBodyClassName}\n            id={`agora-card-accordion-${generatedId}-region`}\n            aria-labelledby={`agora-card-accordion-${generatedId}-control`}\n          >\n            <div className=\"children-wrapper\">{children}</div>\n          </section>\n        </details>\n      </div>\n    </div>\n  );\n};\n\nexport { CardAccordion };\n","import { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, SyntheticEvent } from 'react';\nimport { CardAccordion, CardAccordionElement } from './card-accordion';\nimport { Icon } from '@/components/icon';\n\nimport './card-expandable.css';\n\n/**\n * The available variants of the card. Those variants will define the style of the card.\n */\nexport type CardExpandableVariant =\n  | 'white'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'neutral-100';\n\nexport interface CardExpandableElement extends CardAccordionElement {}\n\nexport interface CardExpandableProps extends Omit<ComponentProps<'div'>, 'title' | 'onChange'> {\n  /**\n   * The variant of the card. Those variants will define the style of the card.\n   */\n  variant?: CardExpandableVariant;\n  /**\n   * Heading level to apply in the card.\n   */\n  cardHeadingLevel?: HeadingLevel;\n  /**\n   * Card title.\n   */\n  cardTitle: ReactNode;\n  /**\n   * Card subtitle.\n   */\n  cardSubtitle?: ReactNode;\n  /**\n   * Card icon.\n   */\n  showBookmarkIcon?: BooleanProp;\n  /**\n   * Defines if an icon is shown previously of title.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n  /**\n   * CardAccordion header title.\n   */\n  accordionHeadingTitle: ReactNode;\n  /**\n   * Value for the expanded value.\n   */\n  expanded?: BooleanProp;\n  /**\n   * Initial value for the expanded value.\n   */\n  defaultExpanded?: BooleanProp;\n  /**\n   * Event function called whenever the accordion expands.\n   */\n  onExpanded?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion collapses.\n   */\n  onCollapsed?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n  /**\n   * Event function called whenever the accordion expands or collapses.\n   */\n  onChange?: (evt: SyntheticEvent<CardAccordionElement | undefined>) => void | undefined;\n}\n\nconst CardExpandable: FC<CardExpandableProps> = ({\n  ref = null,\n  variant = 'white',\n  cardHeadingLevel: Component = 'h2',\n  cardTitle,\n  cardSubtitle,\n  showBookmarkIcon,\n  hasIcon,\n  leadingIcon,\n  children,\n  accordionHeadingTitle,\n  expanded,\n  defaultExpanded,\n  onExpanded,\n  onCollapsed,\n  onChange,\n  className = '',\n  ...props\n}): ReactElement => {\n  const cardExpandableClasses = classNames('agora-card-expandable', `${variant}`, className);\n\n  return (\n    <div className={cardExpandableClasses} {...props}>\n      {stringToBoolean(showBookmarkIcon) && <BookmarkIcon className=\"bookmark-icon\" aria-hidden />}\n\n      <div className=\"card-expandable-content\">\n        <div className=\"card-expandable-header\">\n          <div className=\"header-title-container\">\n            {stringToBoolean(hasIcon) && leadingIcon && <Icon name={leadingIcon} />}\n            <Component className=\"header-title\">{cardTitle}</Component>\n          </div>\n          {cardSubtitle && <div className=\"header-subtitle\">{cardSubtitle}</div>}\n        </div>\n\n        <CardAccordion\n          variant={variant}\n          headingTitle={accordionHeadingTitle}\n          expanded={expanded}\n          defaultExpanded={defaultExpanded}\n          onExpanded={onExpanded}\n          onCollapsed={onCollapsed}\n          onChange={onChange}\n          ref={ref}\n        >\n          {children}\n        </CardAccordion>\n      </div>\n    </div>\n  );\n};\n\nexport { CardExpandable };\n","import { RefObject, useCallback, useEffect } from 'react';\n\nexport interface IUseBlockedLink {\n  parentCardRef: RefObject<HTMLDivElement | null>;\n  anchorRef: RefObject<HTMLAnchorElement | null>;\n  mainLinkRef?: RefObject<HTMLSpanElement | null>;\n  blockedLink?: boolean;\n}\n\nconst useBlockedLinkV2 = ({ parentCardRef, anchorRef, mainLinkRef, blockedLink = false }: IUseBlockedLink) => {\n  const activateLink = useCallback(() => {\n    const event = new MouseEvent('click', {\n      detail: 1\n    });\n\n    if (mainLinkRef?.current) {\n      mainLinkRef.current.querySelectorAll('a').forEach((a, index) => {\n        if (index === 0) {\n          a.dispatchEvent(event);\n        }\n      });\n    } else {\n      anchorRef.current?.dispatchEvent(event);\n    }\n  }, [anchorRef, mainLinkRef]);\n\n  const onClickCaptureHandler = useCallback(\n    (evt: MouseEvent) => {\n      const target = evt.target as HTMLElement;\n      if (target.tagName !== 'A' && !target.matches('a *')) {\n        //  Is blocked link\n        //  Is not an anchor nor a child of an anchor\n        //  Trigger main link\n\n        evt.stopPropagation();\n        evt.preventDefault();\n        activateLink();\n      }\n    },\n    [activateLink]\n  );\n\n  const onMouseEnterHandler = useCallback(() => {\n    if (mainLinkRef?.current) {\n      mainLinkRef.current.querySelectorAll('a').forEach((a) => {\n        a.classList.add('hover');\n      });\n    } else {\n      (anchorRef?.current as HTMLAnchorElement).classList.add('hover');\n    }\n  }, [anchorRef, mainLinkRef]);\n\n  const onMouseLeaveHandler = useCallback(() => {\n    if (mainLinkRef?.current) {\n      mainLinkRef.current.querySelectorAll('a').forEach((a) => {\n        a.classList.remove('hover');\n        a.classList.remove('active');\n      });\n    } else {\n      (anchorRef?.current as HTMLAnchorElement).classList.remove('hover');\n      (anchorRef?.current as HTMLAnchorElement).classList.remove('active');\n    }\n  }, [anchorRef, mainLinkRef]);\n\n  const onMouseDownHandler = useCallback(\n    (evt: MouseEvent) => {\n      const target = evt.target as HTMLElement;\n      if (target.tagName !== 'A' && !target.matches('a *')) {\n        if (mainLinkRef?.current) {\n          //  FOR LINKWRAPPER WE NEED TO FORCE THE ACTIVE CLASS IN THE INNER ANCHOR\n          mainLinkRef.current.querySelectorAll('a').forEach((a) => {\n            a.classList.add('active');\n          });\n        } else {\n          (anchorRef?.current as HTMLAnchorElement).classList.add('active');\n        }\n      }\n    },\n    [anchorRef, mainLinkRef]\n  );\n\n  const onMouseUpHandler = useCallback(() => {\n    if (mainLinkRef?.current) {\n      //  FOR LINKWRAPPER WE NEED TO FORCE THE ACTIVE CLASS IN THE INNER ANCHOR\n      mainLinkRef.current.querySelectorAll('a').forEach((a) => {\n        a.classList.remove('active');\n      });\n    } else {\n      (anchorRef?.current as HTMLAnchorElement).classList.remove('active');\n    }\n  }, [anchorRef, mainLinkRef]);\n\n  useEffect(() => {\n    const parentCardElem = parentCardRef?.current as HTMLDivElement;\n    const anchorElement = anchorRef?.current as HTMLAnchorElement;\n    const mainLinkElement = mainLinkRef?.current as HTMLAnchorElement;\n\n    if (parentCardElem && (mainLinkElement || anchorElement)) {\n      if (blockedLink) {\n        parentCardElem.classList.add('blocked-link');\n        parentCardElem.addEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.addEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.addEventListener('mouseleave', onMouseLeaveHandler);\n        parentCardElem.addEventListener('mousedown', onMouseDownHandler);\n        parentCardElem.addEventListener('mouseup', onMouseUpHandler);\n      } else {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n        parentCardElem.removeEventListener('mousedown', onMouseDownHandler);\n        parentCardElem.removeEventListener('mouseup', onMouseUpHandler);\n      }\n    }\n\n    return () => {\n      if (parentCardElem) {\n        parentCardElem.classList.remove('blocked-link');\n        parentCardElem.removeEventListener('click', onClickCaptureHandler, true);\n        parentCardElem.removeEventListener('mouseenter', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseover', onMouseEnterHandler);\n        parentCardElem.removeEventListener('mouseleave', onMouseLeaveHandler);\n        parentCardElem.removeEventListener('mousedown', onMouseDownHandler);\n        parentCardElem.removeEventListener('mouseup', onMouseUpHandler);\n      }\n    };\n  }, [\n    parentCardRef,\n    anchorRef,\n    blockedLink,\n    mainLinkRef,\n    onMouseUpHandler,\n    onMouseDownHandler,\n    onMouseLeaveHandler,\n    onMouseEnterHandler,\n    onClickCaptureHandler,\n    activateLink\n  ]);\n};\n\nexport { useBlockedLinkV2 };\n","import { Anchor, AnchorProps } from '@/components/anchor';\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode, useRef } from 'react';\nimport { useBlockedLinkV2 } from '../shared/use-blocked-link-v2';\nimport './card-frame.css';\n\nexport type CardFrameLinkPosition = 'bottom' | 'right';\n\nexport interface CardFrameProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Label header.\n   */\n  label: ReactNode;\n  /**\n   * Definition of the AgoraDS anchor to be draw if specified.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Definition of the main link of the card. It can be any framework specific link. Like NextJS Link component. It will override the mainAnchor prop.\n   */\n  mainLink?: ReactNode;\n  /**\n   * Makes the whole card clickable. When card is clicked the mainAnchor or mainLink will activate.\n   */\n  blockedLink?: BooleanProp;\n  /**\n   * Positions the link bellow or on the right side of the card.\n   */\n  linkPosition?: CardFrameLinkPosition;\n}\n\nexport const CardFrame: FC<CardFrameProps> = ({\n  className,\n  label,\n  headingLevel: Heading = 'h2',\n  mainAnchor,\n  mainLink,\n  blockedLink = false,\n  linkPosition = 'bottom',\n  children,\n  ...props\n}) => {\n  const cardFrameRef = useRef<HTMLDivElement | null>(null);\n  const mainAnchorElementRef = useRef<HTMLAnchorElement | null>(null);\n  const mainLinkElementRef = useRef<HTMLSpanElement | null>(null);\n  const cardFrameClassNames = classNames('agora-card-frame', className);\n\n  useBlockedLinkV2({\n    parentCardRef: cardFrameRef,\n    anchorRef: mainAnchorElementRef,\n    mainLinkRef: mainLinkElementRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardFrameContainerClass = classNames('container-body', `link-${linkPosition}`, className);\n\n  return (\n    <div {...props} role=\"presentation\" ref={cardFrameRef} className={cardFrameClassNames}>\n      {label && (\n        <div className=\"label-container\">\n          <Heading>{label}</Heading>\n        </div>\n      )}\n\n      <div className={cardFrameContainerClass}>\n        {children && <div className=\"children-container\">{children}</div>}\n\n        {!mainLink && mainAnchor && (\n          <div className=\"anchor-container\">\n            <Anchor {...mainAnchor} appearance=\"link\" ref={mainAnchorElementRef} />\n          </div>\n        )}\n\n        {mainLink && (\n          <div className=\"anchor-container\">\n            <LinkWrapper ref={mainLinkElementRef} appearance=\"link\">\n              {mainLink}\n            </LinkWrapper>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ImgHTMLAttributes, ReactElement } from 'react';\n\nimport classNames from 'classnames';\n\nimport { CardHeroHelperProps } from '@/components/cards/card-hero-helper';\nimport { CardHeroIndexProps } from '@/components/cards/card-hero-index';\nimport { CardHeroSitemapProps } from '@/components/cards/card-hero-sitemap';\n\nimport './card-full-image.css';\n\nexport interface CardFullImageProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children: ReactElement<CardHeroSitemapProps | CardHeroIndexProps | CardHeroHelperProps>;\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n}\n\nexport const CardFullImage: FC<CardFullImageProps> = ({ image, ...props }) => {\n  const cardFullImageClassName = classNames('agora-card-full-image', props.className);\n\n  return (\n    <div className={cardFullImageClassName} {...props}>\n      <div className=\"card-background\">\n        <div className=\"card-image-container\">\n          <img className=\"card-image\" src={image.src} alt={image.alt} aria-hidden={image['aria-hidden'] ?? true} />\n        </div>\n      </div>\n      <div className=\"card-content\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-x-32\">\n          <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-5 xl:col-start-7\">{props.children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\nimport { HeadingLevel } from '@/models';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport './card-hero-helper.css';\n\nexport interface HelpTopic {\n  description: ReactNode;\n  anchor: AnchorProps;\n}\n\nexport interface CardHeroHelperProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card\n   */\n  subtitle?: ReactNode;\n  /**\n   * The list of help topics of the card\n   */\n  helpTopics?: HelpTopic[];\n}\n\nexport const CardHeroHelper: FC<CardHeroHelperProps> = ({\n  subtitle,\n  headingLevel: Heading = 'h2',\n  title,\n  helpTopics = [],\n  className,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const CardHeroHelperClasses = classNames('agora-card-hero-helper', className);\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className={CardHeroHelperClasses} {...props}>\n      {(subtitle || title) && (\n        <div className=\"flex gap-8 flex-col\">\n          {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n        </div>\n      )}\n\n      {helpTopics.length > 0 && (\n        <ul className=\"flex flex-col justify-start items-start gap-32\">\n          {helpTopics?.map((block, index) => {\n            const key = `card-hero-helper-${generatedId}-description-block-${index}`;\n            return (\n              <li key={key} className=\"flex flex-col gap-16 justify-start items-start\">\n                <div>{block.description}</div>\n                <Anchor {...block?.anchor} />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './card-hero-index.css';\n\nexport interface CardHeroIndexProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   *  Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The list of anchor props that makes up the index.\n   */\n  index: AnchorProps[];\n}\n\nexport const CardHeroIndex: FC<CardHeroIndexProps> = ({ title, headingLevel: Heading = 'h3', index, className, ...props }) => {\n  const generatedId = useId();\n\n  const CardExpandableClasses = classNames('agora-card-hero-index', className);\n\n  return (\n    <div className={CardExpandableClasses} {...props}>\n      {title && <Heading className=\"card-hero-index-title\">{title}</Heading>}\n\n      {index.length > 0 && (\n        <ul className=\"index-list\">\n          {index.map((cardIndex, idx) => {\n            const key = `card-index-${generatedId}-index-item-${idx}`;\n            return (\n              <li key={key}>\n                <Anchor {...cardIndex} appearance=\"link\" variant=\"neutral\">\n                  {cardIndex.children}\n                </Anchor>\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './card-hero-sitemap.css';\n\nexport interface CardHeroSitemapProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of anchor props that makes up the index.\n   */\n  anchors: AnchorProps[];\n  /**\n   * The anchor props that makes up the highlighted link.\n   */\n  highlightedLink?: AnchorProps;\n}\n\nexport const CardHeroSitemap: FC<CardHeroSitemapProps> = ({\n  description,\n  headingLevel: Heading = 'h2',\n  title,\n  anchors,\n  highlightedLink,\n  className,\n  ...props\n}) => {\n  const generatedId = useId();\n  const arrayLink = anchors.slice(0, 5);\n\n  const CardHeroSitemapClasses = classNames('agora-card-hero-sitemap', className);\n\n  const headingPlacement = {\n    title: !!title,\n    description: !title && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className={CardHeroSitemapClasses} {...props}>\n      {(title || description) && (\n        <div className=\"flex gap-8 flex-col  text-l-semibold\">\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          {description && <div className=\"description-container\">{buildText(description, headingPlacement.description)}</div>}\n        </div>\n      )}\n\n      {arrayLink.length > 0 && (\n        <ul className=\"flex flex-col justify-start items-start gap-8\">\n          {arrayLink?.map((link, index) => {\n            const key = `card-hero-sitemap-${generatedId}-description-block-${index}`;\n            return (\n              <li key={key}>\n                <Anchor {...link} />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n\n      {highlightedLink && (\n        <Anchor\n          appearance=\"link\"\n          {...highlightedLink}\n          hasIcon={highlightedLink.hasIcon ?? true}\n          trailingIcon={highlightedLink.trailingIcon ?? 'agora-line-arrow-right-circle'}\n          trailingIconHover={highlightedLink.trailingIcon ?? 'agora-line-arrow-right-circle'}\n          {...(!highlightedLink?.children && { className: '!block' })}\n        />\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useId } from 'react';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { HeadingLevel } from '@/models';\n\nimport './inner-highlight-card.css';\n\nexport interface InnerHighlightCardProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * header title.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of links of the card\n   */\n  links: AnchorProps[];\n}\n\nexport const InnerHighlightCard: FC<InnerHighlightCardProps> = ({\n  title,\n  subtitle,\n  description,\n  links,\n  headingLevel: Heading = 'h3',\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    description: !title && !subtitle && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  return (\n    <div className=\"inner-highlight-card\" {...props}>\n      {(subtitle || title || description) && (\n        <div className=\"flex flex-col gap-8\">\n          {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n          {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          {description && <div className=\"description-container\">{buildText(description, headingPlacement.description)}</div>}\n        </div>\n      )}\n\n      {links?.length > 0 && (\n        <ul className=\"links-container\">\n          {links?.map((link, index) => {\n            const key = `card-highlight-links-list-${generatedId}-${index}`;\n            return (\n              <li key={key}>\n                <Anchor\n                  appearance=\"link\"\n                  hasIcon\n                  trailingIcon=\"agora-line-arrow-right-circle\"\n                  trailingIconHover=\"agora-line-arrow-right-circle\"\n                  {...link}\n                />\n              </li>\n            );\n          })}\n        </ul>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes, ReactNode, useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { AnchorProps } from '@/components/anchor';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { HeadingLevel } from '@/models';\nimport { InnerHighlightCard } from './shared/inner-highlight-card';\n\nimport './card-highlight.css';\n\nexport type HighlightAreaPositionType = 'interior' | 'exterior';\nexport type HighlightCardPositionType = 'bottom' | 'middle';\nexport type HighlightCardSizeType = 's' | 'default';\n\nexport interface CardHighlightProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * The subtitle to be displayed.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title to be displayed.\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * The list of links of the card.\n   */\n  links: AnchorProps[];\n  /**\n   * Positioning title and subtitle internally/externally of the card.\n   */\n  highlightAreaPosition?: HighlightAreaPositionType;\n  /**\n   * Positioning card.\n   */\n  cardPosition?: HighlightCardPositionType;\n  /**\n   * Card size\n   */\n  cardSize?: HighlightCardSizeType;\n}\n\nexport const CardHighlight: FC<CardHighlightProps> = ({\n  image,\n  title,\n  subtitle,\n  description,\n  highlightAreaPosition = 'exterior',\n  headingLevel: Heading = 'h3',\n  links,\n  cardPosition = 'bottom',\n  cardSize = 'default',\n  className,\n  ...props\n}) => {\n  const cardHighlightClassName = classNames('agora-card-highlight', cardPosition, `card-${cardSize}`, className);\n  const { width } = useWindowSize();\n  const { mdScreen, xlScreen } = useBreakpointScreenValues();\n\n  const isTablet = width >= mdScreen && width < xlScreen;\n  const isMobile = width < mdScreen;\n\n  const headingPlacement = {\n    title: !!title,\n    subtitle: !title && !!subtitle,\n    description: !title && !subtitle && !!description\n  };\n\n  const buildText = (text: ReactNode, isHeading: boolean): ReactNode => {\n    return isHeading ? <Heading>{text}</Heading> : text;\n  };\n\n  const cardInfoRef = useRef<HTMLDivElement>(null);\n  const cardContentRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (!cardContentRef.current) return;\n\n    cardContentRef.current.style.marginTop = '';\n\n    if (width < xlScreen || cardPosition === 'bottom' || highlightAreaPosition === 'interior') return;\n\n    const height = cardInfoRef.current?.clientHeight ?? 0;\n    const spaceBetweenElements = 32;\n    const marginTop = -248;\n    const heightLessDefaultValue = height - 136;\n    const result = marginTop + spaceBetweenElements + heightLessDefaultValue;\n\n    cardContentRef.current.style.marginTop = `${result}px`;\n  }, [title, subtitle, width, cardPosition, highlightAreaPosition, xlScreen]);\n\n  return (\n    <div className={cardHighlightClassName} {...props}>\n      <div className=\"card-image-container\">\n        <img className=\"card-image\" {...image} src={image.src} alt={image.alt} aria-hidden={image['aria-hidden'] ?? true} />\n      </div>\n      {(title || subtitle) && highlightAreaPosition === 'exterior' && !isMobile && !isTablet && (\n        <div className=\"card-box-exterior\">\n          <div ref={cardInfoRef} className=\"card-info\">\n            {subtitle && <div className=\"subtitle-container\">{buildText(subtitle, headingPlacement.subtitle)}</div>}\n            {title && <div className=\"title-container\">{buildText(title, headingPlacement.title)}</div>}\n          </div>\n        </div>\n      )}\n      <div ref={cardContentRef} className=\"card-content\">\n        <div className=\"shared-card-content\">\n          <InnerHighlightCard\n            headingLevel={Heading}\n            {...(highlightAreaPosition === 'interior' || isTablet || isMobile ? { title, subtitle } : undefined)}\n            description={description}\n            links={links}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes, ReactElement, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { InputEmailBarProps } from '@/components/input-email-bar/input-email-bar';\n\nimport './card-highlight-newsletter.css';\n\nexport interface CardHighlightNewsletterProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * The title to be displayed.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle to be displayed.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The image to be displayed.\n   */\n  image: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * Children content.\n   */\n  children: ReactElement<InputEmailBarProps>;\n}\n\nexport const CardHighlightNewsletter: FC<CardHighlightNewsletterProps> = ({ title, subtitle, image, ...props }) => {\n  const cardHighlightNewsletterClassName = classNames('agora-card-highlight-newsletter', props.className);\n\n  return (\n    <div className={cardHighlightNewsletterClassName} style={{ backgroundImage: `url(${image.src})` }} {...props}>\n      <div className=\"card-container\">\n        <div className=\"card-content\">\n          {title && <div className=\"title\">{title}</div>}\n          {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n        </div>\n        <div className=\"input-container\">\n          <div className=\"email-bar\">{props.children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button, ButtonProps } from '@/components/button';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\n\nimport './card-highlight-single.css';\nimport { stringToBoolean } from '@/utils';\nimport { BooleanProp } from '@/models';\n\nexport interface CardHighlightSingleProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Card title.\n   */\n  title?: ReactNode;\n  /**\n   * Card subtitle.\n   */\n  subtitle?: ReactNode;\n  /**\n   * Card icon.\n   */\n  showBookmarkIcon?: BooleanProp;\n  /**\n   * Button props.\n   */\n  actionButton?: ButtonProps;\n}\n\nexport const CardHighlightSingle: FC<CardHighlightSingleProps> = ({\n  title,\n  subtitle,\n  actionButton,\n  showBookmarkIcon,\n  className = '',\n  ...props\n}) => {\n  const CardHighLightClasses = classNames('agora-card-highlight-single', className);\n\n  return (\n    <div className={CardHighLightClasses} {...props}>\n      <div className=\"custom-svg-container\">\n        <svg\n          className=\"custom-svg\"\n          width=\"100%\"\n          height=\"100%\"\n          viewBox=\"0 0 384 378\"\n          aria-hidden\n          xmlns=\"http://www.w3.org/2000/svg\"\n          fill=\"none\"\n        >\n          <g opacity=\"0.04\" stroke=\"white\" strokeWidth=\"24\" strokeMiterlimit=\"9.56677\" strokeLinecap=\"round\">\n            <path d=\"M-436 189.113C-237.528 189.113 -202.994 271.214 -118.581 252.744C-42.7446 236.151 30.3181 89.0689 81.1009 93.8569C133.588 98.8049 4.82279 267.863 60.1717 290.185C105.121 308.314 250.971 -0.840043 299.676 13.483C357.976 30.624 189.186 355.513 249.579 364.748C308.959 373.827 348.241 135.047 419.085 122.245C483.27 110.647 497 189.113 742 189.113\" />\n          </g>\n        </svg>\n      </div>\n      <div className=\"card-content\">\n        <div className=\"content\">\n          {stringToBoolean(showBookmarkIcon) && <BookmarkIcon className=\"card-highlight-single-icon\" aria-hidden />}\n          <div className=\"card-title\">{title && <div className=\"title\">{title}</div>}</div>\n          <div className=\"card-action\">\n            {subtitle && <div className=\"subtitle\">{subtitle}</div>}\n            <div className=\"action-button\">\n              <Button {...actionButton} />\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { Anchor, AnchorProps } from '@/components/anchor';\nimport { Icon } from '@/components/icon';\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ImgHTMLAttributes, ReactNode, useId, useRef } from 'react';\n\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { useBlockedLinkV2 } from '../shared/use-blocked-link-v2';\nimport './card-links.css';\n\nexport type CardLinksVariants =\n  | 'transparent'\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900';\n\nexport interface CardLinksProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Add padding to the card.\n   */\n  padding?: BooleanProp;\n  /**\n   * Style of card\n   */\n  variant?: CardLinksVariants;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The category of the card.\n   */\n  category?: ReactNode;\n  /**\n   * Card date label.\n   */\n  date?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   * card image.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * Anchor props to render in heading.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Definition of the main link of the card. It can be any framework specific link. Like NextJS Link component. It will override the mainAnchor prop.\n   */\n  mainLink?: ReactNode;\n  /**\n   * The list of links of the card.\n   */\n  links?: AnchorProps[];\n  /**\n   * The list of topics of the card.\n   */\n  topics?: ReactNode[];\n  /**\n   * Makes the whole card clickable.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardLinks: FC<CardLinksProps> = ({\n  headingLevel: Heading = 'h2',\n  category,\n  description,\n  image,\n  date,\n  title,\n  mainAnchor,\n  mainLink,\n  links = [],\n  topics = [],\n  className,\n  blockedLink,\n  variant = 'transparent',\n  padding = false,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const cardLinksRef = useRef<HTMLDivElement | null>(null);\n  const mainLinkElementRef = useRef<HTMLSpanElement | null>(null);\n  const anchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const cardLinksClasses = classNames(\n    'agora-card-links',\n    [variant],\n    {\n      'blocked-link': stringToBoolean(blockedLink),\n      'p-64': stringToBoolean(padding)\n    },\n    className\n  );\n\n  const pseudoDarkMode = variant === 'primary-500' || variant === 'primary-700' || variant === 'primary-900';\n\n  useBlockedLinkV2({\n    anchorRef,\n    parentCardRef: cardLinksRef,\n    mainLinkRef: mainLinkElementRef,\n    blockedLink: !title && stringToBoolean(blockedLink)\n  });\n\n  const imageOverlayClassNames = classNames({ 'image-overlay': image?.src && blockedLink });\n\n  return (\n    <div {...props} ref={cardLinksRef} role=\"presentation\" className={cardLinksClasses}>\n      <div className=\"card-links-container\">\n        <div className=\"top-container\">\n          {category && <div className=\"category\">{category}</div>}\n\n          <div className=\"content\">\n            {image && (\n              <div className=\"image-content\">\n                <img src={image.src} alt={image.alt} {...image} />\n                <div className={imageOverlayClassNames} />\n              </div>\n            )}\n\n            <div className=\"text-content\">\n              {date && <div className=\"date\">{date}</div>}\n\n              <div className=\"title\">\n                {title && <Heading>{title}</Heading>}\n\n                {!title && mainLink && (\n                  <Heading>\n                    <LinkWrapper inline appearance=\"link\" darkMode={pseudoDarkMode} variant=\"neutral\" ref={mainLinkElementRef}>\n                      {mainLink}\n                    </LinkWrapper>\n                  </Heading>\n                )}\n\n                {!title && !mainLink && mainAnchor && (\n                  <Heading>\n                    <Anchor {...mainAnchor} inline appearance=\"link\" darkMode={pseudoDarkMode} variant=\"neutral\" ref={anchorRef} />\n                  </Heading>\n                )}\n              </div>\n\n              {description && <div className=\"description\">{description}</div>}\n            </div>\n          </div>\n        </div>\n\n        {(links.length > 0 || topics.length > 0) && (\n          <div className=\"bottom-container\">\n            {links.length > 0 && (\n              <ul className=\"links\">\n                {links.map((link, index) => {\n                  const anchorKey = `card-link-${generatedId}-link-${index}`;\n                  return (\n                    <li key={anchorKey} className=\"link-container\">\n                      <Anchor\n                        {...link}\n                        appearance=\"link\"\n                        target={link.target}\n                        href={link.href}\n                        darkMode={pseudoDarkMode}\n                        variant={pseudoDarkMode ? 'neutral' : 'primary'}\n                        hasIcon={link.hasIcon ?? true}\n                        trailingIcon={link.trailingIcon ?? 'agora-line-arrow-right-circle'}\n                        trailingIconHover={link.trailingIconHover ?? 'agora-solid-arrow-right-circle'}\n                        trailingIconActive={link.trailingIconActive ?? 'agora-line-arrow-right-circle'}\n                      >\n                        {link.children}\n                      </Anchor>\n                    </li>\n                  );\n                })}\n              </ul>\n            )}\n\n            {topics.length > 0 && (\n              <div className=\"topic-list\">\n                {topics.map((topic, index) => (\n                  <div key={`key-${Number(index)}`} className=\"topic-item\">\n                    {index > 0 && <Icon aria-hidden name=\"agora-solid-bullet\" />}\n                    {topic}\n                  </div>\n                ))}\n              </div>\n            )}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC } from 'react';\nimport { Icon } from '../icon';\n\nexport interface ItemProps extends ComponentPropsWithoutRef<'li'> {\n  /**\n   * Choose the icon for an unordered list.\n   */\n  icon?: string;\n}\n\nexport const Item: FC<ItemProps> = ({ icon, ...props }) => (\n  <li {...props}>\n    {!!icon && <Icon name={icon} aria-hidden />}\n    <div className=\"list-items\">{props.children}</div>\n  </li>\n);\n","import React, { Children, ComponentPropsWithoutRef, CSSProperties, FC, isValidElement, ReactElement, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Item, ItemProps } from './item';\nimport './list.css';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport type ListStyle = 'none' | 'bullet' | 'number' | 'icon';\n\nexport interface ListProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * Icon for the list.\n   */\n  icon?: string;\n  /**\n   * Style of the list depending on the chosen type.\n   */\n  listStyle?: ListStyle;\n  /**\n   * Choose the starting number of an ordered number list.\n   */\n  startNumber?: number;\n  /**\n   * Children content.\n   */\n  children?: ReactElement<ItemProps> | Array<ReactElement<ItemProps>>;\n  /**\n   * Add a darkMode to the list.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const List: FC<ListProps> = ({ listStyle = 'none', startNumber = 1, children, icon, darkMode = false, ...props }) => {\n  const ComponentType = listStyle === 'number' ? 'ol' : 'ul';\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const classes = classNames(`agora-list list-${listStyle}`, propsClone.className, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const mappedLIElements = Children.map(children, (child) => {\n    if (!isValidElement<ItemProps>(child)) {\n      return null;\n    }\n\n    const childProps = {\n      ...child.props\n    };\n\n    if (icon) {\n      childProps.icon = icon;\n    }\n\n    return <Item {...childProps} />;\n  });\n\n  return (\n    <ComponentType\n      role=\"list\"\n      style={{ '--startNumber': startNumber } as CSSProperties}\n      start={startNumber}\n      className={classes}\n      id={propsClone.id}\n    >\n      {mappedLIElements}\n    </ComponentType>\n  );\n};\n","import React, { cloneElement, ComponentProps, FC, isValidElement, ReactNode } from 'react';\nimport { Item, List } from '@/components/list';\nimport { Anchor } from '@/components/anchor';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './card-no-results.css';\n\nexport interface CardNoResultsProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Icon to display in the card.\n   */\n  icon?: ReactNode;\n  /**\n   * The title of the card.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the card.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The description of the card.\n   */\n  description?: ReactNode;\n  /**\n   * The extra description of the card.\n   */\n  extraDescription?: ReactNode;\n  /**\n   * If the card should be displayed in a dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * allow you to say where the content should be aligned\n   */\n  position?: 'left' | 'center';\n  /**\n   * show the button within the card\n   */\n  hasAnchor?: boolean;\n  /**\n   * name of icon to show inside of anchor\n   */\n  anchorLeadingIcon?: string;\n  /**\n   * name of icon to show when hover the anchor\n   */\n  anchorLeadingIconHover?: string;\n  /**\n   * name of icon to show after the name of button when hover the anchor\n   */\n  anchorTrailingIcon?: string;\n  /**\n   * name of icon to show after the name of button when hover the anchor\n   */\n  anchorTrailingIconHover?: string;\n  /**\n   * name of button\n   */\n  valueAnchor?: string;\n  /**\n   * list of items to be displayed\n   */\n  itemList?: ReactNode[];\n  /**\n   * show the list inside the card\n   */\n  hasList?: boolean;\n  /**\n   * href of the anchor\n   */\n  anchorHref?: string;\n  /**\n   * target of the anchor link\n   */\n  anchorTarget?: '_blank' | '_self' | '_parent' | '_top';\n}\n\nexport const stringOrReactNode = (value: string | ReactNode, className: string) => {\n  if (typeof value === 'string') {\n    return <div className={className}>{value}</div>;\n  }\n\n  if (isValidElement(value)) {\n    return cloneElement(value as React.ReactElement, { className } as ComponentProps<'div'>);\n  }\n\n  return null;\n};\n\nexport const CardNoResults: FC<CardNoResultsProps> = ({\n  icon,\n  title,\n  subtitle,\n  description,\n  darkMode = false,\n  position = 'center',\n  className = '',\n  hasAnchor,\n  valueAnchor,\n  anchorLeadingIcon,\n  anchorLeadingIconHover,\n  anchorTrailingIcon,\n  anchorTrailingIconHover,\n  itemList = [],\n  anchorHref,\n  hasList,\n  anchorTarget = '_blank',\n  extraDescription,\n  ...props\n}) => {\n  const cardNoResultsClasses = classNames('agora-card-no-results', stringToBoolean(darkMode) ? 'dark' : 'default', className);\n\n  const mainContentClasses = classNames('main-content', {\n    'items-center': position === 'center',\n    'items-start': position === 'left',\n    'text-center': position === 'center'\n  });\n\n  const hasAnyAnchorIcon = !!anchorLeadingIcon || !!anchorLeadingIconHover || !!anchorTrailingIcon || !!anchorTrailingIconHover;\n\n  return (\n    <div className={cardNoResultsClasses} {...props}>\n      <div className={mainContentClasses}>\n        {icon && <div className=\"icon-container\">{icon}</div>}\n\n        {title && stringOrReactNode(title, 'title')}\n\n        {subtitle && stringOrReactNode(subtitle, 'subtitle')}\n\n        {description && stringOrReactNode(description, 'description')}\n\n        {extraDescription && stringOrReactNode(extraDescription, 'extra-description')}\n\n        {hasList && (\n          <List className=\"list\" listStyle=\"bullet\" darkMode={darkMode}>\n            {itemList?.map((item, index) => (\n              <Item key={index}>{item}</Item>\n            ))}\n          </List>\n        )}\n\n        {hasAnchor && valueAnchor && (\n          <Anchor\n            target={anchorTarget}\n            href={anchorHref}\n            darkMode={darkMode}\n            variant={darkMode ? 'neutral' : 'primary'}\n            className=\"anchor\"\n            hasIcon={hasAnyAnchorIcon}\n            leadingIcon={anchorLeadingIcon}\n            leadingIconHover={anchorLeadingIconHover}\n            trailingIcon={anchorTrailingIcon}\n            trailingIconHover={anchorTrailingIconHover}\n          >\n            {valueAnchor}\n          </Anchor>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { Icon, IconProps } from '@/components/icon';\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-single.css';\n\n/**\n * Card Single Variants\n */\nexport type CardSingleVariant = 'default' | 'neutral' | 'white';\n\nexport interface CardSingleProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Defines the variant of the card single.\n   */\n  variant?: CardSingleVariant;\n  /**\n   * The icon props\n   */\n  icon?: IconProps;\n  /**\n   * Title Tag Card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * The description of the card\n   */\n  description?: ReactNode;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardSingle: FC<CardSingleProps> = ({\n  variant = 'default',\n  icon,\n  headingLevel: Heading = 'h3',\n  title,\n  description,\n  mainAnchor,\n  blockedLink,\n  className,\n  ...props\n}) => {\n  const cardSingleRef = useRef<HTMLDivElement | null>(null);\n  const cardSingleAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    description: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.description = false;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  useBlockedLink({\n    parentCardRef: cardSingleRef,\n    anchorRef: cardSingleAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const CardSingleClasses = classNames('card-single', `card-${variant}`, className);\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" ref={cardSingleAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" ref={cardSingleAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n  const anchorContainerClassNames = classNames('anchor-container', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} ref={cardSingleRef} role=\"presentation\" className={CardSingleClasses}>\n      {icon && (\n        <div className=\"icon-container\">\n          <Icon {...icon} className=\"card-single-icon\" dimensions=\"m\" />\n        </div>\n      )}\n\n      <div className=\"info-container\">\n        {title && <div className=\"title-container\">{buildText(title, mainAnchorClone, anchorPlacement.title, true)}</div>}\n\n        {description && (\n          <div className=\"description-container\">{buildText(description, mainAnchorClone, anchorPlacement.description, false)}</div>\n        )}\n      </div>\n\n      {anchorPlacement.anchor && (\n        <div className={anchorContainerClassNames}>\n          {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, false)}\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useMemo, useRef } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { Pill } from '@/components/pill';\n\nimport { useBlockedLink } from '../shared/use-blocked-link';\n\nimport './card-topic.css';\nimport { PillProps } from '@/components/pill/pill';\n\n/**\n * Available card topic variant styles.\n */\nexport type CardTopicVariant = 'default' | 'white' | 'informative' | 'success' | 'warning' | 'danger';\n/**\n * Available card topic status.\n */\nexport type CardTopicStatus = 'success' | 'warning' | 'danger';\n\nexport interface CardTopicProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n  /**\n   * Defines the variant of the card topic.\n   */\n  variant?: CardTopicVariant;\n  /**\n   * The title of the card\n   */\n  title?: ReactNode;\n  /**\n   * Defines the status description.\n   */\n  description?: ReactNode;\n  /**\n   * The flag to set the pill.\n   */\n  hasPill?: BooleanProp;\n  /**\n   * Pill props.\n   */\n  pill?: PillProps;\n  /**\n   * Defines the status text.\n   */\n  statusLabel?: ReactNode;\n  /**\n   * Defines the status of the card topic.\n   */\n  status?: CardTopicStatus;\n  /**\n   * Anchor props.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Defines blockedLink prop.\n   */\n  blockedLink?: BooleanProp;\n}\n\nexport const CardTopic: FC<CardTopicProps> = ({\n  headingLevel: Heading = 'h3',\n  variant = 'default',\n  title,\n  description,\n  hasPill = false,\n  pill,\n  statusLabel,\n  status = 'success',\n  mainAnchor,\n  blockedLink = false,\n  className,\n  ...props\n}) => {\n  const variantMemo = useMemo(() => {\n    if (variant === 'default' || variant === 'white') {\n      return 'primary';\n    }\n\n    return variant;\n  }, [variant]);\n\n  const cardTopicRef = useRef<HTMLDivElement | null>(null);\n  const cardTopicAnchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  const headingPlacement = {\n    title: !!title,\n    description: !title && !!description,\n    pill: !title && !description && !!hasPill,\n    anchor: !title && !description && !hasPill && !!mainAnchor && !mainAnchor.hidden\n  };\n\n  const anchorPlacement = {\n    anchor: false,\n    title: false,\n    description: false,\n    pill: false\n  };\n\n  let mainAnchorClone: AnchorProps = { ...mainAnchor };\n\n  if (mainAnchor) {\n    mainAnchorClone = {\n      ...mainAnchor\n    } as AnchorProps;\n\n    if (mainAnchorClone.hasIcon && !mainAnchorClone.trailingIcon && !mainAnchorClone.leadingIcon) {\n      mainAnchorClone.trailingIcon = 'agora-line-arrow-right-circle';\n      mainAnchorClone.trailingIconHover = 'agora-solid-arrow-right-circle';\n    }\n\n    if (mainAnchor.hidden) {\n      //  MUST DELETE IN ORDER TO SPREAD IT LATER\n      delete mainAnchorClone.hidden;\n\n      //  ONE OF THE TEXTS MUST BE FILLED\n      anchorPlacement.title = !!title;\n      anchorPlacement.description = !title && !!description;\n      anchorPlacement.pill = !title && !description && !!hasPill;\n    } else {\n      anchorPlacement.anchor = true;\n    }\n  }\n\n  const buildText = (text: ReactNode, anchorProps: AnchorProps, isAnchor: boolean, isHeading: boolean): ReactNode => {\n    if (!isAnchor) {\n      return isHeading ? <Heading>{text}</Heading> : text;\n    }\n\n    return (\n      <>\n        {isHeading && (\n          <Heading>\n            <Anchor {...anchorProps} appearance=\"link\" variant={variantMemo} ref={cardTopicAnchorRef}>\n              {text}\n            </Anchor>\n          </Heading>\n        )}\n        {!isHeading && (\n          <Anchor {...anchorProps} appearance=\"link\" variant={variantMemo} ref={cardTopicAnchorRef}>\n            {text}\n          </Anchor>\n        )}\n      </>\n    );\n  };\n\n  useBlockedLink({\n    parentCardRef: cardTopicRef,\n    anchorRef: cardTopicAnchorRef,\n    blockedLink: stringToBoolean(blockedLink)\n  });\n\n  const cardTopicClasseNames = classNames('agora-card-topic', `card-${variant}`, { 'has-anchor-label': !mainAnchor?.iconOnly }, className);\n  const cardStatusClasseNames = classNames('card-topic-status', `card-topic-status-${status}`);\n  const anchorContainerClassNames = classNames('card-topic-anchor', { 'icon-only': mainAnchorClone?.iconOnly });\n\n  return (\n    <div {...props} role=\"presentation\" className={cardTopicClasseNames} ref={cardTopicRef}>\n      <div className=\"content-info\">\n        {hasPill && pill && (\n          <div className=\"card-topic-pill\">\n            <Pill {...pill}>{buildText(pill.children, mainAnchorClone, anchorPlacement.pill, headingPlacement.pill)} </Pill>\n          </div>\n        )}\n\n        {title && (\n          <div className=\"card-topic-title\">{buildText(title, mainAnchorClone, anchorPlacement.title, headingPlacement.title)}</div>\n        )}\n\n        {statusLabel && (\n          <div className=\"flex items-center gap-8\">\n            <div className={cardStatusClasseNames} />\n            <div>{statusLabel}</div>\n          </div>\n        )}\n\n        {description && (\n          <div className=\"card-topic-description\">\n            {buildText(description, mainAnchorClone, anchorPlacement.description, headingPlacement.description)}\n          </div>\n        )}\n      </div>\n\n      {anchorPlacement.anchor && (\n        <div className={anchorContainerClassNames}>\n          {buildText(mainAnchorClone.children, mainAnchorClone, anchorPlacement.anchor, headingPlacement.anchor)}\n        </div>\n      )}\n    </div>\n  );\n};\n","import { CardActionVariants } from './card-action';\nimport { ButtonVariant } from '../../button/button';\n\ntype CardActionVariantsBody = {\n  buttonVariant?: ButtonVariant;\n  buttonDarkMode?: boolean;\n};\n\nexport type CardActionVariantsMap = Record<CardActionVariants, CardActionVariantsBody>;\n\nexport const cardActionVariantsMap: CardActionVariantsMap = {\n  'white': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'neutral-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'primary-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'secondary-100': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'primary-300': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'secondary-300': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'white-line': {\n    buttonVariant: 'primary',\n    buttonDarkMode: false\n  },\n  'primary-500': {\n    buttonVariant: 'neutral',\n    buttonDarkMode: false\n  },\n  'primary-700': {\n    buttonVariant: 'neutral',\n    buttonDarkMode: false\n  },\n  'primary-900': {\n    buttonVariant: 'primary',\n    buttonDarkMode: true\n  },\n  'primary-900-line': {\n    buttonVariant: 'primary',\n    buttonDarkMode: true\n  }\n};\n","import React, { ComponentProps, FC, ImgHTMLAttributes, ReactNode } from 'react';\nimport { Button, ButtonProps } from '@/components/button';\nimport classNames from 'classnames';\nimport { Icon, IconProps } from '@/components/icon';\nimport './card-action.css';\nimport { cardActionVariantsMap } from './card-action-variants';\nimport { BooleanProp } from '@/models';\n\nexport type CardActionVariants =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'white-line'\n  | 'primary-900-line';\n\nexport type CardActionAlignment = 'left' | 'center' | 'right';\n\nexport interface CardActionProps extends ComponentProps<'div'> {\n  /**\n   * title of card\n   */\n  titleText: ReactNode;\n  /**\n   * text to show within the card\n   */\n  descriptionText: ReactNode;\n  /**\n   * variant of card action\n   */\n  variant?: CardActionVariants;\n  /**\n   * it allow you align title, text and button\n   */\n  alignment?: CardActionAlignment;\n  /**\n   * show the card horizontally\n   */\n  isCardHorizontal?: BooleanProp;\n  /**\n   * name of icon logo\n   */\n  icon?: IconProps;\n  /**\n   * image card to draw in the card if specified.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * props for the button component\n   */\n  button: ButtonProps;\n  /**\n   * turn button full width\n   */\n  buttonFullWidth?: BooleanProp;\n}\n\nexport const CardAction: FC<CardActionProps> = ({\n  variant = 'white',\n  alignment = 'left',\n  isCardHorizontal,\n  icon,\n  titleText,\n  descriptionText,\n  image,\n  button,\n  buttonFullWidth,\n  className,\n  ...props\n}) => {\n  const buttonVariant = cardActionVariantsMap[variant]?.buttonVariant ?? 'primary';\n  const buttonDarkMode = cardActionVariantsMap[variant]?.buttonDarkMode ?? false;\n\n  const cardActionContainerClassNames = classNames('card-action-container', `${variant}`, className, {\n    'md:flex': image?.src && isCardHorizontal,\n    'card-action-horizontal': isCardHorizontal\n  });\n\n  const cardActionClassNames = classNames('card-action', {\n    'items-center': alignment === 'center',\n    'text-center': alignment === 'center',\n    'items-end': alignment === 'right',\n    'text-right': alignment === 'right'\n  });\n\n  const iconLogoClassNames = classNames('icon-logo', {\n    'justify-center': alignment === 'center',\n    'justify-end': alignment === 'right'\n  });\n\n  const buttonClassNames = classNames('flex w-full mt-32', {\n    'justify-center': alignment === 'center',\n    'justify-end': alignment === 'right'\n  });\n\n  const iconProps = {\n    ...icon,\n    className: classNames(icon?.className, {\n      'justify-center': alignment === 'center',\n      'justify-end': alignment === 'right'\n    })\n  };\n\n  return (\n    <div className={cardActionContainerClassNames} {...props}>\n      {image?.src && <img {...image} alt={image?.alt ?? 'Card action image'} className=\"card-action-image\" />}\n\n      <div className={cardActionClassNames}>\n        <div className=\"overflow-hidden\">\n          {icon && !image?.src && (\n            <div className={iconLogoClassNames}>\n              <Icon {...iconProps} />\n            </div>\n          )}\n\n          <span className=\"title\">{titleText}</span>\n\n          <p>{descriptionText}</p>\n        </div>\n\n        <div className={buttonClassNames}>\n          <Button\n            {...button}\n            fullWidth={buttonFullWidth}\n            variant={buttonVariant}\n            darkMode={buttonDarkMode}\n            className=\"card-action-button\"\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { CardIllustrativeVariants } from './card-illustrative';\nimport { AnchorVariant } from '@/components/anchor';\n\ntype CardIllustrativeAnchorVariantsBody = {\n  anchorVariant?: AnchorVariant;\n  anchorDarkMode?: boolean;\n};\n\nexport type CardIllustrativeAnchorVariantsMap = Record<CardIllustrativeVariants, CardIllustrativeAnchorVariantsBody>;\n\nexport const cardIllustrativeAnchorVariantsMap: CardIllustrativeAnchorVariantsMap = {\n  'white': {\n    anchorVariant: 'primary',\n    anchorDarkMode: false\n  },\n  'neutral-100': {\n    anchorVariant: 'primary',\n    anchorDarkMode: false\n  },\n  'primary-100': {\n    anchorVariant: 'primary',\n    anchorDarkMode: false\n  },\n  'secondary-100': {\n    anchorVariant: 'primary',\n    anchorDarkMode: false\n  },\n  'primary-300': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: false\n  },\n  'secondary-300': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: false\n  },\n  'primary-500': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: true\n  },\n  'primary-700': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: true\n  },\n  'primary-900': {\n    anchorVariant: 'primary',\n    anchorDarkMode: true\n  },\n  'image': {\n    anchorVariant: 'neutral',\n    anchorDarkMode: true\n  }\n};\n","import { isValidElement, ReactElement, ReactNode } from 'react';\n\nexport const getSVGElement = (children?: ReactNode): ReactElement<SVGElement> | null => {\n  return isValidElement<SVGElement>(children) && children.type === 'svg' ? children : null;\n};\n\nexport const getImageElement = (children?: ReactNode): ReactElement<HTMLImageElement> | null => {\n  return isValidElement<HTMLImageElement>(children) && children.type === 'img' ? children : null;\n};\n","import React, { ComponentProps, FC, ReactNode, useRef } from 'react';\nimport classNames from 'classnames';\nimport './card-illustrative.css';\nimport { cardIllustrativeAnchorVariantsMap } from './card-illustrative-variants';\nimport { BooleanProp } from '@/models';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\nimport { stringToBoolean } from '@/utils';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { getImageElement, getSVGElement } from '@/components/cards/card-illustrative/utils/image-utils';\nimport { useBlockedLinkV2 } from '../shared/use-blocked-link-v2';\nimport { LinkWrapper } from '@/components/link-wrapper';\n\nexport type CardIllustrativeVariants =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'image';\n\nexport type CardImageFilterOptions = 'neutral-900' | 'primary-900' | 'secondary-900';\n\nexport interface CardIllustrativeProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * title of card\n   */\n  title: ReactNode;\n  /**\n   * subtitle of card\n   */\n  subtitle?: ReactNode;\n  /**\n   * description of card\n   */\n  description?: ReactNode;\n  /**\n   * Variant of card illustrative\n   */\n  variant?: CardIllustrativeVariants;\n  /**\n   * overlay filter to apply to the image\n   */\n  imageFilter?: CardImageFilterOptions;\n  /**\n   * show the card horizontally\n   */\n  isCardHorizontal?: BooleanProp;\n  /**\n   * show the bookmark icon\n   */\n  showBookmarkIcon?: BooleanProp;\n  /**\n   * Background illustration element can be SVG node or Img node\n   */\n  bgIllustration?: ReactNode;\n  /**\n   * Background illustration element on hover can be SVG node or Img node\n   */\n  bgIllustrationHover?: ReactNode;\n  /**\n   * Definition of the AgoraDS anchor to be draw if specified.\n   */\n  mainAnchor?: AnchorProps;\n  /**\n   * Definition of the main link of the card. It can be any framework specific link. Like NextJS Link component. It will override the mainAnchor prop.\n   */\n  mainLink?: ReactNode;\n}\n\nexport const CardIllustrative: FC<CardIllustrativeProps> = ({\n  title: titleText,\n  subtitle: subtitleText,\n  description: descriptionText,\n  variant = 'white',\n  imageFilter,\n  isCardHorizontal,\n  showBookmarkIcon,\n  bgIllustration,\n  bgIllustrationHover,\n  mainAnchor,\n  mainLink,\n  className,\n  ...props\n}) => {\n  const cardIllustrativeRef = useRef<HTMLDivElement | null>(null);\n  const mainAnchorElementRef = useRef<HTMLAnchorElement | null>(null);\n  const mainLinkElementRef = useRef<HTMLSpanElement | null>(null);\n\n  const anchorVariant = cardIllustrativeAnchorVariantsMap[variant].anchorVariant;\n  const anchorDarkMode = cardIllustrativeAnchorVariantsMap[variant].anchorDarkMode;\n\n  const cardIllustrativeContainerClassNames = classNames('agora-card-illustrative', `${variant}`, className, {\n    horizontal: isCardHorizontal,\n    [`image-filter-${imageFilter}`]: imageFilter\n  });\n\n  const cardInnerContainerClassNames = classNames('card-inner-container', {\n    'horizontal': isCardHorizontal,\n    'no-description': !descriptionText\n  });\n\n  const svgElem = getSVGElement(bgIllustration);\n  const svgElemHover = getSVGElement(bgIllustrationHover);\n  const imgElem = getImageElement(bgIllustration);\n\n  useBlockedLinkV2({\n    parentCardRef: cardIllustrativeRef,\n    anchorRef: mainAnchorElementRef,\n    mainLinkRef: mainLinkElementRef,\n    blockedLink: true\n  });\n\n  return (\n    <div className={cardIllustrativeContainerClassNames} ref={cardIllustrativeRef} {...props}>\n      <div className=\"card-background-container\">\n        {(svgElem || svgElemHover) && (\n          <div className=\"card-svg\">\n            {svgElem && <div className=\"card-svg-default\">{svgElem}</div>}\n            {svgElemHover && <div className=\"card-svg-hover\">{svgElemHover}</div>}\n          </div>\n        )}\n        {imgElem && variant === 'image' && (\n          <div className=\"card-image\">\n            {imgElem}\n            {imageFilter && <div className=\"card-mask\" />}\n          </div>\n        )}\n      </div>\n\n      {stringToBoolean(showBookmarkIcon) && <BookmarkIcon className=\"card-bookmark\" aria-hidden />}\n\n      <div className=\"text\">\n        {subtitleText && <div className=\"subtitle\">{subtitleText}</div>}\n\n        {titleText && <div className=\"title\">{titleText}</div>}\n\n        <div className={cardInnerContainerClassNames}>\n          {descriptionText && <div className=\"description\">{descriptionText}</div>}\n\n          <div className=\"card-anchor\">\n            {!mainLink && mainAnchor && (\n              <Anchor {...mainAnchor} hasIcon={true} variant={anchorVariant} darkMode={anchorDarkMode} ref={mainAnchorElementRef} />\n            )}\n            {mainLink && (\n              <LinkWrapper ref={mainLinkElementRef} appearance=\"link\">\n                {mainLink}\n              </LinkWrapper>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { PillAppearance } from '@/components/pill';\nimport { CardGeneralVariants } from './card-general';\nimport { AnchorVariant } from '@/components/anchor';\n\ntype pillVariantType = {\n  appearance: PillAppearance;\n  darkMode: boolean;\n};\n\ntype anchorVariantType = {\n  darkMode: boolean;\n  variant: AnchorVariant;\n};\n\nexport const pillVariant: Record<CardGeneralVariants, pillVariantType> = {\n  'white': { appearance: 'solid', darkMode: false },\n  'neutral-100': { appearance: 'solid', darkMode: false },\n  'primary-100': { appearance: 'solid', darkMode: false },\n  'secondary-100': { appearance: 'solid', darkMode: false },\n  'primary-300': { appearance: 'outline', darkMode: false },\n  'secondary-300': { appearance: 'outline', darkMode: false },\n  'primary-500': { appearance: 'solid', darkMode: true },\n  'primary-700': { appearance: 'solid', darkMode: true },\n  'primary-900': { appearance: 'solid', darkMode: true },\n  'white-outline': { appearance: 'solid', darkMode: false },\n  'primary-outline': { appearance: 'solid', darkMode: true }\n};\n\nexport const anchorVariant: Record<CardGeneralVariants, anchorVariantType> = {\n  'white': { darkMode: false, variant: 'primary' },\n  'neutral-100': { darkMode: false, variant: 'primary' },\n  'primary-100': { darkMode: false, variant: 'primary' },\n  'secondary-100': { darkMode: false, variant: 'primary' },\n  'primary-300': { darkMode: false, variant: 'neutral' },\n  'secondary-300': { darkMode: false, variant: 'neutral' },\n  'primary-500': { darkMode: true, variant: 'neutral' },\n  'primary-700': { darkMode: true, variant: 'neutral' },\n  'primary-900': { darkMode: true, variant: 'primary' },\n  'white-outline': { darkMode: false, variant: 'primary' },\n  'primary-outline': { darkMode: true, variant: 'primary' }\n};\n","import React, { FC, ImgHTMLAttributes, ReactNode, useRef } from 'react';\nimport './card-general.css';\nimport { Pill } from '@/components/pill/pill';\nimport { Anchor, AnchorProps } from '@/components/anchor/anchor';\nimport classNames from 'classnames';\nimport { IconSet } from '@/components/shared/icon-set';\nimport { IconItem, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { useBlockedLinkV2 } from '../shared/use-blocked-link-v2';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { anchorVariant, pillVariant } from './variants';\n\nexport type CardGeneralVariants =\n  | 'white'\n  | 'neutral-100'\n  | 'primary-100'\n  | 'secondary-100'\n  | 'primary-300'\n  | 'secondary-300'\n  | 'primary-500'\n  | 'primary-700'\n  | 'primary-900'\n  | 'white-outline'\n  | 'primary-outline';\n\nexport interface CardGeneralProps {\n  /**\n   * variant of card action\n   */\n  variant?: CardGeneralVariants;\n  /**\n   * image card to draw in the card if specified.\n   */\n  image?: ImgHTMLAttributes<HTMLImageElement>;\n  /**\n   * to config the icon in the card if specified.\n   */\n  iconDefault?: string;\n  /**\n   * to config the icon in the card when hovered if specified.\n   */\n  iconHover?: string;\n  /**\n   * to config the icon in the card when activated if specified.\n   */\n  iconActive?: string;\n  /**\n   * text to show within a pill\n   */\n  pillText?: ReactNode;\n  /**\n   * text to show the subtitle\n   */\n  subtitleText?: ReactNode;\n  /**\n   * title of card\n   */\n  titleText: ReactNode;\n  /**\n   * status of the card (adds a colored dot)\n   */\n  status?: 'default' | 'success' | 'warning' | 'danger' | 'disabled';\n  /**\n   * label to show next to the status dot\n   */\n  statusText?: ReactNode;\n  /**\n   * text to show within the card\n   */\n  descriptionText: ReactNode;\n  /**\n   * anchor props\n   */\n  anchor?: AnchorProps;\n  /**\n   * if true, the card will be displayed horizontally\n   */\n  isCardHorizontal?: boolean;\n  /**\n   * Makes the whole card clickable. When card is clicked the anchor will activate.\n   */\n  isBlockedLink?: boolean;\n  /**\n   * turns on indent style for the image\n   */\n  imageIndent?: boolean;\n}\n\nexport type setComponentStateType = React.Dispatch<React.SetStateAction<IconSetState>>;\n\nexport const CardGeneral: FC<CardGeneralProps> = ({\n  image,\n  anchor,\n  status,\n  pillText,\n  titleText,\n  iconHover,\n  statusText,\n  iconActive,\n  imageIndent,\n  iconDefault,\n  subtitleText,\n  isBlockedLink,\n  descriptionText,\n  isCardHorizontal,\n  variant = 'white'\n}) => {\n  const cardRef = useRef<HTMLDivElement | null>(null);\n  const anchorRef = useRef<HTMLAnchorElement | null>(null);\n\n  useBlockedLinkV2({\n    parentCardRef: cardRef,\n    anchorRef: anchorRef,\n    blockedLink: isBlockedLink ?? false\n  });\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n  const isMobile = width < mdScreen;\n  const cardHorizontal = isMobile ? false : isCardHorizontal;\n\n  const imageHasIndent = imageIndent ?? false;\n\n  const hasIcon = !image?.src && !!(iconDefault || iconHover || iconActive);\n  const isSimple = !hasIcon && !cardHorizontal;\n  const isSimpleHorizontal = !hasIcon && cardHorizontal;\n  const isVerticalWithImage = !cardHorizontal && !!image?.src;\n  const isHorizontalWithImage = cardHorizontal && !!image?.src;\n  const isVerticalWithIcon = !cardHorizontal && hasIcon;\n  const isHorizontalWithIcon = cardHorizontal && hasIcon;\n\n  const cardGeneralClassNames = classNames('card-general', `card-general-${variant}`, {\n    'cursor-pointer': isBlockedLink,\n    'flex flex-row': cardHorizontal,\n    'imageHasIndent': imageHasIndent,\n    'card-general-blockedLink': isBlockedLink,\n    'pl-32': imageHasIndent && !cardHorizontal,\n    'card-general-hover': !imageHasIndent && isBlockedLink\n  });\n\n  const imageClassNames = classNames('image', {\n    'imageHasIndent': imageHasIndent,\n    'image-indent-vertical': imageHasIndent && !cardHorizontal,\n    'image-indent-horizontal': imageHasIndent && cardHorizontal\n  });\n\n  const imageOverlayClassNames = classNames({ 'image-overlay': image?.src && isBlockedLink });\n\n  const cardGeneralIconClassNames = classNames('icon-container', {\n    'pl-32 pt-16': cardHorizontal,\n    'px-32 pt-32 pb-16': !cardHorizontal\n  });\n\n  const iconClassNames = classNames('icon-set', {\n    'icon-set-hover': isBlockedLink\n  });\n\n  const containerContentClassNames = classNames('content', {\n    'content-hover': isBlockedLink,\n    'flex flex-row': cardHorizontal,\n    'imageHasIndent': imageHasIndent,\n    'pl-32': imageHasIndent && cardHorizontal,\n    'mt-32': imageHasIndent && cardHorizontal,\n    'pt-32': imageHasIndent && !cardHorizontal,\n    'border-2 border-transparent rounded-4': imageHasIndent\n  });\n\n  const contentClassNames = classNames({\n    'p-16': isHorizontalWithIcon,\n    'px-32 pb-16': isVerticalWithIcon,\n    'p-32 pb-16': isSimple || isVerticalWithImage,\n    'p-32 pr-16': isHorizontalWithImage || isSimpleHorizontal\n  });\n\n  const anchorClassName = classNames('anchor', {\n    'ml-32 pb-32': !cardHorizontal,\n    'anchor-blockedLink': isBlockedLink,\n    'mr-32 flex justify-center': cardHorizontal\n  });\n\n  return (\n    <div ref={cardRef} className={cardGeneralClassNames} tabIndex={isBlockedLink ? 0 : undefined}>\n      {image?.src && (\n        <div className={imageClassNames} style={{ width: image.width ?? '100%', height: image.height ?? 'auto' }}>\n          <img {...image} src={image.src} alt={image.alt} width=\"100%\" height=\"100%\" className=\"h-full object-cover\" />\n          <div className={imageOverlayClassNames} />\n        </div>\n      )}\n\n      {hasIcon && (\n        <div className={cardGeneralIconClassNames}>\n          <IconSet className={iconClassNames}>\n            <IconItem state=\"default\" className=\"leading-icon-default\" name={iconDefault ?? 'no-icon-line'} aria-hidden />\n            <IconItem state=\"hover\" className=\"leading-icon-hover\" name={iconHover ?? 'no-icon'} aria-hidden />\n            <IconItem state=\"active\" className=\"leading-icon-active\" name={iconActive ?? 'no-icon'} aria-hidden />\n          </IconSet>\n        </div>\n      )}\n\n      <div className={containerContentClassNames}>\n        <div className={contentClassNames}>\n          {pillText && (\n            <Pill size=\"large\" className=\"mb-8\" darkMode={pillVariant[variant].darkMode} appearance={pillVariant[variant].appearance}>\n              {pillText}\n            </Pill>\n          )}\n\n          {subtitleText && <div className=\"subtitle-text\">{subtitleText}</div>}\n\n          <div className=\"title-text\">{titleText}</div>\n\n          {statusText && (\n            <div className=\"status\">\n              <div className={`status-icon status-icon-${status ?? 'default'}`} />\n              <div className=\"text\">{statusText}</div>\n            </div>\n          )}\n\n          <div className=\"description\">{descriptionText}</div>\n        </div>\n\n        {anchor?.children !== undefined && anchor.children !== null && (\n          <div className={anchorClassName}>\n            <Anchor\n              {...anchor}\n              ref={anchorRef}\n              iconOnly={cardHorizontal}\n              aria-hidden={isBlockedLink}\n              tabIndex={isBlockedLink ? -1 : 0}\n              variant={anchorVariant[variant].variant}\n              darkMode={anchorVariant[variant].darkMode}\n              onFocus={isBlockedLink ? () => cardRef.current?.focus() : undefined}\n            >\n              {anchor?.children ?? ''}\n            </Anchor>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useRef } from 'react';\nimport './status-card.css';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Pill, PillProps, PillVariant } from '@/components';\nimport { IconItem, IconSet } from '../../shared/icon-set/icon-set';\nimport classNames from 'classnames';\nimport { Anchor, AnchorProps } from '@/components/anchor/anchor';\nimport { useBlockedLinkV2 } from '../../cards/shared/use-blocked-link-v2';\n\nexport type StatusCardType =\n  | 'informative'\n  | 'success'\n  | 'warning'\n  | 'danger'\n  | 'outline-informative'\n  | 'outline-success'\n  | 'outline-warning'\n  | 'outline-danger';\n\nexport interface StatusCardProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Defines what style to apply.\n   */\n  variant?: StatusCardType;\n\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n\n  /**\n   * Show or hide icon.\n   */\n  showIcon?: BooleanProp;\n\n  /**\n   * Status card pill Text content\n   */\n  pillText?: string;\n\n  /**\n   * Status card title content\n   */\n  title?: ReactNode;\n\n  /**\n   * Status card description content\n   */\n  description?: ReactNode;\n\n  /**\n   * The flag to set whether the status card is interactive.\n   */\n  blockedLink?: boolean;\n\n  /**\n   * anchor props\n   */\n  anchor?: AnchorProps;\n\n  /**\n   * If true, the anchor will be positioned on the right side of the status card.\n   */\n  anchorOnRightSide?: boolean;\n}\n\nexport const StatusCard: FC<StatusCardProps> = ({\n  title,\n  anchor,\n  darkMode,\n  showIcon,\n  pillText,\n  description,\n  anchorOnRightSide,\n  blockedLink = false,\n  variant = 'informative'\n}) => {\n  const statusCard = useRef<HTMLDivElement | null>(null);\n  const anchorRef = useRef<HTMLAnchorElement | null>(null);\n  const cardType = stringToBoolean(darkMode) ? 'dark' : 'light';\n\n  const pillProps: PillProps = {\n    size: 'large',\n    darkMode: darkMode,\n    children: pillText,\n    appearance: 'solid',\n    variant: variant?.replace('outline-', '') as PillVariant\n  };\n\n  const hasAnchor = anchor?.href !== undefined && anchor.href !== null;\n\n  const statusCardClassNames = classNames('agora-status-card', {\n    'agora-status-card-interactive': blockedLink && hasAnchor\n  });\n\n  const iconClassNames = classNames('status-card-icon', {\n    'mt-[4px]': pillText,\n    'mt-[2px]': !pillText\n  });\n\n  const contentClassNames = classNames('content', {\n    'flex-col': !anchorOnRightSide,\n    'items-center': anchorOnRightSide\n  });\n\n  useBlockedLinkV2({\n    anchorRef: anchorRef,\n    parentCardRef: statusCard,\n    blockedLink: blockedLink\n  });\n\n  const iconMap: Record<StatusCardType, string> = {\n    'informative': 'agora-solid-info-mark',\n    'warning': 'agora-solid-info-mark',\n    'success': 'agora-solid-check-circle',\n    'danger': 'agora-solid-alert-triangle',\n    'outline-informative': 'agora-solid-info-mark',\n    'outline-warning': 'agora-solid-info-mark',\n    'outline-success': 'agora-solid-check-circle',\n    'outline-danger': 'agora-solid-alert-triangle'\n  };\n\n  const anchorDarkMode = variant === 'warning' ? false : darkMode;\n\n  return (\n    <div ref={statusCard} className={`${statusCardClassNames} ${variant}-${cardType}`}>\n      {stringToBoolean(showIcon) && (\n        <IconSet>\n          <IconItem className={iconClassNames} state=\"default\" name={iconMap[variant]} />\n        </IconSet>\n      )}\n\n      <div className={contentClassNames}>\n        <div className=\"content-texts\">\n          {pillText && (\n            <div className=\"pill\">\n              <Pill {...pillProps} />\n            </div>\n          )}\n\n          {title && <div className=\"title\">{title}</div>}\n\n          {description && <div className=\"description\">{description}</div>}\n        </div>\n\n        {hasAnchor && (\n          <div className=\"anchor\">\n            <Anchor {...anchor} ref={anchorRef} variant=\"neutral\" darkMode={anchorDarkMode} iconOnly={anchorOnRightSide}>\n              {anchor?.children ?? ''}\n            </Anchor>\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import { Icon } from '@/components/icon';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport './feedback.css';\n\nexport interface FeedbackProps extends ComponentProps<'div'> {\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * The flag to set if the feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n}\n\nconst Feedback: FC<FeedbackProps> = ({\n  ref = null,\n  className,\n  feedbackState = 'info',\n  feedbackText,\n  darkMode,\n  feedbackStateLabel,\n  ...props\n}) => {\n  const feedbackWrapperClasses = classNames('feedback', className);\n  const feedbackIconWrapperClasses = classNames('feedback-icon-wrapper', `feedback-icon-wrapper-${feedbackState}`, {\n    'dark': stringToBoolean(darkMode),\n    'feedback-spinner': feedbackState === 'loading'\n  });\n  const feedbackTextClasses = classNames('feedback-text', stringToBoolean(darkMode) ? 'feedback-text-dark' : 'feedback-text-light');\n  /**\n   * Dictionary of possible icons feedback.\n   */\n  const feedbackStateIconsMap = {\n    info: 'agora-solid-info-mark',\n    danger: 'agora-solid-alert-triangle',\n    success: 'agora-solid-check-circle',\n    warning: 'agora-solid-alert-circle',\n    loading: 'agora-solid-loader'\n  };\n\n  const clonedProps = { ...props } as FeedbackProps;\n  const computedRole = clonedProps.role ?? (feedbackState === 'danger' ? 'alert' : 'status');\n  const computedAriaLive = clonedProps['aria-live'] ?? (feedbackState === 'danger' ? 'assertive' : 'polite');\n\n  delete clonedProps.role;\n  delete clonedProps['aria-live'];\n\n  return (\n    <div {...clonedProps} className={feedbackWrapperClasses} ref={ref} role={computedRole} aria-live={computedAriaLive}>\n      <span className={feedbackIconWrapperClasses}>\n        <Icon\n          name={feedbackStateIconsMap[feedbackState]}\n          dimensions=\"s\"\n          aria-hidden={!feedbackStateLabel || undefined}\n          aria-label={feedbackStateLabel}\n        />\n      </span>\n      <p className={feedbackTextClasses}>{feedbackText}</p>\n    </div>\n  );\n};\n\nexport { Feedback };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport './helper-text.css';\n\nexport interface HelperTextProps extends ComponentProps<'div'> {\n  /**\n   * Helper text displayed below input.\n   */\n  helperText?: ReactNode;\n  /**\n   * The flag to set if the helper text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst HelperText: FC<HelperTextProps> = ({ ref = null, className, helperText, darkMode, ...props }) => {\n  const helperTextWrapperClasses = classNames('helper', className);\n  const helperTextClasses = classNames('helper-text', stringToBoolean(darkMode) ? 'helper-text-dark' : 'helper-text-light');\n\n  return (\n    <div {...props} className={helperTextWrapperClasses} ref={ref}>\n      <p className={helperTextClasses}>{helperText}</p>\n    </div>\n  );\n};\n\nexport { HelperText };\n","import { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport './checkbox.css';\n\nexport interface CheckboxProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Child elements to render as custom label.\n   */\n  children?: ReactNode;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * The flag to set if the checkbox is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Helper text displayed below checkbox.\n   */\n  helperText?: ReactNode;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n}\n\nconst Checkbox: FC<CheckboxProps> = ({\n  ref = null,\n  className,\n  label,\n  hasError,\n  hideLabel,\n  required = true,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  feedbackStateLabel,\n  darkMode,\n  hasHelperText,\n  helperText,\n  children,\n  ...props\n}): ReactElement => {\n  const inputRef = useRef<HTMLInputElement>(null);\n  useImperativeHandle(ref, () => inputRef.current as HTMLInputElement);\n\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n  const hasHelperTextValue = stringToBoolean(hasHelperText) && helperText;\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentChecked, setCurrentChecked] = useState(stringToBoolean(propsClone.checked ?? propsClone.defaultChecked));\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const inputWrapper = classNames(\n    'agora-checkbox',\n    'inline-flex items-start min-h-[44px]',\n    'relative',\n    {\n      'disabled': props.disabled,\n      'checked': currentChecked,\n      'dark': stringToBoolean(darkMode),\n\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n\n  const handleChange = (evt: React.ChangeEvent<HTMLInputElement>) => {\n    propsClone.onChange?.(evt);\n    setCurrentChecked(evt.currentTarget.checked);\n  };\n\n  const handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {\n    propsClone.onKeyDown?.(evt);\n    if (evt.key === 'Enter') {\n      inputRef.current?.click();\n    }\n  };\n\n  useEffect(() => {\n    const checked = propsClone.checked ?? propsClone.defaultChecked;\n    if (checked !== undefined) {\n      setCurrentChecked(checked);\n    }\n  }, [propsClone.checked, propsClone.defaultChecked]);\n\n  let ariaDescribedByText = undefined;\n\n  if (hasFeedbackText) {\n    ariaDescribedByText = `checkbox-${propsClone.id}-feedback`;\n  } else if (hasHelperTextValue) {\n    ariaDescribedByText = `checkbox-${propsClone.id}-helper-text`;\n  } else {\n    ariaDescribedByText = propsClone['aria-describedby'];\n  }\n\n  return (\n    <div>\n      <div className={inputWrapper}>\n        <label className=\"label-checkbox\" htmlFor={propsClone.id}>\n          <input\n            {...propsClone}\n            className=\"absolute w-full h-full top-0 left-0 appearance-none\"\n            type=\"checkbox\"\n            ref={inputRef}\n            onChange={handleChange}\n            onKeyDown={handleKeyDown}\n            aria-describedby={ariaDescribedByText}\n            aria-required={isRequired}\n            aria-invalid={stringToBoolean(hasError)}\n            aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          />\n          <span className=\"mark\">{currentChecked && <Icon name=\"agora-line-check\" aria-hidden />}</span>\n          {!hideLabel && <span className=\"label\">{children ?? label}</span>}\n        </label>\n      </div>\n      {(hasFeedbackText || hasHelperText) && (\n        <div className=\"agora-checkbox-button-texts\">\n          {/* Helper Text */}\n          {hasHelperText && (\n            <div className=\"agora-checkbox-button-feedback ml-[45px] px-8\">\n              <HelperText id={`checkbox-${propsClone.id}-helper-text`} helperText={helperText} darkMode={darkMode} />\n            </div>\n          )}\n          {/* Feedback */}\n          {hasFeedbackText && (\n            <div className=\"agora-checkbox-button-feedback px-8\">\n              <Feedback\n                id={`checkbox-${propsClone.id}-feedback`}\n                feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n                feedbackText={feedbackText}\n                feedbackStateLabel={feedbackStateLabel}\n                darkMode={stringToBoolean(darkMode)}\n              />\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport { Checkbox };\n","import React, { ComponentProps, FC, ReactNode } from 'react';\nimport './card-notification.css';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Checkbox } from '@/components/checkbox';\nimport { Avatar, AvatarProps } from '@/components/avatar';\n\nexport type CardNotificationOrientation = 'horizontal' | 'vertical';\nexport type CardNotificationVariant = 'white' | 'primary-100' | 'primary-700' | 'primary-900';\n\nexport interface CardNotificationProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   * Main content of the card.\n   */\n  children: ReactNode;\n  /**\n   * Controls the small notification circle on the top-right corner.\n   */\n  hasBadge?: BooleanProp;\n  /**\n   * Controls the avatar on the top-left area.\n   */\n  hasAvatar?: BooleanProp;\n  /**\n   * Controls the checkbox on the top-left area.\n   */\n  hasCheckbox?: BooleanProp;\n  /**\n   * Layout orientation.\n   */\n  orientation?: CardNotificationOrientation;\n  /**\n   * Visual variant of the notification card.\n   */\n  variant?: CardNotificationVariant;\n  /**\n   * Optional avatar configuration. When provided, Avatar replaces the icon.\n   */\n  avatarProps?: AvatarProps;\n}\n\nexport const CardNotification: FC<CardNotificationProps> = ({\n  children,\n  hasBadge = false,\n  hasAvatar = false,\n  avatarProps,\n  hasCheckbox = false,\n  orientation = 'horizontal',\n  variant = 'primary-100',\n  className,\n  ...rest\n}) => {\n  const variantValue = variant;\n  const isDarkVariant = variantValue === 'primary-700' || variantValue === 'primary-900';\n  const isReadVariant = variantValue === 'white' || variantValue === 'primary-900';\n\n  const allowBadgeForVariant = variantValue === 'primary-100' || variantValue === 'primary-700';\n  const showNotificationCircle = stringToBoolean(hasBadge) && allowBadgeForVariant;\n\n  const showAvatar = stringToBoolean(hasAvatar) && !!avatarProps;\n  const showCheckbox = stringToBoolean(hasCheckbox);\n\n  const hasHeaderMedia = showAvatar || showCheckbox;\n  const isHorizontal = orientation === 'horizontal';\n  const isVertical = orientation === 'vertical';\n  const isMobileInlineTexts = isHorizontal && showAvatar && showCheckbox;\n\n  const cardClassNames = classNames(\n    'card-notification',\n    {\n      'card-notification--horizontal': orientation === 'horizontal',\n      'card-notification--vertical': orientation === 'vertical',\n      'card-notification--dark': isDarkVariant,\n      'card-notification--read': isReadVariant,\n      'card-notification--unread': !isReadVariant\n    },\n    className\n  );\n\n  const notificationCircleClassNames = classNames('card-notification-notification-circle', {\n    'card-notification-notification-circle--visible': showNotificationCircle\n  });\n\n  const checkboxAriaLabel = typeof rest['aria-label'] === 'string' ? rest['aria-label'] : 'Notification selection';\n\n  return (\n    <div className={cardClassNames} {...rest}>\n      <div className=\"card-notification-inner\">\n        <div\n          className={classNames('card-notification-header', {\n            'card-notification-header--inline-mobile': isMobileInlineTexts\n          })}\n        >\n          {hasHeaderMedia && (\n            <div\n              className={classNames('card-notification-header-left', {\n                'card-notification-header-left--horizontal': isHorizontal,\n                'card-notification-header-left--vertical': isVertical\n              })}\n            >\n              {showAvatar && (\n                <div className=\"card-notification-icon\">\n                  <Avatar {...avatarProps} darkMode={isDarkVariant} className={classNames(avatarProps?.className)} />\n                </div>\n              )}\n\n              {showCheckbox && (\n                <Checkbox hideLabel darkMode={isDarkVariant} aria-label={checkboxAriaLabel} className=\"card-notification-checkbox\" />\n              )}\n            </div>\n          )}\n\n          <div\n            className={classNames('card-notification-texts', {\n              'card-notification-texts--inline-mobile': isMobileInlineTexts\n            })}\n          >\n            {children}\n          </div>\n\n          <div\n            className={classNames('card-notification-header-right', {\n              'card-notification-header-right--inline-mobile': isMobileInlineTexts\n            })}\n          >\n            <div className={notificationCircleClassNames} />\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { ChangeEvent, Children, cloneElement, FC, HtmlHTMLAttributes, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { CheckboxProps } from '@/components/checkbox/';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { HelperText } from '../shared/helper-text';\n\nexport interface CheckboxGroupProps extends Omit<HtmlHTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n  /**\n   * Group legend.\n   */\n  legend?: ReactNode;\n  /**\n   * Sets the checkbox in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below checkbox-group.\n   */\n  feedbackText?: ReactNode;\n  /**\n   *  List of checkbox components to use as children of the group.\n   */\n  children?: ReactElement<CheckboxProps> | Array<ReactElement<CheckboxProps>>;\n  /**\n   *  Event triggered whenever any of the checkboxes changes is own state.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Helper text displayed below checkbox.\n   */\n  helperText?: ReactNode;\n  /**\n   * The flag to set if the checkbox is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n}\n\nconst CheckboxGroup: FC<CheckboxGroupProps> = ({\n  className,\n  legend,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  onChange,\n  children,\n  hasHelperText,\n  feedbackStateLabel,\n  helperText,\n  darkMode,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const { hidden, ...fieldsetProps } = props;\n  const innerOnChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    onChange?.(evt);\n  };\n\n  const containerClasses = classNames('agora-checkbox-group', className);\n\n  const mappedCheckbox = Children.toArray(\n    Children.map(children, (child) => {\n      if (!isValidElement<CheckboxProps>(child)) {\n        return null;\n      }\n\n      return (\n        <li>\n          {cloneElement<CheckboxProps>(child, {\n            darkMode,\n            'onChange': innerOnChange,\n            'hasError': stringToBoolean(hasError),\n            'hasFeedback': stringToBoolean(hasFeedback),\n            'aria-describedby': hasFeedbackText ? `checkbox-group-${generatedId}-feedback` : undefined\n          } as CheckboxProps)}\n        </li>\n      );\n    })\n  );\n\n  const colorLegend = darkMode ? 'text-white' : 'text-[var(--color-primary-900)]';\n\n  return (\n    <div className={containerClasses} hidden={hidden}>\n      <fieldset {...fieldsetProps}>\n        {legend && <legend className={`${colorLegend} text-m-medium mb-8`}>{legend}</legend>}\n        {hasHelperText && (\n          <HelperText\n            darkMode={darkMode}\n            helperText={helperText}\n            className=\"!mt-[0px] mb-8\"\n            id={`checkbox-group-${generatedId}-helper-text`}\n          />\n        )}\n        {mappedCheckbox.length > 0 && <ul>{mappedCheckbox}</ul>}\n      </fieldset>\n\n      {hasFeedbackText && (\n        <Feedback\n          darkMode={darkMode}\n          id={`checkbox-group-${generatedId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { CheckboxGroup };\n","import React, { ComponentProps, FC, Ref, useCallback, useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport './dialog.css';\n\nexport interface DialogElement extends HTMLDivElement {\n  /**\n   * Initial visibility state of the dialog.\n   * */\n  visible?: boolean;\n  /**\n   * Show dialog.\n   * */\n  show: () => void;\n  /**\n   * Hide dialog.\n   * */\n  hide: () => void;\n}\n\nexport interface DialogProps extends ComponentProps<'div'> {\n  /**\n   * Initial visibility state of the dialog.\n   * */\n  visible?: BooleanProp;\n  /**\n   * Renders the dialog content as full screen without a backdrop.\n   */\n  fullScreen?: BooleanProp;\n  /**\n   * In a non-fullscreen dialog, allow users to dismiss the dialog by clicking in the backdrop.\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Allow users to dismiss the dialog by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Callback to be called when click outside.\n   */\n  onClickedOutside?: () => void;\n  /**\n   * Callback to be called when escape is pressed.\n   */\n  onEscape?: () => void;\n  /**\n   * Callback to run after dialog is closed.\n   */\n  onHide?: () => void;\n  /**\n   * Callback to run after dialog is opened.\n   */\n  onShow?: () => void;\n}\n\nconst Dialog: FC<DialogProps> = ({\n  ref = null,\n  visible = false,\n  fullScreen = false,\n  dismissOnBackdropClick = true,\n  dismissOnEscape = true,\n  children,\n  className,\n  onClickedOutside,\n  onEscape,\n  onShow,\n  onHide,\n  ...props\n}) => {\n  const [isVisible, setIsVisible] = useState(stringToBoolean(visible));\n\n  const show = useCallback((): void => {\n    if (isVisible) {\n      return;\n    }\n\n    setIsVisible(true);\n\n    asyncTrigger(() => {\n      onShow?.();\n    });\n  }, [onShow, isVisible]);\n\n  const hide = useCallback((): void => {\n    if (!isVisible) {\n      return;\n    }\n\n    setIsVisible(false);\n\n    asyncTrigger(() => {\n      onHide?.();\n    });\n  }, [onHide, isVisible]);\n\n  const innerDialogRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<DialogElement>(ref as Ref<DialogElement>, innerDialogRef, {\n    visible: isVisible,\n    show,\n    hide\n  } as DialogElement);\n\n  const handleKeyDown = useCallback(\n    (evt: KeyboardEvent) => {\n      if (!isVisible || !innerDialogRef.current) {\n        return;\n      }\n\n      if (evt.key === 'Escape' && stringToBoolean(dismissOnEscape) && isVisible) {\n        evt.preventDefault();\n        hide();\n        onEscape?.();\n        return;\n      }\n\n      if (evt.key === 'Tab') {\n        const focusableElements: HTMLElement[] = Array.from(\n          innerDialogRef.current.querySelectorAll(\n            'a:not([tabindex=\"-1\"]):not([disabled]), button:not([tabindex=\"-1\"]):not([disabled]), input:not([tabindex=\"-1\"]):not([disabled]), textarea:not([tabindex=\"-1\"]):not([disabled]), select:not([tabindex=\"-1\"]):not([disabled]), details:not([tabindex=\"-1\"]):not([disabled]), [tabindex]:not([tabindex=\"-1\"]):not([disabled])'\n          )\n        );\n\n        focusableElements.sort((a, b) => b.tabIndex - a.tabIndex);\n\n        const firstElement = focusableElements[0];\n        const lastElement = focusableElements[focusableElements.length - 1];\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          evt.preventDefault();\n          lastElement.focus();\n        }\n\n        if (!evt.shiftKey && document.activeElement === lastElement) {\n          evt.preventDefault();\n          firstElement.focus();\n        }\n      }\n    },\n    [dismissOnEscape, hide, isVisible, onEscape]\n  );\n\n  const handleClickOutside = useCallback(\n    (event: MouseEvent) => {\n      if ((event.target as HTMLElement).classList.contains('agora-dialog-backdrop')) {\n        hide();\n        onClickedOutside?.();\n      }\n    },\n    [hide, onClickedOutside]\n  );\n\n  useEffect(() => {\n    document?.addEventListener('keydown', handleKeyDown);\n\n    if (!stringToBoolean(fullScreen) && stringToBoolean(dismissOnBackdropClick)) {\n      document?.addEventListener('click', handleClickOutside);\n    }\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n\n      if (!stringToBoolean(fullScreen) && stringToBoolean(dismissOnBackdropClick)) {\n        document?.removeEventListener('click', handleClickOutside);\n      }\n    };\n  }, [dismissOnEscape, fullScreen, dismissOnBackdropClick, handleClickOutside, handleKeyDown]);\n\n  useEffect(() => {\n    if (isVisible && innerDialogRef.current) {\n      document.body.classList.add('overflow-hidden');\n\n      const focusableElements: HTMLElement[] = Array.from(\n        innerDialogRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        )\n      );\n\n      focusableElements.sort((a, b) => b.tabIndex - a.tabIndex);\n\n      const autoFocusIndex = focusableElements.findIndex((e) => stringToBoolean(e.getAttribute('data-autofocus')?.toString()));\n\n      const firstElement = autoFocusIndex >= 0 ? focusableElements[autoFocusIndex] : focusableElements[0];\n\n      if (firstElement) {\n        firstElement.focus();\n      }\n    } else {\n      document.body.classList.remove('overflow-hidden');\n    }\n  }, [isVisible]);\n\n  const containerClassNames = classNames(\n    'agora-dialog',\n    {\n      closed: !isVisible\n    },\n    className\n  );\n\n  return (\n    <div ref={innerDialogRef} className={containerClassNames} aria-modal=\"true\" role=\"dialog\" {...props}>\n      {!fullScreen && <div className=\"agora-dialog-backdrop\" />}\n      {children}\n    </div>\n  );\n};\n\nexport { Dialog };\n","import React, { ComponentProps, FC, ReactNode, Ref, useCallback, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { Dialog, DialogElement } from '@/components/dialog';\n\nimport './drawer.css';\n\nexport type DrawerPosition = 'left' | 'right' | 'top' | 'bottom';\n\nexport interface DrawerElement extends HTMLDivElement {\n  /**\n   * Open drawer.\n   */\n  isOpen: boolean;\n  /**\n   * Open drawer.\n   */\n  open: () => void;\n  /**\n   * Close drawer.\n   */\n  close: () => void;\n}\n\nexport interface DrawerProps extends ComponentProps<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Allow users to dismiss the drawer by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Dismiss on back drop click.\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Position of the drawer.\n   */\n  position?: DrawerPosition;\n  /**\n   * Callback to be called when click outside.\n   */\n  onClickedOutside?: () => void;\n  /**\n   * Callback to be called when escape is pressed.\n   */\n  onEscape?: () => void;\n  /**\n   * Callback to be called when the drawer is opened.\n   */\n  onShow?: () => void;\n  /**\n   * Callback to be called when the drawer is closed.\n   */\n  onHide?: () => void;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\n/**\n * Return icon default animation class drawer icon name and default position.\n */\nconst Drawer: FC<DrawerProps> = ({\n  ref = null,\n  children,\n  dismissOnEscape = true,\n  dismissOnBackdropClick = true,\n  darkMode = false,\n  position = 'left',\n  onClickedOutside,\n  onEscape,\n  onShow,\n  onHide,\n  className,\n  'aria-label': ariaLabel,\n  'aria-labelledby': ariaLabelledby,\n  ...props\n}) => {\n  const [open, setOpen] = useState(false);\n\n  const dialogRef = useRef<DialogElement>(null);\n\n  const drawerClassNames = classNames(\n    `agora-drawer`,\n\n    { 'agora-drawer-horizontal': position === 'left' || position === 'right' },\n    { 'agora-drawer-vertical': position === 'top' || position === 'bottom' },\n\n    { ['agora-drawer-open-' + position]: open },\n    { ['agora-drawer-close-' + position]: !open },\n    { 'dark-mode': stringToBoolean(darkMode) }\n  );\n\n  const handleClose = useCallback(() => {\n    if (!open) {\n      return;\n    }\n\n    const fn = () => {\n      setOpen(false);\n      dialogRef.current?.hide();\n      dialogRef.current?.querySelector('.agora-drawer')?.classList?.remove(`agora-drawer-close-${position}`);\n      dialogRef.current?.querySelector('.agora-drawer')?.removeEventListener('animationend', fn);\n\n      onHide?.();\n    };\n\n    dialogRef.current?.querySelector('.agora-drawer')?.addEventListener('animationend', fn);\n    dialogRef.current?.querySelector('.agora-drawer')?.classList.add(`agora-drawer-close-${position}`);\n  }, [onHide, open, position]);\n\n  const handleOpen = () => {\n    if (open) {\n      return;\n    }\n\n    const fn = () => {\n      dialogRef.current?.querySelector('.agora-drawer')?.removeEventListener('animationend', fn);\n      onShow?.();\n    };\n\n    dialogRef.current?.querySelector('.agora-drawer')?.addEventListener('animationend', fn);\n\n    setOpen(true);\n    dialogRef.current?.show();\n  };\n\n  useExpandedRef<DrawerElement>(ref as Ref<DrawerElement>, dialogRef, {\n    isOpen: open,\n    open: handleOpen,\n    close: handleClose\n  } as DrawerElement);\n\n  const handleKeyDown = useCallback(\n    (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        handleClose();\n        onEscape?.();\n        return;\n      }\n    },\n    [handleClose, onEscape]\n  );\n\n  const handleClickOutside = useCallback(\n    (event: MouseEvent) => {\n      if ((event.target as HTMLElement).classList.contains('agora-dialog-backdrop')) {\n        handleClose();\n        onClickedOutside?.();\n      }\n    },\n    [handleClose, onClickedOutside]\n  );\n\n  useEffect(() => {\n    if (stringToBoolean(dismissOnEscape)) {\n      document?.addEventListener('keydown', handleKeyDown);\n    }\n    if (stringToBoolean(dismissOnBackdropClick)) {\n      document?.addEventListener('click', handleClickOutside);\n    }\n\n    return () => {\n      if (stringToBoolean(dismissOnEscape)) {\n        document?.removeEventListener('keydown', handleKeyDown);\n      }\n      if (stringToBoolean(dismissOnBackdropClick)) {\n        document?.removeEventListener('click', handleClickOutside);\n      }\n    };\n  }, [dismissOnEscape, dismissOnBackdropClick, handleClickOutside, handleKeyDown]);\n\n  return (\n    <Dialog\n      aria-label={ariaLabel}\n      aria-labelledby={ariaLabelledby}\n      ref={dialogRef}\n      className={className}\n      dismissOnBackdropClick={false}\n      dismissOnEscape={false}\n    >\n      <div {...props} className={drawerClassNames}>\n        {children}\n      </div>\n    </Dialog>\n  );\n};\n\nexport { Drawer };\n","import React, { ComponentProps, FC, Ref, useEffect, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { Button, ButtonProps, ButtonVariant } from '@/components/button';\n\nimport './rating-buttons.css';\n\nexport type RatingStatus = 'like' | 'dislike' | 'neutral';\n\nexport interface RatingButtonsElement extends HTMLDivElement {\n  status: RatingStatus;\n}\n\nexport interface RatingButtonsProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Like button definition.\n   */\n  likeButton?: ButtonProps;\n  /**\n   * Dislike button definition.\n   */\n  dislikeButton?: ButtonProps;\n  /**\n   * Defines if the buttons only contains the icon.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Toggles dark mode in buttons.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  variant?: ButtonVariant;\n  /**\n   *  Event triggered whenever any of the button changes is own state.\n   */\n  onChange?: (status: RatingStatus) => void;\n}\n\nconst RatingButtons: FC<RatingButtonsProps> = ({\n  ref = null,\n  likeButton,\n  dislikeButton,\n  iconOnly = false,\n  darkMode = false,\n  variant,\n  className = '',\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [pressedButton, setPressedButton] = useState<RatingStatus>('neutral');\n\n  const handleToggleButton = (buttonType: RatingStatus) => {\n    setPressedButton((last) => (last === buttonType ? 'neutral' : buttonType));\n  };\n\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n\n  useEffect(() => {\n    asyncTrigger(() => onChangeRef.current?.(pressedButton));\n  }, [pressedButton]);\n\n  const createButton = (buttonProps: ButtonProps, buttonType: RatingStatus) => {\n    const selected = pressedButton === buttonType;\n    return (\n      <Button\n        {...buttonProps}\n        id={`${propsClone.id}-${buttonType}`}\n        onClick={() => handleToggleButton(buttonType)}\n        appearance={selected ? 'solid' : 'outline'}\n        aria-pressed={pressedButton === buttonType ? 'true' : 'false'}\n      />\n    );\n  };\n\n  const ratingButtonClasses = classNames('rating-buttons', stringToBoolean(darkMode) ? 'dark' : '', className);\n  const ratingButtonWrapperClasses = classNames('rating-buttons-wrapper', iconOnly ? 'icon-only' : '', className);\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<RatingButtonsElement>(ref as Ref<RatingButtonsElement>, innerRef, {\n    status: pressedButton\n  } as RatingButtonsElement);\n\n  const parsedLikeButton = {\n    ...likeButton,\n    'className': 'agora-btn-like',\n    'hasIcon': true,\n    'trailingIcon': 'agora-line-thumbs-up',\n    'trailingIconHover': 'agora-solid-thumbs-up',\n    'variant': variant ?? likeButton?.variant,\n    'darkMode': darkMode,\n    'iconOnly': iconOnly,\n    'aria-label': iconOnly ? likeButton?.children?.toString() : null\n  } as ButtonProps;\n\n  const parsedDislikeButton = {\n    ...dislikeButton,\n    'className': 'agora-btn-dislike',\n    'hasIcon': true,\n    'trailingIcon': 'agora-line-thumbs-down',\n    'trailingIconHover': 'agora-solid-thumbs-down',\n    'variant': variant ?? dislikeButton?.variant,\n    'darkMode': darkMode,\n    'iconOnly': iconOnly,\n    'aria-label': iconOnly ? dislikeButton?.children?.toString() : null\n  } as ButtonProps;\n\n  return (\n    <div {...props} className={ratingButtonClasses} ref={innerRef}>\n      <ul className={ratingButtonWrapperClasses}>\n        <li> {!!likeButton && createButton(parsedLikeButton, 'like')}</li>\n        <li>{!!dislikeButton && createButton(parsedDislikeButton, 'dislike')}</li>\n      </ul>\n    </div>\n  );\n};\n\nexport { RatingButtons };\n","import React, {\n  Children,\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  isValidElement,\n  KeyboardEvent,\n  MouseEvent,\n  ReactElement,\n  ReactNode,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport classNames from 'classnames';\n\nimport { Icon, IconProps } from '@/components/icon';\nimport { BooleanProp, FeedbackState } from '@/models';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport './rating-icons.css';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nexport interface RatingIconsElement extends HTMLDivElement {\n  rating: number;\n}\n\nexport interface RatingIconsProps extends Omit<ComponentProps<'div'>, 'onChange'> {\n  /**\n   * Label of the rating icons.\n   */\n  label?: ReactNode;\n  /**\n   * Hide rating icons label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Enables dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Set the rating icons in readonly mode.\n   */\n  readOnly?: BooleanProp;\n  /**\n   *  Change Event that is triggered whenever rating changes.\n   */\n  onChange?: (value: number) => void;\n  /**\n   *  Default rating value.\n   */\n  value?: number;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasError?: BooleanProp;\n  /**\n   * The list of icons to use as rating icon values;\n   */\n  children?: ReactElement<IconProps> | ReactElement<IconProps>[];\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n}\n\nconst RatingIcons: FC<RatingIconsProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  darkMode = false,\n  readOnly = false,\n  className = '',\n  value,\n  onChange,\n  hasError = false,\n  hasFeedback = false,\n  feedbackState = 'info',\n  feedbackText = '',\n  feedbackStateLabel,\n  children,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const iconElements: ReactElement<IconProps>[] = Children.toArray(children).filter((child) => {\n    return isValidElement<IconProps>(child) && (child as ReactElement).type === Icon;\n  }) as ReactElement<IconProps>[];\n\n  const startWrapperRef = useRef<HTMLDivElement>(null);\n\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n\n  const [selectedIndex, setSelectedIndex] = useState<number>(value ?? 0);\n\n  const [hoverIndex, setHoverIndex] = useState<number>(0);\n\n  const handleMouseDown = (evt: MouseEvent<HTMLDivElement>) => {\n    if (stringToBoolean(readOnly)) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleMouseEnter = (index: number) => {\n    return () => {\n      if (!stringToBoolean(readOnly)) {\n        setHoverIndex(index);\n      }\n    };\n  };\n\n  const handleMouseLeave = () => {\n    if (!stringToBoolean(readOnly)) {\n      setHoverIndex(0);\n    }\n  };\n\n  const handleClick = (index: number) => {\n    return () => {\n      if (!stringToBoolean(readOnly)) {\n        setSelectedIndex(index);\n      }\n    };\n  };\n\n  const onkeyDownHandler = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (stringToBoolean(readOnly)) {\n      return;\n    }\n\n    const { code } = evt;\n\n    setSelectedIndex((last) => {\n      if (code === 'ArrowLeft') {\n        return last > 1 ? last - 1 : iconElements.length;\n      }\n\n      if (code === 'ArrowRight') {\n        return last == iconElements.length ? 1 : last + 1;\n      }\n\n      return last;\n    });\n  };\n\n  const handleFocusIcon = (evt: FocusEvent<HTMLDivElement>) => {\n    const dataValue = parseInt(evt.target.getAttribute('data-icon-value') ?? '1', 10);\n    setSelectedIndex(dataValue);\n  };\n\n  useEffect(() => {\n    if (document.activeElement?.classList.contains('rating-icon') && startWrapperRef.current) {\n      const focusedIcon = startWrapperRef.current.querySelector(`.rating-icon[data-icon-value = '${selectedIndex}']`);\n      (focusedIcon as HTMLElement)?.focus();\n    }\n\n    asyncTrigger(() => onChangeRef.current?.(selectedIndex));\n  }, [selectedIndex]);\n\n  useEffect(() => {\n    if (value) {\n      setSelectedIndex(value);\n    }\n  }, [value]);\n\n  const ratingIconClasses = classNames(\n    'agora-rating-icons',\n    { dark: stringToBoolean(darkMode) },\n    { 'read-only': stringToBoolean(readOnly) },\n    {\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  useExpandedRef<RatingIconsElement>(ref as React.Ref<RatingIconsElement>, innerRef, {\n    rating: selectedIndex\n  } as RatingIconsElement);\n\n  return (\n    <div\n      ref={innerRef}\n      className={ratingIconClasses}\n      {...props}\n      role=\"radiogroup\"\n      {...(stringToBoolean(hideLabel) ? { 'aria-label': label?.toString() } : { 'aria-labelledby': `label-${generatedId}` })}\n    >\n      <div className=\"flex flex-col gap-8\">\n        {!stringToBoolean(hideLabel) && (\n          <div id={`label-${generatedId}`} className=\"rating-label\">\n            {label}\n          </div>\n        )}\n\n        <div ref={startWrapperRef} className=\"rating-wrapper\">\n          {iconElements.map((iconReactElement, index) => {\n            const iconValue = index + 1;\n            const isHovered = iconValue <= hoverIndex;\n            const isSelected = selectedIndex !== null && iconValue <= selectedIndex;\n\n            const clonedIcon = cloneElement<IconProps>(iconReactElement, {\n              name:\n                isHovered || isSelected\n                  ? iconReactElement.props.name?.replace('line', 'solid')\n                  : iconReactElement.props.name?.replace('solid', 'line')\n            });\n\n            const iconKey = `${generatedId}-icon-${index}`;\n            let tabIndexValue = -1;\n            if (stringToBoolean(readOnly)) {\n              tabIndexValue = -1;\n            } else if (selectedIndex <= 0) {\n              tabIndexValue = index === 0 ? 0 : -1;\n            } else {\n              tabIndexValue = selectedIndex === iconValue ? 0 : -1;\n            }\n\n            return (\n              <div\n                key={iconKey}\n                id={`${generatedId}-${iconValue}`}\n                className=\"rating-icon\"\n                role=\"radio\"\n                aria-checked={selectedIndex === iconValue}\n                tabIndex={tabIndexValue}\n                onMouseDownCapture={handleMouseDown}\n                onMouseEnter={handleMouseEnter(iconValue)}\n                onMouseLeave={handleMouseLeave}\n                onClick={handleClick(iconValue)}\n                onKeyDown={onkeyDownHandler}\n                onFocus={handleFocusIcon}\n                data-icon-value={iconValue}\n                aria-describedby={\n                  (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText\n                    ? `rating-icons-${propsClone.id}-feedback`\n                    : undefined\n                }\n              >\n                {clonedIcon}\n              </div>\n            );\n          })}\n        </div>\n      </div>\n\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`rating-icons-${propsClone.id}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Hidden svg filter */}\n      <svg style={{ display: 'none' }}>\n        <defs>\n          <filter id=\"inner-shadow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\">\n            <feOffset dx=\"0\" dy=\"3\" />\n            <feGaussianBlur stdDeviation=\"3\" result=\"offset-blur\" />\n            <feComposite operator=\"out\" in=\"SourceGraphic\" in2=\"offset-blur\" result=\"inverse\" />\n            <feFlood floodColor=\"black\" floodOpacity=\"0.45\" result=\"color\" />\n            <feComposite operator=\"in\" in=\"color\" in2=\"inverse\" result=\"shadow\" />\n            <feComposite operator=\"over\" in=\"shadow\" in2=\"SourceGraphic\" />\n          </filter>\n        </defs>\n      </svg>\n    </div>\n  );\n};\n\nexport { RatingIcons };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { RatingButtons, RatingButtonsProps, RatingStatus } from '@/components/ratings';\n\nimport { BooleanProp, HeadingLevel } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './feedback.css';\n\nexport interface FeedbackProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the feedback.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the feedback.\n   */\n  subtitle?: ReactNode;\n  /**\n   * The rating button props.\n   */\n  ratingButtons?: RatingButtonsProps;\n  /**\n   * The message of the feedback.\n   */\n  message?: ReactNode;\n  /**\n   * The dark mode of the feedback.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Heading level to apply in the card.\n   */\n  headingLevel?: HeadingLevel;\n}\n\nexport const Feedback: FC<FeedbackProps> = ({\n  title,\n  subtitle,\n  ratingButtons,\n  message,\n  darkMode = false,\n  className,\n  headingLevel: Heading = 'h3',\n  ...props\n}) => {\n  const [showMessage, setShowMessage] = useState(false);\n\n  const handleChange = (status: RatingStatus) => {\n    setShowMessage(status !== 'neutral');\n    ratingButtons?.onChange?.(status);\n  };\n\n  const feedbackClasses = classNames('agora-feedback', stringToBoolean(darkMode) ? 'darkMode' : '', className);\n\n  const parsedRatingButtons: RatingButtonsProps = {\n    ...ratingButtons,\n    darkMode: stringToBoolean(darkMode)\n  };\n\n  return (\n    <div className={feedbackClasses} {...props}>\n      {(title || subtitle) && (\n        <div className=\"xs:col-span-4 md:col-span-5 xl:col-span-6\">\n          {title && <Heading className=\"title\">{title}</Heading>}\n          {subtitle && <p className=\"subtitle\">{subtitle}</p>}\n        </div>\n      )}\n      {ratingButtons && (\n        <div className=\"xs:col-span-4 md:col-span-3 xl:col-span-3\">\n          <RatingButtons {...parsedRatingButtons} onChange={handleChange} />\n        </div>\n      )}\n      {showMessage && message && (\n        <div className=\"xs:col-span-4 md:col-span-5 xl:col-span-3\">\n          <p className=\"message\">{message}</p>\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FooterBrandBadge: FC<{\n  brandImage: LinkableImagesProps;\n  badgeImage?: LinkableImagesProps;\n}> = ({ brandImage, badgeImage }) => {\n  return (\n    <div className=\"grid items-center xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 xs:pt-32 md:pt-64 xs:pb-32 xl:pb-64\">\n      <div className=\"xs:col-span-2 md:col-span-4 xl:col-span-6\">\n        {brandImage.link && brandImage.image && (\n          <a\n            {...brandImage.link}\n            className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)]\"\n          >\n            <img alt={brandImage.image.alt} {...brandImage.image} />\n          </a>\n        )}\n        {!brandImage.link && brandImage.image && <img {...brandImage.image} alt={brandImage.image.alt} />}\n      </div>\n      <div className=\"xs:col-span-2 md:col-span-4 xl:col-span-6 justify-self-end\">\n        {badgeImage?.link && badgeImage?.image && (\n          <a\n            {...badgeImage.link}\n            className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)]\"\n          >\n            <img alt={badgeImage.image.alt} {...badgeImage.image} />\n          </a>\n        )}\n        {badgeImage && !badgeImage.link && badgeImage.image && <img {...badgeImage.image} alt={badgeImage.image.alt} />}\n      </div>\n    </div>\n  );\n};\n\nexport { FooterBrandBadge };\n","import React, { FC, ReactNode } from 'react';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FooterCaptionPartners: FC<{\n  caption: string | ReactNode;\n  partnersLogos: LinkableImagesProps[];\n  partnersLogosAriaLabel?: string;\n  darkMode?: boolean;\n}> = ({ caption, partnersLogos, partnersLogosAriaLabel, darkMode }) => {\n  const textColor = darkMode ? 'text-[var(--color-neutral-500)]' : 'text-[var(--color-neutral-700)]';\n  const anchorTextColor = darkMode\n    ? 'text-[var(--color-neutral-700)] hover:text-[var(--color-neutral-600)]'\n    : 'text-[var(--color-neutral-500)] hover:text-[var(--color-neutral-700)]';\n\n  return (\n    <div className=\"flex items-center py-32 xs:max-md:flex-col\">\n      <div className=\"flex items-center xs:max-md:mb-32 md:w-[50%]\">\n        <span className={`text-m-regular ${textColor}`}>{caption}</span>\n      </div>\n\n      <nav className=\"flex items-center justify-end md:w-[50%]\" aria-label={partnersLogosAriaLabel}>\n        <ul className=\"flex flex-wrap gap-32 md:justify-end\">\n          {partnersLogos\n            .filter((_i, index) => index < 10)\n            .map((partner, index) => {\n              const key = `logo-${index}`;\n\n              return (\n                <li key={key}>\n                  {partner?.link && partner?.image && (\n                    <a\n                      {...partner.link}\n                      className={`${anchorTextColor} min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 opacity-50 hover:opacity-100 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)] focus:opacity-100`}\n                    >\n                      <img alt={partner.image.alt} {...partner.image} />\n                    </a>\n                  )}\n                  {!partner?.link && partner?.image && <img {...partner?.image} alt={partner?.image.alt} />}\n                </li>\n              );\n            })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n\nexport { FooterCaptionPartners };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\n\nimport { Anchor } from '@/components/anchor';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FooterSocialUsefulCopyright: FC<{\n  socialsLink?: LinkableIconsProps[];\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n  copyright: string | ReactNode;\n  socialsLinkAriaLabel?: string;\n  usefulLinksAriaLabel?: string;\n  darkMode?: boolean;\n}> = ({ socialsLink, usefulLinks, copyright, socialsLinkAriaLabel, usefulLinksAriaLabel, darkMode }) => {\n  const borderColorClass = darkMode ? 'border-white/5' : 'border-black/5';\n  const copyrightTextColorClass = darkMode ? 'text-[var(--color-neutral-500)]' : 'text-[var(--color-neutral-700)]';\n\n  return (\n    <div className=\"flex flex-col mx-[-64px] xl:flex-row xl:h-[260px]\">\n      {socialsLink && (\n        <nav\n          className={`flex items-center justify-center w-full h-[126px] border-b-2 ${borderColorClass} xl:justify-center xl:border-r-2 xl:h-full xl:w-[40%]`}\n          aria-label={socialsLinkAriaLabel}\n        >\n          <ul className=\"flex items-center justify-center gap-8 xl:gap-32\">\n            {socialsLink\n              .filter((_i, index) => index < 10)\n              .map((social) => {\n                const key = `social-${social.link?.title || social.icon}`;\n\n                return (\n                  <li key={key}>\n                    <Anchor\n                      hasIcon\n                      iconOnly\n                      appearance=\"link\"\n                      variant=\"neutral\"\n                      darkMode={darkMode}\n                      href={social.link?.href}\n                      title={social.link?.title}\n                      leadingIcon={social?.icon}\n                      target={social.link?.target}\n                      leadingIconHover={social?.iconHover}\n                    />\n                  </li>\n                );\n              })}\n          </ul>\n        </nav>\n      )}\n\n      <div className=\"flex flex-col pt-32 xs:mx-64 xl:w-[60%] xl:items-end xl:justify-center\">\n        {usefulLinks && (\n          <nav className=\"mb-32\" aria-label={usefulLinksAriaLabel}>\n            <ul className=\"flex flex-wrap xl:flex-nowrap md:justify-center xl:justify-end xs:flex-col md:flex-row xl:flex-row xs:gap-x-32 md:gap-[30px]\">\n              {usefulLinks\n                .filter((_i, index) => index < 8)\n                .map((link, index) => {\n                  const key = `useful-${index}`;\n                  return (\n                    <li key={key} className=\"py-8 inline-block\">\n                      <Anchor {...link} darkMode={darkMode} appearance=\"link\" variant=\"neutral\" />\n                    </li>\n                  );\n                })}\n            </ul>\n          </nav>\n        )}\n\n        <div className=\"mb-32 md:mb-64\">\n          <span className={`text-s-regular ${copyrightTextColorClass} flex md:justify-center xl:justify-end`}>{copyright}</span>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { FooterSocialUsefulCopyright };\n","import React, { FC } from 'react';\nimport { FooterBrandBadge } from './footer-brand-badge';\nimport { FooterCaptionPartners } from './footer-caption-partners';\nimport { FooterSocialUsefulCopyright } from './footer-social-useful-copyright';\nimport { FederatedFooterProps } from '../federated-footer';\nimport { PublicFooterProps } from '../public-footer/public-footer';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst MainFooter: FC<FederatedFooterProps | PublicFooterProps> = ({\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  darkMode\n}) => {\n  const bgColorClass = darkMode ? 'bg-[var(--color-primary-900)]' : 'bg-[var(--color-neutral-100)]';\n  const borderColorClass = darkMode ? 'border-white/5' : 'border-black/5';\n\n  return (\n    <div className={bgColorClass}>\n      <div className=\"container mx-auto\">\n        <FooterBrandBadge brandImage={brandImage} badgeImage={badgeImage} />\n\n        <hr aria-hidden className={`border-1 ${borderColorClass} w-full absolute left-0`} />\n\n        <FooterCaptionPartners\n          darkMode={darkMode}\n          caption={caption}\n          partnersLogos={partnersLogos}\n          partnersLogosAriaLabel={partnersLogosAriaLabel}\n        />\n\n        <hr aria-hidden className={`border-1 ${borderColorClass} w-full absolute left-0`} />\n\n        <FooterSocialUsefulCopyright\n          darkMode={darkMode}\n          socialsLink={socialsLink}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinks={usefulLinks}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n          copyright={copyright}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { MainFooter };\n","import React, { FC } from 'react';\nimport { Anchor } from '@/components/anchor';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\nimport { CardFooterProps } from '@/components/footer';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FederatedFooterCard: FC<CardFooterProps> = ({ title, description, links, darkMode }) => {\n  const bgColorClass = darkMode ? 'footer-gradient-dark' : 'footer-gradient-light';\n\n  return (\n    <div className={`footer-gradient ${bgColorClass} xl:overflow-hidden`}>\n      <div className=\"container mx-auto\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 xl:-mr-112\">\n          <div className=\"col-span-5 w-[calc(100%+32px)] h-128 self-end xs:hidden md:hidden xl:block\" />\n          <div className=\"grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-7 xs:col-span-4 md:col-span-8 xl:col-span-7 xl:col-start-6 xs:pb-32 md:pb-64 xl:pb-64 bg-[var(--color-primary-100)] xl:pr-112\">\n            <div className=\"xs:col-span-4 md:col-span-6 xl:col-start-2 xl:col-span-7\">\n              <BookmarkIcon aria-hidden className=\"mb-32\" />\n              {title && <h2 className=\"xs:text-m-bold md:text-l-bold text-[var(--color-primary-900)]\">{title}</h2>}\n              {description && <p className=\"text-m-regular text-[var(--color-primary-900)] mt-16\">{description}</p>}\n            </div>\n            {links && (\n              <ul className=\"grid xs:grid-cols-1 md:grid-cols-3-auto xs:gap-0 md:gap-[28px] xs:col-span-4 md:col-span-8 xl:col-start-2 xl:col-span-7 mt-32\">\n                {links\n                  .filter((_i, index) => index < 3)\n                  .map((link, index) => {\n                    const key = `link-${index}`;\n                    return (\n                      <li key={key}>\n                        <Anchor\n                          {...link}\n                          className=\"xs:flex xs:justify-between\"\n                          appearance=\"link\"\n                          variant=\"primary\"\n                          hasIcon\n                          trailingIcon=\"agora-line-arrow-right-circle\"\n                          trailingIconHover=\"agora-solid-arrow-right-circle\"\n                        />\n                      </li>\n                    );\n                  })}\n              </ul>\n            )}\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { FederatedFooterCard };\n","import { CardFooterProps, LinkableIconsProps, LinkableImagesProps } from '@/components/footer';\nimport React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\n\nimport { MainFooter } from '../shared-components/footer-main';\nimport { FederatedFooterCard } from './federated-footer-card';\nimport './federated-footer.css';\n\n/**\n * @deprecated Use Footer v2 Instead.\n */\nexport interface FederatedFooterProps {\n  /**\n   * Informative card. Links limited to first 3, remaining array is discarded.\n   */\n  card?: CardFooterProps;\n\n  /**\n   * Image on left side with/without link.\n   */\n  brandImage: LinkableImagesProps;\n\n  /**\n   * Image on right side with/without link.\n   */\n  badgeImage?: LinkableImagesProps;\n\n  /**\n   * Small descriptive text\n   */\n  caption: string | ReactNode;\n\n  /**\n   * List of images with or without link. Links limited to first 10, remaining array is discarded.\n   */\n  partnersLogos: LinkableImagesProps[];\n\n  /**\n   * Accessible text for the partners logos.\n   */\n  partnersLogosAriaLabel?: string;\n\n  /**\n   * List of icons with/without link. Links limited to first 10, remaining array is discarded.\n   */\n  socialsLink?: LinkableIconsProps[];\n\n  /**\n   * Accessible text for the social links.\n   */\n  socialsLinkAriaLabel?: string;\n\n  /**\n   * List of links. Links limited to first 8, remaining array is discarded.\n   */\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n\n  /**\n   * Accessible text for the useful links.\n   */\n  usefulLinksAriaLabel?: string;\n\n  /*\n   * Copyright text\n   */\n  copyright: string;\n\n  /**\n   * The flag to set if the footer is in dark mode or light mode.\n   */\n  darkMode?: boolean;\n}\n\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst FederatedFooter: FC<FederatedFooterProps> = ({\n  card,\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  darkMode\n}) => {\n  // foot was create without darkMode prop, so default is true to keep backward compatibility\n  const isDarkMode = darkMode === undefined ? true : darkMode;\n\n  return (\n    <div className=\"agora-footer\">\n      {card && <FederatedFooterCard darkMode={isDarkMode} {...card} />}\n      <MainFooter\n        darkMode={isDarkMode}\n        brandImage={brandImage}\n        badgeImage={badgeImage}\n        caption={caption}\n        partnersLogos={partnersLogos}\n        partnersLogosAriaLabel={partnersLogosAriaLabel}\n        socialsLink={socialsLink}\n        socialsLinkAriaLabel={socialsLinkAriaLabel}\n        usefulLinks={usefulLinks}\n        usefulLinksAriaLabel={usefulLinksAriaLabel}\n        copyright={copyright}\n      />\n    </div>\n  );\n};\n\nexport { FederatedFooter };\n","import classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterContacts: FC<{ contacts: ContactsFooterProps[]; contactsOnly: boolean; hasCardLinks: boolean }> = ({\n  contacts,\n  contactsOnly,\n  hasCardLinks\n}) => {\n  const contactsClassName = classNames('grid gap-x-32 xs:gap-y-32 md:gap-y-64 md:content-center', {\n    'xs:pt-32 md:pt-32 xl:pt-64': contactsOnly,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-6 xs:col-span-4 md:col-span-8 xl:col-span-6': !hasCardLinks,\n    'xs:grid-cols-4 md:grid-cols-4 xl:grid-cols-6 xs:col-span-4 md:col-span-4 xl:col-span-6': !contactsOnly && hasCardLinks\n  });\n  return (\n    <div className={contactsClassName}>\n      {contacts\n        ?.filter((_i, index) => index < 2)\n        .map((contact, index) => {\n          const key = `contacts-${index}`;\n          return (\n            <div key={key} className=\"xs:col-span-4 md:col-span-4 xl:col-span-3\">\n              <div className=\"text-m-bold text-[var(--color-primary-900)] mb-8\">{contact.title}</div>\n              <div className=\"text-m-regular text-[var(--color-primary-900)]\">{contact.description}</div>\n              {contact.phones && (\n                <div>\n                  {contact.phones[0] && (\n                    <a href={`tel:${contact.phones[0]}`}>\n                      <span className=\"text-l-bold text-[var(--color-primary-900)]\">{contact.phones[0].match(/.{1,3}/g)?.join(' ')} </span>\n                    </a>\n                  )}\n                  {contact.phones[1] && <span className=\"text-m-regular text-[var(--color-primary-900)]\">{` ${contact.phones[1]} `}</span>}\n                  {contact.phones[2] && (\n                    <a href={`tel:${contact.phones[2]}`}>\n                      <span className=\"text-l-bold text-[var(--color-primary-900)]\">{contact.phones[2].match(/.{1,3}/g)?.join(' ')}</span>\n                    </a>\n                  )}\n                </div>\n              )}\n            </div>\n          );\n        })}\n    </div>\n  );\n};\n\nexport { PublicFooterContacts };\n","import classNames from 'classnames';\nimport React, { FC, useEffect } from 'react';\nimport { Anchor } from '@/components/anchor';\n\nimport { CardFooterProps } from '../models';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { PublicFooterContacts } from './public-footer-contacts';\nimport { BookmarkIcon } from '@/components/shared/bookmark-icon/bookmark-icon';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterHighlightCard: FC<{ card?: CardFooterProps; contacts?: ContactsFooterProps[]; hasCardLinks: boolean }> = ({\n  card,\n  contacts,\n  hasCardLinks\n}) => {\n  const cardClassName = classNames(\n    'grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xl:row-span-1 bg-[var(--color-primary-100)] pb-32 relative xl:-ml-[112px] xl:pl-[112px]',\n    {\n      'pb-64': !contacts\n    }\n  );\n\n  const cardHelpClassName = classNames('relative z-[1]', {\n    'xs:col-span-4 md:col-span-6 xl:col-span-6': hasCardLinks,\n    'xs:col-span-4 md:col-span-8 xl:col-span-6': !hasCardLinks\n  });\n\n  const contactsClassName = classNames('grid gap-x-32 xl:row-span-1 bg-[var(--color-primary-100)] xl:-ml-[112px] xl:pl-[112px]', {\n    'xs:grid-cols-4 md:grid-cols-4 xl:grid-cols-8 xs:col-span-4 md:col-span-4 xl:col-span-8 xs:pb-32 md:pb-64 xl:pb-64':\n      card && hasCardLinks && contacts,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xs:pb-32 md:pb-64 xl:pb-64':\n      card && !hasCardLinks && contacts,\n    'xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-8 xs:col-span-4 md:col-span-8 xl:col-span-8 xs:pb-32 md:pb-32 xl:pb-64 ':\n      !card && !hasCardLinks && contacts\n  });\n\n  useEffect(() => {\n    const setCardLinkVW = () => {\n      //  THIS IS NEEDED BECAUSE CSS UNIT 100VW TAKES SCROLLBAR INTO ACCOUNT AND THE CALCULATION OF THE WITH OF THE CARD INTRODUCES A HORIZONTAL SCROLL BAR.\n      //  TO SOLVE THIS THE CLIENT WIDTH DOES NOT TAKE INTO ACCOUNT HE SCROLL BAR WITH. WE SET A CSS VARIABLE TO BE USED LATTER IN THE CLASS TO PERFORM THE CALCULATION.\n      const vw = document.documentElement.clientWidth;\n      document.documentElement.style.setProperty('--footer-aux-vw', `${vw}px`);\n    };\n\n    if (hasCardLinks) {\n      window.addEventListener('resize', setCardLinkVW);\n      setCardLinkVW();\n    }\n\n    const cleanUp = () => {\n      window.removeEventListener('resize', setCardLinkVW);\n    };\n\n    return cleanUp;\n  }, [hasCardLinks]);\n\n  return (\n    <>\n      {card && (\n        <div className={cardClassName}>\n          {hasCardLinks && (\n            <div\n              aria-hidden\n              className=\"absolute left-0 xs:block md:block xl:hidden xs:w-[calc(100%+32px)] md:w-[calc(((var(--footer-aux-vw)-100%)/2)+100%)] h-full bg-[var(--color-primary-100)] z-0\"\n            />\n          )}\n          <div className={cardHelpClassName}>\n            <BookmarkIcon aria-hidden className=\"mb-32\" />\n            {card?.title && <h2 className=\"xs:text-m-bold md:text-l-bold text-[var(--color-primary-900)]\">{card.title}</h2>}\n            {card?.description && <div className=\"text-m-regular text-[var(--color-primary-900)] mt-16\">{card.description}</div>}\n          </div>\n          {card.links && (\n            <ul className=\"relative z-[1] xs:col-span-4 md:col-span-8 xl:col-span-6 mt-32 inline-flex gap-x-32 xs:flex-col md:flex-row xl:flex-row\">\n              {card.links\n                .filter((_i, index) => index < 3)\n                .map((link, index) => {\n                  const key = `link-${index}`;\n                  return (\n                    <li key={key} className=\"py-8\">\n                      <Anchor\n                        {...link}\n                        className=\"xs:flex xs:justify-between\"\n                        appearance=\"link\"\n                        variant=\"primary\"\n                        hasIcon\n                        trailingIcon=\"agora-line-arrow-right-circle\"\n                        trailingIconHover=\"agora-solid-arrow-right-circle\"\n                      />\n                    </li>\n                  );\n                })}\n            </ul>\n          )}\n        </div>\n      )}\n      {contacts && (\n        <div className={contactsClassName}>\n          {contacts && <PublicFooterContacts contacts={contacts} contactsOnly={!card && !hasCardLinks} hasCardLinks={hasCardLinks} />}\n        </div>\n      )}\n    </>\n  );\n};\n\nexport { PublicFooterHighlightCard };\n","import React, { FC } from 'react';\n\nimport { Anchor } from '@/components/anchor';\nimport { CardFooterProps } from '../models';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterHighlightCardLinks: FC<CardFooterProps> = (cardLinks) => {\n  const textColorClass = cardLinks.darkMode ? 'text-white' : 'text-[var(--color-neutral-900)]';\n\n  return (\n    <>\n      {cardLinks?.title && <h2 className={`xs:text-m-bold md:text-l-bold ${textColorClass}`}>{cardLinks.title}</h2>}\n      {cardLinks?.links && (\n        <nav aria-label={cardLinks.title as string}>\n          <ul className=\"mt-32\">\n            {cardLinks.links\n              .filter((_i, index) => index < 5)\n              .map((link, index) => {\n                const key = `link-${index}`;\n                return (\n                  <li key={key} className=\"py-8\">\n                    <Anchor {...link} darkMode={cardLinks.darkMode} appearance=\"link\" variant=\"neutral\" />\n                  </li>\n                );\n              })}\n          </ul>\n        </nav>\n      )}\n    </>\n  );\n};\n\nexport { PublicFooterHighlightCardLinks };\n","import classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { CardFooterProps } from '../models/CardFooterProps';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { PublicFooterHighlightCard } from './public-footer-highlight-card';\nimport { PublicFooterHighlightCardLinks } from './public-footer-highlight-card-links';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterHighlight: FC<{\n  card?: CardFooterProps;\n  cardLinks?: CardLinksFooterProps;\n  contacts?: ContactsFooterProps[];\n  darkMode?: boolean;\n}> = ({ card, cardLinks, contacts, darkMode }) => {\n  const bgColorClass = darkMode ? 'bg-[var(--color-primary-900)]' : 'bg-[var(--color-neutral-100)]';\n\n  const footerHighlightClassName = classNames({\n    'footer-highlight': darkMode,\n    'footer-highlight-only-card': darkMode && card && contacts && !cardLinks,\n    'footer-highlight-only-help': darkMode && card && !contacts && !cardLinks,\n    'footer-highlight-only-contacts': darkMode && !card && contacts && !cardLinks,\n\n    'footer-highlight-light': !darkMode,\n    'footer-highlight-only-card-light': !darkMode && card && contacts && !cardLinks,\n    'footer-highlight-only-help-light': !darkMode && card && !contacts && !cardLinks,\n    'footer-highlight-only-contacts-light': !darkMode && !card && contacts && !cardLinks\n  });\n\n  const cardFooterClassName = classNames('grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-x-32 xl:grid-rows-1', {\n    'xl:grid-flow-col': card && cardLinks,\n    'xl:grid-flow-row': card && !cardLinks\n  });\n\n  return (\n    <div className={footerHighlightClassName}>\n      <div className=\"container mx-auto\">\n        <div className={cardFooterClassName}>\n          <PublicFooterHighlightCard card={card} contacts={contacts} hasCardLinks={!!cardLinks} />\n          {cardLinks && (\n            <div\n              className={`grid gap-x-32 xs:grid-cols-4 md:grid-cols-4 xl-grid-cols-4 xs:col-span-4 md:col-span-4 xl:col-span-4 xl:row-span-2 ${bgColorClass} relative`}\n            >\n              <div aria-hidden className={`md:hidden xl:hidden absolute w-[calc(100%+64px)] -left-[32px] h-full ${bgColorClass} z-0`} />\n              <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:py-32 xs:pl-0 md:py-64 md:pl-64 xl:py-64 xl:pl-64 z-[1]\">\n                <PublicFooterHighlightCardLinks darkMode={darkMode} {...cardLinks} />\n              </div>\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { PublicFooterHighlight };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\nimport { FooterSocialUsefulCopyright } from '../shared-components/footer-social-useful-copyright';\nimport { PublicFooterHighlightCardLinks } from './public-footer-highlight-card-links';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooterMainPlusCardLinks: FC<{\n  brandImage: LinkableImagesProps;\n  badgeImage?: LinkableImagesProps;\n  caption: string | ReactNode;\n  partnersLogos: LinkableImagesProps[];\n  partnersLogosAriaLabel?: string;\n  socialsLink?: LinkableIconsProps[];\n  socialsLinkAriaLabel?: string;\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n  usefulLinksAriaLabel?: string;\n  copyright: string | ReactNode;\n  cardLinks: CardLinksFooterProps;\n  darkMode?: boolean;\n}> = ({\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  cardLinks,\n  darkMode\n}) => {\n  const bgColorClass = darkMode ? 'bg-[var(--color-primary-900)]' : 'bg-[var(--color-neutral-100)]';\n  const borderColorClass = darkMode ? 'border-white/5' : 'border-black/5';\n  const anchorTextColor = darkMode\n    ? 'text-[var(--color-neutral-700)] hover:text-[var(--color-neutral-600)]'\n    : 'text-[var(--color-neutral-500)] hover:text-[var(--color-neutral-700)]';\n\n  return (\n    <div className={bgColorClass}>\n      <div className=\"container mx-auto\">\n        <div className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32\">\n          <div className=\"xs:col-span-4 md:col-span-3 xl:col-span-6 xs:pt-32 md:pt-64\">\n            <div className=\"mb-32\">\n              {brandImage.link && brandImage.image && (\n                <a\n                  {...brandImage.link}\n                  className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center border-2 border-transparent rounded-4 outline-none focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)]\"\n                >\n                  <img alt={brandImage.image.alt} {...brandImage.image} />\n                </a>\n              )}\n              {!brandImage.link && brandImage.image && <img {...brandImage.image} alt={brandImage.image.alt} />}\n            </div>\n            <div className=\"mb-64\">\n              <span className=\"text-m-regular text-[var(--color-neutral-500)]\">{caption}</span>\n            </div>\n            {badgeImage && (\n              <div className=\"mb-64\">\n                {badgeImage?.link && badgeImage?.image && (\n                  <a\n                    {...badgeImage.link}\n                    className=\"min-h-[44px] min-w-[44px] inline-flex justify-center items-center border-2 border-transparent rounded-4 outline-none focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)]\"\n                  >\n                    <img alt={badgeImage.image.alt} {...badgeImage.image} />\n                  </a>\n                )}\n                {badgeImage && !badgeImage.link && badgeImage.image && <img {...badgeImage.image} alt={badgeImage.image.alt} />}\n              </div>\n            )}\n          </div>\n          <div className=\"xs:col-span-4 md:col-span-1 xl:col-span-1 min-h-full min-w-full md:relative xl:relative\">\n            <hr\n              aria-hidden\n              className={`border-1 ${borderColorClass} md:h-[calc(100%-2px)] xl:h-[calc(100%-2px)] max-md:w-full md:bottom-0 right-0 absolute`}\n            />\n          </div>\n          <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:pt-32 md:pt-64\">\n            <div className=\"xs:col-span-4 md:col-span-4 xl:col-span-4 xs:py-32 xs:pl-0 md:pt-0 md:pb-64 md:pl-0 xl:pl-32 xl:pb-64 xl:pt-0\">\n              <PublicFooterHighlightCardLinks {...cardLinks} darkMode={darkMode} />\n            </div>\n          </div>\n        </div>\n\n        <hr aria-hidden className={`border-1 ${borderColorClass} w-full absolute left-0`} />\n        <div className=\"grid xs:justify-items-center md:justify-items-center xl:justify-items-start xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-32 py-32\">\n          <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\" aria-label={partnersLogosAriaLabel}>\n            {partnersLogos && (\n              <ul className=\"flex flex-wrap xs:gap-32 md:gap-[30px]\">\n                {partnersLogos\n                  .filter((_i, index) => index < 10)\n                  .map((partner, index) => {\n                    const key = `logo-${index}`;\n\n                    return (\n                      <li key={key}>\n                        {partner?.link && partner?.image && (\n                          <a\n                            {...partner.link}\n                            className={`${anchorTextColor} min-h-[44px] min-w-[44px] inline-flex justify-center items-center outline-none border-2 border-transparent rounded-4 opacity-50 hover:opacity-100 focus:rounded-none focus:outline focus:outline-2 focus:-outline-offset-2 focus:outline-[var(--color-focus)] focus:opacity-100`}\n                          >\n                            <img alt={partner.image.alt} {...partner.image} />\n                          </a>\n                        )}\n                        {!partner?.link && partner?.image && <img {...partner?.image} alt={partner?.image.alt} />}\n                      </li>\n                    );\n                  })}\n              </ul>\n            )}\n          </nav>\n        </div>\n        <hr aria-hidden className={`border-1 ${borderColorClass} w-full absolute left-0`} />\n\n        <FooterSocialUsefulCopyright\n          darkMode={darkMode}\n          socialsLink={socialsLink}\n          usefulLinks={usefulLinks}\n          copyright={copyright}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { PublicFooterMainPlusCardLinks };\n","import React, { AnchorHTMLAttributes, FC, ReactNode } from 'react';\nimport { CardFooterProps } from '../models/CardFooterProps';\nimport { CardLinksFooterProps } from '../models/CardLinksFooterProps';\nimport { ContactsFooterProps } from '../models/ContactsFooterProps';\nimport { LinkableIconsProps } from '../models/LinkableIconsProps';\nimport { LinkableImagesProps } from '../models/LinkableImagesProps';\nimport { MainFooter } from '../shared-components/footer-main';\nimport { PublicFooterHighlight } from './public-footer-highlight';\nimport { PublicFooterMainPlusCardLinks } from './public-footer-main-plus-card-links';\nimport './public-footer.css';\n/**\n * @deprecated Use Footer v2 Instead.\n */\nexport interface PublicFooterProps {\n  /**\n   * Informative card. Links limited to first 3, remaining array is discarded.\n   */\n  card?: CardFooterProps;\n\n  /**\n   * Contacts limited to first 2, remaining array is discarded.\n   */\n  contacts?: ContactsFooterProps[];\n\n  /*\n   * Informative list of links. Links limited to first 5, remaining array is discarded.\n   */\n  cardLinks?: CardLinksFooterProps;\n\n  /**\n   * Image on left side with/without link.\n   */\n  brandImage: LinkableImagesProps;\n\n  /**\n   * Image on right side with/without link.\n   */\n  badgeImage?: LinkableImagesProps;\n\n  /**\n   * Small descriptive text\n   */\n  caption: string | ReactNode;\n\n  /**\n   * List of images with or without link. Links limited to first 10, remaining array is discarded.\n   */\n  partnersLogos: LinkableImagesProps[];\n\n  /**\n   * Accessible text for the partners logos.\n   */\n  partnersLogosAriaLabel?: string;\n\n  /**\n   * List of icons with/without link. Links limited to first 10, remaining array is discarded.\n   */\n  socialsLink?: LinkableIconsProps[];\n\n  /**\n   * Accessible text for the social links.\n   */\n  socialsLinkAriaLabel?: string;\n\n  /**\n   * List of links. Links limited to first 8, remaining array is discarded.\n   */\n  usefulLinks?: AnchorHTMLAttributes<HTMLAnchorElement>[];\n\n  /**\n   * Accessible text for the useful links.\n   */\n  usefulLinksAriaLabel?: string;\n\n  /*\n   * Copyright text\n   */\n  copyright: string | ReactNode;\n\n  /**\n   * The flag to set if the footer is in dark mode or light mode.\n   */\n  darkMode?: boolean;\n}\n/**\n * @deprecated Use Footer v2 Instead.\n */\nconst PublicFooter: FC<PublicFooterProps> = ({\n  card,\n  contacts,\n  cardLinks,\n  brandImage,\n  badgeImage,\n  caption,\n  partnersLogos,\n  partnersLogosAriaLabel,\n  socialsLink,\n  socialsLinkAriaLabel,\n  usefulLinks,\n  usefulLinksAriaLabel,\n  copyright,\n  darkMode\n}) => {\n  // foot was create without darkMode prop, so default is true to keep backward compatibility\n  const isDarkMode = darkMode === undefined ? true : darkMode;\n\n  return (\n    <div className=\"agora-footer\">\n      {(card || contacts || !cardLinks) && (\n        <>\n          <PublicFooterHighlight card={card} cardLinks={cardLinks} contacts={contacts} darkMode={isDarkMode} />\n          {(card || cardLinks || contacts) && (\n            <hr\n              aria-hidden\n              className=\"border-1 xs:border-white md:border-transparent xl:border-transparent opacity-5 w-full absolute left-0\"\n            />\n          )}\n          <MainFooter\n            darkMode={isDarkMode}\n            brandImage={brandImage}\n            badgeImage={badgeImage}\n            caption={caption}\n            partnersLogos={partnersLogos}\n            partnersLogosAriaLabel={partnersLogosAriaLabel}\n            socialsLink={socialsLink}\n            socialsLinkAriaLabel={socialsLinkAriaLabel}\n            usefulLinks={usefulLinks}\n            usefulLinksAriaLabel={usefulLinksAriaLabel}\n            copyright={copyright}\n          />\n        </>\n      )}\n      {!card && cardLinks && (\n        <PublicFooterMainPlusCardLinks\n          darkMode={isDarkMode}\n          cardLinks={cardLinks}\n          brandImage={brandImage}\n          badgeImage={badgeImage}\n          caption={caption}\n          partnersLogos={partnersLogos}\n          partnersLogosAriaLabel={partnersLogosAriaLabel}\n          socialsLink={socialsLink}\n          socialsLinkAriaLabel={socialsLinkAriaLabel}\n          usefulLinks={usefulLinks}\n          usefulLinksAriaLabel={usefulLinksAriaLabel}\n          copyright={copyright}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { PublicFooter };\n","import React, { ComponentProps, FC, HTMLProps } from 'react';\n\nimport classNames from 'classnames';\n\nimport './glossary-letters.css';\n\nexport type LetterStatus = 'default' | 'disabled' | 'selected';\n\nexport interface GlossaryLetter extends HTMLProps<HTMLAnchorElement> {\n  /**\n   * Letter to be rendered\n   */\n  letter: string;\n  /**\n   *  Glossary letter status\n   */\n  status: LetterStatus;\n  /**\n   * Data attributes\n   */\n  [dataAttribute: `data-${string}`]: string;\n}\n\nexport interface GlossaryLettersProps extends ComponentProps<'div'> {\n  /**\n   * Letters Array\n   */\n  letters?: GlossaryLetter[];\n  /**\n   * Turn the dark mode on or off.\n   */\n  darkMode?: boolean;\n}\n\nconst GlossaryLetters: FC<GlossaryLettersProps> = ({ ref = null, letters, ...props }) => {\n  const lettersComponents = letters?.map(({ letter, status, ...anchorProps }) => {\n    const isDisabled = status === 'disabled';\n\n    const isSelected = status === 'selected';\n\n    const darkMode = props.darkMode || false;\n\n    const letterClassName = classNames('letter', {\n      'letter-disabled': isDisabled,\n      'letter-selected': isSelected && !darkMode,\n\n      'letter-dark': darkMode,\n      'letter-dark-selected': isSelected && darkMode\n    });\n\n    const href = `#${letter}`;\n\n    if (isDisabled) {\n      return (\n        <span key={`${letter}-${href}`} className={letterClassName} aria-disabled=\"true\">\n          {letter}\n        </span>\n      );\n    }\n\n    return (\n      <a key={`${letter}-${href}`} {...anchorProps} className={letterClassName} href={href}>\n        {letter}\n      </a>\n    );\n  });\n\n  return (\n    <nav {...props} className=\"navElement\" ref={ref}>\n      <div className=\"glossary-container\">{lettersComponents}</div>\n    </nav>\n  );\n};\n\nexport { GlossaryLetters };\n","import { AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooterActionProps } from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\nimport { NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { InputSearchBarProps } from '@/components/input-search-bar';\nimport { createContext, ReactElement, ReactNode, useContext } from 'react';\nimport { GetDirectLinksProps } from './utils/direct-link-utils';\n\nexport interface HeaderDataContextProps {\n  getGeneralBarAriaLabel: () => string;\n\n  getInstitutionalPhrase: () => ReactNode;\n  getLogoImage: () => ReactNode;\n\n  hasVisibleAreas: () => boolean;\n  getAreasAriaLabel: () => string;\n  getAreas: () => InternalAreaProps[];\n  getActiveArea: () => InternalAreaProps | undefined;\n  onAreaChange?: (area: string) => void;\n\n  hasLanguages: () => boolean;\n  getLanguagesAriaLabel: () => string;\n  getCheckedLanguage: () => LanguageProps[];\n  getLanguages: () => LanguageProps[];\n  onLanguageChange?: (lang: string) => void;\n\n  getAuthenticated: () => AuthenticatedProps | null;\n  getAuthenticatedHeader: () => AuthenticatedHeaderProps | null;\n  getAuthenticatedBodyLinks: () => AuthenticatedBodyLinkProps[];\n  getAuthenticatedFooterActions: () => AuthenticatedFooterActionProps[];\n\n  getUnauthenticated: () => UnauthenticatedProps | null;\n  getUnauthenticatedLinks: () => UnauthenticatedLinkProps[];\n\n  hasSearch: () => boolean;\n  getSearchLabel: () => string;\n  hasDefaultSearch: () => boolean;\n  getDefaultSearchTitle: () => SearchTitleProps | null;\n  getDefaultSearchInputBar: () => InputSearchBarProps | null;\n  getCustomSearchInputBar: () => ReactNode;\n  getDefaultSearchRelatedLinksTitle: () => SearchRelatedLinksTitleProps | null;\n  getDefaultSearchRelatedLinks: () => SearchRelatedLinkProps[];\n\n  hasDirectLinks: () => boolean;\n  getDirectLinksProps: () => GetDirectLinksProps;\n\n  hasCustomSearch: () => boolean;\n  getCustomSearch: () => CustomSearchProps | null;\n\n  countNavigationItems: () => number;\n  maxNavigationItems: number;\n\n  hasNavigationBar: () => boolean;\n  getNavigationId: () => string;\n  getNavigationItems: () => ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>[];\n  getResponsiveMenuLabel: () => string;\n  getResponsiveMenuAriaLabel: () => string;\n  getResponsiveMenuBackToRootLabel: () => string;\n\n  getModalMenuLabel: () => string;\n  getModalAriaLabel: () => string;\n  getModalCloseLabel: () => string;\n\n  darkMode: boolean;\n}\n\nexport const HeaderDataContext = createContext<HeaderDataContextProps>({} as HeaderDataContextProps);\n\nexport const useHeaderDataContext = (): HeaderDataContextProps => {\n  return useContext(HeaderDataContext);\n};\n","import { ButtonProps } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport React, { FC, ReactNode } from 'react';\n\nexport interface AreaProps extends ButtonProps {\n  value: string;\n  label: ReactNode;\n  active?: BooleanProp;\n}\n\nexport const Area: FC<AreaProps> = () => <></>;\n","import { ButtonGroupProps } from '@/components/button-group';\nimport React, { FC, ReactElement } from 'react';\nimport { AreaProps } from './area';\n\nexport interface AreasProps extends Omit<ButtonGroupProps, 'onChange'> {\n  ['aria-label']: string;\n  children: ReactElement<AreaProps> | ReactElement<AreaProps>[];\n  onChange?: (activeArea: string) => void;\n}\nexport const Areas: FC<AreasProps> = () => <></>;\n","import React, { FC, ReactElement } from 'react';\nimport { AreasProps } from './areas/areas';\nimport { AuthenticatedProps } from './authenticated/authenticated';\nimport { LanguagesProps } from './languages/languages';\nimport { SearchProps } from './search/search';\nimport { UnauthenticatedProps } from './unauthenticated/unauthenticated';\n\nexport interface GeneralBarProps {\n  ['aria-label']: string;\n  children:\n    | ReactElement<AreasProps | LanguagesProps | AuthenticatedProps | UnauthenticatedProps | SearchProps>\n    | ReactElement<AreasProps | LanguagesProps | AuthenticatedProps | UnauthenticatedProps | SearchProps>[];\n}\nexport const GeneralBar: FC<GeneralBarProps> = () => <></>;\n","import { Area, AreaProps } from '@/components/header/general-bar/areas/area';\nimport { Areas, AreasProps } from '@/components/header/general-bar/areas/areas';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { Children, isValidElement, ReactElement } from 'react';\n\nexport const hasVisibleAreasProps = (children?: HeaderChildrenComponents): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  let areaReactElements: ReactElement<AreaProps>[] = [];\n  if (areasReactElement && isValidElement<AreasProps>(areasReactElement)) {\n    areaReactElements = Children.toArray(areasReactElement.props.children).map((child) => {\n      if (isValidElement<AreaProps>(child) && (child as ReactElement).type === Area) {\n        return child;\n      }\n    }) as ReactElement<AreaProps>[];\n  }\n\n  return areaReactElements.length > 1;\n};\n\nexport const getParseAreasAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  return areasReactElement?.props['aria-label'] ?? '';\n};\n\nexport const getParsedOnAreaChange = (children?: HeaderChildrenComponents): ((activeArea: string) => void) | null | undefined => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n  if (areasReactElement) {\n    return areasReactElement.props.onChange;\n  }\n};\n\nexport const getParsedAvailableAreaProps = (children?: HeaderChildrenComponents): InternalAreaProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let areasReactElement: ReactElement<AreasProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    areasReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AreasProps>(child) && (child as ReactElement).type === Areas;\n    }) as ReactElement<AreasProps> | null;\n  }\n\n  let areaReactElements: ReactElement<AreaProps>[] = [];\n  if (areasReactElement && isValidElement<AreasProps>(areasReactElement)) {\n    areaReactElements = Children.toArray(areasReactElement.props.children).map((child) => {\n      if (isValidElement<AreaProps>(child) && (child as ReactElement).type === Area) {\n        return child;\n      }\n    }) as ReactElement<AreaProps>[];\n  }\n\n  let areas = areaReactElements\n    .map((p) => {\n      if (isValidElement<AreaProps>(p)) {\n        return p?.props as InternalAreaProps;\n      }\n\n      return null;\n    })\n    .filter((p) => !!p);\n\n  if (areas.length > 0 && !areas.some((a) => a.active)) {\n    areas = areas.map((a, index) => {\n      return {\n        ...a,\n        active: index == 0\n      } as InternalAreaProps;\n    });\n  }\n\n  return areas;\n};\n\nexport const getParsedActiveAreaProps = (children?: HeaderChildrenComponents): InternalAreaProps | undefined => {\n  return getParsedAvailableAreaProps(children)\n    .filter((a) => a.active)\n    .at(0);\n};\n","import { ButtonProps } from '@/components/button';\nimport React, { FC } from 'react';\n\nexport interface AuthenticatedFooterActionProps extends ButtonProps {}\nexport const AuthenticatedFooterAction: FC<AuthenticatedFooterActionProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface AuthenticatedHeaderProps extends ComponentProps<'div'> {\n  closeAriaLabel?: string;\n}\nexport const AuthenticatedHeader: FC<AuthenticatedHeaderProps> = () => <></>;\n","import { AvatarProps } from '@/components/avatar';\nimport React, { FC, ReactElement } from 'react';\nimport { AuthenticatedBodyProps } from './authenticated-body';\nimport { AuthenticatedFooterProps } from './authenticated-footer';\nimport { AuthenticatedHeaderProps } from './authenticated-header';\n\nexport interface AuthenticatedProps extends AvatarProps {\n  children:\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>[];\n}\nexport const Authenticated: FC<AuthenticatedProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { AuthenticatedBodyLinkProps } from './authenticated-body-link';\n\nexport interface AuthenticatedBodyProps extends ComponentProps<'div'> {\n  children?: ReactElement<AuthenticatedBodyLinkProps> | ReactElement<AuthenticatedBodyLinkProps>[];\n}\nexport const AuthenticatedBody: FC<AuthenticatedBodyProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface AuthenticatedBodyLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\nexport const AuthenticatedBodyLink: FC<AuthenticatedBodyLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { AuthenticatedFooterActionProps } from './authenticated-footer-action';\n\nexport interface AuthenticatedFooterProps extends ComponentProps<'div'> {\n  children: ReactElement<AuthenticatedFooterActionProps> | ReactElement<AuthenticatedFooterActionProps>[];\n}\nexport const AuthenticatedFooter: FC<AuthenticatedFooterProps> = () => <></>;\n","import {\n  AuthenticatedFooterAction,\n  AuthenticatedFooterActionProps\n} from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeader, AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { Authenticated, AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBody, AuthenticatedBodyProps } from '@/components/header/general-bar/authenticated/authenticated-body';\nimport { AuthenticatedBodyLink, AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooter, AuthenticatedFooterProps } from '@/components/header/general-bar/authenticated/authenticated-footer';\nimport { Children, isValidElement, ReactElement } from 'react';\nimport { HeaderChildrenComponents } from '@/components/header/header';\n\nexport const getParsedAuthenticatedProps = (children?: HeaderChildrenComponents): AuthenticatedProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  return authenticatedReactElement ? authenticatedReactElement.props : null;\n};\n\nexport const getParsedAuthenticatedHeaderProps = (children?: HeaderChildrenComponents): AuthenticatedHeaderProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedHeaderReactElement: ReactElement<AuthenticatedHeaderProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedHeaderReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedHeaderProps>(child) && (child as ReactElement).type === AuthenticatedHeader;\n    }) as ReactElement<AuthenticatedHeaderProps> | null;\n    if (authenticatedHeaderReactElement) {\n      return authenticatedHeaderReactElement.props;\n    }\n  }\n\n  return null;\n};\n\nexport const getParsedAuthenticatedBodyLinkProps = (children?: HeaderChildrenComponents): AuthenticatedBodyLinkProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedBodyReactElement: ReactElement<AuthenticatedBodyProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedBodyReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedBodyProps>(child) && (child as ReactElement).type === AuthenticatedBody;\n    }) as ReactElement<AuthenticatedBodyProps>;\n  }\n\n  if (authenticatedBodyReactElement) {\n    return Children.toArray(authenticatedBodyReactElement.props.children)\n      .map((child) => {\n        if (isValidElement<AuthenticatedBodyLinkProps>(child) && (child as ReactElement).type === AuthenticatedBodyLink) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [] as AuthenticatedBodyLinkProps[];\n};\n\nexport const getParsedAuthenticatedFooterActionProps = (children?: HeaderChildrenComponents): AuthenticatedFooterActionProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let authenticatedReactElement: ReactElement<AuthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    authenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedProps>(child) && (child as ReactElement).type === Authenticated;\n    }) as ReactElement<AuthenticatedProps> | null;\n  }\n\n  let authenticatedFooterReactElement: ReactElement<AuthenticatedFooterProps> | null = null;\n  if (authenticatedReactElement && isValidElement<AuthenticatedProps>(authenticatedReactElement)) {\n    authenticatedFooterReactElement = Children.toArray(authenticatedReactElement.props.children).find((child) => {\n      return isValidElement<AuthenticatedFooterProps>(child) && (child as ReactElement).type === AuthenticatedFooter;\n    }) as ReactElement<AuthenticatedFooterProps>;\n  }\n\n  if (authenticatedFooterReactElement) {\n    return Children.toArray(authenticatedFooterReactElement.props.children)\n      .map((child) => {\n        if (isValidElement<AuthenticatedFooterActionProps>(child) && (child as ReactElement).type === AuthenticatedFooterAction) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [] as AuthenticatedFooterActionProps[];\n};\n","import React, { FC, ReactElement } from 'react';\nimport { InstitutionalProps } from './institutional';\nimport { LogoProps } from './logo';\n\nexport interface BrandProps {\n  children: ReactElement<LogoProps | InstitutionalProps> | ReactElement<LogoProps | InstitutionalProps>[];\n}\n\nexport const Brand: FC<BrandProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface InstitutionalProps extends ComponentProps<'div'> {}\n\nexport const Institutional: FC<InstitutionalProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface LogoProps extends ComponentProps<'div'> {}\n\nexport const Logo: FC<LogoProps> = () => <></>;\n","import { Brand, BrandProps } from '@/components/header/brand/brand';\nimport { Institutional, InstitutionalProps } from '@/components/header/brand/institutional';\nimport { Logo, LogoProps } from '@/components/header/brand/logo';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, isValidElement, ReactElement, ReactNode } from 'react';\n\nexport const getParsedInstitutionalPhrase = (children?: HeaderChildrenComponents): ReactNode => {\n  const brandReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<BrandProps>(child) && (child as ReactElement).type === Brand;\n  });\n\n  let institutionalElement: ReactElement<InstitutionalProps> | null = null;\n  if (brandReactElement && isValidElement<BrandProps>(brandReactElement)) {\n    institutionalElement = Children.toArray(brandReactElement.props.children).find((child) => {\n      return isValidElement<InstitutionalProps>(child) && (child as ReactElement).type === Institutional;\n    }) as ReactElement<InstitutionalProps> | null;\n  }\n\n  return institutionalElement ? institutionalElement.props.children : '';\n};\n\nexport const getParsedLogo = (children?: HeaderChildrenComponents): ReactNode => {\n  const brandReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<BrandProps>(child) && (child as ReactElement).type === Brand;\n  });\n\n  let logoElement: ReactElement<LogoProps> | null = null;\n  if (brandReactElement && isValidElement<BrandProps>(brandReactElement)) {\n    logoElement = Children.toArray(brandReactElement.props.children).find((child) => {\n      return isValidElement<LogoProps>(child) && (child as ReactElement).type === Logo;\n    }) as ReactElement<LogoProps> | null;\n  }\n\n  return logoElement ? logoElement.props.children : '';\n};\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedGeneralBarAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  }) as ReactElement<GeneralBarProps> | null;\n\n  return generalBarReactElement?.props['aria-label'] ?? '';\n};\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface LanguageProps extends ComponentProps<'input'> {\n  icon?: string;\n  label: string;\n  abbr: string;\n  value: string;\n}\n\nexport const Language: FC<LanguageProps> = () => <></>;\n","import React, { FC, ReactElement } from 'react';\nimport { LanguageProps } from './language';\n\nexport interface LanguagesProps {\n  ['aria-label']: string;\n  children: ReactElement<LanguageProps> | ReactElement<LanguageProps>[];\n  onChange?: (activeLanguage: string) => void;\n}\nexport const Languages: FC<LanguagesProps> = () => <></>;\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { Language, LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { Languages, LanguagesProps } from '@/components/header/general-bar/languages/languages';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getLanguagesProps = (children?: HeaderChildrenComponents): ReactElement<LanguagesProps> | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    return Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<LanguagesProps>(child) && (child as ReactElement).type === Languages;\n    }) as ReactElement<LanguagesProps> | null;\n  }\n\n  return null;\n};\n\nexport const hasLanguagesProps = (children?: HeaderChildrenComponents): boolean => {\n  return !!getLanguagesProps(children);\n};\n\nexport const getParsedLanguagesAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const languagesReactElement = getLanguagesProps(children);\n  return languagesReactElement?.props['aria-label'] ?? '';\n};\n\nexport const getParsedOnLanguageChange = (children?: HeaderChildrenComponents): ((activeLanguage: string) => void) | null | undefined => {\n  const languagesReactElement = getLanguagesProps(children);\n  if (languagesReactElement) {\n    return languagesReactElement.props.onChange;\n  }\n};\n\nexport const getParsedAvailableLanguageProps = (children?: HeaderChildrenComponents): LanguageProps[] => {\n  const languagesReactElement = getLanguagesProps(children);\n\n  let languageReactElements: ReactElement<LanguageProps>[] = [];\n  if (languagesReactElement && isValidElement<LanguagesProps>(languagesReactElement)) {\n    languageReactElements = Children.toArray(languagesReactElement.props.children).map((child) => {\n      if (isValidElement<LanguageProps>(child) && (child as ReactElement).type === Language) {\n        return child;\n      }\n    }) as ReactElement<LanguageProps>[];\n  }\n\n  return languageReactElements\n    .map((p) => {\n      if (isValidElement<LanguageProps>(p)) {\n        return p?.props;\n      }\n    })\n    .filter((p) => !!p);\n};\n\nexport const getParsedCheckedLanguageProps = (children?: HeaderChildrenComponents): LanguageProps[] => {\n  const languagesReactElement = getLanguagesProps(children);\n\n  let languageReactElements: ReactElement<LanguageProps>[] = [];\n  if (languagesReactElement && isValidElement<LanguagesProps>(languagesReactElement)) {\n    languageReactElements = Children.toArray(languagesReactElement.props.children).map((child) => {\n      if (isValidElement<LanguageProps>(child) && (child as ReactElement).type === Language) {\n        return child;\n      }\n    }) as ReactElement<LanguageProps>[];\n  }\n\n  if (languageReactElements.length > 0) {\n    return languageReactElements\n      .filter((lang) => {\n        return isValidElement<LanguageProps>(lang) && lang.props.checked;\n      })\n      .map((lang) => lang.props);\n  }\n\n  return [] as LanguageProps[];\n};\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { NavigationRootProps } from './navigation-root';\nimport { NavigationLinkProps } from './navigation-link';\n\nexport interface NavigationBarProps extends ComponentProps<'div'> {\n  id?: string;\n\n  //  RESPONSIVE\n  responsiveMenuLabel?: string;\n\n  responsiveMenuAriaLabel?: string;\n\n  responsiveMenuBackToRootLabel?: string;\n\n  //  MODAL\n  modalMenuLabel?: string;\n\n  modalAriaLabel?: string;\n  modalCloseLabel?: string;\n\n  children: ReactElement<NavigationRootProps | NavigationLinkProps> | ReactElement<NavigationRootProps | NavigationLinkProps>[];\n}\n\nexport const NavigationBar: FC<NavigationBarProps> = () => <></>;\n","import React, { FC, ReactNode } from 'react';\n\nexport interface NavigationFreestyleProps {\n  children: ReactNode;\n}\n\nexport const NavigationFreestyle: FC<NavigationFreestyleProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface NavigationLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\nexport const NavigationLink: FC<NavigationLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { RelatedNavigationLinkProps } from './related-navigation-link';\nimport { NavigationLinkProps } from './navigation-link';\nimport { NavigationFreestyleProps } from './navigation-freestyle';\n\nexport interface NavigationRootProps extends ComponentProps<'div'> {\n  label: string;\n  linksAriaLabel?: string;\n  relatedLinksAriaLabel?: string;\n  children:\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps | NavigationFreestyleProps>\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps>[];\n}\nexport const NavigationRoot: FC<NavigationRootProps> = () => <></>;\n","import { HeaderChildrenComponents } from '@/components/header/header';\nimport { NavigationBar, NavigationBarProps } from '@/components/header/navigation-bar/navigation-bar';\nimport { NavigationFreestyle, NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedNavigationBarProps = (children?: HeaderChildrenComponents): NavigationBarProps | null => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps>;\n\n  return navigationBarReactElement?.props;\n};\n\nexport const getParsedNavigationBarId = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = getParsedNavigationBarProps(children);\n  return navigationBarReactElement?.id ?? '';\n};\n\nexport const countParsedNavigationItems = (children?: HeaderChildrenComponents): number => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return Children.toArray(navigationBarReactElement?.props.children ?? []).length;\n};\n\nexport const getParsedNavigationItems = (\n  children?: HeaderChildrenComponents\n): ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>[] => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps>;\n\n  return Children.toArray(navigationBarReactElement.props.children)\n    .map((child) => {\n      if (isValidElement<NavigationFreestyleProps>(child) && (child as ReactElement).type === NavigationFreestyle) {\n        return child;\n      }\n\n      if (isValidElement<NavigationRootProps>(child) && (child as ReactElement).type === NavigationRoot) {\n        return child;\n      }\n\n      if (isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink) {\n        return child;\n      }\n\n      return null;\n    })\n    .filter((c) => !!c) as ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>[];\n};\n\n//  #REGION MODAL\n\nexport const getParsedModalMenuLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalMenuLabel ?? '';\n};\n\nexport const getParsedModalAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalAriaLabel ?? '';\n};\n\nexport const getParsedModalCloseLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.modalCloseLabel ?? '';\n};\n\n//  #ENDREGION MODAL\n\n//  #REGION BURGER\n\nexport const getParsedResponsiveMenuLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuLabel ?? '';\n};\n\nexport const getParsedResponsiveMenuAriaLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuAriaLabel ?? '';\n};\n\nexport const getParsedResponsiveMenuBackToRootLabel = (children?: HeaderChildrenComponents): string => {\n  const navigationBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<NavigationBarProps>(child) && (child as ReactElement).type === NavigationBar;\n  }) as ReactElement<NavigationBarProps> | null;\n\n  return navigationBarReactElement?.props.responsiveMenuBackToRootLabel ?? '';\n};\n\nexport const hasNavigationBarInternal = (children?: HeaderChildrenComponents) => {\n  if (!Array.isArray(children)) return false;\n\n  return children.some((child) => child.type === NavigationBar);\n};\n\n//  #ENDREGION BURGER\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface CustomSearchProps extends ComponentProps<'div'> {}\n\nexport const CustomSearch: FC<CustomSearchProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { SearchRelatedLinksProps } from './search-related-links';\nimport { SearchTitleProps } from './search-title';\nimport { SearchInputContainerProps } from './search-input-container';\n\nexport interface DefaultSearchProps extends ComponentProps<'div'> {\n  children:\n    | ReactElement<SearchTitleProps | SearchInputContainerProps | SearchRelatedLinksProps>\n    | ReactElement<SearchTitleProps | SearchInputContainerProps | SearchRelatedLinksProps>[];\n}\n\nexport const DefaultSearch: FC<DefaultSearchProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { CustomSearchProps } from './custom-search';\nimport { DefaultSearchProps } from './default-search';\n\nexport interface SearchProps extends ComponentProps<'div'> {\n  label: string;\n  children: ReactElement<DefaultSearchProps | CustomSearchProps>;\n}\nexport const Search: FC<SearchProps> = () => <></>;\n","import { InputSearchBarProps } from '@/components/input-search-bar';\nimport React, { ComponentProps, FC, ReactElement, ReactNode } from 'react';\n\nexport interface SearchInputContainerProps extends ComponentProps<'div'> {\n  children: ReactElement<InputSearchBarProps> | ReactNode;\n}\n\nexport const SearchInputContainer: FC<SearchInputContainerProps> = () => <></>;\n","import { LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport React, { FC } from 'react';\n\nexport interface SearchRelatedLinkProps extends LinkWrapperProps {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\n\nexport const SearchRelatedLink: FC<SearchRelatedLinkProps> = () => <></>;\n","import React, { ComponentProps, FC, ReactElement } from 'react';\nimport { SearchRelatedLinkProps } from './search-related-link';\nimport { SearchRelatedLinksTitleProps } from './search-related-links-title';\n\nexport interface SearchRelatedLinksProps extends ComponentProps<'div'> {\n  children:\n    | ReactElement<SearchRelatedLinksTitleProps | SearchRelatedLinkProps>\n    | ReactElement<SearchRelatedLinksTitleProps | SearchRelatedLinkProps>[];\n}\n\nexport const SearchRelatedLinks: FC<SearchRelatedLinksProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface SearchRelatedLinksTitleProps extends ComponentProps<'div'> {}\n\nexport const SearchRelatedLinksTitle: FC<SearchRelatedLinksTitleProps> = () => <></>;\n","import React, { ComponentProps, FC } from 'react';\n\nexport interface SearchTitleProps extends ComponentProps<'div'> {}\n\nexport const SearchTitle: FC<SearchTitleProps> = () => <></>;\n","import React from 'react';\nimport './equalizer.css';\n\nexport interface EqualizerProps {}\n\nexport const Equalizer: React.FC<EqualizerProps> = () => {\n  return (\n    <span className=\"equalizer\">\n      <span className=\"bar-container\">\n        <span className=\"equalizer-1\" />\n        <span className=\"equalizer-2\" />\n        <span className=\"equalizer-3\" />\n        <span className=\"equalizer-4\" />\n      </span>\n    </span>\n  );\n};\n","import { Button } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, Ref, useEffect, useId, useRef, useState } from 'react';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { Equalizer } from './equalizer/equalizer';\nimport './input-search-bar.css';\nimport type { ReactNode } from 'react';\n\nexport interface InputSearchBarElement extends HTMLInputElement {\n  /**\n   * React ref object to the search action button.\n   */\n  searchActionButton?: Ref<HTMLButtonElement>;\n  /**\n   * React ref object to the voice action button.\n   */\n  voiceActionButton?: Ref<HTMLButtonElement>;\n}\n\nexport interface InputSearchBarProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * The flag to set if the label is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines if the user specifies a leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Defines if the voice action button is visible.\n   */\n  hasVoiceActionButton?: BooleanProp;\n  /**\n   * Defines if the voice action button is active and displaying the equalizer animation.\n   */\n  isVoiceActive?: BooleanProp;\n  /**\n   * Alternative text for the voice action button.\n   */\n  voiceActionAltText?: string;\n  /**\n   * Alternative text for the search action button.\n   */\n  searchActionAltText?: string;\n  /**\n   * Callback to execute whenever the user activates the microphone button.\n   */\n  onVoiceActivate?: () => void;\n  /**\n   * Callback to execute whenever the user activates the search button.\n   */\n  onSearchActivate?: (term: string) => void;\n  /**\n   * React ref object to the input search bar.\n   */\n  ref?: Ref<InputSearchBarElement>;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputSearchBar: FC<InputSearchBarProps> = ({\n  ref = null,\n  className,\n  label,\n  hideLabel,\n  darkMode,\n  hasIcon,\n  hasHelperText,\n  helperText,\n  icon,\n  hasVoiceActionButton = true,\n  voiceActionAltText = '',\n  searchActionAltText = '',\n  isVoiceActive,\n  onVoiceActivate,\n  onSearchActivate,\n  onChange,\n  ...props\n}) => {\n  const innerRef = useRef<HTMLInputElement>(null);\n  const searchButtonRef = useRef<HTMLButtonElement>(null);\n  const voiceButtonRef = useRef<HTMLButtonElement>(null);\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  useExpandedRef<InputSearchBarElement>(ref, innerRef, {\n    searchActionButton: searchButtonRef,\n    voiceActionButton: voiceButtonRef\n  } as InputSearchBarElement);\n\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentTarget, setCurrentTarget] = useState(propsClone.value);\n\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n    setCurrentTarget(value);\n    onChange?.(evt);\n  };\n\n  const onVoiceButtonClick = () => {\n    onVoiceActivate?.();\n  };\n\n  const onMouseEnterHandler = () => {\n    setActiveState('hover');\n  };\n\n  const onMouseLeaveHandler = () => {\n    setActiveState('default');\n  };\n\n  const onMouseDownHandler = () => {\n    setActiveState('active');\n  };\n\n  const onMouseUpHandler = () => {\n    setActiveState('hover');\n  };\n\n  const onSearchButtonClick = () => {\n    onSearchActivate?.(currentTarget?.toString() ?? '');\n  };\n\n  const inputWrapperClassNames = classNames('agora-input-search-bar', { 'dark-mode': darkMode }, className);\n\n  const labelSectionClasses = classNames('input-label-wrapper flex items-end', {\n    'mb-16': label && !stringToBoolean(hideLabel),\n    'justify-end': !label || stringToBoolean(hideLabel),\n    'justify-between': label && !stringToBoolean(hideLabel)\n  });\n\n  const MIN_SEARCH_LENGTH = propsClone.minLength ? propsClone.minLength - 1 : 3;\n\n  useEffect(() => {\n    setCurrentTarget(propsClone.value);\n  }, [propsClone.value]);\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClassNames}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"input-search-bar-label\">\n          {label}\n        </label>\n      </div>\n      {/* Search input wrapper */}\n      <div className=\"input-search-bar-container\">\n        {hasIcon && (\n          <IconSet state={activeState}>\n            <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name={icon ?? 'no-icon'} />\n            <IconItem aria-hidden className=\"leading-icon-hover\" state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n            <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name={icon ?? 'no-icon'} />\n          </IconSet>\n        )}\n        <input\n          {...propsClone}\n          className=\"flex-grow-[1] outline-none\"\n          ref={innerRef}\n          type=\"text\"\n          disabled={!!propsClone.disabled}\n          onChange={handleChangeEvent}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={stringToBoolean(hasHelperText) && helperText ? `input-search-bar-${propsClone.id}-helper-text` : undefined}\n        />\n\n        <div className=\"actions-container flex flex-row gap-16\">\n          {stringToBoolean(hasVoiceActionButton) && (\n            <Button\n              type=\"button\"\n              ref={voiceButtonRef}\n              className=\"microphone-icon\"\n              appearance=\"link\"\n              aria-label={voiceActionAltText}\n              onClick={onVoiceButtonClick}\n              onMouseEnter={onMouseEnterHandler}\n              onMouseLeave={onMouseLeaveHandler}\n              onMouseUp={onMouseUpHandler}\n              onMouseDown={onMouseDownHandler}\n            >\n              {stringToBoolean(hasVoiceActionButton) && isVoiceActive ? (\n                <Equalizer />\n              ) : (\n                <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                  <IconItem aria-hidden state=\"default\" name=\"agora-line-mic-on\" />\n                  <IconItem aria-hidden state=\"hover\" name=\"agora-solid-mic-on\" />\n                  <IconItem aria-hidden state=\"active\" name=\"agora-line-mic-on\" />\n                </IconSet>\n              )}\n            </Button>\n          )}\n          <Button\n            ref={searchButtonRef}\n            className=\"magnifier-icon\"\n            appearance=\"solid\"\n            iconOnly\n            hasIcon\n            leadingIcon=\"agora-line-search\"\n            leadingIconHover=\"agora-solid-search\"\n            aria-label={searchActionAltText}\n            onClick={onSearchButtonClick}\n            disabled={(currentTarget?.toString()?.length ?? 0) <= MIN_SEARCH_LENGTH}\n          />\n        </div>\n      </div>\n      {/* Helper Text */}\n      {stringToBoolean(hasHelperText) && helperText && (\n        <HelperText id={`input-search-bar-${propsClone.id}-helper-text`} helperText={helperText} darkMode={darkMode} />\n      )}\n    </div>\n  );\n};\n\nexport { InputSearchBar };\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { CustomSearch, CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { DefaultSearch, DefaultSearchProps } from '@/components/header/general-bar/search/default-search';\nimport { Search, SearchProps } from '@/components/header/general-bar/search/search';\nimport { SearchInputContainer, SearchInputContainerProps } from '@/components/header/general-bar/search/search-input-container';\nimport { SearchRelatedLink, SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinks, SearchRelatedLinksProps } from '@/components/header/general-bar/search/search-related-links';\nimport { SearchRelatedLinksTitle, SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitle, SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport { InputSearchBar, InputSearchBarProps } from '@/components/input-search-bar';\nimport React, { Children, isValidElement, ReactElement, ReactNode } from 'react';\n\nexport const hasSearchProps = (children?: HeaderChildrenComponents): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    const searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n\n    return !!searchPropsElement;\n  }\n\n  return false;\n};\n\nexport const getSearchButtonLabel = (children?: HeaderChildrenComponents): string => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  return searchPropsElement?.props.label ?? '';\n};\n\nexport const hasDefaultSearchProps = (children?: HeaderChildrenComponents): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement && isValidElement<DefaultSearchProps>(searchPropsElement?.props.children)) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n\n    return !!defaultSearchPropsElement;\n  }\n\n  return false;\n};\n\nexport const getParsedDefaultSearchTitle = (children?: HeaderChildrenComponents): SearchTitleProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchTitleElem: ReactElement<SearchTitleProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchTitleElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchTitleProps>(child) && (child as ReactElement).type === SearchTitle;\n    }) as ReactElement<SearchTitleProps> | null;\n  }\n\n  return defaultSearchTitleElem?.props as ReactElement<SearchTitleProps> | null;\n};\n\nexport const getParsedDefaultSearchInputBar = (children?: HeaderChildrenComponents): InputSearchBarProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchInputSearchBarElement: ReactElement<SearchInputContainerProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchInputSearchBarElement = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchInputContainerProps>(child) && (child as ReactElement).type === SearchInputContainer;\n    }) as ReactElement<SearchInputContainerProps> | null;\n  }\n\n  let inputSearchBarElement: ReactElement<InputSearchBarProps> | null = null;\n\n  if (defaultSearchInputSearchBarElement) {\n    inputSearchBarElement = Children.toArray(defaultSearchInputSearchBarElement.props.children).find((child) => {\n      return isValidElement<InputSearchBarProps>(child) && (child as ReactElement).type === InputSearchBar;\n    }) as ReactElement<InputSearchBarProps>;\n  }\n\n  return inputSearchBarElement?.props ?? null;\n};\n\nexport const getParsedCustomSearchInputBar = (children?: HeaderChildrenComponents): ReactNode => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchInputSearchBarElement: ReactElement<SearchInputContainerProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchInputSearchBarElement = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchInputContainerProps>(child) && (child as ReactElement).type === SearchInputContainer;\n    }) as ReactElement<SearchInputContainerProps> | null;\n  }\n\n  return defaultSearchInputSearchBarElement?.props.children as ReactElement<SearchInputContainerProps> | null;\n};\n\nexport const getParsedDefaultSearchRelatedLinksTitle = (children?: HeaderChildrenComponents): SearchRelatedLinksTitleProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchRelatedLinksElem: ReactElement<SearchRelatedLinksProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchRelatedLinksElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksProps>(child) && (child as ReactElement).type === SearchRelatedLinks;\n    }) as ReactElement<SearchRelatedLinksProps> | null;\n  }\n\n  let defaultSearchRelatedLinksTitleElem: ReactElement<SearchRelatedLinksTitleProps> | null = null;\n  if (defaultSearchRelatedLinksElem) {\n    defaultSearchRelatedLinksTitleElem = Children.toArray(defaultSearchRelatedLinksElem.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksTitleProps>(child) && (child as ReactElement).type === SearchRelatedLinksTitle;\n    }) as ReactElement<SearchRelatedLinksTitleProps> | null;\n  }\n\n  return defaultSearchRelatedLinksTitleElem?.props as ReactElement<SearchRelatedLinksTitleProps> | null;\n};\n\nexport const getParsedDefaultSearchRelatedLinks = (children?: HeaderChildrenComponents): SearchRelatedLinkProps[] => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let defaultSearchPropsElement: ReactElement<DefaultSearchProps> | null = null;\n  if (searchPropsElement) {\n    defaultSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<DefaultSearchProps>(child) && (child as ReactElement).type === DefaultSearch;\n    }) as ReactElement<DefaultSearchProps> | null;\n  }\n\n  let defaultSearchRelatedLinksElem: ReactElement<SearchRelatedLinksProps> | null = null;\n  if (defaultSearchPropsElement) {\n    defaultSearchRelatedLinksElem = Children.toArray(defaultSearchPropsElement.props.children).find((child) => {\n      return isValidElement<SearchRelatedLinksProps>(child) && (child as ReactElement).type === SearchRelatedLinks;\n    }) as ReactElement<SearchRelatedLinksProps> | null;\n  }\n\n  if (defaultSearchRelatedLinksElem) {\n    return Children.toArray(defaultSearchRelatedLinksElem.props.children)\n      .map((child) => {\n        if (isValidElement<SearchRelatedLinkProps>(child) && (child as ReactElement).type === SearchRelatedLink) {\n          return child.props;\n        }\n\n        return null;\n      })\n      .filter((c) => !!c);\n  }\n\n  return [];\n};\n\nexport const hasCustomSearchProps = (children?: HeaderChildrenComponents): boolean => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let customSearchPropsElement: ReactElement<CustomSearchProps> | null = null;\n  if (searchPropsElement && isValidElement<CustomSearchProps>(searchPropsElement.props.children)) {\n    customSearchPropsElement = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<CustomSearchProps>(child) && (child as ReactElement).type === CustomSearch;\n    }) as ReactElement<CustomSearchProps> | null;\n  }\n\n  return !!customSearchPropsElement;\n};\n\nexport const getParsedCustomSearchProps = (children?: HeaderChildrenComponents): CustomSearchProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let searchPropsElement: ReactElement<SearchProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    searchPropsElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<SearchProps>(child) && (child as ReactElement).type === Search;\n    }) as ReactElement<SearchProps> | null;\n  }\n\n  let customSearchProps: ReactElement<CustomSearchProps> | null = null;\n  if (searchPropsElement) {\n    customSearchProps = Children.toArray(searchPropsElement.props.children).find((child) => {\n      return isValidElement<CustomSearchProps>(child) && (child as ReactElement).type === CustomSearch;\n    }) as ReactElement<CustomSearchProps> | null;\n  }\n\n  return customSearchProps?.props as ReactElement<CustomSearchProps> | null;\n};\n","import { ButtonProps } from '@/components/button';\nimport React, { FC, ReactElement } from 'react';\nimport { UnauthenticatedLinkProps } from './unauthenticated-link';\n\nexport interface UnauthenticatedProps extends ButtonProps {\n  label?: string;\n  children: ReactElement<UnauthenticatedLinkProps> | ReactElement<UnauthenticatedLinkProps>[];\n}\nexport const Unauthenticated: FC<UnauthenticatedProps> = () => <></>;\n","import { BooleanProp } from '@/models';\nimport React, { ComponentProps, FC, ReactElement } from 'react';\n\nexport interface UnauthenticatedLinkProps extends ComponentProps<'div'> {\n  /**\n   * Defines if uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n  /**\n   * Children\n   */\n  children: ReactElement<HTMLAnchorElement>;\n}\nexport const UnauthenticatedLink: FC<UnauthenticatedLinkProps> = () => <></>;\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { Unauthenticated, UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLink, UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, isValidElement, ReactElement } from 'react';\n\nexport const getParsedUnauthenticatedProps = (children?: HeaderChildrenComponents): UnauthenticatedProps | null => {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  let unAuthenticatedReactElement: ReactElement<UnauthenticatedProps> | null = null;\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    unAuthenticatedReactElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<UnauthenticatedProps>(child) && (child as ReactElement).type === Unauthenticated;\n    }) as ReactElement<UnauthenticatedProps> | null;\n  }\n\n  return unAuthenticatedReactElement ? unAuthenticatedReactElement.props : null;\n};\n\nexport const getParsedUnauthenticatedLinks = (children?: HeaderChildrenComponents): UnauthenticatedLinkProps[] => {\n  const unauthenticatedProps = getParsedUnauthenticatedProps(children);\n\n  if (unauthenticatedProps?.children) {\n    return Children.toArray(unauthenticatedProps.children)\n      .map((child) => {\n        if (isValidElement<UnauthenticatedLinkProps>(child) && (child as ReactElement).type === UnauthenticatedLink) {\n          return child.props;\n        }\n      })\n      .filter((c) => !!c);\n  }\n\n  return [];\n};\n","import React, { FC } from 'react';\nimport { InternalDirectLinkProps } from '../../internals/general-bar/direct-link/internal-direct-link';\n\nexport interface DirectLinkProps extends InternalDirectLinkProps {}\n\nexport const DirectLink: FC<DirectLinkProps> = () => <></>;\n","import React, { FC } from 'react';\nimport { InternalDirectLinkGoBackProps } from '../../internals/general-bar/direct-link/internal-direct-link-go-back';\n\nexport interface DirectLinkGoBackProps extends InternalDirectLinkGoBackProps {}\n\nexport const DirectLinkGoBack: FC<DirectLinkGoBackProps> = () => <></>;\n","import React, { FC } from 'react';\nimport { InternalDirectLinkTitleProps } from '../../internals/general-bar/direct-link/internal-direct-link-title';\n\nexport interface DirectLinkTitleProps extends InternalDirectLinkTitleProps {}\n\nexport const DirectLinkTitle: FC<DirectLinkTitleProps> = () => <></>;\n","import React, { FC } from 'react';\nimport { InternalDirectLinkShortDescriptionProps } from '../../internals/general-bar/direct-link/internal-direct-link-short-description';\n\nexport interface DirectLinkShortDescriptionProps extends InternalDirectLinkShortDescriptionProps {}\n\nexport const DirectLinkShortDescription: FC<DirectLinkShortDescriptionProps> = () => <></>;\n","import React, { FC } from 'react';\nimport { InternalDirectLinkSectionTitleProps } from '../../internals/general-bar/direct-link/internal-direct-link-section-title';\n\nexport interface DirectLinkSectionTitleProps extends InternalDirectLinkSectionTitleProps {}\n\nexport const DirectLinkSectionTitle: FC<DirectLinkSectionTitleProps> = () => <></>;\n","import React, { FC } from 'react';\nimport { InternalDirectLinkAnchorProps } from '../../internals/general-bar/direct-link/internal-direct-link-anchor';\n\nexport interface DirectLinkAnchorProps extends InternalDirectLinkAnchorProps {}\n\nexport const DirectLinkAnchor: FC<DirectLinkAnchorProps> = () => <></>;\n","import { DrawerElement } from '@/components/drawer';\nimport { InternalNavigationBurgerPanelElement } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { createContext, RefObject, useContext } from 'react';\nimport { MenuTypeEnum } from './menu-type.enum';\n\nexport type HeaderMenuContextRef =\n  | PanelMenuElement\n  | HTMLDivElement\n  | DrawerElement\n  | ModalMenuElement\n  | InternalNavigationBurgerPanelElement\n  | null;\n\nexport interface HeaderMenuContextProps {\n  menuRefMap: Map<MenuTypeEnum | string, RefObject<HeaderMenuContextRef>>;\n\n  collapseAllMenus: () => void;\n  collapseMenu: (id: MenuTypeEnum | string, focusController: boolean) => void;\n  expandMenu: (id: MenuTypeEnum | string) => void;\n  focusMenu: (id: MenuTypeEnum | string) => void;\n  hasExpandedMenu: () => boolean;\n  backSubmenu: (id: MenuTypeEnum | string) => void;\n  openSubmenu: (id: MenuTypeEnum | string) => void;\n  hasOpenSubmenu: () => boolean;\n  isScrolling: () => boolean;\n}\n\nexport const HeaderMenuContext = createContext<HeaderMenuContextProps>({} as HeaderMenuContextProps);\n\nexport const useHeaderMenuContext = (): HeaderMenuContextProps => {\n  return useContext(HeaderMenuContext);\n};\n","export enum MenuTypeEnum {\n  Header = 'Header',\n  Areas = 'Areas',\n  Search = 'Search',\n  Languages = 'Languages',\n  Authenticated = 'Authenticated',\n  Drawer = 'Drawer',\n  Unauthenticated = 'Unauthenticated',\n  Link = 'Link',\n  RootLink = 'RootLink',\n  MenuBurger = 'MenuBurger',\n  Modal = 'Modal',\n  NavigationList = 'NavigationList',\n  NavigationBurgerLayout = 'NavigationBurgerLayout',\n  GeneralBarPortal = 'GeneralBarPortal',\n  NavigationBarPortal = 'NavigationBarPortal',\n  DirectLink = 'DirectLink'\n}\n","import { Button, ButtonProps } from '@/components/button';\nimport React, { FC } from 'react';\nimport { useHeaderDataContext } from '../../context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport { useHeaderMenuContext } from '../../context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '../../context/menu-context/menu-type.enum';\nimport { PanelMenuElement } from '../../shared/panel-menu/panel-menu';\n\nimport './internal-direct-link-go-back.css';\n\nexport interface InternalDirectLinkGoBackProps extends ButtonProps {}\n\nexport const InternalDirectLinkGoBack: FC<InternalDirectLinkGoBackProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const panelRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.DirectLink) as React.RefObject<PanelMenuElement>;\n\n  const directLinkGoBackClassName = classNames('direct-link-go-back', props.className);\n\n  const newProps = { ...props };\n  delete newProps.className;\n\n  return (\n    <Button\n      hasIcon\n      variant=\"neutral\"\n      appearance=\"link\"\n      className={directLinkGoBackClassName}\n      darkMode={headerDataContext.darkMode}\n      leadingIcon=\"agora-line-arrow-left-anchor\"\n      leadingIconHover=\"agora-solid-arrow-left-anchor\"\n      {...newProps}\n      onClick={(event) => {\n        panelRef?.current?.collapse?.();\n\n        if (props.onClick) {\n          props.onClick(event);\n        }\n      }}\n    >\n      {newProps?.children}\n    </Button>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport { useHeaderDataContext } from '../../context/data-context/header-data-context';\n\nimport './internal-direct-link-title.css';\n\nexport interface InternalDirectLinkTitleProps extends ComponentProps<'div'> {\n  children: ReactNode;\n}\n\nexport const InternalDirectLinkTitle: FC<InternalDirectLinkTitleProps> = ({ children }) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const directLinkTitleClassName = classNames('direct-link-title', {\n    '!text-[var(--color-primary-300)]': headerDataContext.darkMode\n  });\n\n  return <span className={directLinkTitleClassName}>{children}</span>;\n};\n","import React, { ComponentProps, FC, ReactNode } from 'react';\nimport { useHeaderDataContext } from '../../context/data-context/header-data-context';\nimport classNames from 'classnames';\n\nimport './internal-direct-link-short-description.css';\n\nexport interface InternalDirectLinkShortDescriptionProps extends ComponentProps<'div'> {\n  children: ReactNode;\n}\n\nexport const InternalDirectLinkShortDescription: FC<InternalDirectLinkShortDescriptionProps> = ({ children }) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const directLinkShortDescriptionClassName = classNames('direct-link-short-description', {\n    '!text-[var(--color-primary-300)]': headerDataContext.darkMode\n  });\n\n  return <span className={directLinkShortDescriptionClassName}>{children}</span>;\n};\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nexport interface InternalDirectLinkSectionTitleProps extends ComponentProps<'div'> {\n  children: ReactNode;\n}\n\nimport './internal-direct-link-section-title.css';\n\nexport const InternalDirectLinkSectionTitle: FC<InternalDirectLinkSectionTitleProps> = ({ children }) => {\n  return <span className=\"direct-link-section-title\">{children}</span>;\n};\n","import React, { FC } from 'react';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { useHeaderDataContext } from '../../context/data-context/header-data-context';\nimport classNames from 'classnames';\n\nimport './internal-direct-link-anchor.css';\n\nexport interface InternalDirectLinkAnchorProps extends AnchorProps {}\n\nexport const InternalDirectLinkAnchor: FC<InternalDirectLinkAnchorProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const darkMode = headerDataContext.darkMode;\n\n  const directLinkAnchorItemClassName = classNames('direct-link-anchor-item', {\n    'dark-mode': darkMode\n  });\n\n  return (\n    <li className={directLinkAnchorItemClassName}>\n      <Anchor darkMode={darkMode} {...props}>\n        {props.children}\n      </Anchor>\n    </li>\n  );\n};\n","import { GeneralBar, GeneralBarProps } from '@/components/header/general-bar/general-bar';\nimport { HeaderChildrenComponents } from '@/components/header/header';\nimport React, { Children, FC, isValidElement, ReactElement, ReactNode } from 'react';\nimport { InternalDirectLinkProps } from '../../../general-bar/direct-link/internal-direct-link';\n\nimport { DirectLink, DirectLinkProps } from '@/components/header/general-bar/direct-link/direct-link';\nimport { DirectLinkGoBack } from '@/components/header/general-bar/direct-link/direct-link-go-back';\nimport { DirectLinkTitle } from '@/components/header/general-bar/direct-link/direct-link-title';\nimport { DirectLinkShortDescription } from '@/components/header/general-bar/direct-link/direct-link-short-description';\nimport { DirectLinkSectionTitle } from '@/components/header/general-bar/direct-link/direct-link-section-title';\nimport { DirectLinkAnchor, DirectLinkAnchorProps } from '@/components/header/general-bar/direct-link/direct-link-anchor';\n\nimport { InternalDirectLinkGoBack } from '../../../general-bar/direct-link/internal-direct-link-go-back';\nimport { InternalDirectLinkTitle } from '../../../general-bar/direct-link/internal-direct-link-title';\nimport { InternalDirectLinkShortDescription } from '../../../general-bar/direct-link/internal-direct-link-short-description';\nimport { InternalDirectLinkSectionTitle } from '../../../general-bar/direct-link/internal-direct-link-section-title';\nimport { InternalDirectLinkAnchor } from '../../../general-bar/direct-link/internal-direct-link-anchor';\n\nexport type DirectLinksChildren = {\n  internalDirectLinkGoBackElement: ReactElement | null;\n  internalDirectLinkTitleElement: ReactElement | null;\n  InternalDirectLinkShortDescription: ReactElement | null;\n  internalDirectLinkSectionTitleElements: ReactElement | null;\n  internalDirectLinkAnchorElements: ReactElement[] | null;\n};\n\nexport interface GetDirectLinksProps extends Omit<InternalDirectLinkProps, 'children'> {\n  directLinksChildren: DirectLinksChildren;\n}\n\nfunction getFromDirectLinkChildren<T>(children: ReactNode, what: FC<T>, all?: boolean): ReactElement<T> | null {\n  if (!children || !what) {\n    return null;\n  }\n\n  if (all) {\n    const foundElements = Children.toArray(children).filter((child) => {\n      return isValidElement(child) && (child as ReactElement).type === what;\n    }) as ReactElement<T>[];\n\n    return foundElements.length > 0 ? (foundElements as unknown as ReactElement<T>) : null;\n  }\n\n  const foundElement = Children.toArray(children).find((child) => {\n    return isValidElement(child) && (child as ReactElement).type === what;\n  }) as ReactElement<T> | null;\n\n  return foundElement || null;\n}\n\nfunction getDirectLinksChildren(children?: ReactNode): DirectLinksChildren {\n  let directLinkGoBackElement = getFromDirectLinkChildren(children, DirectLinkGoBack);\n  let directLinkTitleElement = getFromDirectLinkChildren(children, DirectLinkTitle);\n  let directLinkShortDescriptionElement = getFromDirectLinkChildren(children, DirectLinkShortDescription);\n  let directLinkSectionTitleElement = getFromDirectLinkChildren(children, DirectLinkSectionTitle);\n  let directLinkAnchorElements = getFromDirectLinkChildren(children, DirectLinkAnchor, true) as ReactElement[] | null;\n\n  if (directLinkGoBackElement) {\n    directLinkGoBackElement = <InternalDirectLinkGoBack {...directLinkGoBackElement.props} />;\n  }\n\n  if (directLinkTitleElement) {\n    directLinkTitleElement = <InternalDirectLinkTitle {...directLinkTitleElement.props} />;\n  }\n\n  if (directLinkShortDescriptionElement) {\n    directLinkShortDescriptionElement = <InternalDirectLinkShortDescription {...directLinkShortDescriptionElement.props} />;\n  }\n\n  if (directLinkSectionTitleElement) {\n    directLinkSectionTitleElement = <InternalDirectLinkSectionTitle {...directLinkSectionTitleElement.props} />;\n  }\n\n  if (directLinkAnchorElements) {\n    directLinkAnchorElements = directLinkAnchorElements.map((anchorElement) => (\n      <InternalDirectLinkAnchor {...(anchorElement.props as DirectLinkAnchorProps)} key={anchorElement.key} />\n    ));\n  }\n\n  return {\n    internalDirectLinkGoBackElement: directLinkGoBackElement,\n    internalDirectLinkTitleElement: directLinkTitleElement,\n    InternalDirectLinkShortDescription: directLinkShortDescriptionElement,\n    internalDirectLinkSectionTitleElements: directLinkSectionTitleElement,\n    internalDirectLinkAnchorElements: directLinkAnchorElements\n  };\n}\n\nfunction getDirectLinks(children?: HeaderChildrenComponents) {\n  const generalBarReactElement = Children.toArray(children).find((child) => {\n    return isValidElement<GeneralBarProps>(child) && (child as ReactElement).type === GeneralBar;\n  });\n\n  if (generalBarReactElement && isValidElement<GeneralBarProps>(generalBarReactElement)) {\n    const directLinkElement = Children.toArray(generalBarReactElement.props.children).find((child) => {\n      return isValidElement<DirectLinkProps>(child) && (child as ReactElement).type === DirectLink;\n    }) as ReactElement<DirectLinkProps> | null;\n\n    return directLinkElement;\n  }\n\n  return null;\n}\n\nexport function hasDirectLinksProps(children?: HeaderChildrenComponents): boolean {\n  return !!getDirectLinks(children);\n}\n\nexport function getDirectLinksPropsInternal(children?: HeaderChildrenComponents): GetDirectLinksProps {\n  const directLinkElement = getDirectLinks(children);\n\n  if (!directLinkElement) {\n    return {\n      text: null,\n      logo: null,\n      directLinksChildren: {\n        internalDirectLinkGoBackElement: null,\n        internalDirectLinkTitleElement: null,\n        InternalDirectLinkShortDescription: null,\n        internalDirectLinkSectionTitleElements: null,\n        internalDirectLinkAnchorElements: null\n      }\n    };\n  }\n\n  return {\n    text: directLinkElement?.props?.text,\n    logo: directLinkElement?.props?.logo,\n    directLinksChildren: getDirectLinksChildren(directLinkElement?.props?.children)\n  };\n}\n","import { AuthenticatedProps } from '@/components/header/general-bar/authenticated/authenticated';\nimport { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { AuthenticatedFooterActionProps } from '@/components/header/general-bar/authenticated/authenticated-footer-action';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { CustomSearchProps } from '@/components/header/general-bar/search/custom-search';\nimport { SearchRelatedLinkProps } from '@/components/header/general-bar/search/search-related-link';\nimport { SearchRelatedLinksTitleProps } from '@/components/header/general-bar/search/search-related-links-title';\nimport { SearchTitleProps } from '@/components/header/general-bar/search/search-title';\nimport { UnauthenticatedProps } from '@/components/header/general-bar/unauthenticated/unauthenticated';\nimport { UnauthenticatedLinkProps } from '@/components/header/general-bar/unauthenticated/unauthenticated-link';\nimport { HeaderProps } from '@/components/header/header';\nimport { InternalAreaProps } from '@/components/header/internals/general-bar/areas/internal-area';\nimport { NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { InputSearchBarProps } from '@/components/input-search-bar';\nimport { stringToBoolean } from '@/utils';\nimport { ReactElement, ReactNode } from 'react';\nimport { HeaderDataContextProps } from './header-data-context';\nimport {\n  getParseAreasAriaLabel,\n  getParsedActiveAreaProps,\n  getParsedAvailableAreaProps,\n  getParsedOnAreaChange,\n  hasVisibleAreasProps\n} from './utils/areas-utils';\nimport {\n  getParsedAuthenticatedBodyLinkProps,\n  getParsedAuthenticatedFooterActionProps,\n  getParsedAuthenticatedHeaderProps,\n  getParsedAuthenticatedProps\n} from './utils/authenticated-utils';\nimport { getParsedInstitutionalPhrase, getParsedLogo } from './utils/brand-utils';\nimport { getParsedGeneralBarAriaLabel } from './utils/general-utils';\nimport {\n  getParsedAvailableLanguageProps,\n  getParsedCheckedLanguageProps,\n  getParsedLanguagesAriaLabel,\n  getParsedOnLanguageChange,\n  hasLanguagesProps\n} from './utils/languages-utils';\nimport {\n  countParsedNavigationItems,\n  getParsedModalAriaLabel,\n  getParsedModalCloseLabel,\n  getParsedModalMenuLabel,\n  getParsedNavigationBarId,\n  getParsedNavigationItems,\n  getParsedResponsiveMenuAriaLabel,\n  getParsedResponsiveMenuBackToRootLabel,\n  getParsedResponsiveMenuLabel,\n  hasNavigationBarInternal\n} from './utils/navigation-utils';\nimport {\n  getParsedCustomSearchInputBar,\n  getParsedCustomSearchProps,\n  getParsedDefaultSearchInputBar,\n  getParsedDefaultSearchRelatedLinks,\n  getParsedDefaultSearchRelatedLinksTitle,\n  getParsedDefaultSearchTitle,\n  getSearchButtonLabel,\n  hasCustomSearchProps,\n  hasDefaultSearchProps,\n  hasSearchProps\n} from './utils/search-utils';\nimport { getParsedUnauthenticatedLinks, getParsedUnauthenticatedProps } from './utils/unauthenticated-utils';\nimport { NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\n\nimport { getDirectLinksPropsInternal, hasDirectLinksProps } from './utils/direct-link-utils';\n\nexport const useHeaderDataController = (props: HeaderProps): HeaderDataContextProps => {\n  const { darkMode, maxNavigationItems = 5, children } = props;\n\n  const getGeneralBarAriaLabel = (): string => {\n    return getParsedGeneralBarAriaLabel(children);\n  };\n\n  const getInstitutionalPhrase = (): ReactNode => {\n    return getParsedInstitutionalPhrase(children);\n  };\n\n  const getLogoImage = (): ReactNode => {\n    return getParsedLogo(children);\n  };\n\n  const hasVisibleAreas = (): boolean => {\n    return hasVisibleAreasProps(children);\n  };\n\n  const getAreasAriaLabel = (): string => {\n    return getParseAreasAriaLabel(children);\n  };\n\n  const getAreas = (): InternalAreaProps[] => {\n    return getParsedAvailableAreaProps(children);\n  };\n\n  const getActiveArea = (): InternalAreaProps | undefined => {\n    return getParsedActiveAreaProps(children);\n  };\n\n  const onAreaChange = (area: string) => {\n    const handler = getParsedOnAreaChange(children);\n    return handler?.(area);\n  };\n\n  const hasLanguages = (): boolean => {\n    return hasLanguagesProps(children);\n  };\n\n  const getLanguagesAriaLabel = () => {\n    return getParsedLanguagesAriaLabel(children);\n  };\n\n  const onLanguageChange = (lang: string) => {\n    const handler = getParsedOnLanguageChange(children);\n    return handler?.(lang);\n  };\n\n  const getCheckedLanguage = (): LanguageProps[] => {\n    return getParsedCheckedLanguageProps(children);\n  };\n\n  const getLanguages = (): LanguageProps[] => {\n    return getParsedAvailableLanguageProps(children);\n  };\n\n  const getAuthenticated = (): AuthenticatedProps | null => {\n    return getParsedAuthenticatedProps(children);\n  };\n\n  const getAuthenticatedHeader = (): AuthenticatedHeaderProps | null => {\n    return getParsedAuthenticatedHeaderProps(children);\n  };\n\n  const getAuthenticatedBodyLinks = (): AuthenticatedBodyLinkProps[] => {\n    return getParsedAuthenticatedBodyLinkProps(children);\n  };\n\n  const getAuthenticatedFooterActions = (): AuthenticatedFooterActionProps[] => {\n    return getParsedAuthenticatedFooterActionProps(children);\n  };\n\n  const getUnauthenticated = (): UnauthenticatedProps | null => {\n    return getParsedUnauthenticatedProps(children);\n  };\n\n  const getUnauthenticatedLinks = (): UnauthenticatedLinkProps[] => {\n    return getParsedUnauthenticatedLinks(children);\n  };\n\n  const hasSearch = (): boolean => {\n    return hasSearchProps(children);\n  };\n\n  const hasDirectLinks = (): boolean => {\n    return hasDirectLinksProps(children);\n  };\n\n  const getDirectLinksProps = () => {\n    return getDirectLinksPropsInternal(children);\n  };\n\n  const getSearchLabel = (): string => {\n    return getSearchButtonLabel(children);\n  };\n\n  const hasDefaultSearch = (): boolean => {\n    return hasDefaultSearchProps(children);\n  };\n\n  const getDefaultSearchTitle = (): SearchTitleProps | null => {\n    return getParsedDefaultSearchTitle(children);\n  };\n\n  const getDefaultSearchInputBar = (): InputSearchBarProps | null => {\n    return getParsedDefaultSearchInputBar(children);\n  };\n\n  const getCustomSearchInputBar = (): ReactNode => {\n    return getParsedCustomSearchInputBar(children);\n  };\n\n  const getDefaultSearchRelatedLinksTitle = (): SearchRelatedLinksTitleProps | null => {\n    return getParsedDefaultSearchRelatedLinksTitle(children);\n  };\n\n  const getDefaultSearchRelatedLinks = (): SearchRelatedLinkProps[] => {\n    return getParsedDefaultSearchRelatedLinks(children);\n  };\n\n  const hasCustomSearch = (): boolean => {\n    return hasCustomSearchProps(children);\n  };\n\n  const getCustomSearch = (): CustomSearchProps | null => {\n    return getParsedCustomSearchProps(children);\n  };\n\n  const countNavigationItems = (): number => {\n    return countParsedNavigationItems(children);\n  };\n\n  const getNavigationId = (): string => {\n    return getParsedNavigationBarId(children);\n  };\n\n  //#region RESPONSIVE\n  const getResponsiveMenuLabel = () => {\n    return getParsedResponsiveMenuLabel(children);\n  };\n  const getResponsiveMenuAriaLabel = () => {\n    return getParsedResponsiveMenuAriaLabel(children);\n  };\n  const getResponsiveMenuBackToRootLabel = () => {\n    return getParsedResponsiveMenuBackToRootLabel(children);\n  };\n  //#endregion RESPONSIVE\n\n  //#region MODAL\n\n  const getModalMenuLabel = () => {\n    return getParsedModalMenuLabel(children);\n  };\n  const getModalAriaLabel = () => {\n    return getParsedModalAriaLabel(children);\n  };\n  const getModalCloseLabel = () => {\n    return getParsedModalCloseLabel(children);\n  };\n\n  //#endregion MODAL\n\n  const hasNavigationBar = () => {\n    return hasNavigationBarInternal(children);\n  };\n\n  const getNavigationItems = (): ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>[] => {\n    return getParsedNavigationItems(children);\n  };\n\n  return {\n    getGeneralBarAriaLabel,\n\n    getInstitutionalPhrase,\n    getLogoImage,\n\n    hasVisibleAreas,\n    getAreasAriaLabel,\n    getAreas,\n    getActiveArea,\n    onAreaChange,\n\n    hasLanguages,\n    getLanguagesAriaLabel,\n    getCheckedLanguage,\n    getLanguages,\n    onLanguageChange,\n\n    getAuthenticated,\n    getAuthenticatedHeader,\n    getAuthenticatedBodyLinks,\n    getAuthenticatedFooterActions,\n\n    getUnauthenticated,\n    getUnauthenticatedLinks,\n\n    hasSearch,\n    getSearchLabel,\n    hasDefaultSearch,\n    getDefaultSearchTitle,\n    getDefaultSearchInputBar,\n    getCustomSearchInputBar,\n    getDefaultSearchRelatedLinksTitle,\n    getDefaultSearchRelatedLinks,\n\n    hasCustomSearch,\n    getCustomSearch,\n    hasDirectLinks,\n    getDirectLinksProps,\n\n    countNavigationItems,\n    maxNavigationItems,\n\n    getNavigationId,\n    hasNavigationBar,\n    getNavigationItems,\n    getResponsiveMenuLabel,\n    getResponsiveMenuAriaLabel,\n    getResponsiveMenuBackToRootLabel,\n    getModalMenuLabel,\n    getModalAriaLabel,\n    getModalCloseLabel,\n\n    darkMode: stringToBoolean(darkMode)\n  };\n};\n","import { HeaderElement } from '@/components/header/header';\nimport { HeaderMenuContextProps } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { ForwardedRef, useImperativeHandle, useRef } from 'react';\n\nexport const useHeaderExternalController = (ref: ForwardedRef<HeaderElement>, headerMenuContext: HeaderMenuContextProps) => {\n  const headerMenuContextRef = useRef(headerMenuContext);\n  headerMenuContextRef.current = headerMenuContext;\n\n  useImperativeHandle(ref, () => {\n    return {\n      focusActiveArea: () => {\n        const menuRef = headerMenuContextRef.current.menuRefMap.get(MenuTypeEnum.Areas);\n        if (menuRef?.current) {\n          const activeAreaBtn = (menuRef.current as HTMLElement).querySelector('.area.selected');\n          if (activeAreaBtn) {\n            (activeAreaBtn as HTMLElement).focus();\n          }\n        }\n      },\n      setActiveArea: (areaValue: string) => {\n        const menuRef = headerMenuContextRef.current.menuRefMap.get(MenuTypeEnum.Areas);\n        if (menuRef?.current) {\n          const areaButtons = (menuRef.current as HTMLElement).querySelectorAll('.area');\n          areaButtons.forEach((elem) => {\n            const btn = elem as HTMLButtonElement;\n            if (btn.getAttribute('data-value') === areaValue) {\n              btn.focus();\n              btn.click();\n            }\n          });\n        }\n      },\n\n      focusLanguages: () => headerMenuContextRef.current.focusMenu(MenuTypeEnum.Languages),\n      openLanguages: () => headerMenuContextRef.current.expandMenu(MenuTypeEnum.Languages),\n\n      focusSearch: () => headerMenuContextRef.current.focusMenu(MenuTypeEnum.Search),\n      openSearch: () => headerMenuContextRef.current.expandMenu(MenuTypeEnum.Search),\n\n      focusUnauthenticated: () => headerMenuContextRef.current.focusMenu(MenuTypeEnum.Unauthenticated),\n      openUnauthenticated: () => headerMenuContextRef.current.expandMenu(MenuTypeEnum.Unauthenticated),\n\n      focusAuthenticated: () => headerMenuContextRef.current.focusMenu(MenuTypeEnum.Authenticated),\n      openAuthenticated: () => headerMenuContextRef.current.expandMenu(MenuTypeEnum.Authenticated),\n\n      focusBurgerMenu: () => headerMenuContextRef.current.focusMenu(MenuTypeEnum.MenuBurger),\n      openBurgerMenu: () => headerMenuContextRef.current.expandMenu(MenuTypeEnum.MenuBurger),\n\n      focusModalMenu: () => headerMenuContextRef.current.focusMenu(MenuTypeEnum.Modal),\n      openModalMenu: () => headerMenuContextRef.current.expandMenu(MenuTypeEnum.Modal),\n\n      focusNavigationMenuOption: (index: number) => {\n        const navigationPanelsKeys: string[] = Array.from(headerMenuContextRef.current.menuRefMap.keys()).filter(\n          (k: string) => k.indexOf(MenuTypeEnum.NavigationList) >= 0\n        );\n        headerMenuContextRef.current.focusMenu(navigationPanelsKeys[index]);\n      },\n      openNavigationMenuOption: (index: number) => {\n        const navigationPanelsKeys: string[] = Array.from(headerMenuContextRef.current.menuRefMap.keys()).filter(\n          (k: string) => k.indexOf(MenuTypeEnum.NavigationList) >= 0\n        );\n        headerMenuContextRef.current.expandMenu(navigationPanelsKeys[index]);\n      },\n\n      closeAll: () => headerMenuContextRef.current.collapseAllMenus()\n    } as HeaderElement;\n  }, []);\n};\n","import { useEffect, useRef, useState } from 'react';\n\nconst useScrolling = () => {\n  const [scrolling, setScrolling] = useState(false);\n\n  const scrollingTimerRef = useRef<NodeJS.Timeout | null>(null);\n\n  useEffect(() => {\n    const evaluateScrollingValue = () => {\n      setScrolling(window.scrollY > 0);\n    };\n\n    const listener = () => {\n      if (scrollingTimerRef.current !== null) {\n        return;\n      }\n\n      scrollingTimerRef.current = setTimeout(() => {\n        scrollingTimerRef.current = null;\n        evaluateScrollingValue();\n      }, 100);\n    };\n\n    evaluateScrollingValue();\n\n    window.addEventListener('scroll', listener);\n\n    return () => {\n      window.removeEventListener('scroll', listener);\n    };\n  }, []);\n\n  return { scrolling };\n};\n\nexport { useScrolling };\n","import { DrawerElement } from '@/components/drawer';\nimport { InternalNavigationBurgerPanelElement } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger-panel';\nimport { useScrolling } from '@/components/header/internals/shared/hooks/use-scrolling';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { RefObject, useRef, useState } from 'react';\nimport { HeaderMenuContextProps } from './header-menu-context';\nimport { MenuTypeEnum } from './menu-type.enum';\n\nexport const useHeaderMenuController = (): HeaderMenuContextProps => {\n  const menuRefMap = useRef<\n    Map<\n      MenuTypeEnum | string,\n      RefObject<PanelMenuElement | HTMLDivElement | DrawerElement | ModalMenuElement | InternalNavigationBurgerPanelElement>\n    >\n  >(new Map());\n  const { scrolling } = useScrolling();\n  const [expandedMenu, setExpandedMenu] = useState(false);\n  const [openedSubmenu, setOpenedSubmenu] = useState(false);\n\n  const collapseAllMenus = (): void => {\n    menuRefMap.current.forEach((value) => {\n      (value.current as InternalNavigationBurgerPanelElement)?.close?.();\n      (value.current as PanelMenuElement)?.collapse?.(true);\n      (value.current as ModalMenuElement)?.close?.();\n    });\n\n    setExpandedMenu(false);\n    setOpenedSubmenu(false);\n  };\n\n  const collapseMenu = (id: MenuTypeEnum | string, focusController: boolean): void => {\n    menuRefMap.current.forEach((value) => {\n      if (!value.current) {\n        return;\n      }\n      (value.current as InternalNavigationBurgerPanelElement).close?.();\n      (value.current as PanelMenuElement).collapse?.(true);\n      (value.current as ModalMenuElement).close?.();\n    });\n\n    if (focusController) {\n      menuRefMap.current.get(id)?.current?.focus();\n    }\n\n    setExpandedMenu(false);\n    setOpenedSubmenu(false);\n  };\n\n  const expandMenu = (id: MenuTypeEnum | string): void => {\n    menuRefMap.current.forEach((value) => {\n      if (!value.current) {\n        return;\n      }\n      (value.current as InternalNavigationBurgerPanelElement).close?.();\n      (value.current as PanelMenuElement).collapse?.(false);\n      (value.current as ModalMenuElement).close?.();\n    });\n\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as PanelMenuElement).expand?.();\n      (ref.current as ModalMenuElement).open?.();\n    }\n\n    setExpandedMenu(true);\n  };\n\n  const focusMenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as PanelMenuElement).focus?.();\n      (ref.current as ModalMenuElement).focus?.();\n    }\n  };\n\n  const backSubmenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as InternalNavigationBurgerPanelElement).close?.();\n    }\n\n    setOpenedSubmenu(false);\n  };\n\n  const openSubmenu = (id: MenuTypeEnum | string): void => {\n    const ref = menuRefMap.current.get(id);\n\n    if (ref?.current) {\n      (ref.current as InternalNavigationBurgerPanelElement).open?.();\n    }\n\n    setOpenedSubmenu(true);\n  };\n\n  const hasExpandedMenu = () => {\n    return expandedMenu;\n  };\n\n  const hasOpenSubmenu = () => {\n    return openedSubmenu;\n  };\n\n  const isScrolling = () => {\n    return scrolling;\n  };\n\n  return {\n    collapseAllMenus,\n    collapseMenu,\n    expandMenu,\n    focusMenu,\n    hasExpandedMenu,\n    backSubmenu,\n    openSubmenu,\n    hasOpenSubmenu,\n    isScrolling,\n\n    menuRefMap: menuRefMap.current\n  } as HeaderMenuContextProps;\n};\n","import { LinkWrapper, LinkWrapperProps } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport classNames from 'classnames';\nimport React, { Children, cloneElement, ComponentProps, FC, isValidElement, useState } from 'react';\n\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport './custom-header-link.css';\n\nexport interface CustomHeaderLinkProps extends LinkWrapperProps {\n  hasIcon?: BooleanProp;\n  iconOnly?: BooleanProp;\n  leadingIcon?: string;\n  leadingIconHover?: string;\n  trailingIcon?: string;\n  trailingIconHover?: string;\n}\n\ntype InnerAnchorType = ComponentProps<'a'> & { [dataAttribute: `data-${string}`]: string };\n\nconst CustomHeaderLink: FC<CustomHeaderLinkProps> = ({\n  ref = null,\n  variant = 'neutral',\n  hasIcon,\n  iconOnly,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  className,\n  children,\n  fullWidth = true,\n  role,\n  'aria-haspopup': ariaHasPopup,\n  'data-autofocus': dataAutoFocus,\n  tabIndex,\n  ...props\n}) => {\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const linkClassNames = classNames('custom-header-link-wrapper', className);\n\n  const handleClick = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n  };\n\n  const handleMouseEnter = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('hover');\n    }\n  };\n\n  const handleMouseDown = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('active');\n    }\n  };\n\n  const handleMouseUpOrLeave = () => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (!isTouchDevice) {\n      setActiveState('default');\n    }\n  };\n\n  return (\n    <LinkWrapper {...props} ref={ref} fullWidth={fullWidth} variant={variant} appearance=\"link\" className={linkClassNames}>\n      {Children.toArray(children).map((child) => {\n        if (isValidElement<InnerAnchorType>(child)) {\n          const elemClassNames = classNames(\n            { 'link-with-icon': stringToBoolean(hasIcon) || stringToBoolean(iconOnly) },\n            { 'icon-only': stringToBoolean(iconOnly) }\n          );\n\n          return cloneElement<InnerAnchorType>(\n            child,\n            {\n              'className': elemClassNames,\n              role,\n              'aria-haspopup': ariaHasPopup,\n              'data-autofocus': dataAutoFocus,\n              tabIndex,\n              'onClick': handleClick,\n              'onMouseEnter': handleMouseEnter,\n              'onMouseLeave': handleMouseUpOrLeave,\n              'onMouseDown': handleMouseDown,\n              'onMouseUp': handleMouseUpOrLeave\n            },\n            <>\n              {hasIcon && (leadingIcon || leadingIconHover) && (\n                <IconSet className=\"icon-wrapper leading\" state={activeState}>\n                  <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n                  <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} aria-hidden />\n                  <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n                </IconSet>\n              )}\n\n              {!iconOnly && child.props.children && <span className=\"children-wrapper\">{child.props.children}</span>}\n\n              {hasIcon && (trailingIcon || trailingIconHover) && (\n                <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n                  <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n                  <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} aria-hidden />\n                  <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n                </IconSet>\n              )}\n            </>\n          );\n        }\n      })}\n    </LinkWrapper>\n  );\n};\n\nexport { CustomHeaderLink };\n","import { AuthenticatedBodyLinkProps } from '@/components/header/general-bar/authenticated/authenticated-body-link';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport React, { FC, useId } from 'react';\n\nimport './internal-authenticated-drawer-body.css';\n\nexport const InternalAuthenticatedDrawerBody: FC = () => {\n  const generatedId = useId();\n  const headerDataContext = useHeaderDataContext();\n  const bodyLinkProps = headerDataContext.getAuthenticatedBodyLinks();\n\n  return (\n    <div className=\"authenticated-body\">\n      <nav>\n        <ul>\n          {bodyLinkProps.map((link: AuthenticatedBodyLinkProps, index: number) => {\n            return (\n              <li key={`${generatedId}-${index}`}>\n                <CustomHeaderLink {...link} />\n              </li>\n            );\n          })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { FC, useId } from 'react';\n\nimport './internal-authenticated-drawer-footer.css';\n\nexport const InternalAuthenticatedDrawerFooter: FC = () => {\n  const generatedId = useId();\n\n  const headerDataContext = useHeaderDataContext();\n\n  const footerActions = headerDataContext.getAuthenticatedFooterActions();\n\n  if (footerActions.length <= 0) {\n    return null;\n  }\n\n  return (\n    <div className=\"authenticated-footer\">\n      <ul>\n        {footerActions.map((action, index) => {\n          const buttonClassNames = classNames(action.className, 'footer-action');\n\n          return (\n            <li key={`${generatedId}-${index}`}>\n              <Button {...action} className={buttonClassNames} appearance=\"link\" variant=\"neutral\" fullWidth />\n            </li>\n          );\n        })}\n      </ul>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport React, { FC } from 'react';\nimport { Button } from '@/components/button';\n\nimport './internal-authenticated-drawer-header.css';\n\nexport const InternalAuthenticatedDrawerHeader: FC = () => {\n  const headerMenuContext = useHeaderMenuContext();\n  const headerDataContext = useHeaderDataContext();\n  const headerProps = headerDataContext.getAuthenticatedHeader();\n\n  const handleClick = () => {\n    headerMenuContext.collapseMenu(MenuTypeEnum.Authenticated, true);\n  };\n\n  return (\n    <div className=\"authenticated-header\">\n      <Button\n        hasIcon\n        fullWidth\n        className=\"close\"\n        onClick={handleClick}\n        trailingIcon=\"agora-line-chevron-right\"\n        trailingIconHover=\"agora-line-chevron-right\"\n        aria-label={headerProps?.closeAriaLabel}\n      >\n        <div className=\"name\">{headerProps?.children}</div>\n      </Button>\n    </div>\n  );\n};\n","import { Drawer, DrawerElement } from '@/components/drawer';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport React, { createRef, FC } from 'react';\nimport { InternalAuthenticatedDrawerBody } from './internal-authenticated-drawer-body';\nimport { InternalAuthenticatedDrawerFooter } from './internal-authenticated-drawer-footer';\nimport { InternalAuthenticatedDrawerHeader } from './internal-authenticated-drawer-header';\n\nimport './Internal-authenticated-drawer.css';\n\nexport const InternalAuthenticatedDrawer: FC = () => {\n  const headerMenuContext = useHeaderMenuContext();\n  const headerDataContext = useHeaderDataContext();\n  const authenticatedProps = headerDataContext.getAuthenticated();\n\n  const drawerAriaLabel = authenticatedProps ? authenticatedProps['aria-label'] : '';\n\n  const ref = createRef<DrawerElement>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Drawer, ref);\n\n  if (!authenticatedProps) {\n    //  NOT AUTHENTICATED... SHOULD NOT PUT AUTHENTICATED DRAWER ON PAGE\n    return '';\n  }\n\n  return (\n    <Drawer ref={ref} position=\"right\" dismissOnEscape={false} dismissOnBackdropClick={false} aria-label={drawerAriaLabel}>\n      <InternalAuthenticatedDrawerHeader />\n      <InternalAuthenticatedDrawerBody />\n      <InternalAuthenticatedDrawerFooter />\n    </Drawer>\n  );\n};\n","import { Button, ButtonProps } from '@/components/button';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  FC,\n  isValidElement,\n  ReactElement,\n  MouseEvent as ReactMouseEvent,\n  useCallback,\n  useEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport { LayoutProps } from './layout.interface';\n\nimport { DrawerElement } from '@/components/drawer';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { CustomHeaderLink, CustomHeaderLinkProps } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { asyncTrigger, stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { createPortal } from 'react-dom';\nimport { MenuTypeEnum } from '../../context/menu-context/menu-type.enum';\nimport './panel-menu.css';\n\nexport interface PanelMenuElement extends HTMLDivElement {\n  /**\n   *  Expand the panel menu.\n   */\n  expand: () => void;\n  /**\n   *  Collapse the panel menu.\n   */\n  collapse: (isToggling?: boolean) => void;\n  /**\n   *  Focus the panel menu control.\n   */\n  focus: () => void;\n  /**\n   *  Current value of the expanded state of the panel menu.\n   */\n  isExpanded: boolean;\n}\n\nexport interface PanelMenuProps extends ComponentProps<'div'> {\n  darkMode?: boolean;\n  children: ReactElement<ButtonProps | LayoutProps> | ReactElement<ButtonProps | LayoutProps>[];\n  iconsCollapsed?: { leadingIcon?: string; leadingIconHover?: string; trailingIcon?: string; trailingIconHover?: string };\n  iconsExpanded?: { leadingIcon?: string; leadingIconHover?: string; trailingIcon?: string; trailingIconHover?: string };\n  isDrawerPanel?: boolean;\n  portalRefType: MenuTypeEnum.GeneralBarPortal | MenuTypeEnum.NavigationBarPortal;\n}\n\nconst PanelMenu: FC<PanelMenuProps> = ({\n  ref = null,\n  id,\n  isDrawerPanel = false,\n  className,\n  children,\n  iconsCollapsed,\n  iconsExpanded,\n  portalRefType\n}) => {\n  const panelMenuId = id as string;\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const portalRef = headerMenuContext.menuRefMap.get(MenuTypeEnum[portalRefType]);\n\n  const [isExpanded, setIsExpanded] = useState(false);\n  const [portalContent, setPortalContent] = useState(<></>);\n\n  const buttonChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<ButtonProps>(child) && (child as ReactElement).type === Button;\n  }) as ReactElement<ButtonProps>;\n\n  const linkWrapperChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<CustomHeaderLinkProps>(child) && (child as ReactElement).type === CustomHeaderLink;\n  }) as ReactElement<CustomHeaderLinkProps>;\n\n  const layoutChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<LayoutProps>(child) && (child as ReactElement).type !== Button;\n  }) as ReactElement<LayoutProps>;\n\n  const hasButton = !!buttonChildComponent;\n\n  const hasLinkWrapper = !!linkWrapperChildComponent;\n\n  const hasPanel = !!layoutChildComponent;\n\n  const innerPanelRef = useRef<HTMLDivElement>(null);\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const linkWrapperRef = useRef<HTMLSpanElement>(null);\n  const drawerButtonRef = useRef<HTMLButtonElement>(null);\n\n  const expand = () => {\n    if (isExpanded) {\n      return;\n    }\n\n    if (isDrawerPanel) {\n      const drawerRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.Drawer);\n\n      if (drawerRef) {\n        const elem = drawerRef.current as DrawerElement;\n        setIsExpanded(true);\n        elem.open();\n      }\n\n      return;\n    }\n\n    if (hasPanel) {\n      setIsExpanded(true);\n\n      const portalElem = portalRef?.current;\n      if (portalElem) {\n        portalElem.classList.add('expanded');\n        setPortalContent(createPortal(layoutChildComponent, portalElem));\n\n        asyncTrigger(() => {\n          const focusableElements = portalElem.querySelectorAll(\n            'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n          );\n\n          const firstElement = focusableElements[0] as HTMLElement;\n          firstElement?.focus();\n        });\n      }\n    }\n  };\n\n  const collapse = useCallback(() => {\n    if (!isExpanded) {\n      return;\n    }\n\n    if (isDrawerPanel) {\n      const drawerRef = headerMenuContext.menuRefMap.get(MenuTypeEnum.Drawer);\n\n      if (drawerRef) {\n        const elem = drawerRef.current as DrawerElement;\n        elem.close();\n        setIsExpanded(false);\n      }\n\n      buttonRef.current?.focus();\n\n      return;\n    }\n\n    if (hasPanel) {\n      setIsExpanded(false);\n      setPortalContent(<></>);\n      portalRef?.current?.classList.remove('expanded');\n      buttonRef.current?.focus();\n    }\n  }, [isExpanded, isDrawerPanel, headerMenuContext, hasPanel, portalRef]);\n\n  const focus = () => {\n    if (hasButton) {\n      if (isDrawerPanel) {\n        drawerButtonRef.current?.focus();\n      } else {\n        buttonRef.current?.focus();\n      }\n    }\n\n    if (linkWrapperRef?.current) {\n      (linkWrapperRef.current as HTMLElement).querySelector('a')?.focus();\n    }\n  };\n\n  useExpandedRef<PanelMenuElement>(ref as React.Ref<PanelMenuElement>, innerPanelRef, {\n    isExpanded,\n    expand,\n    collapse,\n    focus\n  } as PanelMenuElement);\n\n  const handleButtonClick = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (isExpanded) {\n      headerMenuContext.collapseMenu(panelMenuId, true);\n    } else {\n      headerMenuContext.expandMenu(panelMenuId);\n    }\n    buttonChildComponent.props.onClick?.(evt);\n  };\n\n  const panelClassNames = classNames('panel-menu', className, { 'dark-mode': headerContext.darkMode });\n\n  const panelButtonClassNames = classNames(\n    'panel-menu-button',\n    { 'has-panel': hasPanel },\n    { expanded: isExpanded, collapsed: !isExpanded },\n    buttonChildComponent?.props?.className\n  );\n\n  const panelLinkWrapperClassNames = classNames('panel-menu-link-wrapper', linkWrapperChildComponent?.props?.className);\n\n  const panelDrawerButtonClassNames = classNames('panel-drawer-button');\n\n  //  DISMISS ESCAPE\n  useEffect(() => {\n    const onKeyDown = (evt: KeyboardEvent) => {\n      if (evt.code === 'Escape' && isExpanded) {\n        headerMenuContext.collapseMenu(panelMenuId, true);\n      }\n    };\n\n    if (hasPanel || isDrawerPanel) {\n      window.document.addEventListener('keydown', onKeyDown);\n    }\n\n    return () => {\n      window.document.removeEventListener('keydown', onKeyDown);\n    };\n  }, [hasPanel, isDrawerPanel, isExpanded, headerMenuContext, panelMenuId]);\n\n  //  DISMISS CLICK BACKDROP\n  useEffect(() => {\n    const onClick = (evt: MouseEvent) => {\n      if (!isExpanded) {\n        return;\n      }\n\n      const containerElement = portalRef?.current;\n\n      const target = evt.target as HTMLElement;\n\n      if (containerElement && (target.classList.contains('panel-menu-backdrop') || target.classList.contains('agora-dialog-backdrop'))) {\n        headerMenuContext.collapseMenu(panelMenuId, true);\n      }\n    };\n\n    if (hasPanel || isDrawerPanel) {\n      window.document.addEventListener('click', onClick);\n    }\n\n    return () => {\n      window.document.removeEventListener('click', onClick);\n    };\n  }, [hasPanel, isDrawerPanel, isExpanded, headerMenuContext, panelMenuId, portalRef]);\n\n  //  KEYBOARD TRAP\n  useEffect(() => {\n    const handleKeyDown = (evt: KeyboardEvent) => {\n      if (!isExpanded || !portalRef?.current) {\n        return;\n      }\n\n      if (evt.key === 'Tab') {\n        const focusableElements = portalRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements[0] as HTMLElement;\n        const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          collapse();\n        }\n\n        if (!evt.shiftKey && document.activeElement === lastElement) {\n          collapse();\n        }\n      }\n    };\n\n    if (hasPanel) {\n      document?.addEventListener('keydown', handleKeyDown);\n    }\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [isExpanded, hasPanel, portalRef, collapse]);\n\n  const memoLeadingIcon = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.leadingIcon ?? '') : (iconsCollapsed?.leadingIcon ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoLeadingIconHover = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.leadingIconHover ?? '') : (iconsCollapsed?.leadingIconHover ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoTrailingIcon = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.trailingIcon ?? '') : (iconsCollapsed?.trailingIcon ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  const memoTrailingIconHover = useMemo(() => {\n    return isExpanded ? (iconsExpanded?.trailingIconHover ?? '') : (iconsCollapsed?.trailingIconHover ?? '');\n  }, [iconsCollapsed, iconsExpanded, isExpanded]);\n\n  return (\n    <div ref={innerPanelRef} className={panelClassNames}>\n      {hasLinkWrapper && (\n        <CustomHeaderLink\n          {...linkWrapperChildComponent.props}\n          darkMode={headerContext.darkMode}\n          ref={linkWrapperRef}\n          className={panelLinkWrapperClassNames}\n        />\n      )}\n\n      {hasButton && !isDrawerPanel && (\n        <Button\n          {...buttonChildComponent.props}\n          ref={buttonRef}\n          className={panelButtonClassNames}\n          onClick={handleButtonClick}\n          appearance=\"link\"\n          variant=\"neutral\"\n          darkMode={headerContext.darkMode}\n          {...(hasPanel && { 'aria-controls': `panel-content-${panelMenuId}`, 'aria-expanded': isExpanded })}\n          hasIcon={stringToBoolean(buttonChildComponent.props.hasIcon)}\n          {...(hasPanel && stringToBoolean(buttonChildComponent.props.hasIcon) && memoLeadingIcon && memoLeadingIconHover\n            ? { leadingIcon: memoLeadingIcon, leadingIconHover: memoLeadingIconHover }\n            : {})}\n          {...(hasPanel && stringToBoolean(buttonChildComponent.props.hasIcon) && memoTrailingIcon && memoTrailingIconHover\n            ? { trailingIcon: memoTrailingIcon, trailingIconHover: memoTrailingIconHover }\n            : {})}\n        >\n          {buttonChildComponent.props.children}\n        </Button>\n      )}\n\n      {hasButton && isDrawerPanel && (\n        <Button\n          {...buttonChildComponent.props}\n          aria-expanded={isExpanded}\n          ref={drawerButtonRef}\n          darkMode={headerContext.darkMode}\n          className={panelDrawerButtonClassNames}\n          onClick={handleButtonClick}\n        >\n          {buttonChildComponent.props.children}\n        </Button>\n      )}\n\n      {hasPanel && !isDrawerPanel && isExpanded && <>{portalContent}</>}\n    </div>\n  );\n};\n\nexport { PanelMenu };\n","import React, { FC } from 'react';\nimport { NavigationLinkProps } from './navigation-link';\n\nexport interface RelatedNavigationLinkProps extends NavigationLinkProps {}\n\nexport const RelatedNavigationLink: FC<RelatedNavigationLinkProps> = () => <></>;\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport { asyncTrigger, useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, useEffect, useId, useRef, useState } from 'react';\n\nimport './internal-navigation-burger-panel.css';\nimport { NavigationFreestyle, NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\n\nexport interface InternalNavigationBurgerPanelElement extends HTMLDivElement {\n  /**\n   *  Open the submenu.\n   */\n  open: () => void;\n  /**\n   *  Close the submenu.\n   */\n  close: () => void;\n  /**\n   *  Current value of the opened state of the burger links layout.\n   */\n  isOpened: boolean;\n}\n\nexport interface InternalNavigationBurgerPanelProps extends ComponentProps<'div'> {\n  id: string;\n  title: string;\n  linksAriaLabel: string;\n  relatedLinksAriaLabel: string;\n  buttonProps?: ButtonProps;\n}\n\nconst InternalNavigationBurgerPanel: FC<InternalNavigationBurgerPanelProps> = ({\n  ref = null,\n  id,\n  linksAriaLabel,\n  relatedLinksAriaLabel,\n  title,\n  buttonProps,\n  children\n}) => {\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const backLabel = headerContext.getResponsiveMenuBackToRootLabel();\n  const generatedId = useId();\n\n  const [isOpened, setIsOpened] = useState(false);\n\n  const navigationFreestyle = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationFreestyleProps>(child) && (child as ReactElement).type === NavigationFreestyle;\n  }) as ReactElement<NavigationFreestyleProps>[];\n\n  const navigationFreestyleComponent = navigationFreestyle.length > 0 ? navigationFreestyle?.[0]?.props?.children : null;\n\n  const links = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const highlightedLinks = Children.toArray(children).filter((child) => {\n    return isValidElement<RelatedNavigationLinkProps>(child) && (child as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  const burgerMenuItem = useRef<HTMLButtonElement>(null);\n  const burgerPanelRef = useRef<HTMLDivElement>(null);\n\n  const open = () => {\n    if (!isOpened) {\n      setIsOpened(true);\n      asyncTrigger(() => {\n        const focusableElements = burgerPanelRef.current?.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements?.[0] as HTMLElement;\n        firstElement?.focus();\n      });\n    }\n  };\n\n  const close = () => {\n    if (isOpened) {\n      setIsOpened(false);\n      const burgerRef = headerMenuContext.menuRefMap.get('Header');\n      asyncTrigger(() => {\n        const focusableElements = burgerRef?.current?.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements?.[1] as HTMLElement;\n        firstElement?.focus();\n      });\n    }\n  };\n\n  useExpandedRef<InternalNavigationBurgerPanelElement>(ref as React.Ref<InternalNavigationBurgerPanelElement>, burgerPanelRef, {\n    isOpened,\n    open,\n    close\n  } as InternalNavigationBurgerPanelElement);\n\n  const handleClickBack = () => {\n    headerMenuContext.backSubmenu(id);\n    burgerMenuItem.current?.focus();\n  };\n\n  const handleClickButton = () => {\n    headerMenuContext.openSubmenu(id);\n  };\n\n  //  KEYBOARD TRAP\n  useEffect(() => {\n    const handleKeyDown = (evt: KeyboardEvent) => {\n      if (!isOpened || !burgerPanelRef.current) {\n        return;\n      }\n\n      if (evt.code === 'Tab') {\n        const focusableElements = burgerPanelRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements[0] as HTMLElement;\n        const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          evt.preventDefault();\n          lastElement.focus();\n        }\n\n        if (!evt.shiftKey && document.activeElement === lastElement) {\n          evt.preventDefault();\n          firstElement.focus();\n        }\n      }\n    };\n\n    document?.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [isOpened]);\n\n  const navigationBurgerLinksLayoutClassNames = classNames('navigation-burger-panel', { hidden: !isOpened, flex: isOpened });\n\n  return (\n    <>\n      <Button\n        {...buttonProps}\n        ref={burgerMenuItem}\n        className=\"burger-menu-item-btn\"\n        appearance=\"link\"\n        variant=\"neutral\"\n        hasIcon\n        fullWidth\n        trailingIcon=\"agora-line-chevron-right\"\n        trailingIconHover=\"agora-solid-chevron-right\"\n        onClick={handleClickButton}\n        aria-haspopup=\"listbox\"\n        aria-controls={id}\n        aria-expanded={isOpened}\n      >\n        {title}\n      </Button>\n\n      <div ref={burgerPanelRef} className={navigationBurgerLinksLayoutClassNames} id={id}>\n        <div className=\"w-full flex flex-col\">\n          {backLabel && (\n            <div className=\"container mx-auto\">\n              <Button\n                className=\"burger-back-btn\"\n                appearance=\"link\"\n                variant=\"neutral\"\n                darkMode={headerContext.darkMode}\n                hasIcon\n                leadingIcon=\"agora-line-arrow-left-anchor\"\n                leadingIconHover=\"agora-line-arrow-left-anchor\"\n                onClick={handleClickBack}\n              >\n                {backLabel}\n              </Button>\n            </div>\n          )}\n        </div>\n        <div className=\"w-full flex flex-col\">\n          {title && <div className=\"container mx-auto title\">{title}</div>}\n\n          {navigationFreestyleComponent && <div className=\"freestyle\">{navigationFreestyleComponent}</div>}\n\n          {links.length > 0 && !navigationFreestyleComponent && (\n            <div className=\"container mx-auto xs:pb-0 md:pb-32 xl:pb-32\">\n              <ul className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-16\" aria-label={linksAriaLabel}>\n                {links.map((link, index) => {\n                  const key = `${generatedId}-links-${index}`;\n                  return (\n                    <li className=\"link-wrapper xs:col-span-4 md:col-span-4 xl:col-span-6\" key={key}>\n                      <CustomHeaderLink {...link.props} variant=\"primary\" />\n                    </li>\n                  );\n                })}\n              </ul>\n            </div>\n          )}\n        </div>\n\n        {highlightedLinks.length > 0 && !navigationFreestyleComponent && (\n          <div className=\"w-full flex flex-col flex-1 highlighted-links\">\n            <div className=\"highlighted-links-container\">\n              <ul className=\"grid xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 gap-16\" aria-label={relatedLinksAriaLabel}>\n                {highlightedLinks.map((link, index) => {\n                  const key = `${generatedId}-highlighted-links-${index}`;\n\n                  return (\n                    <li className=\"link-wrapper xs:col-span-4 md:col-span-4 xl:col-span-6\" key={key}>\n                      <CustomHeaderLink {...link.props} variant=\"neutral\" />\n                    </li>\n                  );\n                })}\n              </ul>\n            </div>\n          </div>\n        )}\n      </div>\n    </>\n  );\n};\n\nexport { InternalNavigationBurgerPanel };\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { createRef, FC, isValidElement, KeyboardEvent, MouseEvent, ReactElement, useId, useRef, useState } from 'react';\nimport { useHeaderMenuContext } from '../../context/menu-context/header-menu-context';\nimport { InternalAreaProps } from '../../general-bar/areas/internal-area';\nimport { CustomHeaderLink } from '../../shared/custom-header-link/custom-header-link';\nimport { InternalNavigationBurgerPanel, InternalNavigationBurgerPanelElement } from './internal-navigation-burger-panel';\n\nimport './internal-navigation-burger-layout.css';\n\nexport const InternalNavigationBurgerLayout: FC<LayoutProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const areas = headerDataContext.getAreas();\n  const currentArea = areas.find((area) => area.active);\n  const otherAreas = areas.filter((area) => !area.active);\n  const generatedId = useId();\n\n  const menubarRef = useRef<HTMLUListElement>(null);\n  const [focusIndex, setFocusIndex] = useState(0);\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLElement>) => {\n    const { code } = evt;\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      let nextIndex = null;\n      if (code === 'ArrowUp') {\n        nextIndex = focusIndex > 0 ? focusIndex - 1 : availableMenuItems.length - 1;\n      }\n\n      if (code === 'ArrowDown') {\n        nextIndex = focusIndex === availableMenuItems.length - 1 ? 0 : focusIndex + 1;\n      }\n\n      if (nextIndex !== null) {\n        const nextElem = availableMenuItems[nextIndex] as HTMLElement;\n\n        if (nextElem.getAttribute('data-menuitem') === 'button') {\n          nextElem.focus();\n        } else {\n          const anchor = nextElem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(nextIndex);\n      }\n    }\n  };\n\n  const handleAreaClick = (evt: MouseEvent<HTMLButtonElement>, area: InternalAreaProps) => {\n    headerDataContext.onAreaChange?.(area.value);\n\n    area.onClick?.(evt);\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      if (availableMenuItems.length > 0) {\n        const elem = availableMenuItems[0] as HTMLElement;\n\n        if (elem.getAttribute('data-menuitem') === 'button') {\n          elem.focus();\n        } else {\n          const anchor = elem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(0);\n      }\n    }\n  };\n\n  return (\n    <div className=\"navigation-burger-layout\">\n      {currentArea && (\n        <div id=\"navigation-burger-current-area\" className=\"current-area\">\n          {currentArea.label}\n        </div>\n      )}\n\n      <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\" aria-labelledby=\"navigation-burger-current-area\">\n        <ul ref={menubarRef}>\n          {headerDataContext.getNavigationItems().map((item, index) => {\n            const id = `${MenuTypeEnum.NavigationBurgerLayout}-${index}`;\n\n            const ref = createRef<InternalNavigationBurgerPanelElement>();\n            headerMenuContext.menuRefMap.set(id, ref);\n\n            if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n              return (\n                <li key={id}>\n                  <InternalNavigationBurgerPanel\n                    ref={ref}\n                    id={id}\n                    title={item.props.label?.toString()}\n                    linksAriaLabel={item.props.linksAriaLabel ?? ''}\n                    relatedLinksAriaLabel={item.props.relatedLinksAriaLabel ?? ''}\n                    buttonProps={\n                      {\n                        'tabIndex': focusIndex === index ? 0 : -1,\n                        'onKeyDown': handleKeyDown,\n                        'data-menuitem': 'button'\n                      } as ButtonProps\n                    }\n                  >\n                    {item.props.children}\n                  </InternalNavigationBurgerPanel>\n                </li>\n              );\n            }\n\n            if (isValidElement<NavigationLinkProps>(item) && (item as ReactElement).type === NavigationLink) {\n              const linkClassNames = classNames('burger-menu-item-link', item.props.className);\n\n              return (\n                <li key={id}>\n                  <CustomHeaderLink\n                    {...item.props}\n                    data-menuitem=\"link-wrapper\"\n                    className={linkClassNames}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  />\n                </li>\n              );\n            }\n          })}\n        </ul>\n      </nav>\n\n      {headerDataContext.hasVisibleAreas() && otherAreas?.length > 0 && otherAreas && (\n        <nav className=\"xs:col-span-4 md:col-span-8 xl:col-span-12 py-16\" aria-label={headerDataContext.getAreasAriaLabel()}>\n          <ul className=\"flex flex-col gap-8\">\n            {otherAreas.map((area, index) => {\n              const id = `${generatedId}-${index}`;\n              return (\n                <li key={id}>\n                  <Button\n                    className=\"burger-areas-menu-item-btn\"\n                    appearance=\"link\"\n                    variant=\"neutral\"\n                    fullWidth\n                    onClick={(evt: MouseEvent<HTMLButtonElement>) => {\n                      handleAreaClick(evt, area);\n                    }}\n                  >\n                    {area.label}\n                  </Button>\n                </li>\n              );\n            })}\n          </ul>\n        </nav>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport React, { createRef, FC } from 'react';\nimport { InternalNavigationBurgerLayout } from './internal-navigation-burger-layout';\n\nimport './internal-navigation-burger.css';\n\nexport const InternalNavigationBurger: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.MenuBurger, ref);\n\n  const navigationId = headerDataContext.getNavigationId();\n  const menuLabel = headerDataContext.getResponsiveMenuLabel();\n  const menuAriaLabel = headerDataContext.getResponsiveMenuAriaLabel();\n\n  return (\n    <nav aria-label={menuAriaLabel} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        <li>\n          <PanelMenu\n            id={MenuTypeEnum.MenuBurger}\n            ref={ref}\n            className=\"navigation-burger-panel-menu\"\n            iconsCollapsed={{ leadingIcon: 'agora-line-menu', leadingIconHover: 'agora-solid-menu' }}\n            iconsExpanded={{ leadingIcon: 'agora-line-x', leadingIconHover: 'agora-solid-x' }}\n            portalRefType={MenuTypeEnum.NavigationBarPortal}\n          >\n            <Button className=\"responsive-navigation-menu-button\" hasIcon aria-label={menuLabel?.toString()}>\n              {menuLabel}\n            </Button>\n            <InternalNavigationBurgerLayout />\n          </PanelMenu>\n        </li>\n      </ul>\n    </nav>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nimport './internal-institutional.css';\n\nexport interface InternalInstitutionalProps extends ComponentProps<'div'> {}\n\nexport const InternalInstitutional: FC<InternalInstitutionalProps> = ({ className }) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const containerClassNames = classNames('institutional-phrase-container', { 'dark-mode': headerDataContext.darkMode }, className);\n\n  return (\n    <div className={containerClassNames}>\n      <div className=\"institutional\">{headerDataContext.getInstitutionalPhrase()}</div>\n    </div>\n  );\n};\n","import { AreaProps } from '@/components/header/general-bar/areas/area';\nimport classNames from 'classnames';\nimport React, { FC } from 'react';\n\nimport './internal-area.css';\n\nexport interface InternalAreaProps extends AreaProps {}\n\nexport const InternalArea: FC<InternalAreaProps> = ({ active = false, value, label, onClick, ...props }) => {\n  const areasClassNames = classNames('area', { selected: active });\n\n  return (\n    <button {...props} className={areasClassNames} onClick={onClick} data-value={value}>\n      {label}\n    </button>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, KeyboardEvent, MouseEvent, useRef } from 'react';\nimport { InternalArea, InternalAreaProps } from './internal-area';\n\nimport './internal-areas.css';\n\nexport interface InnerComponentProps extends ComponentProps<'div'> {}\n\nexport const InternalAreas: FC<InnerComponentProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = useRef<HTMLDivElement>(null);\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Areas, ref);\n\n  const visibleAreas = headerDataContext.hasVisibleAreas();\n\n  const areasClassNames = classNames('areas', { 'dark-mode': headerDataContext.darkMode }, { 'sr-only': !visibleAreas });\n\n  const handleAreaClick = (evt: MouseEvent<HTMLButtonElement>, area: InternalAreaProps) => {\n    if (!visibleAreas) {\n      return;\n    }\n\n    headerMenuContext.collapseAllMenus();\n\n    headerDataContext.onAreaChange?.(area.value);\n\n    area.onClick?.(evt);\n  };\n\n  const handleKeyDownCapture = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const { code } = evt;\n\n    if (!visibleAreas || !ref.current || (code !== 'ArrowLeft' && code !== 'ArrowRight')) {\n      return;\n    }\n\n    const availableAreas = Array.from(ref.current.querySelectorAll('.area'));\n    const activeIndex = availableAreas.findIndex((el) => el.classList.contains('selected'));\n\n    let nextElem;\n    if (code === 'ArrowLeft') {\n      nextElem = availableAreas[activeIndex > 0 ? activeIndex - 1 : availableAreas.length - 1] as HTMLElement;\n      nextElem.click();\n      nextElem.focus();\n    }\n\n    if (code === 'ArrowRight') {\n      nextElem = availableAreas[activeIndex === availableAreas.length - 1 ? 0 : activeIndex + 1] as HTMLElement;\n      nextElem.click();\n      nextElem.focus();\n    }\n  };\n\n  const areas = headerDataContext.getAreas() ?? [];\n\n  if (areas.length === 0) return null;\n\n  return (\n    <div className={areasClassNames} ref={ref} aria-label={headerDataContext.getAreasAriaLabel()} role=\"tablist\">\n      {areas.map((area: InternalAreaProps) => {\n        return (\n          <InternalArea\n            {...area}\n            key={area.value}\n            role=\"tab\"\n            aria-controls=\"tabpanel-active\"\n            aria-selected={area.active}\n            id={area.value}\n            tabIndex={visibleAreas && area.active ? 0 : -1}\n            onClick={(evt: MouseEvent<HTMLButtonElement>) => {\n              handleAreaClick(evt, area);\n            }}\n            onKeyDownCapture={handleKeyDownCapture}\n          />\n        );\n      })}\n    </div>\n  );\n};\n","import { AvatarProps } from '@/components/avatar';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { AuthenticatedBodyProps } from '@/components/header/general-bar/authenticated/authenticated-body';\nimport { AuthenticatedFooterProps } from '@/components/header/general-bar/authenticated/authenticated-footer';\nimport { AuthenticatedHeaderProps } from '@/components/header/general-bar/authenticated/authenticated-header';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport React, { ComponentProps, createRef, FC, ReactElement } from 'react';\n\nimport './internal-authenticated.css';\n\ninterface InternalAuthenticatedProps extends Omit<ComponentProps<'div'>, 'children'> {\n  children?:\n    | null\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>\n    | ReactElement<AuthenticatedHeaderProps | AuthenticatedBodyProps | AuthenticatedFooterProps>[];\n}\n\nexport const InternalAuthenticated: FC<InternalAuthenticatedProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Authenticated, ref);\n\n  const authenticatedProps = headerDataContext.getAuthenticated() as AvatarProps;\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Authenticated}\n      className=\"authenticated-panel-menu\"\n      ref={ref}\n      isDrawerPanel\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n    >\n      <Button title={authenticatedProps.information?.toString()} aria-haspopup=\"dialog\">\n        {authenticatedProps.avatarType === 'initials' && authenticatedProps.srcPath}\n        {authenticatedProps.avatarType !== 'initials' && <Icon aria-hidden name={authenticatedProps.srcPath} />}\n      </Button>\n    </PanelMenu>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\n\nimport { Button } from '@/components/button';\nimport './internal-language.css';\n\nexport interface InternalLanguageProps extends ComponentProps<'button'> {\n  icon?: string;\n  checked: boolean;\n  label: string;\n}\n\nexport const InternalLanguage: FC<InternalLanguageProps> = ({ icon, checked, label, onClick }) => {\n  return (\n    <Button\n      role=\"checkbox\"\n      aria-checked={checked}\n      appearance=\"link\"\n      variant=\"neutral\"\n      className=\"language-wrapper\"\n      onClick={onClick}\n      {...(icon || checked ? { hasIcon: true } : {})}\n      {...(icon ? { leadingIcon: icon, leadingIconHover: icon } : {})}\n      {...(checked ? { trailingIcon: 'agora-line-check', trailingIconHover: 'agora-solid-check' } : {})}\n    >\n      {label}\n    </Button>\n  );\n};\n","import { LanguageProps } from '@/components/header/general-bar/languages/language';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport React, { FC } from 'react';\nimport { InternalLanguage } from './internal-language';\n\nimport './internal-languages-layout.css';\n\nexport const InternalLanguagesLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const handleChange = (lang: string) => {\n    const languagesRef = headerMenuContext.menuRefMap.get('Languages');\n\n    if (languagesRef) {\n      headerDataContext.onLanguageChange?.(lang);\n\n      const elem = languagesRef.current as PanelMenuElement;\n      elem?.collapse();\n      elem?.focus();\n    }\n  };\n\n  return (\n    <div {...props} className=\"languages-layout\" aria-label={headerDataContext.getLanguagesAriaLabel()} role=\"list\">\n      {headerDataContext.getLanguages().map((lang: LanguageProps, index: number) => {\n        return (\n          <div className=\"language-grid-cell\" key={`${props.id}-${index}`} role=\"listitem\">\n            <InternalLanguage checked={!!lang.checked} label={lang.label} icon={lang.icon} onClick={() => handleChange(lang.value)} />\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport React, { createRef, FC, ReactNode } from 'react';\nimport { InternalLanguagesLayout } from './internal-languages-layout';\n\nimport './internal-languages.css';\n\nexport const InternalLanguages: FC = () => {\n  const headerContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const checkedLanguage = headerContext.getCheckedLanguage().length > 0 ? headerContext.getCheckedLanguage()[0] : null;\n\n  let buttonChildren: ReactNode = '';\n\n  if (checkedLanguage) {\n    buttonChildren = (\n      <>\n        <abbr aria-hidden className=\"language-abbr xs:inline xl:hidden\">\n          {checkedLanguage.abbr}\n        </abbr>\n        <span aria-hidden className=\"language-label xs:hidden xl:inline\">\n          {checkedLanguage.label}\n        </span>\n      </>\n    );\n  } else {\n    buttonChildren = <span>{' - '}</span>;\n  }\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Languages, ref);\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Languages}\n      ref={ref}\n      className=\"languages-panel-menu\"\n      iconsCollapsed={{ trailingIcon: 'agora-line-chevron-down', trailingIconHover: 'agora-line-chevron-down' }}\n      iconsExpanded={{ trailingIcon: 'agora-line-chevron-up', trailingIconHover: 'agora-line-chevron-up' }}\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n    >\n      <Button\n        className=\"!px-0 !py-[14px]\"\n        hasIcon\n        aria-haspopup=\"listbox\"\n        {...(checkedLanguage ? { 'aria-label': checkedLanguage.label } : {})}\n      >\n        {buttonChildren}\n      </Button>\n      <InternalLanguagesLayout />\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC } from 'react';\n\nimport './internal-custom-search-layout.css';\n\nexport const InternalCustomSearchLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const content = headerDataContext.getCustomSearch()?.children;\n\n  return (\n    <div {...props} className=\"custom-search-layout\">\n      {content}\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { InputSearchBar } from '@/components/input-search-bar';\nimport { List } from '@/components/list';\nimport React, { FC } from 'react';\n\nimport './internal-search-layout.css';\n\nexport const InternalSearchLayout: FC<LayoutProps> = (props) => {\n  const headerDataContext = useHeaderDataContext();\n\n  const searchTitle = headerDataContext.getDefaultSearchTitle();\n\n  const defaultInputSearchBarProps = headerDataContext.getDefaultSearchInputBar();\n\n  const customInputSearchBarProps = headerDataContext.getCustomSearchInputBar();\n\n  const relatedLinksTitle = headerDataContext.getDefaultSearchRelatedLinksTitle();\n\n  const relatedLinks = headerDataContext.getDefaultSearchRelatedLinks();\n\n  return (\n    <div {...props} className=\"search-layout\">\n      {searchTitle && <div className=\"search-title\">{searchTitle?.children}</div>}\n\n      {defaultInputSearchBarProps && (\n        <div className=\"search-input-bar-container\">\n          <InputSearchBar {...defaultInputSearchBarProps} darkMode={headerDataContext.darkMode} />\n        </div>\n      )}\n\n      {!defaultInputSearchBarProps && customInputSearchBarProps && (\n        <div className=\"search-input-bar-container custom-input\">{customInputSearchBarProps}</div>\n      )}\n\n      {relatedLinksTitle && relatedLinks && (\n        <div className=\"search-related-links-container\">\n          <div className=\"search-related-links-container-wrapper\">\n            {relatedLinksTitle?.children && <div className=\"search-list-title\">{relatedLinksTitle?.children}</div>}\n            <List className=\"search-list\">\n              {relatedLinks.map((linkProps, index) => {\n                const key = `${props.id}-${index}`;\n\n                return (\n                  <li key={key}>\n                    <CustomHeaderLink {...linkProps} variant=\"neutral\" appearance=\"link\" />\n                  </li>\n                );\n              })}\n            </List>\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport classNames from 'classnames';\nimport React, { ComponentProps, createRef, FC } from 'react';\nimport { InternalCustomSearchLayout } from './internal-custom-search-layout';\nimport { InternalSearchLayout } from './internal-search-layout';\n\nimport './internal-search.css';\n\nexport interface InternalSearchProps extends ComponentProps<'div'> {}\n\nexport const InternalSearch: FC<InternalSearchProps> = ({ className }) => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Search, ref);\n\n  const panelClassNames = classNames('search-panel-menu', className);\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Search}\n      ref={ref}\n      className={panelClassNames}\n      iconsCollapsed={{ leadingIcon: 'agora-line-search', leadingIconHover: 'agora-solid-search' }}\n      iconsExpanded={{ leadingIcon: 'agora-line-x', leadingIconHover: 'agora-solid-x' }}\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n    >\n      <Button className=\"!px-0 !py-[14px]\" hasIcon aria-haspopup=\"dialog\">\n        {headerDataContext.getSearchLabel()}\n      </Button>\n\n      <>\n        {headerDataContext.hasCustomSearch() && <InternalCustomSearchLayout />}\n        {headerDataContext.hasDefaultSearch() && <InternalSearchLayout />}\n      </>\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC, useId } from 'react';\n\nimport './internal-unauthenticated-layout.css';\n\nexport const InternalUnauthenticatedLayout: FC<LayoutProps> = () => {\n  const generatedId = useId();\n  const headerDataContext = useHeaderDataContext();\n  const links = headerDataContext.getUnauthenticatedLinks();\n\n  return (\n    <div className=\"unauthenticated-layout\">\n      {links.map((l, index: number) => {\n        const key = `${generatedId}-${index}`;\n        return <CustomHeaderLink {...l} fullWidth={false} key={key} />;\n      })}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { stringToBoolean } from '@/utils/string-to-boolean';\nimport React, { createRef, FC } from 'react';\nimport { InternalUnauthenticatedLayout } from './internal-unauthenticated-layout';\n\nimport './internal-unauthenticated.css';\n\nexport const InternalUnauthenticated: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<PanelMenuElement>();\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Unauthenticated, ref);\n\n  const links = headerDataContext.getUnauthenticatedLinks();\n  const unauthenticatedButtonProps = headerDataContext.getUnauthenticated();\n\n  if (links.length < 1 || !unauthenticatedButtonProps) {\n    return null;\n  }\n\n  const isSingleAuth = links.length === 1;\n\n  let panelChildren = null;\n  let panelIconProps = null;\n\n  if (isSingleAuth) {\n    const link = links[0];\n    panelChildren = <CustomHeaderLink {...link} iconOnly={stringToBoolean(link.iconOnly)} />;\n  } else {\n    panelIconProps = {\n      iconsCollapsed: {\n        leadingIcon: unauthenticatedButtonProps.leadingIcon,\n        leadingIconHover: unauthenticatedButtonProps.leadingIconHover,\n        trailingIcon: unauthenticatedButtonProps.trailingIcon,\n        trailingIconHover: unauthenticatedButtonProps.trailingIconHover\n      },\n      iconsExpanded: {\n        leadingIcon: unauthenticatedButtonProps.leadingIcon ? 'agora-line-x' : '',\n        leadingIconHover: unauthenticatedButtonProps.leadingIconHover ? 'agora-line-x' : '',\n        trailingIcon: unauthenticatedButtonProps.trailingIcon ? 'agora-line-x' : '',\n        trailingIconHover: unauthenticatedButtonProps.trailingIconHover ? 'agora-line-x' : ''\n      }\n    };\n\n    panelChildren = [\n      <Button\n        {...unauthenticatedButtonProps}\n        key={'multiple-unauthenticated-button'}\n        hasIcon\n        iconOnly={unauthenticatedButtonProps.iconOnly ?? false}\n        aria-haspopup=\"listbox\"\n      >\n        {unauthenticatedButtonProps.label ?? ''}\n      </Button>,\n      <InternalUnauthenticatedLayout key={'multiple-unauthenticated-panel'} />\n    ];\n  }\n\n  return (\n    <PanelMenu\n      id={MenuTypeEnum.Unauthenticated}\n      ref={ref}\n      className=\"unauthenticated-panel-menu\"\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n      {...panelIconProps}\n    >\n      {panelChildren}\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport React, { createRef, ReactNode } from 'react';\nimport { Button } from '@/components/button';\nimport { PanelMenu, PanelMenuElement } from '../../shared/panel-menu/panel-menu';\nimport { useHeaderMenuContext } from '../../context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '../../context/menu-context/menu-type.enum';\n\nimport './internal-direct-link.css';\n\nexport interface InternalDirectLinkProps {\n  text: ReactNode;\n  logo?: ReactNode;\n  children: ReactNode;\n}\n\nexport const InternalDirectLink = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const { text, logo, directLinksChildren } = headerDataContext.getDirectLinksProps();\n\n  const ref = createRef<PanelMenuElement>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.DirectLink, ref);\n\n  const icon = { leadingIcon: 'agora-line-dashboard', leadingIconHover: 'agora-line-dashboard' };\n\n  const {\n    internalDirectLinkGoBackElement,\n    internalDirectLinkTitleElement,\n    InternalDirectLinkShortDescription,\n    internalDirectLinkAnchorElements,\n    internalDirectLinkSectionTitleElements\n  } = directLinksChildren;\n\n  const hasTitleOrShortDescription = internalDirectLinkTitleElement || InternalDirectLinkShortDescription;\n\n  return (\n    <PanelMenu\n      ref={ref}\n      iconsExpanded={icon}\n      iconsCollapsed={icon}\n      id={MenuTypeEnum.DirectLink}\n      portalRefType={MenuTypeEnum.GeneralBarPortal}\n    >\n      <Button className=\"direct-link-panel-menu\" hasIcon aria-haspopup=\"dialog\">\n        {text}\n\n        {logo}\n      </Button>\n\n      <div className=\"direct-link-panel-menu-content\">\n        {internalDirectLinkGoBackElement}\n\n        {internalDirectLinkSectionTitleElements}\n\n        {hasTitleOrShortDescription && (\n          <div className=\"direct-link-title-container\">\n            {internalDirectLinkTitleElement}\n\n            {InternalDirectLinkShortDescription}\n          </div>\n        )}\n\n        {Array.isArray(internalDirectLinkAnchorElements) && internalDirectLinkAnchorElements.length > 0 ? (\n          <ul className=\"direct-link-anchor-container\">{internalDirectLinkAnchorElements}</ul>\n        ) : null}\n      </div>\n    </PanelMenu>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { InternalNavigationBurger } from '@/components/header/internals/navigation-bar/navigation-burger/internal-navigation-burger';\nimport { InternalInstitutional } from '@/components/header/internals/shared/institutional/internal-institutional';\nimport classNames from 'classnames';\nimport React, { FC } from 'react';\nimport { InternalAreas } from './areas/internal-areas';\nimport { InternalAuthenticated } from './authenticated/internal-authenticated';\nimport { InternalLanguages } from './languages/internal-languages';\nimport { InternalSearch } from './search/internal-search';\nimport { InternalUnauthenticated } from './unauthenticated/internal-unauthenticated';\nimport { InternalDirectLink } from './direct-link/internal-direct-link';\n\nimport './internal-general-bar.css';\n\nexport const InternalGeneralBar: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n\n  const generalBarClassNames = classNames('general-bar', { 'dark-mode': headerDataContext.darkMode });\n\n  return (\n    <div className={generalBarClassNames}>\n      <nav className=\"panels-menu\" aria-label={headerDataContext.getGeneralBarAriaLabel()}>\n        <ul>\n          {headerDataContext.hasLanguages() && (\n            <li>\n              <InternalLanguages />\n            </li>\n          )}\n\n          {headerDataContext.hasSearch() && (\n            <li>\n              <InternalSearch />\n            </li>\n          )}\n\n          {headerDataContext.hasDirectLinks() && (\n            <li>\n              <InternalDirectLink />\n            </li>\n          )}\n\n          {!!headerDataContext.getAuthenticated() && (\n            <li>\n              <InternalAuthenticated />\n            </li>\n          )}\n\n          {!!headerDataContext.getUnauthenticated() && (\n            <li>\n              <InternalUnauthenticated />\n            </li>\n          )}\n        </ul>\n      </nav>\n\n      <div className=\"flex\">\n        <div className=\"hidden xl:block\">\n          <InternalAreas />\n        </div>\n\n        {!headerDataContext.hasVisibleAreas() && (\n          <div className=\"hidden xl:block\">\n            <InternalInstitutional />\n          </div>\n        )}\n\n        <InternalInstitutional className=\"sr-only xl:hidden\" />\n\n        {!!headerDataContext.countNavigationItems() && (\n          <div className=\"xl:hidden\">\n            <InternalNavigationBurger />\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nimport './internal-logo.css';\n\nexport interface InternalLogoProps extends ComponentProps<'div'> {}\n\nexport const InternalLogo: FC<InternalLogoProps> = ({ className }) => {\n  const headerContext = useHeaderDataContext();\n\n  const logoClassNames = classNames('logo', className);\n\n  return <div className={logoClassNames}>{headerContext.getLogoImage()}</div>;\n};\n","import { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport classNames from 'classnames';\nimport React, { Children, FC, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport { NavigationFreestyle, NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\n\nimport './internal-navigation-link-layout.css';\n\nexport interface InternalNavigationLinksLayoutProps extends Omit<LayoutProps, 'title'> {\n  title: ReactNode;\n  linksAriaLabel?: string;\n  relatedLinksAriaLabel?: string;\n  children:\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps | NavigationFreestyleProps>\n    | ReactElement<NavigationLinkProps | RelatedNavigationLinkProps | NavigationFreestyleProps>[];\n}\n\nexport const InternalNavigationLinksLayout: FC<InternalNavigationLinksLayoutProps> = ({\n  title,\n  linksAriaLabel,\n  relatedLinksAriaLabel,\n  children\n}) => {\n  const generatedId = useId();\n\n  const navigationFreestyle = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationFreestyleProps>(child) && (child as ReactElement).type === NavigationFreestyle;\n  }) as ReactElement<NavigationFreestyleProps>[];\n\n  const links = Children.toArray(children).filter((child) => {\n    return isValidElement<NavigationLinkProps>(child) && (child as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const highlightedLinks = Children.toArray(children).filter((child) => {\n    return isValidElement<RelatedNavigationLinkProps>(child) && (child as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  const navigationLinksLayoutClassName = classNames('navigation-links-layout', highlightedLinks.length < 1 ? 'pb-32' : '');\n\n  const navigationFreestyleComponent = navigationFreestyle.length > 0 ? navigationFreestyle?.[0]?.props?.children : null;\n\n  return (\n    <div className={navigationLinksLayoutClassName}>\n      {title && <div className=\"title\">{title}</div>}\n\n      {navigationFreestyleComponent && <div className=\"freestyle\">{navigationFreestyleComponent}</div>}\n\n      {links.length > 0 && !navigationFreestyleComponent && (\n        <div className=\"links\" role=\"list\" aria-label={linksAriaLabel}>\n          {links.map((link, index) => {\n            const key = `${generatedId}-links-${index}`;\n\n            return (\n              <div className=\"link-wrapper\" key={key} role=\"listitem\">\n                <CustomHeaderLink {...link.props} variant=\"primary\" />\n              </div>\n            );\n          })}\n        </div>\n      )}\n\n      {highlightedLinks.length > 0 && !navigationFreestyleComponent && (\n        <div className=\"highlighted-links-container\">\n          <div className=\"highlighted-links\" role=\"list\" aria-label={relatedLinksAriaLabel}>\n            {highlightedLinks.map((link, index) => {\n              const key = `${generatedId}-highlighted-links-${index}`;\n\n              return (\n                <div className=\"link-wrapper\" key={key} role=\"listitem\">\n                  <CustomHeaderLink {...link.props} />\n                </div>\n              );\n            })}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { PanelMenu, PanelMenuElement } from '@/components/header/internals/shared/panel-menu/panel-menu';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { createRef, FC, isValidElement, ReactElement } from 'react';\nimport { InternalNavigationLinksLayout } from './internal-navigation-link-layout';\n\nimport './internal-navigation-list.css';\n\nexport const InternalNavigationList: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const list = headerDataContext.getNavigationItems();\n\n  const activeAreaSelector = headerDataContext.getActiveArea();\n  const navigationId = headerDataContext.getNavigationId();\n\n  return (\n    <nav className=\"internal-navigation-list\" aria-labelledby={activeAreaSelector?.value} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        {list.map((item, index) => {\n          const id = `${MenuTypeEnum.NavigationList}-${index}`;\n\n          const ref = createRef<PanelMenuElement>();\n          headerMenuContext.menuRefMap.set(id, ref);\n\n          if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n            return (\n              <li key={id}>\n                <PanelMenu\n                  id={id}\n                  ref={ref}\n                  className=\"internal-panel-navigation-list\"\n                  iconsCollapsed={{ trailingIcon: 'agora-line-chevron-down', trailingIconHover: 'agora-line-chevron-down' }}\n                  iconsExpanded={{ trailingIcon: 'agora-line-chevron-up', trailingIconHover: 'agora-line-chevron-up' }}\n                  portalRefType={MenuTypeEnum.NavigationBarPortal}\n                >\n                  <Button\n                    className=\"!px-0 !py-[14px] internal-panel-navigation-list-btn\"\n                    hasIcon\n                    aria-haspopup=\"true\"\n                    aria-expanded={ref.current?.isExpanded}\n                  >\n                    {item.props.label}\n                  </Button>\n                  <InternalNavigationLinksLayout\n                    linksAriaLabel={item.props.linksAriaLabel}\n                    relatedLinksAriaLabel={item.props.relatedLinksAriaLabel}\n                    title={item.props.label}\n                  >\n                    {item.props.children}\n                  </InternalNavigationLinksLayout>\n                </PanelMenu>\n              </li>\n            );\n          }\n\n          if (isValidElement<NavigationLinkProps>(item) && (item as ReactElement).type === NavigationLink) {\n            const linkClassNames = classNames('internal-panel-navigation-list-link', item.props.className);\n            return (\n              <li key={id} className=\"relative\">\n                <PanelMenu id={id} ref={ref} portalRefType={MenuTypeEnum.NavigationBarPortal}>\n                  <CustomHeaderLink {...item.props} className={linkClassNames} />\n                </PanelMenu>\n              </li>\n            );\n          }\n        })}\n      </ul>\n    </nav>\n  );\n};\n","import { DialogElement } from '@/components/dialog';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { CustomModalConfiguration } from './custom-modal-provider';\n\nexport interface CustomModalContextProps {\n  /**\n   * The visible dialog element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a modal is visible or not.\n   */\n  visibility?: boolean;\n  /**\n   * Shows a new modal with the configurations provided.\n   */\n  show: (children: ReactNode, config: CustomModalConfiguration) => void;\n  /**\n   * Hides the visible modal.\n   */\n  hide: () => void;\n}\n\nconst CustomModalContext = createContext<CustomModalContextProps>({} as CustomModalContextProps);\n\nconst useCustomModalContext = (): CustomModalContextProps => {\n  return useContext(CustomModalContext);\n};\n\nexport { CustomModalContext, useCustomModalContext };\n","import { Button, ButtonProps } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { useCustomModalContext } from '@/components/header/internals/shared/custom-modal/custom-modal-context';\nimport { CustomModalConfiguration } from '@/components/header/internals/shared/custom-modal/custom-modal-provider';\nimport { useExpandedRef } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, KeyboardEvent, ReactElement, ReactNode, Ref, RefObject, useRef } from 'react';\nimport './modal-menu.css';\nimport { HeaderMenuContextRef } from '../../context/menu-context/header-menu-context';\n\nexport interface ModalMenuElement extends HTMLDivElement {\n  /**\n   *  Open the modal\n   */\n  open: () => void;\n  /**\n   *  close the modal\n   */\n  close: () => void;\n  /**\n   *  Focus the modal menu control.\n   */\n  focus: () => void;\n  /**\n   *  Current value of the expanded state of the panel menu.\n   */\n  isOpen: boolean;\n}\n\nexport interface ModalMenuProps extends Omit<ButtonProps, 'ref'> {\n  darkMode?: boolean;\n  modalAriaLabel?: string;\n  openLabel?: ReactNode;\n  closeLabel?: ReactNode;\n  children: ReactElement<HTMLDivElement> | ReactElement<HTMLDivElement>[];\n  ref?: RefObject<HeaderMenuContextRef>;\n}\n\nconst ModalMenu: FC<ModalMenuProps> = ({\n  ref = null,\n  className,\n  openLabel,\n  closeLabel,\n  modalAriaLabel,\n  darkMode = false,\n  children,\n  ...props\n}) => {\n  const headerContext = useHeaderDataContext();\n\n  const modalContext = useCustomModalContext();\n\n  const modalContentChildComponent = Children.toArray(children).find((child) => {\n    return isValidElement<ComponentProps<'div'>>(child) && (child as ReactElement).type !== Button;\n  }) as ReactElement<ComponentProps<'div'>>;\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const focus = () => {\n    buttonRef.current?.focus();\n  };\n\n  const open = () => {\n    modalContext.show(modalContentChildComponent, {\n      closeButtonLabel: closeLabel?.toString(),\n      ariaLabel: modalAriaLabel,\n      onHide: focus\n    } as CustomModalConfiguration);\n  };\n\n  const close = () => {\n    modalContext.hide();\n  };\n\n  const innerRef = useRef<HTMLDivElement>(null);\n\n  useExpandedRef<ModalMenuElement>(ref as Ref<ModalMenuElement>, innerRef, {\n    isOpen: modalContext.visibility,\n    open,\n    close,\n    focus\n  } as ModalMenuElement);\n\n  const handleButtonClick = () => {\n    open();\n  };\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      evt.stopPropagation();\n      open();\n    }\n  };\n\n  const modalMenuClassNames = classNames('modal-menu', className, { 'dark-mode': darkMode });\n\n  const menuButtonClassNames = classNames('modal-menu-button', { expanded: modalContext.visibility, collapsed: !modalContext.visibility });\n\n  return (\n    <div ref={innerRef} className={modalMenuClassNames}>\n      <Button\n        {...props}\n        ref={buttonRef}\n        className={menuButtonClassNames}\n        onClick={handleButtonClick}\n        onKeyDownCapture={handleKeyDown}\n        onKeyUpCapture={handleKeyUp}\n        appearance=\"link\"\n        variant=\"neutral\"\n        hasIcon\n        leadingIcon=\"agora-line-menu\"\n        leadingIconHover=\"agora-solid-menu\"\n        darkMode={headerContext.darkMode}\n      >\n        {openLabel}\n      </Button>\n    </div>\n  );\n};\n\nexport { ModalMenu };\n","import { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport { RelatedNavigationLink, RelatedNavigationLinkProps } from '@/components/header/navigation-bar/related-navigation-link';\nimport React, { Children, FC, isValidElement, ReactElement, useId } from 'react';\n\nimport './internal-modal-content.css';\nimport { NavigationFreestyle, NavigationFreestyleProps } from '@/components/header/navigation-bar/navigation-freestyle';\n\nexport interface InternalModalContentProps {\n  item: ReactElement<NavigationRootProps | NavigationLinkProps | NavigationFreestyleProps>;\n}\n\nexport const InternalModalContent: FC<InternalModalContentProps> = ({ item }) => {\n  const generatedId = useId();\n\n  let contentTitle = '';\n  let linksAriaLabel = '';\n  let relatedLinksAriaLabel = '';\n  if (isValidElement<NavigationRootProps>(item) && (item as ReactElement).type === NavigationRoot) {\n    contentTitle = item.props.label;\n    linksAriaLabel = item.props.linksAriaLabel ?? '';\n    relatedLinksAriaLabel = item.props.relatedLinksAriaLabel ?? '';\n  }\n\n  const navigationFreestyle = Children.toArray(item.props.children).filter((child) => {\n    return isValidElement<NavigationFreestyleProps>(child) && (child as ReactElement).type === NavigationFreestyle;\n  }) as ReactElement<NavigationFreestyleProps>[];\n\n  const navigationFreestyleComponent = navigationFreestyle.length > 0 ? navigationFreestyle?.[0]?.props?.children : null;\n\n  const activeMenuItemLinks: ReactElement<NavigationLinkProps>[] = Children.toArray(item.props.children).filter((l) => {\n    return isValidElement<NavigationLinkProps>(l) && (l as ReactElement).type === NavigationLink;\n  }) as ReactElement<NavigationLinkProps>[];\n\n  const activeMenuItemRelatedLinks: ReactElement<RelatedNavigationLinkProps>[] = Children.toArray(item.props.children).filter((l) => {\n    return isValidElement<RelatedNavigationLinkProps>(l) && (l as ReactElement).type === RelatedNavigationLink;\n  }) as ReactElement<RelatedNavigationLinkProps>[];\n\n  return (\n    <>\n      {navigationFreestyleComponent && (\n        <div className=\"main-content\">\n          <div className=\"content\">\n            <div className=\"links\">\n              <div className=\"links-title\">{contentTitle}</div>\n              <div className=\"modal-content-freestyle\">{navigationFreestyleComponent}</div>\n            </div>\n          </div>\n        </div>\n      )}\n\n      {activeMenuItemLinks.length > 0 && !navigationFreestyleComponent && (\n        <>\n          <div className=\"main-content\">\n            <div className=\"content\">\n              <div className=\"links\">\n                <div className=\"links-title\">{contentTitle}</div>\n                <div className=\"links-list\" role=\"list\" aria-label={linksAriaLabel}>\n                  {activeMenuItemLinks.map((l, index) => {\n                    const key = `${generatedId}-link-${index}`;\n                    return (\n                      <div key={key} role=\"listitem\">\n                        <CustomHeaderLink {...l.props} variant=\"primary\" />\n                      </div>\n                    );\n                  })}\n                </div>\n              </div>\n            </div>\n          </div>\n\n          {activeMenuItemRelatedLinks.length > 0 && (\n            <div className=\"main-content full\">\n              <div className=\"content\">\n                <div className=\"related-links\">\n                  <div className=\"related-links-title\"></div>\n                  <div className=\"related-links-list\" role=\"list\" aria-label={relatedLinksAriaLabel}>\n                    {activeMenuItemRelatedLinks.map((l, index) => {\n                      const key = `${generatedId}-link-${index}`;\n                      return (\n                        <div key={key} role=\"listitem\">\n                          <CustomHeaderLink {...l.props} variant=\"neutral\" />\n                        </div>\n                      );\n                    })}\n                  </div>\n                </div>\n              </div>\n            </div>\n          )}\n        </>\n      )}\n    </>\n  );\n};\n","import { Button } from '@/components/button';\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { CustomHeaderLink } from '@/components/header/internals/shared/custom-header-link/custom-header-link';\nimport { NavigationLink, NavigationLinkProps } from '@/components/header/navigation-bar/navigation-link';\nimport { NavigationRoot, NavigationRootProps } from '@/components/header/navigation-bar/navigation-root';\nimport classNames from 'classnames';\nimport React, { FC, isValidElement, KeyboardEvent, ReactElement, useEffect, useId, useRef, useState } from 'react';\n\nimport './internal-modal-navbar.css';\n\nexport interface InternalModalNavbarProps {\n  onActiveChange: (activeIndex: number) => void;\n}\n\nexport const InternalModalNavbar: FC<InternalModalNavbarProps> = ({ onActiveChange }) => {\n  const generatedId = useId();\n\n  const menubarRef = useRef<HTMLUListElement>(null);\n\n  const headerDataContext = useHeaderDataContext();\n\n  const list = headerDataContext.getNavigationItems();\n\n  const [activeMenuItem, setActiveMenuItem] = useState(0);\n\n  const onActiveChangeRef = useRef(onActiveChange);\n  onActiveChangeRef.current = onActiveChange;\n\n  useEffect(() => {\n    onActiveChangeRef.current(activeMenuItem);\n  }, [activeMenuItem]);\n\n  const [focusIndex, setFocusIndex] = useState(0);\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLElement>) => {\n    const { code } = evt;\n\n    if (menubarRef.current) {\n      const availableMenuItems = Array.from(menubarRef.current.querySelectorAll('[data-menuitem]'));\n\n      let nextIndex = null;\n      if (code === 'ArrowUp') {\n        nextIndex = focusIndex > 0 ? focusIndex - 1 : availableMenuItems.length - 1;\n      }\n\n      if (code === 'ArrowDown') {\n        nextIndex = focusIndex === availableMenuItems.length - 1 ? 0 : focusIndex + 1;\n      }\n\n      if (nextIndex !== null) {\n        const nextElem = availableMenuItems[nextIndex] as HTMLElement;\n\n        if (nextElem.getAttribute('data-menuitem') === 'button') {\n          nextElem.focus();\n        } else {\n          const anchor = nextElem.querySelector('a');\n          if (anchor) {\n            (anchor as HTMLElement).focus();\n          }\n        }\n\n        setFocusIndex(nextIndex);\n      }\n    }\n  };\n\n  return (\n    <div className=\"navbar\">\n      {headerDataContext.getModalMenuLabel() && (\n        <div id=\"internal-modal-navbar-title\" className=\"navbar-title\">\n          {headerDataContext.getModalMenuLabel()}\n        </div>\n      )}\n      <nav className=\"navbar-links\" aria-labelledby=\"internal-modal-navbar-title\">\n        <ul ref={menubarRef} aria-labelledby=\"internal-modal-navbar-title\">\n          {list.map((l, index) => {\n            const key = `${generatedId}-${index}`;\n\n            const itemClassNames = classNames('internal-modal-menu-item', { selected: activeMenuItem === index });\n\n            const handleButtonClick = () => {\n              setActiveMenuItem(index);\n            };\n\n            const autoFocusProp = index === focusIndex;\n\n            if (isValidElement<NavigationRootProps>(l) && (l as ReactElement).type === NavigationRoot) {\n              return (\n                <li key={key}>\n                  <Button\n                    data-autofocus={autoFocusProp}\n                    fullWidth\n                    appearance=\"link\"\n                    variant=\"neutral\"\n                    data-menuitem=\"button\"\n                    className={itemClassNames}\n                    onClick={handleButtonClick}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  >\n                    {l.props.label}\n                  </Button>\n                </li>\n              );\n            }\n\n            if (isValidElement<NavigationLinkProps>(l) && (l as ReactElement).type === NavigationLink) {\n              return (\n                <li key={key}>\n                  <CustomHeaderLink\n                    {...l.props}\n                    data-menuitem=\"link-wrapper\"\n                    className={itemClassNames}\n                    data-autofocus={autoFocusProp}\n                    onKeyDown={handleKeyDown}\n                    tabIndex={focusIndex === index ? 0 : -1}\n                  />\n                </li>\n              );\n            }\n          })}\n        </ul>\n      </nav>\n    </div>\n  );\n};\n","/* eslint-disable jsx-a11y/tabindex-no-positive */\nimport { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { LayoutProps } from '@/components/header/internals/shared/panel-menu/layout.interface';\nimport React, { FC, useState } from 'react';\n\nimport { Button } from '@/components/button';\nimport { useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { ModalMenuElement } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport classNames from 'classnames';\nimport { InternalModalContent } from './internal-modal-content';\nimport { InternalModalNavbar } from './internal-modal-navbar';\nimport './internal-navigation-modal-layout.css';\n\nexport const InternalNavigationModalLayout: FC<LayoutProps> = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const list = headerDataContext.getNavigationItems();\n\n  const [activeIndex, setActiveIndex] = useState(0);\n\n  const handleActiveChange = (newIndex: number) => {\n    setActiveIndex(newIndex);\n  };\n\n  const handleClick = () => {\n    const ref = headerMenuContext.menuRefMap.get('Modal');\n\n    if (ref?.current) {\n      (ref.current as ModalMenuElement).close();\n    }\n  };\n\n  const navigationModalLayoutClassNames = classNames('navigation-modal-layout', { 'dark-mode': headerDataContext.darkMode });\n\n  return (\n    <div className={navigationModalLayoutClassNames}>\n      <div className=\"menu\">\n        <div className=\"menu-content\">\n          <div className=\"content\">\n            <InternalModalNavbar onActiveChange={handleActiveChange} />\n          </div>\n        </div>\n      </div>\n      <div className=\"main\">\n        <div className=\"main-content\">\n          <div className=\"content\">\n            <div className=\"close-bar\">\n              <Button\n                tabIndex={1}\n                className=\"close-modal-button\"\n                hasIcon\n                trailingIcon=\"agora-line-x\"\n                trailingIconHover=\"agora-solid-x\"\n                variant=\"neutral\"\n                appearance=\"link\"\n                darkMode={headerDataContext.darkMode}\n                onClick={handleClick}\n              >\n                {headerDataContext.getModalCloseLabel()}\n              </Button>\n            </div>\n          </div>\n        </div>\n        <div className=\"scroll-container\">\n          <InternalModalContent item={list[activeIndex]} />\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { HeaderMenuContextRef, useHeaderMenuContext } from '@/components/header/internals/context/menu-context/header-menu-context';\nimport { MenuTypeEnum } from '@/components/header/internals/context/menu-context/menu-type.enum';\nimport { ModalMenu } from '@/components/header/internals/shared/modal-menu/modal-menu';\nimport React, { createRef, FC } from 'react';\nimport { InternalNavigationModalLayout } from './internal-navigation-modal-layout';\n\nexport const InternalNavigationModal: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n\n  const ref = createRef<HeaderMenuContextRef>();\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Modal, ref);\n\n  const activeAreaSelector = headerDataContext.getActiveArea();\n  const navigationId = headerDataContext.getNavigationId();\n\n  return (\n    <nav className=\"internal-navigation-list\" aria-labelledby={activeAreaSelector?.value} {...(navigationId ? { id: navigationId } : {})}>\n      <ul>\n        <li>\n          <ModalMenu\n            ref={ref}\n            openLabel={headerDataContext.getModalMenuLabel()}\n            modalAriaLabel={headerDataContext.getModalAriaLabel()}\n            closeLabel={headerDataContext.getModalCloseLabel()}\n          >\n            <InternalNavigationModalLayout />\n          </ModalMenu>\n        </li>\n      </ul>\n    </nav>\n  );\n};\n","import { useHeaderDataContext } from '@/components/header/internals/context/data-context/header-data-context';\nimport { InternalInstitutional } from '@/components/header/internals/shared/institutional/internal-institutional';\nimport React, { FC } from 'react';\nimport { InternalLogo } from './logo/internal-logo';\nimport { InternalNavigationList } from './navigation-list/internal-navigation-list';\nimport { InternalNavigationModal } from './navigation-modal/internal-navigation-modal';\n\nimport './internal-navigation-bar.css';\n\nexport const InternalNavigationBar: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n\n  const activeArea = headerDataContext.getActiveArea();\n\n  const tabAccessibleProps = {\n    'role': 'tabpanel',\n    'id': 'tabpanel-active',\n    'aria-labelledby': activeArea?.value\n  };\n\n  const componentClassNames = (\n    <>\n      {headerDataContext.hasVisibleAreas() && (\n        <div className=\"hidden xl:block\">\n          <InternalInstitutional />\n        </div>\n      )}\n\n      <div className=\"navbar-container\">\n        <InternalLogo />\n        {headerDataContext.countNavigationItems() > 0 && (\n          <div className=\"hidden xl:flex\">\n            {headerDataContext.countNavigationItems() > headerDataContext.maxNavigationItems && <InternalNavigationModal />}\n            {headerDataContext.countNavigationItems() <= headerDataContext.maxNavigationItems && <InternalNavigationList />}\n          </div>\n        )}\n      </div>\n\n      <div className=\"hidden md:block xl:hidden\">\n        <InternalInstitutional />\n      </div>\n    </>\n  );\n\n  return (\n    <>\n      <div className=\"navigation-bar !hidden xl:!block\" {...tabAccessibleProps}>\n        {componentClassNames}\n      </div>\n\n      <div className=\"navigation-bar xl:!hidden\">{componentClassNames}</div>\n    </>\n  );\n};\n","import React, { FC, RefObject, useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { useHeaderDataContext } from './context/data-context/header-data-context';\nimport { useHeaderMenuContext } from './context/menu-context/header-menu-context';\nimport { InternalGeneralBar } from './general-bar/internal-general-bar';\nimport { InternalNavigationBar } from './navigation-bar/internal-navigation-bar';\n\nimport { MenuTypeEnum } from './context/menu-context/menu-type.enum';\nimport './internal-header.css';\n\nexport const InternalHeader: FC = () => {\n  const headerDataContext = useHeaderDataContext();\n  const headerMenuContext = useHeaderMenuContext();\n  const hasNavigationBar = headerDataContext.hasNavigationBar();\n\n  const innerRef = useRef<HTMLDivElement>(null);\n  const generalBarPortalRef = useRef<HTMLDivElement>(null);\n  const navigationBarPortalRef = useRef<HTMLDivElement>(null);\n\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.Header, innerRef as RefObject<HTMLDivElement>);\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.GeneralBarPortal, generalBarPortalRef as RefObject<HTMLDivElement>);\n  headerMenuContext.menuRefMap.set(MenuTypeEnum.NavigationBarPortal, navigationBarPortalRef as RefObject<HTMLDivElement>);\n\n  const headerClassNames = classNames('agora-header');\n\n  const generalBarBGClassNames = classNames('general-bar-bg', {\n    'bg-[var(--color-neutral-100)]': !headerDataContext.darkMode,\n    'bg-[var(--color-primary-900)]': headerDataContext.darkMode\n  });\n\n  const navigationBarBGClassNames = classNames('navigation-bar-bg', {\n    'bg-white': !headerDataContext.darkMode,\n    'bg-[var(--color-primary-700)]': headerDataContext.darkMode\n  });\n\n  return (\n    <div className={headerClassNames} ref={innerRef}>\n      <div className={generalBarBGClassNames}>\n        <InternalGeneralBar />\n        <div ref={generalBarPortalRef} className=\"general-bar-portal\" />\n      </div>\n\n      {hasNavigationBar && (\n        <div className={navigationBarBGClassNames}>\n          <InternalNavigationBar />\n          <div ref={navigationBarPortalRef} className=\"navigation-bar-portal\" />\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\n\nimport './custom-modal-dialog.css';\n\nexport const CustomModalDialog: FC<ComponentProps<'div'>> = ({ children }) => {\n  return <div className=\"custom-modal-dialog\">{children}</div>;\n};\n","import { Dialog, DialogElement } from '@/components/dialog';\nimport React, { ComponentProps, FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { CustomModalContext, CustomModalContextProps } from './custom-modal-context';\nimport { CustomModalDialog } from './custom-modal-dialog';\n\nexport interface CustomModalConfiguration {\n  closeButtonLabel: string;\n  ariaLabel: string;\n  onShow?: () => void;\n  onHide?: () => void;\n}\n\nconst CustomModalProvider: FC<ComponentProps<'div'>> = ({ children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n\n  const [dialogConfigs, setDialogConfigs] = useState<CustomModalConfiguration>({\n    closeButtonLabel: '',\n    ariaLabel: ''\n  } as CustomModalConfiguration);\n\n  const show = useCallback(\n    (currentDialogChildren: ReactNode, configs: CustomModalConfiguration) => {\n      setDialogChildren(currentDialogChildren);\n      setDialogConfigs(configs);\n      dialogRef.current?.show();\n    },\n    [setDialogChildren, setDialogConfigs]\n  );\n\n  const hide = useCallback((): void => {\n    dialogRef.current?.hide();\n  }, []);\n\n  const handleOnShow = () => {\n    dialogConfigs.onShow?.();\n  };\n\n  const handleOnHide = () => {\n    dialogConfigs.onHide?.();\n  };\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        show,\n        hide\n      }) as CustomModalContextProps,\n    [show, hide]\n  );\n\n  return (\n    <CustomModalContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen\n        dismissOnBackdropClick={false}\n        dismissOnEscape={true}\n        aria-label={dialogConfigs.ariaLabel}\n        onShow={handleOnShow}\n        onHide={handleOnHide}\n      >\n        <CustomModalDialog>{dialogChildren}</CustomModalDialog>\n      </Dialog>\n      {children}\n    </CustomModalContext>\n  );\n};\n\nexport { CustomModalProvider };\n","import { BooleanProp } from '@/models';\nimport React, { ComponentProps, FC, ReactElement, Ref, useEffect, useRef } from 'react';\nimport { BrandProps } from './brand/brand';\nimport { GeneralBarProps } from './general-bar/general-bar';\nimport { HeaderDataContext } from './internals/context/data-context/header-data-context';\nimport { useHeaderDataController } from './internals/context/data-context/header-data-controller';\nimport { useHeaderExternalController } from './internals/context/external-context/header-external-controller';\nimport { HeaderMenuContext } from './internals/context/menu-context/header-menu-context';\nimport { useHeaderMenuController } from './internals/context/menu-context/header-menu-controller';\nimport { InternalAuthenticatedDrawer } from './internals/general-bar/authenticated/Internal-authenticated-drawer';\nimport { InternalHeader } from './internals/internal-header';\nimport { CustomModalProvider } from './internals/shared/custom-modal/custom-modal-provider';\nimport { NavigationBarProps } from './navigation-bar/navigation-bar';\n\nexport interface HeaderElement extends ComponentProps<'div'> {\n  focusActiveArea: () => void;\n  setActiveArea: (areaValue: string) => void;\n\n  focusLanguages: () => void;\n  openLanguages: () => void;\n\n  focusSearch: () => void;\n  openSearch: () => void;\n\n  focusUnauthenticated: () => void;\n  openUnauthenticated: () => void;\n\n  focusAuthenticated: () => void;\n  openAuthenticated: () => void;\n\n  focusBurgerMenu: () => void;\n  openBurgerMenu: () => void;\n\n  focusModalMenu: () => void;\n  openModalMenu: () => void;\n\n  focusNavigationMenuOption: (index: number) => void;\n  openNavigationMenuOption: (index: number) => void;\n\n  closeAll: () => void;\n}\n\nexport type HeaderChildrenComponents =\n  | ReactElement<BrandProps | GeneralBarProps | NavigationBarProps>\n  | ReactElement<BrandProps | GeneralBarProps | NavigationBarProps>[];\n\nexport interface HeaderProps {\n  ref?: Ref<HeaderElement>;\n\n  darkMode?: BooleanProp;\n\n  maxNavigationItems?: number;\n\n  children?: HeaderChildrenComponents;\n}\n\nconst Header: FC<HeaderProps> = ({ ref = null, ...props }) => {\n  const headerDataController = useHeaderDataController({ ref, ...props });\n  const headerMenuController = useHeaderMenuController();\n\n  useHeaderExternalController(ref, headerMenuController);\n\n  const screenWidth = useRef(0);\n  const headerMenuControllerRef = useRef(headerMenuController);\n  headerMenuControllerRef.current = headerMenuController;\n\n  useEffect(() => {\n    const handleResize = () => {\n      if (screenWidth.current !== window.innerWidth) {\n        headerMenuControllerRef.current.collapseAllMenus();\n        screenWidth.current = window.innerWidth;\n      }\n    };\n\n    window.addEventListener('resize', handleResize);\n\n    setTimeout(() => {\n      screenWidth.current = window.innerWidth;\n    }, 50);\n\n    return () => {\n      window.removeEventListener('resize', handleResize);\n    };\n  }, []);\n\n  return (\n    <HeaderDataContext value={headerDataController}>\n      <HeaderMenuContext value={headerMenuController}>\n        <CustomModalProvider>\n          <InternalHeader />\n          <InternalAuthenticatedDrawer />\n        </CustomModalProvider>\n      </HeaderMenuContext>\n    </HeaderDataContext>\n  );\n};\n\nexport { Header };\n","import { createContext, Dispatch, SetStateAction } from 'react';\nimport { Months, WeekDays } from '@/models';\n\nexport type DatePickerStateContextType = {\n  focusedDate: Date;\n  setFocusedDate: Dispatch<SetStateAction<Date>>;\n\n  selectedDate: Date;\n  setSelectedDate: Dispatch<SetStateAction<Date>>;\n\n  disabledDates: Array<Date | string> | [];\n  setDisabledDates: Dispatch<SetStateAction<Array<Date | string> | []>>;\n\n  endDate: Date | string;\n  setEndDate: Dispatch<SetStateAction<Date | string>>;\n\n  startDate: Date | string;\n  setStartDate: Dispatch<SetStateAction<Date | string>>;\n\n  cancel: () => void;\n\n  onChange?: (date: Date) => void;\n\n  labels: {\n    previousYearAriaLabel: string;\n    previousMonthAriaLabel: string;\n    nextMonthAriaLabel: string;\n    nextYearAriaLabel: string;\n    monthsLabels?: Months;\n    weekdaysLabels?: WeekDays;\n    focusedDayAriaLabel?: string;\n    selectedDayAriaLabel: string;\n    todayDayAriaLabel: string;\n    todayLabel: string;\n    todayAriaLabel?: string;\n    cancelLabel: string;\n    cancelAriaLabel?: string;\n    okLabel: string;\n    okAriaLabel?: string;\n  };\n};\n\nexport const DatePickerStateContext = createContext<DatePickerStateContextType | undefined>(undefined);\n","export const isSameDay = (date1: Date, date2: Date): boolean => {\n  return date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate();\n};\n","import { isSameDay } from './is-same-day';\n\nexport const enum Direction {\n  Forward = 'forward',\n  Backward = 'backward'\n}\n\ninterface GetClosestAvailableDayParams {\n  startingDate?: Date;\n  disabledDates: (Date | string)[];\n  direction?: Direction;\n}\n\nexport const getClosestAvailableDay = ({\n  startingDate = new Date(),\n  disabledDates,\n  direction = Direction.Forward\n}: GetClosestAvailableDayParams): Date => {\n  const availableDate = startingDate;\n  const convertedDisabledDates = disabledDates.map((d) => (typeof d === 'string' ? new Date(Number(d)) : d));\n  const directionValue = direction === Direction.Backward ? -1 : 1;\n\n  while (convertedDisabledDates.some((d) => isSameDay(availableDate, d))) {\n    availableDate.setDate(availableDate.getDate() + directionValue);\n  }\n\n  return availableDate;\n};\n","export const isDayBeforeStartDate = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  return parsedDate < parsedStartDate;\n};\n\nexport const isDayAfterEndDate = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  return parsedDate > parsedEndDate;\n};\n\n// Return true if startDate is 1 month or more before the desired date\nexport const isStartDateOneMonthOrMore = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedDate.getFullYear() - parsedStartDate.getFullYear();\n  const monthDifference = yearDifference * 12 + parsedDate.getMonth() - parsedStartDate.getMonth();\n\n  return monthDifference >= 1;\n};\n\n// Return true if endDate is 1 month or more after the desired date\nexport const isEndDateOneMonthOrMore = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedEndDate.getFullYear() - parsedDate.getFullYear();\n  const monthDifference = yearDifference * 12 + parsedEndDate.getMonth() - parsedDate.getMonth();\n\n  return monthDifference >= 1;\n};\n\n// Return true if startDate is 1 year or more before the desired date\nexport const isStartDateOneYearOrMore = (date: Date | string, startDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedStartDate = new Date(typeof startDate === 'string' ? new Date(startDate) : startDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedStartDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedDate.getFullYear() - parsedStartDate.getFullYear();\n\n  return yearDifference >= 1;\n};\n\n// Return true if endDate is 1 year or more after the desired date\nexport const isEndDateOneYearOrMore = (date: Date | string, endDate: Date | string): boolean => {\n  const parsedDate = new Date(typeof date === 'string' ? new Date(date) : date);\n  const parsedEndDate = new Date(typeof endDate === 'string' ? new Date(endDate) : endDate);\n\n  parsedDate.setHours(0, 0, 0, 0);\n  parsedEndDate.setHours(0, 0, 0, 0);\n\n  const yearDifference = parsedEndDate.getFullYear() - parsedDate.getFullYear();\n\n  return yearDifference >= 1;\n};\n","import { useContext, useMemo } from 'react';\nimport { Months, WeekDays } from '@/models';\n\nimport { DatePickerStateContext } from './date-picker-state.context';\nimport { Direction, getClosestAvailableDay } from '../utils/get-closest-available-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\n\nconst DEFAULT_MONTHS = {\n  jan: 'Janeiro',\n  feb: 'Fevereiro',\n  mar: 'Março',\n  apr: 'Abril',\n  may: 'Maio',\n  jun: 'Junho',\n  jul: 'Julho',\n  aug: 'Agosto',\n  set: 'Setembro',\n  oct: 'Outubro',\n  nov: 'Novembro',\n  dec: 'Dezembro'\n} as Months;\n\nconst DEFAULT_WEEK_DAYS = {\n  sun: 'Domingo',\n  mon: 'Segunda',\n  tue: 'Terça',\n  wed: 'Quarta',\n  thu: 'Quinta',\n  fri: 'Sexta',\n  sat: 'Sábado'\n} as WeekDays;\n\nconst useDatePickerStateContext = () => {\n  const ctx = useContext(DatePickerStateContext);\n\n  if (!ctx) {\n    throw new Error('Context must be used within a provider.');\n  }\n\n  const months = ctx.labels.monthsLabels ?? DEFAULT_MONTHS;\n\n  const weekDays = ctx.labels.weekdaysLabels ?? DEFAULT_WEEK_DAYS;\n\n  const getAbbrWeekDays = () => {\n    return Object.values(weekDays).map((wd: string) => wd.substring(0, 3));\n  };\n\n  const focusedMonth = useMemo(() => {\n    const mapMonths = new Map<number, string>();\n    Object.values(months).forEach((value: string, index) => {\n      mapMonths.set(index, value);\n    });\n    return mapMonths.get(ctx.focusedDate.getMonth());\n  }, [ctx.focusedDate, months]);\n\n  const focusedYear = useMemo(() => {\n    return ctx.focusedDate.getFullYear();\n  }, [ctx.focusedDate]);\n\n  const moveFocusInDays = ({ numberOfDays = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfDays : numberOfDays;\n\n    newDate.setDate(newDate.getDate() + directionValue);\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveFocusInMonths = ({ numberOfMonths = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfMonths : numberOfMonths;\n\n    newDate.setMonth(newDate.getMonth() + directionValue);\n\n    const parsedStartDate = typeof ctx.startDate === 'string' ? new Date(ctx.startDate) : ctx.startDate;\n    const parsedEndDate = typeof ctx.endDate === 'string' ? new Date(ctx.endDate) : ctx.endDate;\n\n    if (parsedStartDate && newDate < parsedStartDate) {\n      ctx.setFocusedDate(new Date(parsedStartDate));\n      return;\n    }\n\n    if (parsedEndDate && newDate > parsedEndDate) {\n      ctx.setFocusedDate(new Date(parsedEndDate));\n      return;\n    }\n\n    const isBeforeStartDate = parsedStartDate ? isDayBeforeStartDate(newDate, parsedStartDate) : false;\n    const isAfterEndDate = parsedEndDate ? isDayAfterEndDate(newDate, parsedEndDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveFocusInYears = ({ numberOfYears = 1, direction = Direction.Forward }): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n    const directionValue = direction === Direction.Backward ? -numberOfYears : numberOfYears;\n\n    newDate.setFullYear(newDate.getFullYear() + directionValue);\n\n    const parsedStartDate = typeof ctx.startDate === 'string' ? new Date(ctx.startDate) : ctx.startDate;\n    const parsedEndDate = typeof ctx.endDate === 'string' ? new Date(ctx.endDate) : ctx.endDate;\n\n    if (parsedStartDate && newDate < parsedStartDate) {\n      ctx.setFocusedDate(new Date(parsedStartDate));\n      return;\n    }\n\n    if (parsedEndDate && newDate > parsedEndDate) {\n      ctx.setFocusedDate(new Date(parsedEndDate));\n      return;\n    }\n\n    const isBeforeStartDate = parsedStartDate ? isDayBeforeStartDate(newDate, parsedStartDate) : false;\n    const isAfterEndDate = parsedEndDate ? isDayAfterEndDate(newDate, parsedEndDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const focusToday = (): void => {\n    ctx.setFocusedDate(new Date());\n  };\n\n  const moveToNextDay = () => moveFocusInDays({ numberOfDays: 1, direction: Direction.Forward });\n  const moveToNextWeek = () => moveFocusInDays({ numberOfDays: 7, direction: Direction.Forward });\n  const moveToNextMonth = () => moveFocusInMonths({ numberOfMonths: 1, direction: Direction.Forward });\n  const moveToNextYear = () => moveFocusInYears({ numberOfYears: 1, direction: Direction.Forward });\n\n  const moveToPreviousDay = () => moveFocusInDays({ numberOfDays: 1, direction: Direction.Backward });\n  const moveToPreviousWeek = () => moveFocusInDays({ numberOfDays: 7, direction: Direction.Backward });\n  const moveToPreviousMonth = () => moveFocusInMonths({ numberOfMonths: 1, direction: Direction.Backward });\n  const moveToPreviousYear = () => moveFocusInYears({ numberOfYears: 1, direction: Direction.Backward });\n\n  const moveToFirstDayOfWeek = (): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n\n    newDate.setDate(newDate.getDate() - newDate.getDay());\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction: Direction.Backward\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const moveToLastDayOfWeek = (): void => {\n    const focusedDate = new Date(ctx.focusedDate.getTime());\n    const newDate = focusedDate;\n\n    newDate.setDate(newDate.getDate() + (6 - newDate.getDay()));\n\n    const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(newDate, ctx.startDate) : false;\n    const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(newDate, ctx.endDate) : false;\n\n    if (!isBeforeStartDate && !isAfterEndDate) {\n      const closestAvailableDay = getClosestAvailableDay({\n        startingDate: focusedDate,\n        disabledDates: ctx.disabledDates,\n        direction: Direction.Forward\n      });\n\n      ctx.setFocusedDate(new Date(closestAvailableDay));\n    }\n  };\n\n  const selectFocusedDate = (): void => {\n    ctx.setSelectedDate(ctx.focusedDate);\n  };\n\n  const getLabels = () => {\n    return ctx.labels;\n  };\n\n  return {\n    ...ctx,\n    getLabels,\n\n    getAbbrWeekDays,\n\n    focusedMonth,\n    focusedYear,\n\n    moveToPreviousYear,\n    moveToPreviousMonth,\n    moveToNextMonth,\n    moveToNextYear,\n\n    moveToNextDay,\n    moveToNextWeek,\n    moveToPreviousDay,\n    moveToPreviousWeek,\n    moveToFirstDayOfWeek,\n    moveToLastDayOfWeek,\n    selectFocusedDate,\n\n    focusToday\n  };\n};\n\nexport { useDatePickerStateContext };\n","export const isDateInSameMonthOfYear = (date1: Date, date2: Date): boolean => {\n  return date1.getMonth() === date2.getMonth() && date1.getFullYear() === date2.getFullYear();\n};\n","import { isSameDay } from '../utils/is-same-day';\n\nexport const isDayOnArray = (date: Date, datesArray: (Date | string)[]): boolean => {\n  return datesArray.some((d) => {\n    let convertedDate: Date;\n\n    if (typeof d === 'string') {\n      const isStringOnlyDigits = /^\\d+$/.test(d);\n      if (isStringOnlyDigits) {\n        convertedDate = new Date(Number(d));\n      } else {\n        convertedDate = new Date(d);\n      }\n    } else {\n      convertedDate = d;\n    }\n\n    return isSameDay(date, convertedDate);\n  });\n};\n","import { getDateString } from '@/utils';\n\nexport const parseInputDate = (val?: string | null): Date | undefined => {\n  if (!val) {\n    return undefined;\n  }\n\n  if (/\\d{1,2}\\/\\d{1,2}\\/\\d{4}/.test(val)) {\n    const parts = val.split('/');\n    if (parts) {\n      const day = +parts[0];\n      const month = +parts[1];\n      const year = +parts[2];\n      const parsedDate = new Date(year, month - 1, day);\n      const parsedDateString = getDateString(parsedDate);\n      return parsedDateString === val ? parsedDate : undefined;\n    }\n  }\n\n  return undefined;\n};\n","import classNames from 'classnames';\nimport React, { FC, KeyboardEvent, MouseEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport { getDateString } from '@/utils';\nimport { isDateInSameMonthOfYear } from '../utils/is-date-in-same-month';\nimport { isSameDay } from '../utils/is-same-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\nimport { isDayOnArray } from '../utils/is-day-on-array';\nimport { parseInputDate } from '../utils/parse-input-date';\n\nexport const DialogBody: FC = () => {\n  const ctx = useDatePickerStateContext();\n  const ctxRef = useRef(ctx);\n  ctxRef.current = ctx;\n\n  const ref = useRef(null);\n\n  const [isCalendarActive, setIsCalendarActive] = useState(false);\n\n  const parseDateFromTarget = (target: HTMLElement): Date | undefined => {\n    const dateString = target.getAttribute('data-date');\n    return parseInputDate(dateString);\n  };\n\n  const focusAndSelectTargetDate = useCallback((targetDate: Date | undefined) => {\n    if (\n      targetDate &&\n      isDateInSameMonthOfYear(ctxRef.current.focusedDate, targetDate) &&\n      !isDayOnArray(targetDate, ctxRef.current.disabledDates)\n    ) {\n      const parsedTargetDate = new Date(targetDate);\n      ctxRef.current.setFocusedDate(parsedTargetDate);\n      ctxRef.current.setSelectedDate(parsedTargetDate);\n    }\n  }, []);\n\n  const onClickHandler = useCallback(\n    (evt: MouseEvent<HTMLTableCellElement>) => {\n      const parsedDateFromTarget = parseDateFromTarget(evt.target as HTMLElement);\n\n      const isBeforeStartDate =\n        ctxRef.current.startDate && parsedDateFromTarget ? isDayBeforeStartDate(parsedDateFromTarget, ctxRef.current.startDate) : false;\n      const isAfterEndDate =\n        ctxRef.current.endDate && parsedDateFromTarget ? isDayAfterEndDate(parsedDateFromTarget, ctxRef.current.endDate) : false;\n\n      if (!isBeforeStartDate && !isAfterEndDate) {\n        focusAndSelectTargetDate(parsedDateFromTarget);\n      }\n    },\n    [focusAndSelectTargetDate]\n  );\n\n  const onKeydownHandler = useCallback(\n    (evt: KeyboardEvent<HTMLTableCellElement>) => {\n      const { shiftKey } = evt;\n      const { target } = evt;\n      const { code } = evt;\n\n      if (code === 'Tab') {\n        return;\n      }\n\n      evt.preventDefault();\n\n      switch (evt.code) {\n        case 'ArrowUp':\n          ctxRef.current.moveToPreviousWeek();\n          break;\n        case 'ArrowDown':\n          ctxRef.current.moveToNextWeek();\n          break;\n        case 'ArrowLeft':\n          ctxRef.current.moveToPreviousDay();\n          break;\n        case 'ArrowRight':\n          ctxRef.current.moveToNextDay();\n          break;\n        case 'PageUp':\n          if (shiftKey) {\n            ctxRef.current.moveToPreviousYear();\n          } else {\n            ctxRef.current.moveToPreviousMonth();\n          }\n          break;\n        case 'PageDown':\n          if (shiftKey) {\n            ctxRef.current.moveToNextYear();\n          } else {\n            ctxRef.current.moveToNextMonth();\n          }\n          break;\n        case 'Home':\n          ctxRef.current.moveToFirstDayOfWeek();\n          break;\n        case 'End':\n          ctxRef.current.moveToLastDayOfWeek();\n          break;\n        case 'Enter':\n        case 'NumpadEnter':\n        case 'Space':\n          focusAndSelectTargetDate(parseDateFromTarget(target as HTMLElement));\n          break;\n        default:\n          break;\n      }\n    },\n    [focusAndSelectTargetDate]\n  );\n\n  const onFocusHandler = useCallback(() => {\n    setIsCalendarActive(true);\n  }, []);\n\n  const onBlurHandler = useCallback(() => {\n    setIsCalendarActive(false);\n  }, []);\n\n  const memoGrid = useMemo(() => {\n    const buildDay = (currentDay: Date, weekNumber: number, dayNumber: number) => {\n      currentDay.setDate(currentDay.getDate() + 1);\n\n      const isInCurrentMonth = currentDay.getMonth() === ctx.focusedDate.getMonth();\n      const isFocusedDate = isSameDay(currentDay, ctx.focusedDate);\n      const isSelectedDate = isSameDay(currentDay, ctx.selectedDate);\n      const isBeforeStartDate = ctx.startDate ? isDayBeforeStartDate(currentDay, ctx.startDate) : false;\n      const isAfterEndDate = ctx.endDate ? isDayAfterEndDate(currentDay, ctx.endDate) : false;\n      const isDisabledDate = isDayOnArray(currentDay, ctx.disabledDates) || isBeforeStartDate || isAfterEndDate;\n      const isToday = isSameDay(currentDay, new Date());\n\n      const stringDate = getDateString(currentDay);\n\n      const tdDayClasses = classNames(\n        'day w-[44px] h-[44px] border-2 rounded-4 outline-0 flex items-center justify-center text-s-regular cursor-default',\n        // DEFAULT TEXT COLOR\n        {\n          'text-[var(--color-neutral-900)]': !isToday && !isDisabledDate\n        },\n        //  DEFAULT BORDER\n        {\n          'border-transparent': !isSelectedDate && !isFocusedDate\n        },\n        //  DAY IN CURRENT MONTH\n        {\n          'hover:bg-[var(--color-primary-100)] hover:text-[var(--color-primary-600)] active:bg-[var(--color-neutral-200)] active:shadow-inner active:border-0 active:text-[var(--color-neutral-900)]':\n            isInCurrentMonth && !isDisabledDate\n        },\n        //  DISABLED\n        {\n          'text-[var(--color-neutral-500)] line-through decoration-2': isDisabledDate\n        },\n        //  TODAY DEFAULT\n        {\n          'text-s-bold text-[var(--color-primary-600)]': isToday && !isSelectedDate && !isDisabledDate\n        },\n        //  SELECTED\n        {\n          'bg-[var(--color-primary-600)] text-white': isSelectedDate && !isDisabledDate\n        },\n        //  FOCUS WITH CALENDAR GRID NOT FOCUSED\n        {\n          'border-[var(--color-primary-400)]': !isSelectedDate && isFocusedDate && !isCalendarActive && isInCurrentMonth && !isDisabledDate\n        },\n        //  FOCUS\n        {\n          'outline outline-2 -outline-offset-2 outline-[var(--color-focus)]': isCalendarActive && isFocusedDate && isInCurrentMonth\n        }\n      );\n\n      const dayClasses = classNames('pointer-events-none select-none', { 'opacity-20': !isInCurrentMonth });\n\n      const trTdKey = `tr-td-key-${weekNumber}-${dayNumber}`;\n\n      const ariaLabelForDay = (() => {\n        const labels = ctxRef.current.getLabels();\n\n        let dayLabel = currentDay.toLocaleDateString(undefined, { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' });\n\n        if (isToday && labels.todayDayAriaLabel) {\n          dayLabel = `${labels.todayDayAriaLabel}, ${dayLabel}`;\n        }\n\n        if (isFocusedDate && labels.focusedDayAriaLabel) {\n          dayLabel = `${dayLabel}, ${labels.focusedDayAriaLabel}`;\n        }\n\n        if (isSelectedDate && labels.selectedDayAriaLabel) {\n          dayLabel = `${dayLabel}, ${labels.selectedDayAriaLabel}`;\n        }\n\n        return dayLabel;\n      })();\n\n      return (\n        <div\n          key={trTdKey}\n          className={tdDayClasses}\n          role=\"gridcell\"\n          data-date={stringDate}\n          aria-hidden={!isInCurrentMonth || undefined}\n          aria-selected={isSelectedDate}\n          aria-current={isToday ? 'date' : undefined}\n          aria-disabled={isDisabledDate}\n          tabIndex={isInCurrentMonth && isFocusedDate && !isDisabledDate ? 0 : -1}\n          onKeyDown={onKeydownHandler}\n          onClick={onClickHandler}\n          onFocus={onFocusHandler}\n          onBlur={onBlurHandler}\n        >\n          <span className=\"sr-only\">{ariaLabelForDay}</span>\n          <span aria-hidden={true} className={dayClasses}>\n            {currentDay.getDate()}\n          </span>\n        </div>\n      );\n    };\n\n    const buildWeek = (weekNumber: number) => {\n      const firstDayOfMonth = new Date(ctx.focusedDate.getFullYear(), ctx.focusedDate.getMonth(), 1);\n\n      const dayOfWeek = firstDayOfMonth.getDay() + 1;\n\n      firstDayOfMonth.setDate(firstDayOfMonth.getDate() - dayOfWeek);\n      firstDayOfMonth.setDate(firstDayOfMonth.getDate() + weekNumber * 7);\n\n      return Array.from(Array(7).keys()).map((dayNumber) => {\n        return buildDay(firstDayOfMonth, weekNumber, dayNumber);\n      });\n    };\n\n    return Array.from(Array(6).keys()).map((trCount) => {\n      const trKey = `tr-key-${trCount}`;\n      return (\n        <div role=\"row\" className=\"grid grid-flow-col gap-[2px]\" key={trKey}>\n          {buildWeek(trCount)}\n        </div>\n      );\n    });\n  }, [\n    ctx.focusedDate,\n    ctx.selectedDate,\n    ctx.startDate,\n    ctx.endDate,\n    ctx.disabledDates,\n    isCalendarActive,\n    onKeydownHandler,\n    onClickHandler,\n    onFocusHandler,\n    onBlurHandler\n  ]);\n\n  const focusDay = () => {\n    if (ref.current) {\n      const elem = Array.from((ref.current as HTMLElement).querySelectorAll('.day[tabIndex=\"0\"]')).shift();\n\n      if (elem) {\n        (elem as HTMLElement).focus();\n      }\n    }\n  };\n\n  //  INITIAL FOCUS ON SELECTED/FOCUSED DAY\n  useEffect(() => focusDay(), []);\n\n  //  WHENEVER CALENDAR GRID IS ACTIVE, FOCUS THE DAY AGAIN\n  useEffect(() => {\n    if (isCalendarActive) {\n      focusDay();\n    }\n  }, [isCalendarActive]);\n\n  //  WHENEVER FOCUSED DATE CHANGES, FOCUS IT\n  useEffect(() => focusDay(), [ctx.focusedDate]);\n\n  return (\n    <div className=\"my-16\">\n      <div role=\"grid\" className=\"w-full\">\n        <div role=\"rowheader\" className=\"grid grid-flow-col gap-[2px]\">\n          {ctx.getAbbrWeekDays().map((d) => {\n            return (\n              <div\n                role=\"gridcell\"\n                key={d}\n                className=\"w-[44px] h-32 flex items-center justify-center bg-[var(--color-neutral-100)] text-s-regular text-[var(--color-neutral-900)]\"\n                aria-hidden\n              >\n                {d}\n              </div>\n            );\n          })}\n        </div>\n        <div ref={ref} role=\"rowgroup\">\n          {memoGrid}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { Button } from '@/components/button';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport { isDayOnArray } from '../utils/is-day-on-array';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from '../utils/start-end-dates-comparators';\n\nexport const DialogFooter: FC = () => {\n  const ctx = useDatePickerStateContext();\n\n  const todayDate = new Date();\n  const disabledDates = ctx.disabledDates;\n  let isTodayDisabled = isDayOnArray(todayDate, disabledDates);\n\n  if (ctx.startDate && isDayBeforeStartDate(todayDate, ctx.startDate)) {\n    isTodayDisabled = true;\n  }\n\n  if (ctx.endDate && isDayAfterEndDate(todayDate, ctx.endDate)) {\n    isTodayDisabled = true;\n  }\n\n  const onOkPressed = () => {\n    const parsedFocusedDate = new Date(ctx.focusedDate);\n    ctx.setSelectedDate(parsedFocusedDate);\n    if (ctx.onChange) {\n      ctx.onChange(parsedFocusedDate);\n    }\n    if (ctx.cancel) {\n      ctx.cancel();\n    }\n  };\n\n  const labels = ctx.getLabels();\n\n  const additionalTodayProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.todayLabel}, ${labels.todayAriaLabel}`\n  };\n  if (!labels.todayAriaLabel) {\n    delete additionalTodayProps['aria-label'];\n  }\n\n  const additionalCancelProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.cancelLabel}, ${labels.cancelAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalCancelProps['aria-label'];\n  }\n\n  const additionalOkProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.okLabel}, ${labels.okAriaLabel}`\n  };\n  if (!labels.okAriaLabel) {\n    delete additionalOkProps['aria-label'];\n  }\n\n  return (\n    <div className=\"flex justify-between items-center\">\n      <div className=\"my-16\">\n        <Button type=\"button\" appearance=\"link\" onClick={ctx.focusToday} disabled={isTodayDisabled} {...additionalTodayProps}>\n          {labels.todayLabel}\n        </Button>\n      </div>\n      <div className=\"my-16 flex items-end gap-8\">\n        <Button type=\"button\" appearance=\"outline\" onClick={ctx.cancel} {...additionalCancelProps}>\n          {labels.cancelLabel}\n        </Button>\n        <Button type=\"button\" appearance=\"solid\" onClick={onOkPressed} {...additionalOkProps}>\n          {labels.okLabel}\n        </Button>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { useDatePickerStateContext } from '../contexts/use-date-picker-state-context';\nimport {\n  isEndDateOneMonthOrMore,\n  isEndDateOneYearOrMore,\n  isStartDateOneMonthOrMore,\n  isStartDateOneYearOrMore\n} from '../utils/start-end-dates-comparators';\n\nexport const DialogHeader: FC = () => {\n  const ctx = useDatePickerStateContext();\n\n  const [isPreviousMonthButtonEnabled, setIsPreviousMonthButtonEnabled] = useState<boolean>(true);\n  const [isPreviousYearButtonEnabled, setIsPreviousYearButtonEnabled] = useState<boolean>(true);\n  const [isNextMonthButtonEnabled, setIsNextMonthButtonEnabled] = useState<boolean>(true);\n  const [isNextYearButtonEnabled, setIsNextYearButtonEnabled] = useState<boolean>(true);\n\n  useEffect(() => {\n    setIsPreviousMonthButtonEnabled(ctx.startDate ? isStartDateOneMonthOrMore(ctx.focusedDate, ctx.startDate) : true);\n    setIsPreviousYearButtonEnabled(ctx.startDate ? isStartDateOneYearOrMore(ctx.focusedDate, ctx.startDate) : true);\n    setIsNextMonthButtonEnabled(ctx.endDate ? isEndDateOneMonthOrMore(ctx.focusedDate, ctx.endDate) : true);\n    setIsNextYearButtonEnabled(ctx.endDate ? isEndDateOneYearOrMore(ctx.focusedDate, ctx.endDate) : true);\n  }, [ctx.focusedDate, ctx.startDate, ctx.endDate]);\n\n  return (\n    <div className=\"header w-full\">\n      <h2 className=\"flex justify-center py-8 w-full text-black font-bold text-m-light normal-case\" aria-live=\"polite\">\n        {`${ctx.focusedMonth} ${ctx.focusedYear}`}\n      </h2>\n\n      <div className=\"flex flex-row justify-between\">\n        <div className=\"flex gap-8 justify-center\">\n          <Button\n            type=\"button\"\n            appearance=\"outline\"\n            onClick={ctx.moveToPreviousYear}\n            aria-label={ctx.getLabels().previousYearAriaLabel}\n            disabled={!isPreviousYearButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevrons-left\" dimensions=\"s\" aria-hidden />\n          </Button>\n\n          <Button\n            type=\"button\"\n            appearance=\"outline\"\n            onClick={ctx.moveToPreviousMonth}\n            aria-label={ctx.getLabels().previousMonthAriaLabel}\n            disabled={!isPreviousMonthButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevron-left\" dimensions=\"s\" aria-hidden />\n          </Button>\n        </div>\n\n        <div className=\"flex gap-8 justify-center\">\n          <Button\n            type=\"button\"\n            appearance=\"outline\"\n            onClick={ctx.moveToNextMonth}\n            aria-label={ctx.getLabels().nextMonthAriaLabel}\n            disabled={!isNextMonthButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevron-right\" dimensions=\"s\" aria-hidden />\n          </Button>\n\n          <Button\n            type=\"button\"\n            appearance=\"outline\"\n            onClick={ctx.moveToNextYear}\n            aria-label={ctx.getLabels().nextYearAriaLabel}\n            disabled={!isNextYearButtonEnabled}\n          >\n            <Icon name=\"agora-line-chevrons-right\" dimensions=\"s\" aria-hidden />\n          </Button>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { Dispatch, FC, SetStateAction, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { Months, WeekDays } from '@/models';\nimport { DatePickerStateContext } from './contexts/date-picker-state.context';\nimport { DialogBody } from './date-picker-dropdown-body/date-picker-dropdown-body';\nimport { DialogFooter } from './date-picker-dropdown-footer/date-picker-dropdown-footer';\nimport { DialogHeader } from './date-picker-dropdown-header/date-picker-dropdown-header';\nimport classNames from 'classnames';\nimport { isDayOnArray } from './utils/is-day-on-array';\nimport { getClosestAvailableDay } from './utils/get-closest-available-day';\nimport { isDayAfterEndDate, isDayBeforeStartDate } from './utils/start-end-dates-comparators';\n\nexport interface DatePickerDropdownProps {\n  className?: string;\n  date?: Date;\n  disabledDates?: Array<Date | string> | [];\n  startDate?: Date | string;\n  endDate?: Date | string;\n  setEndDate?: Dispatch<SetStateAction<Date | string>>;\n  setStartDate?: Dispatch<SetStateAction<Date | string>>;\n  onChange: (date: Date) => void;\n  onCancel: () => void;\n  labels: {\n    previousYearAriaLabel: string;\n    previousMonthAriaLabel: string;\n    nextMonthAriaLabel: string;\n    nextYearAriaLabel: string;\n    monthsLabels?: Months;\n    weekdaysLabels?: WeekDays;\n    focusedDayAriaLabel?: string;\n    selectedDayAriaLabel: string;\n    todayDayAriaLabel: string;\n    todayLabel: string;\n    todayAriaLabel?: string;\n    cancelLabel: string;\n    cancelAriaLabel?: string;\n    okLabel: string;\n    okAriaLabel?: string;\n  };\n}\n\nexport const DatePickerDropdown: FC<DatePickerDropdownProps> = ({\n  date = new Date(),\n  disabledDates = [],\n  endDate = '',\n  startDate = '',\n  setEndDate,\n  setStartDate,\n  onChange,\n  onCancel,\n  labels,\n  className\n}) => {\n  const isDateDisabled = isDayOnArray(date, disabledDates);\n  let initialDate = new Date(isDateDisabled ? getClosestAvailableDay({ disabledDates }) : date);\n\n  if (startDate && isDayBeforeStartDate(initialDate, startDate)) {\n    initialDate = new Date(startDate);\n  }\n\n  if (endDate && isDayAfterEndDate(initialDate, endDate)) {\n    initialDate = new Date(endDate);\n  }\n\n  const [selectedDate, setSelectedDate] = useState(initialDate);\n  const [focusedDate, setFocusedDate] = useState(initialDate);\n  const [disabledDatesState, setDisabledDatesState] = useState(disabledDates);\n\n  const managerMemo = useMemo(() => {\n    return {\n      focusedDate,\n      selectedDate,\n      disabledDates: disabledDatesState,\n      endDate,\n      startDate,\n      setFocusedDate,\n      setSelectedDate,\n      setDisabledDates: setDisabledDatesState,\n      setEndDate: setEndDate ?? (() => {}),\n      setStartDate: setStartDate ?? (() => {}),\n      cancel: onCancel,\n      onChange,\n      labels\n    };\n  }, [selectedDate, focusedDate, disabledDatesState, endDate, startDate, labels, onChange, onCancel, setEndDate, setStartDate]);\n\n  const wrapperClassNames = classNames(\n    className,\n    'absolute left-0 top-[68px] shadow-bottom-high bg-white p-16 border-2 border-[var(--color-neutral-200)] rounded-4 z-dropdown'\n  );\n\n  const datePickerDropdownContainerRef = useRef<HTMLDivElement>(null);\n\n  const handleKeyDown = useCallback(\n    (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        onCancel();\n        return;\n      }\n\n      if (evt.key === 'Tab' && datePickerDropdownContainerRef.current) {\n        const focusableElements = datePickerDropdownContainerRef.current.querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        );\n\n        const firstElement = focusableElements[0] as HTMLElement;\n        const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n        if (evt.shiftKey && document.activeElement === firstElement) {\n          evt.preventDefault();\n          lastElement.focus();\n        } else if (!evt.shiftKey && document.activeElement === lastElement) {\n          evt.preventDefault();\n          firstElement.focus();\n        }\n      }\n    },\n    [onCancel]\n  );\n\n  useEffect(() => {\n    document?.addEventListener('keydown', handleKeyDown);\n\n    return () => {\n      document?.removeEventListener('keydown', handleKeyDown);\n    };\n  }, [handleKeyDown]);\n\n  return (\n    <DatePickerStateContext value={managerMemo}>\n      <div ref={datePickerDropdownContainerRef} className={wrapperClassNames}>\n        <DialogHeader />\n        <DialogBody />\n        <div className=\"border-1 border-[var(--color-neutral-300)]\" />\n        <DialogFooter />\n      </div>\n    </DatePickerStateContext>\n  );\n};\n","export const formatDayOrMonth = (number: string) => {\n  if (number === '') {\n    return number;\n  }\n\n  return number.length === 1 ? `0${number}` : number;\n};\n\nexport const isLeapYear = (year: number): boolean => {\n  return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n};\n\nexport const parseDate = (currentDay: number, currentMonth: number, currentYear: number): string => {\n  const newDay = Math.max(currentDay, 1);\n  const monthString = formatDayOrMonth(currentMonth.toString());\n  const yearString = currentYear.toString();\n\n  if (currentMonth === 2) {\n    // 28 or 29\n    if (isLeapYear(currentYear) && newDay >= 29) {\n      return `29/${monthString}/${yearString}`;\n    }\n\n    if (newDay > 28) {\n      return `28/${monthString}/${yearString}`;\n    }\n\n    return `${formatDayOrMonth(newDay.toString())}/${monthString}/${yearString}`;\n  }\n\n  if ([11, 9, 6, 4].indexOf(currentMonth) >= 0) {\n    //  30 days\n    return `${formatDayOrMonth(Math.min(30, newDay).toString())}/${monthString}/${yearString}`;\n  }\n\n  //  31 days\n  return `${formatDayOrMonth(Math.min(31, newDay).toString())}/${monthString}/${yearString}`;\n};\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, FocusEvent } from 'react';\n\nimport { asyncTrigger, createSyntheticEvent } from '@/utils';\nimport './date-text.css';\nimport { parseDate } from '../utils/parse-date';\n\nexport interface DateTextProps extends ComponentProps<'input'> {\n  dayInputPlaceholder?: string;\n  monthInputPlaceholder?: string;\n  yearInputPlaceholder?: string;\n}\n\nconst DateText: FC<DateTextProps> = ({\n  ref = null,\n  className = '',\n  dayInputPlaceholder = '',\n  monthInputPlaceholder = '',\n  yearInputPlaceholder = '',\n  ...props\n}) => {\n  const inputClassNames = classNames('agora-date-input', className);\n\n  const validateDate = (evt: FocusEvent<HTMLInputElement>) => {\n    const targetValue = (evt.target as HTMLInputElement).value;\n\n    //  INVALID DATE FORMAT\n    if (!/\\d{1,2}\\/\\d{1,2}\\/\\d{4}/.test(targetValue)) {\n      evt.target.value = '';\n    } else {\n      const dateParts = targetValue.split('/').map((d) => parseInt(d, 10));\n      evt.target.value = parseDate(dateParts[0], dateParts[1], dateParts[2]);\n    }\n\n    const newChangeEvt = createSyntheticEvent<HTMLInputElement>(evt.target, 'change');\n    asyncTrigger(() => props.onChange?.(newChangeEvt as ChangeEvent<HTMLInputElement>));\n  };\n\n  const handleKeyDown = (evt: React.KeyboardEvent<HTMLInputElement>) => {\n    // const allowedKeys = ['Backspace', 'Enter', ' ', 'Esc', 'Tab', 'Delete', 'ArrowLeft', 'ArrowRight', '/'];\n    const allowedKeys = [\n      'Home',\n      'End',\n      'Tab',\n      'Shift',\n      'ArrowUp',\n      'ArrowDown',\n      'ArrowLeft',\n      'ArrowRight',\n      'Enter',\n      ' ',\n      'NumpadEnter',\n      'PageUp',\n      'PageDown',\n      'Esc',\n      '/',\n      'Backspace',\n      'Delete'\n    ];\n    const key = evt.key;\n\n    if (allowedKeys.includes(key)) {\n      if (key === 'Enter' || key === ' ') {\n        props.onKeyDown?.(evt);\n      }\n      return;\n    }\n\n    if (!allowedKeys.includes(key) && !/[0-9]/.test(key)) {\n      evt.preventDefault();\n    }\n  };\n\n  return (\n    <input\n      {...props}\n      className={inputClassNames}\n      ref={ref}\n      type=\"text\"\n      placeholder={`${dayInputPlaceholder}/${monthInputPlaceholder}/${yearInputPlaceholder}`}\n      onKeyDown={handleKeyDown}\n      onBlur={validateDate}\n    />\n  );\n};\n\nexport { DateText };\n","import React, {\n  ChangeEvent,\n  ComponentProps,\n  Dispatch,\n  FC,\n  KeyboardEvent as ReactKeyboardEvent,\n  ReactNode,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useRef,\n  useState\n} from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, FeedbackState, Months, WeekDays } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, getDateString, stringToBoolean } from '@/utils';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { DatePickerDropdown } from './date-picker-dropdown';\nimport { DateText } from './date-text/date-text';\nimport { parseInputDate } from './utils/parse-input-date';\nimport { HelperText } from '@/components/shared/helper-text';\n\nimport './input-date.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\n\nexport interface InputDateProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Array with the dates to be considered disabled.\n   */\n  disabledDates?: Array<Date | string> | [];\n  /**\n   * Date to be considered the first one available to be selected. All dates before, are disabled.\n   */\n  startDate?: Date | string;\n  /**\n   * Date to be considered the last one available to be selected. All dates after, are disabled.\n   */\n  endDate?: Date | string;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedbackText is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * The placeholder to apply in the input day part\n   */\n  dayInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input month part\n   */\n  monthInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input year part\n   */\n  yearInputPlaceholder?: string;\n  /**\n   * Accessible text to apply to the trailing calendar icon.\n   */\n  calendarIconAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker previous year button.\n   */\n  previousYearAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker previous month button.\n   */\n  previousMonthAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker next month button.\n   */\n  nextMonthAriaLabel: string;\n  /**\n   * Accessible text to apply to the date picker next year button.\n   */\n  nextYearAriaLabel: string;\n  /**\n   * Labels for each month.\n   */\n  monthsLabels?: Months;\n  /**\n   * Labels for each weekday.\n   */\n  weekdaysLabels?: WeekDays;\n  /**\n   * Accessible text to identify the current focused day.\n   */\n  focusedDayAriaLabel?: string;\n  /**\n   * Accessible text to identify the current selected day.\n   */\n  selectedDayAriaLabel: string;\n  /**\n   * Accessible text to identify the highlighted today day.\n   */\n  todayDayAriaLabel: string;\n  /**\n   * Label for the date picker today button.\n   */\n  todayLabel: string;\n  /**\n   * Accessible text for the date picker today button.\n   */\n  todayAriaLabel?: string;\n  /**\n   * Label for the date picker cancel button.\n   */\n  cancelLabel: string;\n  /**\n   * Accessible text for the date picker cancel button.\n   */\n  cancelAriaLabel?: string;\n  /**\n   * Label for the date picker ok button.\n   */\n  okLabel: string;\n  /**\n   * Accessible text for the date picker ok button.\n   */\n  okAriaLabel?: string;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n}\n\nexport const callbackWith = (setInputWrapperHovered: Dispatch<React.SetStateAction<IconSetState>>, value: IconSetState) => () => {\n  setInputWrapperHovered(value);\n};\n\nconst InputDate: FC<InputDateProps> = ({\n  ref = null,\n  className,\n  label,\n  hideLabel,\n  disabledDates = [],\n  startDate = '',\n  endDate = '',\n  required = true,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  errorFeedbackText,\n  hasHelperText,\n  helperText,\n  darkMode,\n  hasIcon,\n  icon,\n  dayInputPlaceholder,\n  monthInputPlaceholder,\n  yearInputPlaceholder,\n  calendarIconAriaLabel,\n  previousYearAriaLabel,\n  previousMonthAriaLabel,\n  nextMonthAriaLabel,\n  nextYearAriaLabel,\n  monthsLabels,\n  weekdaysLabels,\n  focusedDayAriaLabel,\n  selectedDayAriaLabel,\n  todayDayAriaLabel,\n  todayLabel,\n  todayAriaLabel,\n  cancelLabel,\n  cancelAriaLabel,\n  okLabel,\n  okAriaLabel,\n  value,\n  defaultValue,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  useImperativeHandle(ref, () => {\n    return innerInputRef.current as HTMLInputElement;\n  }, []);\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const [currentValue, setCurrentValue] = useState<string>(value?.toString() ?? defaultValue?.toString() ?? '');\n\n  const lastValueTriggered = useRef<string>('empty');\n  const [trigger, setTrigger] = useState(+new Date());\n\n  const [overlayVisible, setOverlayVisible] = useState(false);\n\n  const showOverlay = () => {\n    setOverlayVisible(true);\n  };\n\n  const hideOverlay = () => {\n    setOverlayVisible(false);\n    innerInputRef.current?.focus();\n  };\n\n  const toggleOverlay = () => {\n    if (overlayVisible) {\n      hideOverlay();\n    } else {\n      showOverlay();\n    }\n  };\n\n  const handleOnDismiss = () => {\n    hideOverlay();\n  };\n\n  const handleOnDismissRef = useRef(handleOnDismiss);\n  handleOnDismissRef.current = handleOnDismiss;\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n\n  //  HANDLE INPUT DATE KEYDOWN\n  const handleInputDateKeydown = (evt: ReactKeyboardEvent<HTMLInputElement>) => {\n    if (stringToBoolean(propsClone.disabled) || stringToBoolean(propsClone.readOnly)) {\n      return;\n    }\n\n    if (evt.code === 'Space' || evt.code === 'Enter' || evt.code === 'NumpadEnter') {\n      evt.preventDefault();\n      showOverlay();\n    }\n\n    propsClone.onKeyDown?.(evt);\n  };\n\n  const handleDatePickerCancel = () => {\n    handleOnDismiss();\n  };\n\n  const triggerOnChange = (last: string) => {\n    if (last !== lastValueTriggered.current) {\n      lastValueTriggered.current = last;\n      setTrigger(+new Date());\n    }\n  };\n\n  //  HANDLE CLICK OUTSIDE DIALOG\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (!overlayVisible) {\n        return;\n      }\n\n      if (!wrapperRef.current?.contains(event.target as HTMLDivElement)) {\n        handleOnDismissRef.current();\n      }\n    };\n\n    document.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document.removeEventListener('click', handleClickOutside);\n    };\n  }, [overlayVisible]);\n\n  //  HANDLE ESCAPE\n  useEffect(() => {\n    const keydownHandler = (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        handleOnDismissRef.current();\n      }\n    };\n\n    const wrapper = wrapperRef.current;\n    wrapper?.addEventListener('keydown', keydownHandler);\n\n    return () => {\n      wrapper?.removeEventListener('keydown', keydownHandler);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (defaultValue) {\n      return;\n    }\n\n    setCurrentValue(value?.toString() ?? '');\n    triggerOnChange(value?.toString() ?? '');\n  }, [value, defaultValue]);\n\n  const onOverlayChangeHandler = (date: Date) => {\n    handleOnDismiss();\n\n    const dateString = getDateString(date);\n    setCurrentValue(dateString);\n    triggerOnChange(dateString);\n  };\n\n  const onInputDateChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentValue(evt.target.value);\n    triggerOnChange(evt.target.value);\n  };\n\n  useEffect(() => {\n    if (innerInputRef.current) {\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChangeRef.current?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n  }, [trigger]);\n\n  const dropdownDatePickerLabels = {\n    previousYearAriaLabel,\n    previousMonthAriaLabel,\n    nextMonthAriaLabel,\n    nextYearAriaLabel,\n    monthsLabels,\n    weekdaysLabels,\n    focusedDayAriaLabel,\n    selectedDayAriaLabel,\n    todayDayAriaLabel,\n    todayLabel,\n    todayAriaLabel,\n    cancelLabel,\n    cancelAriaLabel,\n    okLabel,\n    okAriaLabel\n  };\n\n  const wrapperClassNames = classNames('agora-date-picker', className, {\n    'has-value': currentValue.length > 0,\n    'disabled': stringToBoolean(propsClone.disabled),\n    'read-only': stringToBoolean(propsClone.readOnly),\n    'dark-mode': stringToBoolean(darkMode),\n    'has-error': stringToBoolean(hasError)\n  });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-date-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-date-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n      {/* Label */}\n      <label hidden={!!stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"input-date-label\">\n        {label}\n      </label>\n\n      {/* Input wrapper */}\n      <div\n        role=\"presentation\"\n        className=\"input-wrapper\"\n        onMouseEnter={callbackWith(setIconState, 'hover')}\n        onMouseLeave={callbackWith(setIconState, 'default')}\n        onKeyDown={callbackWith(setIconState, 'active')}\n        onKeyUp={callbackWith(setIconState, 'default')}\n      >\n        {/* Input Leading Icon  */}\n        {hasIcon && (\n          <div className=\"input-leading-icon\">\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden className=\"leading-icon-hover\" state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n\n        <DateText\n          ref={innerInputRef}\n          id={propsClone.id}\n          dayInputPlaceholder={dayInputPlaceholder}\n          monthInputPlaceholder={monthInputPlaceholder}\n          yearInputPlaceholder={yearInputPlaceholder}\n          onKeyDown={handleInputDateKeydown}\n          value={currentValue}\n          onChange={onInputDateChange}\n          disabled={propsClone.disabled}\n          readOnly={propsClone.readOnly}\n          required={isRequired}\n          aria-describedby={inputAriaDescribedBy}\n          name={props.name}\n        />\n\n        {/* Input Trailing Icon  */}\n        <button\n          type=\"button\"\n          disabled={!!propsClone.disabled || !!propsClone.readOnly}\n          onClick={toggleOverlay}\n          className=\"input-trailing-icon\"\n          aria-label={calendarIconAriaLabel}\n        >\n          <IconSet state={currentIconState}>\n            <IconItem aria-hidden className=\"icon-calendar-default\" state=\"default\" name=\"agora-line-calendar\" />\n            <IconItem aria-hidden className=\"icon-calendar-hover\" state=\"hover\" name=\"agora-solid-calendar\" />\n          </IconSet>\n        </button>\n\n        {overlayVisible && (\n          <DatePickerDropdown\n            className=\"date-picker-dropdown\"\n            labels={dropdownDatePickerLabels}\n            date={parseInputDate(currentValue)}\n            disabledDates={disabledDates}\n            startDate={startDate}\n            endDate={endDate}\n            onChange={onOverlayChangeHandler}\n            onCancel={handleDatePickerCancel}\n          />\n        )}\n      </div>\n\n      {/* Helper Text */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-date-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-date-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputDate };\n","import { Button } from '@/components/button';\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { FeedbackState } from '@/models';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useCallback, useId, useState } from 'react';\n\nimport './input-email-bar.css';\n\nconst EMAIL_REGEXP = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n\nexport interface InputEmailBarProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Callback to execute when the user clicks on the send button.\n   */\n  onSendHandler?: (email: string) => void;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n}\n\nconst InputEmailBar: FC<InputEmailBarProps> = ({\n  ref = null,\n  className,\n  hideLabel,\n  label,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  darkMode,\n  feedbackText,\n  hasError,\n  errorFeedbackText,\n  hasHelperText,\n  helperText,\n  onSendHandler,\n  pattern = EMAIL_REGEXP,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const [email, setEmail] = useState<string>('');\n  const [isValidEmail, setIsValidEmail] = useState<boolean>(false);\n\n  const handleChangeEvent = useCallback(\n    (evt: ChangeEvent<HTMLInputElement>) => {\n      const { value } = evt.currentTarget;\n      setEmail(value);\n      setIsValidEmail(new RegExp(pattern).test(value));\n      onChange?.(evt);\n    },\n    [onChange, pattern]\n  );\n\n  const onSendButtonClick = useCallback(() => {\n    if (onSendHandler && new RegExp(pattern).test(email)) {\n      onSendHandler(email);\n    }\n  }, [onSendHandler, pattern, email]);\n\n  const inputWrapperClassNames = classNames(\n    'agora-input-email-bar',\n    { dark: stringToBoolean(darkMode) },\n    {\n      'flex flex-col': !propsClone.hidden,\n      'input-disabled': !!propsClone.disabled,\n\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    },\n    className\n  );\n  const labelSectionClasses = classNames('input-label-wrapper flex items-end', {\n    'mb-16': label && !stringToBoolean(hideLabel),\n    'justify-end': !label || stringToBoolean(hideLabel),\n    'justify-between': label && !stringToBoolean(hideLabel)\n  });\n  const labelClasses = classNames('agora-input-email-bar-label', { dark: stringToBoolean(darkMode) });\n  const inputContainerClassNames = classNames('agora-input-email-bar-container', {\n    disabled: propsClone.disabled\n  });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-email-bar-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-email-bar-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClassNames}>\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} className={labelClasses} htmlFor={propsClone.id}>\n          {label}\n        </label>\n      </div>\n\n      <div className={inputContainerClassNames}>\n        <input\n          {...propsClone}\n          className=\"flex-grow-[1] outline-none\"\n          ref={ref}\n          type=\"email\"\n          disabled={!!propsClone.disabled}\n          onChange={handleChangeEvent}\n          aria-describedby={inputAriaDescribedBy}\n        />\n\n        <div className=\"actions-container\">\n          <Button\n            className=\"magnifier-icon\"\n            appearance=\"solid\"\n            iconOnly\n            hasIcon\n            leadingIcon=\"agora-line-plane\"\n            leadingIconHover=\"agora-solid-plane\"\n            aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n            onClick={onSendButtonClick}\n            disabled={!isValidEmail}\n          />\n        </div>\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-email-bar-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-email-bar-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputEmailBar };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-number.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { callbackWith } from '../input-date/input-date';\n\nexport interface InputNumberProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Label text for increase button. Recommended for accessibility.\n   */\n  increaseButtonAltText?: string;\n  /**\n   *  Label text for decrease button. Recommended for accessibility.\n   */\n  decreaseButtonAltText?: string;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputNumber: FC<InputNumberProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  increaseButtonAltText = 'increase',\n  decreaseButtonAltText = 'decrease',\n  hasFeedback,\n  feedbackState,\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  darkMode,\n  feedbackText,\n  errorFeedbackText,\n  hasIcon,\n  icon,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange, min, max, defaultValue } = propsClone;\n\n  const inputWrapperRef = useRef<HTMLInputElement>(null);\n\n  const [currentValue, setCurrentValue] = useState(propsClone.value);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const hasCurrentValue = currentValue && currentValue.toString().length > 0;\n\n  const hasDefaultValue = defaultValue && defaultValue.toString().length > 0;\n\n  /**\n   * Local onChange event handler. This functions enforces the max char limit.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n\n    setCurrentValue(value);\n\n    onChange?.(evt);\n\n    if (max === parseFloat(value.toString()) || min === parseFloat(value.toString())) {\n      const inputElem = inputWrapperRef.current?.querySelector('input');\n      if (inputElem) {\n        inputElem.focus();\n      }\n    }\n  };\n\n  const [isHovered, setIsHovered] = useState(false);\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-number-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': !!propsClone.disabled,\n        'is-hovered': isHovered,\n        'has-error': stringToBoolean(hasError),\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-number',\n        {\n          'has-leading-icon': hasIcon, // allowing only solid family icon\n          'has-value': hasCurrentValue || hasDefaultValue\n        },\n        className\n      ),\n\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  /**\n   * Execute stepUp locally and execute update value\n   */\n  const handleStepUp = () => {\n    const inputElem = inputWrapperRef.current?.querySelector('input');\n\n    if (inputElem) {\n      inputElem.stepUp();\n      inputElem.dispatchEvent(new Event('change', { bubbles: true }));\n    }\n  };\n\n  /**\n   * Execute stepDown locally and execute update value\n   */\n  const handleStepDown = () => {\n    const inputElem = inputWrapperRef.current?.querySelector('input');\n\n    if (inputElem) {\n      inputElem.stepDown();\n      inputElem.dispatchEvent(new Event('change', { bubbles: true }));\n    }\n  };\n\n  /**\n   * Sets the correct hoovering state of the component\n   */\n  const handleMouseHoovering = (isHover: boolean) => {\n    setIsHovered(isHover);\n  };\n\n  const labelClasses = classNames('input-number-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-number-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-number-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div\n        role=\"presentation\"\n        className=\"input-wrapper flex relative items-center\"\n        onMouseEnter={callbackWith(setIconState, 'hover')}\n        onMouseLeave={callbackWith(setIconState, 'default')}\n        onKeyDown={callbackWith(setIconState, 'active')}\n        onKeyUp={callbackWith(setIconState, 'default')}\n        ref={inputWrapperRef}\n      >\n        <input\n          {...propsClone}\n          type=\"number\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-busy={stringToBoolean(hasFeedback) && feedbackState === 'loading'}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && (\n          <div className={leadingIconWrapperClasses}>\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n\n        {/* Steps controls */}\n        <div\n          className=\"input-number-controls\"\n          role=\"presentation\"\n          onFocus={() => {}}\n          onMouseOver={() => handleMouseHoovering(true)}\n          onMouseLeave={() => handleMouseHoovering(false)}\n        >\n          <button\n            disabled={min === parseFloat(currentValue?.toString() ?? '0') || !!propsClone.disabled || !!propsClone.readOnly}\n            type=\"button\"\n            onClick={handleStepDown}\n            aria-label={decreaseButtonAltText}\n          >\n            <IconSet state={currentIconState} className=\"flex justify-center items-center\">\n              <IconItem state=\"default\" name=\"agora-line-minus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n              <IconItem state=\"hover\" name=\"agora-solid-minus-circle\" aria-hidden className=\"icon-step icon-step-hover\" />\n              <IconItem state=\"active\" name=\"agora-line-minus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n            </IconSet>\n          </button>\n          <button\n            disabled={max === parseFloat(currentValue?.toString() ?? '0') || !!propsClone.disabled || !!propsClone.readOnly}\n            type=\"button\"\n            onClick={handleStepUp}\n            aria-label={increaseButtonAltText}\n          >\n            <IconSet state={currentIconState} className=\"flex justify-center items-center\">\n              <IconItem state=\"default\" name=\"agora-line-plus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n              <IconItem state=\"hover\" name=\"agora-solid-plus-circle\" aria-hidden className=\"icon-step icon-step-hover\" />\n              <IconItem state=\"active\" name=\"agora-line-plus-circle\" aria-hidden className=\"icon-step icon-step-default\" />\n            </IconSet>\n          </button>\n        </div>\n      </div>\n\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-number-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-number-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputNumber };\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useRef, useState } from 'react';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-password.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\n\nimport { callbackWith } from '@/components/input-date/input-date';\n\nexport interface InputPasswordProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n\n  /**\n   * Highlight the input indicating some error.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Alternative text for toggle password/plain text icon button.\n   *\n   * show: aria-label for when the password is hidden;\n   *\n   * hide: aria-label for when the password is visible;\n   */\n  togglePasswordAltIconText?: {\n    show: string;\n    hide: string;\n  };\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputPassword: FC<InputPasswordProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState,\n  errorFeedbackText,\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  darkMode,\n  feedbackText,\n  hasIcon,\n  icon,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  togglePasswordAltIconText,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const inputWrapperRef = useRef<HTMLInputElement>(null);\n\n  const [showPassword, setShowPassword] = useState(false);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const toggleAriaLabel = togglePasswordAltIconText?.[showPassword ? 'hide' : 'show'];\n\n  /**\n   * Show/Hide password\n   */\n  const handleTogglePassword = () => {\n    if (!propsClone.disabled && !propsClone.readOnly) {\n      setShowPassword(!showPassword);\n\n      if (inputWrapperRef?.current) {\n        inputWrapperRef.current.querySelector('input')?.focus();\n      }\n    }\n  };\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames(\n        'agora-input-password-wrapper',\n        { dark: stringToBoolean(darkMode) },\n        {\n          'flex flex-col': !propsClone.hidden,\n          'input-disabled': !!propsClone.disabled,\n          'has-error': stringToBoolean(hasError),\n          'has-feedback': stringToBoolean(hasFeedback),\n          ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n        }\n      ),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-password',\n        {\n          'has-leading-icon': hasIcon, // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-password-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-password-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-password-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div className=\"input-wrapper flex relative items-center\" ref={inputWrapperRef}>\n        <input\n          {...propsClone}\n          type={showPassword ? 'text' : 'password'}\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          readOnly={!!propsClone.readOnly}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-busy={stringToBoolean(hasFeedback) && feedbackState === 'loading'}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n          onKeyDown={callbackWith(setIconState, 'active')}\n          onKeyUp={callbackWith(setIconState, 'default')}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && (\n          <div className={leadingIconWrapperClasses}>\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n\n        {/* right trailing icon */}\n        <button\n          type=\"button\"\n          className=\"input-btn-toggle bg-transparent\"\n          onClick={handleTogglePassword}\n          aria-label={toggleAriaLabel}\n          disabled={propsClone.disabled ?? propsClone.readOnly}\n        >\n          <IconSet state={currentIconState}>\n            <IconItem state=\"default\" name={`agora-line-${showPassword ? 'eye-off' : 'eye'}`} aria-hidden className=\"icon-eye-default\" />\n            <IconItem state=\"hover\" name={`agora-solid-${showPassword ? 'eye-off' : 'eye'}`} aria-hidden className=\"icon-eye-hover\" />\n            <IconItem state=\"active\" name={`agora-line-${showPassword ? 'eye-off' : 'eye'}`} aria-hidden className=\"icon-eye-default\" />\n          </IconSet>\n        </button>\n      </div>\n\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-password-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-password-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputPassword };\n","import { CountryPhoneProps } from '../country-phone.model';\n\nconst FlagsList: CountryPhoneProps[] = [\n  {\n    country: 'Afghanistan',\n    code: '93',\n    iso: 'AF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3REQwQzQwNjE3NTMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3REQwQzQwNzE3NTMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdERDBDNDA0MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdERDBDNDA1MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+duaIkQAAAalJREFUeNpiZMAN2BkYVjMwyDIwfMCQ4mNgeM3K4DEFj24GJgaagaFpNAuR6v4yMPwDO4SRaOcQZfQfBgZOCQkOSclfb978/fbt59u3/6li9G+guTIy/EZGTOycbDJyrIIC3+7e/XX0CMgXZIc1I9hcPnstsbzA94ePfH/x+N//n683b+ILNBGw0v3zlwKjIYErGub94dhpJi5u3Q1rtFcuZeYTerNtj3CwJxMjBQECdBaXoRybhCzLFy6eQJuHPW1/P30W9Db9fuMlh6QSt706A8NNMl0NNJpNVIrHyIyDR/DV4UOMivxf3tx/vnM7p4gor5kFh7gs+QEC9NG38ze+3jz7m+Mrv6i2oKGtTGo6v7jOr3/vP1878fXcNfIDBCj39fWHdyt2K/Q3vpy05FFWCwMTE6+NrnhR3PvyCZ9vP6Mo8bEyMLxZsOkTD4tkaga/vvXvt285rdSeT5n1dckaFkrS9X+w9F+Gf8+nrPl9+Q2LkMD/f//+rd/4es8ePoZ/LKyUZZn/YIczMzC8PHgALsgGFvxPeW78D8477BiCw7RQpaHRAAEGAEWfj+c8VB1nAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Albania',\n    code: '355',\n    iso: 'AL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0NTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0NjE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdERDBDNDA4MTc1MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMUFEMjQ0MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GPq/agAAAiRJREFUeNrEVb9rFEEUfm9m9nb3bhNz50UMClopRAsFrUURW1tBrSzsLPwfbPwDbGz8F8QiIkLAKiCkUIKiGBEFwXAhd7fZH7Mz83zZtbC4TdyF4LDF8N7ON9/73jczuN4/A4czBBzaqIUmAA+Q0wjQRzkUCsv4USEHKKs4/0DtWOdAgxLxrUk+mqyHIkLx2eg1k1gA3kwDtYFeFOqVnj5NRwXQip7eGG9+svlPV1wff3mejwuiZ9n2i3zCRWANAta1kaFX9OS1jkdkHdGyCt6blMmel8E3p1OgY6iueL2b/pEtZ5qx5kRCLIhMyK4WMQFt2HzdpEzypZ5OnOVUSoT1gqi6BOvA7ZoDUan5JB3BXxPeOALBahigxloLQO4SFy5hBjMOpuA0zc4ebL4OYExuZl0dxNiRh63MZ4jYXjzJiG77/cuqW8UvqvBO0Ge+jjsplKHmgrCIIeICyke9pXPKZ+kvqPCS1+X6T4vO42iJN/YB22jNIo6cYWN9dfqdya560TxKruKaF32w2abVW2VWtNCa6fRQnpTeD1vcD4anZOdNEa8VCZN9EA6/2+KE9Ob3dUit+XbJHRfqXjBgTZjYhk3nUDAQN/CsDJbDYIfcbvlhU+hqQUpuSo6tcstfYMp8q9z1+7+cyfZMuUe4zZGp/GfLxRm4bbIPu4scYbIJOO6EO+hSVf9y8zLQmGxUKrNDRu7HtSH0n+NHrpr8/1fmtwADAEjB+xzEjgF0AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Algeria',\n    code: '213',\n    iso: 'DZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNDgwMTE3NDA3MjA2ODExODIyQUY5NTY0OTkxRjRDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0QTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0OTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDQ4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDQ4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5FFcD/AAACLUlEQVR42sSWQWsTURDHf283dTdZQ9qCVWhQD2JrRCmEaqUoarEQi3c/QEDx2ByqtwgSUTx5EvINPHlQRLRYsViqHgQRVGopRpo2kKbppk26SbO+3UDBk5uY2mEXdh7s++1/5s3MClJDNi1a/daMLaDU5GtBeS/6+AcT7uVu1KwFFXbJmldstwfsXXFdEoWM7P4AGJt0qTqlpcUdBjtQTYUeP6c+LjOd+srKzSnq/RHMWIzNdBpqtR0Aq1Jpt07i8Ryzj74wmCtz72yY4qunBO/edyNRnZxsc46dnEqlo++yPHjx0106Ej9E5kqUGwNRuYMfbeAE9VwO2zQRwWCbFDtqq3Wuzyy77p0LvWTO9WLMm9ReT8Hnb2wkkwi/3zPUm2KZWy1fIbqw5rpv+jply7DoCPdRz+exRy+z4SgwDPREQj4o7cuxsBudYruabGdBQfh829Vll8uN9bYdLmuLSrfGp4ONMA7/kMqDGrVfGQgYKNPvCUxMoI+Py7SobQTXpApdJX26x3Vvv8ywbzZL6bBBx6UR+SWDBFIpqFSw19c9g1VGwsm/NWTKW3w/1gVmlfMLJtc+rGKvWpwcjhFas7CeP8MuFFAjEa9cS3iaTk4D8ctzGNrDxbdZHj6Z53jRohjqRJwZQhsbQ4vHZWR0r2BTeB6LDtynuDVNYYUDpb3MXU1jHO1vpWOa3oeEIhrwrFM8Oku+WqvQFqeT+N/Tadfn8Z9tvNVfH/O3AAMACcCyb9iaq58AAAAASUVORK5CYII='\n  },\n  {\n    country: 'American Samoa',\n    code: '1-684',\n    iso: 'AS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyRDFBRDI0RDE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyRDFBRDI0RTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJEMUFEMjRCMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJEMUFEMjRDMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+O7eQxAAAAhJJREFUeNrslD9oE1Ecx7/v7l2TXpLGWNrGioJDO4ogLkJBhA6iFDpUOhc6ODiKBUWcBJ1bKLaCIIJOjl0ypDh1rFDQyUH6R1HitaRpcvfu+X0XHWp6TWkCGdof3D3evR/3+f35vp/AtafrADI4yLQGlEZ+oAdCCGxtedC2ADeNvnYXUv4uCl8LOM/1N/eHmeQz2PDV/FcZaAjx3cP7V1PIppO4OvoCyk0AFh3SXEON45oB7+zL+F82P7frSfem8eRlEUnHRki4m3MhCN4t16CNrzg+eL8FCsKr4NHMbfhBiOezBSwvfWIEiCrw+MEtjFy5iJsTc/BTLKcj2wSmWQRcHsqjsudDVJhZf0/9YL2Etwzi4+o3BC6h0m6p1P+JxILKZ3H3/puo2WIwBxAuux3cm7mD+XcrWCt+Bi71RRVoHxj1kiLhRCLSvgJKZQRlibUvm3CZqXcu2xI0HmyMYgKh3Wzu5PQNmFu0uLBMNSdbVnQdbDvxpzWNih/i2cMxnKXb6w+rCKoBO8B47cZ7XFZ+pMGjCF06QTX+lPqxQoXxqXkkuiSkqkEkLSq/euCwSalqBD1KE0Sx9/p27OTiPdXs88YPD4q5XOg7A2GmmW4sszZC5DvH4Cyuuknecqi20zS64czfcbbnxTuZeOhSshPM2IqCOBT8i47ttmbQaFagQ3YKPhngTCfAZlZvdAL+R4ABAI7lqpHANxKvAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Andorra',\n    code: '376',\n    iso: 'AD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUI4NkFBODE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUI4NkFBOTE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRBQjg2QUE2MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRBQjg2QUE3MTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lPUISQAAAfFJREFUeNrUlFtrE0EUx8/ZS7KXpJLNxiQ0biSt1hTFO4qCvgl+AF98EV/9Nr4UP4ePUuijFLzUait5iDZVm2a3NE22JNntzhx3i0WkWmWCoH+YeZlzfjNz/mcGr8McHBIDyYOJj/wRYI+1CocDZCeM5xX9spxjqBD8TBL8Nf0DaMTv8x9K+S1TTo+IVKBAUndpL4OYwtgLwPHRfLCTlTN9d+vCdrueKzaK9hIfGnp5F0gRRB+4Li0uPaRek5ixrdy2e2ZztYo4eWvqiSTHQSiCxm9X1qPGRu51JX+zf7z9WPmiD9VS/64/DLOm7h9dlV/aKEPSuZute4FvTd8AZ/Zces22vKbdXQ0j/V3jQXIuJRArSLIrDlysnfQ6nzpPYXRFxY4FWS2KdF1eS3zgMgqg+f5SsfwK9qZT7gK2AvVOhswoU+lq2C3lXyQxTJEhEuhrHg9/p45mBUxL0izkplEixgqcKpvupSRZ4mM0X0SD0Fmu3T92tmtonBmSu573PXvy9GJSNAIUQidZ2ann52dSAamfvWtbG/U0X6memNero9rM8oEfXPTUGJy6+CxOn3i/3m5fLVdeOrNvgCOkNKD0uA+d+QVEyTnzwam/JW7wXomAy7nwh4clhN4HEGcDE9EkgiMqIP6pEv13/7WAvgowAA7uuJg3MwVHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Angola',\n    code: '244',\n    iso: 'AO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUI4NkFBQzE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUI4NkFBRDE3NkYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRBQjg2QUFBMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRBQjg2QUFCMTc2RjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HdsdLgAAAZ1JREFUeNpiPCeoxkAbwMRAMzCYjP7/i+H/XwYGRqoazcjM8Pcb45+vTP++Mf7/Tdh0Yo1mZGL4/oZZ0O+X2dfXonE/vn9mIeh2JiLd+/sdEzPb/x+3mF/0csn3fVWf+fHHR5b/PxnxmM5CjNF/PjKyS/2V7f365w3jrRz+d5vYNHZ+lDrx9c1CDiZmkMU4jebHJQnxFyPD99+Mf34wCNr+Y+D9/3Pa3zdneL7M/CNe8v3rfG4uYMQy/sfU9fH/X5DRr/79wWP0v98MfAoMXwX+bjRjV5Jl/v7230+GH9fXMpl5MrMY/H54gZFDAIvR7IzgkAK6Gg8CultFmuXjFXEfA6ATGXhBIoxOeuxPzgurKwNdxoRDF9Fg6Ry+//8lzMyhehrruB9cFaVa7koK4Xh1UjQ2gFOIj/HJRbHidG4qGLptjsCqSfxARrAH+6tTok+PiGydLUA4yRJjdFESV1Mhz49/DH9+/582/9upy79drNjuPPw7Y/l36gSIoRaLkTY0H3CwM66dyt+Yx02Tgk1chCnAlZ1hFBANAAIMABE9jLBld63JAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Anguilla',\n    code: '1-264',\n    iso: 'AI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzYwMTE0QkMxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REFCODZBQjAxNzZGMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOEI3QjgwQ0VBMDNEMDkyMkUxQTdFMDM0NUEwRTZDQzEiIHN0UmVmOmRvY3VtZW50SUQ9IjhCN0I4MENFQTAzRDA5MjJFMUE3RTAzNDVBMEU2Q0MxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/LHIVAAAA2lJREFUeNrsVGtoU2cYfr4kzdWk6QWSpqm1c6K0NnVOizhveNkPnXW0tUzdiMIo24QxW+oNJoj+qbIh+kNRweCFgsNg7RgFNwvtVi0FkzXepjPudK1r056Yk6RpknNOzr5zmq0w9kMq7tcezo/z3Z73ed/n/T4yuG9PyZa1Fx6aD3vuMj23AEfbgUUfXPrsh22t609w4KO55nTTgsShXW9yjvLS3Xe4YZZAh5eAanbrYOOWU++x3b6mkuOtbsfSivCEBBGspM9zmj9fyPqbbS1frDjKVTqPj3HDIYIcvBzIhx97BIt1dUHCbWYM9ZtjRRXMZa/orlOduWgsmzM39hibar3+5Ddnv02FIt91PkvzKUBDD8rxIdAfIAFoqUr6KQllstRSlR2CyEYzTDQjcC9sVn0ynhwXYAUMZk280Mk/H7VrksVv2NIqfdG9VWExl4CyS85SXqsWUiioXjPf/xMjJEasedpAgK6QKWqNr3jZeCgSFlJVtcvzJ0Imdigs6jI3OnM3rHEudzFdfRFHSX/uHCb6R8agE1Q5EKlSSGDdH1UfOeJODPUZTc8nSYPWUuL1ft+w9QpQPMWtWXy3wlX3zt6dSxZUTKY7bp4M5rvmFbpudT6paexZt7VuD1fq73rQHvz0fvVAzAS+T5FMCyLwKRNgN/7enh58YFhRCOviKN0grxI5NK3OmeYlvk3xHQOes+82VX3S3XLAn/QH7DboRga3l+9ftPG057Fh21rHz5ujx3Q/ag1JKWtjTlyg57uTBaszDT2pgBejh8ITdN70t40aa2j0q3PX2yLFPnY2xAjAXu0lv45X/XKbg1H9sLd/V6/v65qa3SsXmnW/qcVJaoEiioxx1Dq9/tF58BzsldBPDA/FaUiiSIYi/n3ay0oidCBnKiENFAGjRDZdJ8mOhxU6OikSpSskpErLdMHgl6qBNhhssFXC8pbL1RwIjBDMyqoGbJSOQK0M6Xm1ootD9l5kFE/yFSVpklVDYWCeBeuPdYztbXnxBBYLHJ72QOA+UDbdfASNmBEkWf6I+dr+WO1Kdf9T9YZ9ac5IYMRfBVETvD0zaqV6mryO/nKeSR3siIV4gLZ8ZnrDjFVPKZOQVJywALOIfD+nocErgbqaI8lu4R+8r049beu/vHx4bfif+r+j/lOAAQAGyVcqpoR/+gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Antarctica',\n    code: '672',\n    iso: 'AQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjAxMTRCRjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjAxMTRDMDE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEJEMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEJFMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SFAcWAAAAxRJREFUeNqkVutLU2EY/52zc7a5i1te5r2lUFpiYl+CMsjoQ/QPRGYFUZAQ4WfBT0VEn6JPBSFGQZcPCQVS9EGswBAy7GagYuqWTp24zTnnzqXnfb3g1M3D/I2Xc3nfZ7/n/hzhWFu/H0AxrQgMQKCl6iv3ooBM4KT1T1q9wYZrSpglAdPhBOYWEpBNIhaWVDisJpTkWECP0HXj5JLRk4x0aCrGSW6fK4fNbEKQFOgfjeDZpwA/k59tJkVEUkLYUYktxEyAyZiElesaZiMJePOsaL9ehcrirPX3jcc9uFBfgC9DYXT0BDAxuwSJhMtyrSSvp1QgiZjFLKHp5EoFbrsEC1mprQpOhxK4eqooiXQNdfscqPXa0XSiAAN/F/DgnZ97J0sWIaTIA3HjQ5AIj5Q70XK2FCOBGCaCcVJGgErsCmVUdak9pevYOSfFu77KhbvnK7ilcUVLfX7jg0wu+u2PorHeg+62WrLOhl++KL6PR3F0fzb/UyPw5ltQnm9FlJLPUIxdNoksXULz4yE8v3kQ71sPo717ir8/XeOGVRYNEbPkysuWER5R+XW7OCcRM5d66CCz8ill6kWK2ZWGwoyKleVLLK6thGob5i0mOCwmrkDLk2H8mIgiUzy6dgA3zpTAPxeHvlOMGRQiTSg6Th5yo6bMjt2AxTkcUyAaIWZYXFbTZrBRlOSYqSxlJFTdGHGh24y3X4N42TuzK2IrdTdxUyNKS2wngRC56E7nGOajSsbE97t8vP5ZuzVEzOJc4JIRW9bQ8TGQEennPyEM+haR45B2LqekDfJRrlPGvTfj6OybwSUqLYlGEBsKFR4r6qjDsf3qUtu28rdej2FZ1aj2pfW2a4iYHWajjpGwAdH6YpT3XUau0eYklcnlhiJ0NFdukX34YRI/qRT30lDRdIPTafOkYnBT52JrDSxLbRYRTdRaN6Pr2xwNCR/2UDZLIjIjTteVPC4zXlHW99I4ZF4ZGIvyidQ3HOFxZUtR9bS9OrL69RExSszmLfv1DM4jtKjwDyI2YLLMIrnXwi1NQ8q5/gswAJWJHoEWuWKnAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Antigua and Barbuda',\n    code: '1-268',\n    iso: 'AG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjAxMTRDMzE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjAxMTRDNDE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEMxMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEMyMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VJu1tQAAA/pJREFUeNq8ll1oW2UYx3/nnJyk+W7SjqZZ25VORjvQSSdKLV5UL0ScugsvRKs4FCui6C7aiyHaqw0KMnFgy/BKvRG7KQgiDmGC1SGb7cZWW+0Xa5uadWnXNEvzcT58T9qUpk26gOADL+fwfP3f5/k/73uOdNThn/82vRIGVvl/xPuk3Rthpqol3qQ4TKEoazkdUu4Z8Mlm0C8X6MpZtbJqjgWb43KVZGPAU3fPbUrS+vOxwyqhKpnWB2w80qpS5ZPoeFgt8NlN+r11NMgqtjE9xRN2D33uWnruLpQMOHxQJbZsoCnQ1elCy5pIMrS22Lg2oRGulmkIK1y6li2Zo9cd4hm7j2FtDZuMxJ9airede7ikJTmfXtlRqSmadPlGloEPvERjBm1tdh49aMPQYGRGo0Js5mi7g9c+jBfEbJWn7F66Bca4KNRqjPRH4EBcx/SGRPmWb8edCSb1TEFQ2yGV/XUKlQGJMyf96CkTxW4xJqGLyhWXxPH340SjBpFFg58vF8aHRe6LlfvxiBbNG1kUpFXZMogXIkIRkBT6i/D929UsITXFma41sdUoinsRtFugb7ybUU6/keSAP7UD1JJPRc46AT67DprT2fJGVShyfCsV9Pkb6fH5IJXGoWjsrZH4aVHim2kPbX4b/9w2NgfJammNGLbhWY3vFxI0HTKJ3DJJZUX/nQ5643GOKE5G9HQOIy+2rTvL8/1OZo3f208w+NCL6LFxsmJwkm6ZznGd5K+62OW28RXtrggoNLygoK0Z6IvCp6qZp6+ep3uwh79UkVlRC2fH4tg61HmFLkoJJVcwZIWO179kKnw/RKZzhJQnAjTUQO3tKS5+9hKedIKIO4BSOG3rHG8Vy8FyDCaXGPi6G+4KDt0uMBLCmtx9WT7OCsgk6B/spj4+z5ynejvoRneLiGrojAX38fjCFfp+OAWBPaIQwcqaOD8pvfiybFmRLlhD74U+jtwcYjTYKHJpxS+k7a3Oi7geULUMjtVpZk9/jue9l8lOruYujWJi6ibqfT4SZ8/R0PU8Gc8+0vYKpCLVWq0uCbzOt4yyFKWpyoV/+Beob9yd3liU+IPtTM4togfDosVGKc9Vebc8VqBUHeZGbJ7rz3bec6xGn3uF63OTIqZ+N9DSHBe2MIsr2MKdkSGmu94t6Xfz+AmWhn7EGWjOxdxL5HIOiImBy9XIwtlPiH3x1Q778rnvmPv4FE5ng5gas6xDVxawdT3JTqe4bSqZOvYWqdG/N02ZmXkmX31T2Hziznbv/Dr8J2ALWxwxe/VesvoSE53HNvXWeyYREbb6nE+5Ytv45fGW8+uT53tleIjIyY+QXS6Why7gLpPX/K+PhfWvAAMAKo+tOTpRNSkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Argentina',\n    code: '54',\n    iso: 'AR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMzA3QTc5QTE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMzA3QTc5QjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2MDExNEM1MTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2MDExNEM2MTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VveEGAAAASFJREFUeNrklE1OAkEQhV/3DD8ODEQgxBBXwIa4YMUNPIJX4VK4NN6BxM0k7tQYI5FkMgzE4U8ZpttihAN0J9ALqlO9q3zdr+oV6w9evwC4OHHYlA0YCE45NwXGWYFtP9poFbL0oltKSB3wbaeioROHlXEIyOhIiHgFKYTaw6WUkZadxDfwswAuqJSV1BXTAW9mIwTePeLgGZlqB7XuHXK1prKPlSL5XSJ8GyL+fITLX7AYvSMsXKNerMPOF4841ek87borYKXVyb6/4rg/trIOqq0egugDoe8h17hBpd2j37qnGq4psKJSp0y6XaoLN3jy1cGMg5Od/t1MPt6uSe5ETeoHbwLdDcIOYI0NYl+Vs+e1q42CXRPgnY/HJuB/AgwAxP5dJ04ev60AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Armenia',\n    code: '374',\n    iso: 'AM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMzA3QTc5RTE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMzA3QTc5RjE3NzAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMzMDdBNzlDMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMzMDdBNzlEMTc3MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WDHK5QAAAF9JREFUeNpi/M/A8IlhAAALEPMOhMVMDAMERi2mX+LawmD8ZyAsZmRg2P9vgLLTO8YBsvjvCEtcA2U30GKx/wOSqpcm2/weEIv/b2b4PzBB/Wy0rB7++Zjh80BYDBBgAAfmD594ReJrAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Aruba',\n    code: '297',\n    iso: 'AW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzMwN0E3QTMxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzMwN0E3QTIxNzcwMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQkNEODUwOUZCREQ1NjMyQTZERjhERDI5ODI4NUUwNUQiIHN0UmVmOmRvY3VtZW50SUQ9IkJDRDg1MDlGQkRENTYzMkE2REY4REQyOTgyODVFMDVEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5hWk3QAAAbxJREFUeNqslM9LVFEUx88597wZZ6wZmRITxBJCUhBahjBtWkgbd23aBEG4EdrpX9D/4M6tuGhhK0FwE+hG3UkUZASRYDTVzJt33497jvclUuuZe7jc5YdzP99zDy6v76lpoIiixAXXjDOICgpDlCIbl7CaptANRHEq92YaFz8SZ3NAHAYtaBCIQAuP/W1dWq28sO+qEl+kvu0MIB/4oL/VEZRs5UZ9iT8tbr9p945Hb9/M0cDQZaYerdydbq1Ge8+31/4cfWvbo/mF8bOJue8/oYICg4lBIi3M/OOXSc7Hyfj51Fw7Odx4+HprdKnXzUCcFz6g8r9o8sKdLb7GIzutJyfP1t5PP/3YrdhUeGDudVE5ZYQTlZS7vzZby7niZBQjoQ7tmq8nESLQ089pjdSE4P6HLl8vdcoAw3D/oa/kI0LAYlUSLbMMCFUfoRKfx3dyvVX+n5BoZu3hwe5is9F3eUgXZLSfRPylc7+WFU4kWHw+NINpinzWeRBZFicA4Rr345sW+GF/dqzZL7KQs2EM9Czzq523Ak1AG7BrH6PRmOsjhZBfq960BEMjsAOuakfKjS0aUklE0L0UYAA5i9TZQeWJxAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Australia',\n    code: '61',\n    iso: 'AU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNTgwMTE3NDA3MjA2ODExODIyQUY5NTY0OTkxRjRDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2NDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2MzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MDU4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDU4MDExNzQwNzIwNjgxMTgyMkFGOTU2NDk5MUY0QzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4Y+peLAAAD2UlEQVR42uyVW0wcVRjHfzu7s7uwOwgIFLA2VqjKLXKL1fjQ2DaBah9slbSp8qD2ZiSaStTG2AdTTBOrwagvJoZISWp8aDWUCjQ2bYgUGlCC0ECNAi1QspTLwnaX5TI7npkdKJZNQxMTE+OX7J5zvpn9/uf//y5r094tH6Y4V6kZyuZItYex1l4FYafKYnxF377Kzy9+QfFXquHTrTKr17dvfxxaYiHKnkHF758VXol7NcnycVzqm7vOKbtu/qj8/oZXOXq0AGd+HiNBWSGE4rHep9hT0vggs5/RIz72HipQyj3PK9LxBAE6FSFkCIfDSl5eEi6XbJwjArtcboZKyqgez8He08mh5+b4o+EJtmQ7YASeSpf5s0Ll8HvriD74CtWxO7nWNsALzj5kmy6EdkfIABkZ8bS2vkRh4RpxvhUR2KI9yDTzKOJb/MYSIZBp7hgRYzq8T9GvbCXuxod4tXhx8C97URVMneTmJtHdPcbU1IzwLaYjakkB28ym1/CMePHNyzy29XHk8T5xAUHVLxifPAU7tsOmTGjqZCFopzcxh2jvMG67hPqDkHJ+dompCGcE1/Pe3Nwr9tEG4Pr1yQQC83g8PnG2hoETv89RHjlcyvu748lJugIN7VQOZJK7wcEzdadoKS7j0pNFvLX/Fraen+g/PclHvi1cnkgWoA0moExaWiqTk0EmJvxmcD0NC9hsAS5ePEBT0xClpTXCF28AW6s/faf8y+xfHZnt3/HN243srpY4WRfFvoevsm6wjqnkAna8fIWac31EJ6SwJ2OUvbEdPNp9iTPjCuqc4CWI9fe/LiS209j4yxJTCBIKaXR2+jh/fkAwnjVVsWBTrvXx+Sf1fO0vpMu7WaTohngwTFWLhebRzfS1iAAOjYG2bg60XaVy+1YOPr2BVHst0rzO1s3cXIiSkjMMDuo1EGNKP0N+/kNYrVYuXGgXZ5f5CefY4nJ9pvn9etKnjcLQZdNvGt4/gFHahi0WxrTJJtkIHn5PL0q9texmcNUouG3bspFlidra30z/bbOFF7Najdws4BYVHAqppKdbuX49BlXE8flmTMBFRsvbRFvmV801hvr6HnOvrOjnCCNHxWIJUFVVxNmzOzlx4tllCqzGLCbIlKleVMQhIkWaPLGxkhgC97N2rWKsiYm2ewBWcTplCgrSjH7WFYw4uVa6ZLzeIMeOXTZaoKKihbGxgJm/1ZifrKwE2ttL2bgx5Y7h8jddjmsrpVoQ1SiL3AaRJIeR73D+tVUxdrudYlavoavrpiDhv11Kd2f8z1hHh+fu/078S/Y/8H8f+C8BBgBE6FYFFd8qlwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Austria',\n    code: '43',\n    iso: 'AT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2ODE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFRjc3ODY1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFRjc3ODY2MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WaOFnwAAAGpJREFUeNpivCHH+pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERp7FLL8e/R4Yi4WSAgfEYsb///9/onOKBoHPo6l61GLaZafnBYkDk50uMjAMSHZiYZdjHU1cwzxVQ5s8vHRu+nwGCDAAxfQUXKOTRMkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Azerbaijan',\n    code: '994',\n    iso: 'AZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRUY3Nzg2QjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRUY3Nzg2QzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNFRjc3ODY5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNFRjc3ODZBMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D6YUmwAAAZJJREFUeNrsVb9Lw0AYfXe52qotVYp0clI6SEFUdNBJERRHXdydBAfxLxCdu/iXCCK6lKLFOjj7B0ixSrGJTa32R3rnF+KeS5YgeuQl4fju3vvefXfHcHZvI4ImCKkoiDkian+PWCCbDTZCKcAZkGTSbITXLdZLJf8o5j4C8sOGrNZhTE+CJRJQnU+aYchVE5iYKeSU3oo0CX3g5BRIJIHyHXBxS301wjghmABh8bR/lBzAgYnM1Tn46iKaC1uUeYv0JMFSecimTY4QMWf6xeXQWvmhh3cYM2vgmyuwlvfQfqyga9cQ29/B2NsN4scH6KIOh3h15nOhWR0KTAjv76tDb8PrHo6TZxxsJO7aEshq1uBLvtGKrJZ4RaZ8CZ6fgjm/AVVtg/FRsIk01HOdZnIr0NAmp+Ka0ywu0/sWCpQcEVwXgWKF+p4IGTf9n6w1M94+2tWSyBCDtC3IlwbEbI6sH4K0TG87sRDbCQ+HKkg4JGXV63uHRywWag97J1e1E/LscW11/i+J33A7Aa0oiL8FGAD8Y4eRaTQ3EAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Bahamas',\n    code: '1-242',\n    iso: 'BS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4NjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2Rjk1NzM4NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3Mzg0MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3Mzg1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++Dx9hgAAAetJREFUeNq0lv1LU1EYxz9nG0xplxppL5PobZawXsBlIAmOhAgJk0qSJc5NakH5Qj9EFIFY9Jv/hn+I/4S/bJSjaTktF9tiL/fOZ94GCiFTd77wwD2Xe+73nO9znud7FD39aeLvDIJ9sPETNiWcLnRDSVR3np5MwtgruHgVVpJQyMkCnFqJ/0gYOyNvG8TewINn4JFXKVlApQIOh2biOrpuQmQWBh5C8S+spuRLZYdW4jpqxJEZuN4D62vwO9O0/O9PXMfYaxiNg+8SJDYk/6bI/2+2VuIaTvnwxKcZDgc43loilchTrlRRDqWZWNAiMXLXyaePlzkfOiujMnyXM1AjVxqJd+PlhI/5D37a/Sck/zmsnIlyKf3EdUTCHSx8voLXcGHmzYbnHblAt7JlrOrBS+3QtTH6+DTz7/10dp+ETAEzW5RKc+iR2i0xJCX9Ze4C/sEOGYm0a4VDadf4jo8ZuF9M4Y0FWGyzWFnKUypb9onWVk7D4xAWA+m8AV9/QbYkHUxp7Fy9AzA+DbdDQiaE66uyQ2dTevb/pT4nrTEqLjX4FCyRM7lsu2cTfXrvn9wttis9ikL7GfHlhDSnor1LmudMey8C90dsWQNBSH+TBGxpvghcu5Xm+VuDO/cgl4Ufadv4lUIntgUYAIDGhVXvTDlFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Bahrain',\n    code: '973',\n    iso: 'BH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4QTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2Rjk1NzM4QjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3Mzg4MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3Mzg5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+B1d5vgAAAOJJREFUeNrslbsKwkAQRe/GPCyTTxC/1spaBIuIqKCVlR9gJWovKAhCwCT4SAI+4q6j1tGQRNNk2pmduzOHyzAhxAkRcd1asFsm3M4Q/nIKCSo0owIwBgiONMFIWMQpDGYL2M023O6AHslgspJKWIpbKBs6JJXE4v3ze79Pyct6A6tWx2E0xtlaPRcETadVl2jVnP9wYmp+9wOE+yM4bu9y0kQGQxeMC8YF4zwZsxwYN+hg9IgxlP8yZpqKrCIZYyn9WUzmYxQ+TsbYi0qGO+c1oWP24c0n5CKBsl7NxMcPAQYAXoK9LDclUq4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bangladesh',\n    code: '880',\n    iso: 'BD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2Rjk1NzM4RTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzMDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGOTU3MzhDMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGOTU3MzhEMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oE4gsAAAAkNJREFUeNrEVk1r1FAUPS8vmY9M2tJSpG4q6kIYu7LUTXWjG1EQCuJOf4Abf4BuXIi49Q/4A3TRXRfdCK6KCC5Uit1UFxXGQqXTZDL5ep6XpOCAM8lMBnzwXiaZd++59+S+cyPw6O4x/sMwOWfGthKcqjpw8dAgBmeDi+Q1ycEFl5A3fZXtEdME1iBNepQCq50QNw5jnO8liPjoiyOxdcbEjwVG4xM5VKXBzUJQx4BDp68/uLh3EOTOc+9KIWoaeHmhjqeXmxkr/XLg5kh6mWmTjnbed9HuRFBzEl5jcFuLgTz55GG5p/BwzQZiGsbFwMbIf0jvm48u2r8iuKTT+8fuE0sgmDfx4JuPx7s+YMtShTccmBRe+RnizkGIeFZqVocWeGBk7DzbD1A7YbqWqJbx/cMopa0nR782waCCuoE5N8ZNsoP6pMDajvaX3CQ9PqIEdaG2YZAr2kZUoXq8Y1nOYeE+ldX7nm2kWagSEVh6ITtftU2l4iJjbxfN1FkjKRa2Wj+By4re1jaBqgDsJ9g5a+HdkgXzOB7Ke0qOXjyF58s1+LNGJjITA8eZ141VG9/nJVpHcZr5AO387UQKjaMImxfreNGmuvRUxVrQANTk33xnV6/PYOtcDZJ0Osy+xcpNp2aCwbxasbGx1sokNlRT0GoN3k3QsQVurzu4RkG5xXN62iQ+s0lsLpnYW2Rp9fMuVbKsBT8EikM8bYtUs/Qa5UFRUkGqdT1Mvy3+3fi9ZPCAq8kPvQbujq0SFb8+9PgjwAAqQMkwoAhtcwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Barbados',\n    code: '1-246',\n    iso: 'BB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4RkMxQjIzMzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzNDE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjMxMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjMyMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+gU/BiQAAAf5JREFUeNq8lj1o1GAcxn/5bLy0l+v1esJpUcshBVcRREEo1MVBBUFcHJS6KAhS6yDYdqkIuhVcHQQXF3Fx8wsEB6WTWpGiRfzolaPtfeSaXhP/uSo4SE1qzj+E/PPy5Hny5H3eN1HYPRYQoRZv3190tlZ1Kh1/xtue4i1Zax1nTzpR+HSiV1oO9S+YICqZGkM4SAgTWzjR2pzwqhhLa+Bo631bhU0FthtgyLlHZ/pdg1dvGtArMdFkrM8EKzpd5HB9mPWoTpc5NJiHLpWR69+p1H1ePuwX9yqP75bodtLJO97TbzI8WebCxDfYovJ+zmPmk9dyee3mPKeuLjCw00xe2NphcmM0y4Mn1db8Dh2wOXywEwoG9x4tMznSjTVgJS+8Ku6OH3XIyZyWnlXJ2hqOpdB4UcPJ6pw5kYHwDSQt7K5IercZFMXh89kV0vIAmbzOU+kLWUl3n0HT9ZMPVyDBRXgH96U4ffEzmS4NX66n7pSZOJ8TJgW/beu41GRob4qx4RyZTo20rTJ+rocj+22Yb4JC8o5btdCkWLS5fKyX13Mz1Go+V6Z2wVsJXKkuAKNNwuEmUlmDr3UKKRU33Di+uLAkY7b0brsc/6qPHrcu5df7MMlKfIrNCQe/pSPs/5twKOoF//R9i3ObkhAmtuPln/hgA1FJGZF+fX4IMABjOotaoebfVQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Belarus',\n    code: '375',\n    iso: 'BY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4RkMxQjIzNzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4RkMxQjIzODE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjM1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjM2MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bnsnjAAAAapJREFUeNq8lc9KQkEUxr9773i7ev1LKCiVEJggGAW+QLto52P4Ar5K65YteoGibRC0aOGuhPAvpphpps7915mhV5gZOHdzF2e+7/zON8bu42O4fnlJRb4Pp1rF8uEB7+024lB7GB8MSl+3tzAcB2x/H/50CgPqjwnDWJnU1EomwbJZhL+/0HGY6bpg+TyE1d5kAvvgAJEOxZHnIfj5AaJIzpj3enqsFjYLi8lybN/eYJfLWhSzTaeDz+trOeNwvUa8XteimMkPzXjv+BiJRgP+bKYFLtOpVJC+uIBdLCJeqyFYLPRQHZC9/nwOw7bBx2MIyrUoFjSDVglBIMuwLD2NZXhQYpmJBFghj/B7CUveSG0x3u9j/fws12g7GiBnpSNOW52AWrhZxDl23a6kuegUcdc+C2/6CGOu4sZibwutFsLNFsnaJZ5OutbjFbmdU0y1UBxSiRnj/BTu6z0wpT8bxXAZsRisTIZoppG/U2QeHhHdGqgOVit4tL/CatAF+HD4n2fqIzMlX6cgJHu3FCQx6HglmF0qjXLNZiriHil2KTpLFCjqG/8JMADgr5w+bkv5NwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Belgium',\n    code: '32',\n    iso: 'BE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM3RTE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM3RjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjhGQzFCMjM5MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjhGQzFCMjNBMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dCOj3gAAADpJREFUeNrszTERACAMwMBQS/i3ggVQUJBAJ1iSOXffgE2hPSi1OpmTaJcv+JSwsLCwsLCw8PuOAAMAnCIHFZwXd4kAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Belize',\n    code: '501',\n    iso: 'BZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM4MjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM4MzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RkYzMzgwMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RkYzMzgxMTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0XP2EgAABMBJREFUeNqclmlsVFUYhp9ZO2uX6XSmLXSvlUUKlEiAxMIPSNEYFpuAEUohBjEklVg0BkyI8YeKKIkhyhIkoig1RqIQtBgggIoIItSUsg0dpttA29nuTNvprJ62/PDHzNB6ki+599xzz3vOe77vfY9M0uZ0A/ki/IyjyUREYnFC4ejou1olR6mQE48z3mYU0aNsKFli/E9HYjCBppDLcfb7cbqG0GuVlBRZiMWjdPS58A+Eyc3WkW82ir7YeBZhlFGzX0oFigBkOAT3+9HOncO8pcWsnFOESukToSYSyeDEtQ5+/rGF2JU2KDKBNg2isVTAfhkL308OLCjENwC9wzS+tZotdWYU4bv4w2l4BwbRaNJJV8UYRGKqpYatey/yyc4TkK2CTEMqcL+C4sXbxENawsMcGgY3fLa7ntfWhjhx+SgOXwQpEOCGdJ3Wvht4g0oysfBL29dsq11CbmkJJ4+1gEYsWqVMBhySp6S4a4D1G6rYuDLG3uOHmV1YL/6Qs/tWIx3dNnr+ukTTT69wwXeJ+eVr+fiHj9iwLIsdb66ADs/Y4pNNn/SLO0DejGJ2vVrNodNHWLNiJwU2O9Lh71ho2oC5R4dVZUajkHGqYTuhP+xsEmMONh9g3Qs5TFlQCf3+/wMcpG7ZTJzh38jSVuLe/yWdzctofLmEGRVV2Nqvc+r23xQs38pzUhnHNz7LreNfoddZ8UZaWF5TKvIjPEFgUafodEwrN9Dp6yLDVIhVF0aXbeRq81Hyez1srv2UHYuqWe3T45QkrroHCTp8zCqfg8PdyfzpQhqM2qQJlvj0I2KwUcMkk0YkUpSpBelY6jYTtC1huO8B2jY7GUVtzKoqxNHWTe23e8gvnE/B5Dz6B/p42HsDmSaAwpxFNCiNVce4gBE7HhECkRxGlRaVTDHaay0uwzC5jEBcgV3kZSzagyl+EkPxG2Tn542OkUJCZAL9lKSnjYrJxKhWCqBAkF53GK1axX2XfaysxTxKUUqKaTMZMsymzbmGSOU7IgfUyKKPyBocYrq1hF5/nLhbJJdKMQGq5WKrAwPcc4SZ/aSZm10ebN47nLv2BWqjk32/SmQ+zEOWWcGHbR7qp27BJFvAqoVbuGK7KEqrhDMOoXY+nxCTnMTalFxAZNzudrH9pVpuOc7T4bOTqddgu+cnquhCX3EBq/UmaQGJVls7ZqMJ31BYsOJlSlk1De+dx+UXqqdTJxSQpNKCyYDzmp23D55jT+Mqmk5/T07ZM6x9+nW8D11kZLrRG/R48tSEdQbUFg9/tnzDorlVNB0LcPv3VpiSN1YhCV0umVaPWNKQoKt3kKYDDSxf7KL54ln6I8OUpi1GKc5eJo/Q2n2HwtxhXB4HK6qf5+ylSaxctwssYkqdIDKxVY3DJLyD4PTywa4GNr2oJx5yc6//LvY+G1qlgSdyShmOD1GZv5Sthy6z+11hElkawZg+pUkIW9yX2hZHwEd23v4A3bxK6tbXUJzvo8KcLopOTjiq5/Q/fXx+5AxcbofJGWDQPN4WVz1Vnxp4lHXZaKJ39vlFeCm35grjNwjguHj30OOSyM3SU2BJfyR8j70J+GUenWXCV5+QULZgaKxwNWqFcD85E2ijV59/BRgAi/3kZlc/4VIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Benin',\n    code: '229',\n    iso: 'BJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0ZGMzM4NjE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0ZGMzM4NzE3NzExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RkYzMzg0MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RkYzMzg1MTc3MTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PY+RygAAALJJREFUeNrslkEKwjAQRf90IqgYFNx5nN7AA/Q8Hs5bCHUluoiLasmkU+hCEKQ1GDf55DMJBF5mQsIQDvsawE7t8EnPGeyywak8YqPR6/pLWfXZDBO8xBSyBf6kDM7gn8mM3hnUpMMKsBLQQxKB+9ooSy4suDOk5Zgqy3iwZhoc4VZtg3UtrnOOSThMztjXhn0T4CkKzJPvuFiLnkG9oPycMjiD334uN3QfLlX30bM6AQYA2ssuTyUvY0AAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bermuda',\n    code: '1-441',\n    iso: 'BM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDJFQzM0OUExNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDJFQzM0OTkxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNEI3RTM0NTcwNkE3OUY4MDY0M0U1Rjc0NzJDRTNGRkEiIHN0UmVmOmRvY3VtZW50SUQ9IjRCN0UzNDU3MDZBNzlGODA2NDNFNUY3NDcyQ0UzRkZBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+iROkEwAAAwZJREFUeNpifJaZJBnovvS5ZOPyS7d37GJgEF9RoRM+L393bIfbpK8M/z6JCf7OkXpZGyj3T1nzZEUD67NnjAyMDEQAJtnpXwrCJnnfXH82jre/L17exuD9D0aGvwwfmDnFlHmLVR+djmKszLZq4XHUXfv32/MXfAzEApaQZK83kiJb+D75375QEB2YVhj0YMnaCxMZtJX5j02WU773hyEkbtdb3quTtur+fCnIwvbr9w8ijWb8ryvK8Ov/88//n3z/x/D+vSgP249vv17/YxRg+M/FwfRdWunns+fCv74qqIoyMDOdu/7697//LDDN/xn+/2cAhQ6ERAsolvMSpi+ev/4pwGQQ5cDx7B7328cfmbhfbN8n5OIgbaZ5d8cRRlGdaxLqd54/FWb/x8B0hOXfH6ijgCYyMf3nF2SVEP795uP/9++Z/vz+jxzWRteMm/y7WVZvUciP5LcwnulQdDWxSp3j/4PA1NVJ0yS27dQujv8po1goFubEEPz97z9eBqj2Hwz/hTPSzN69EZEVNX14Xaqr7ytICmE4S121S5LkF/atcyqWn5/6TPrLR97e4p/uIgx7H7+PVWnjcRErC9NPs3mySPb55q1XfnFx/Pr6FRoYDAwcsgoXX93bc/uL4VsGNX42RqhnoID5gOz3L51NO0+/PvWcUfb9Zds/111YH3LcvcX4/z/L25siN9Y82byFlZXXWoLR8urOr09e/fr3DxKm/xgYxGRVbn260PqbSZ5ZyPL0/tdnzjEjmc54HExxMzBIMDCwgdmPGBg+MjDyMPxXAKv6zcDwjIHhMwMDOzD4QK6F6PzPxcBw28zgWoArDzfXizdPtLefMjpz+QuSq1lYwZxfYBPhPuVkAKZshrtITuAAi/9H0gm0huf6lSvSzx/Li4vdemp54y08qUCNxkyOGAzs3I8MDNLf/1fc+3Xlx1P1l//5GdjeMPxmRlZxhrhcixUA0zUwDLmYmL/9+/sT5A/UdM1AAQDGJzAmPv4DxigjE2YZwkAzMGr0qNH4AUCAAQBpbzCLqENWxgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Bhutan',\n    code: '975',\n    iso: 'BT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkVDMzQ5RDE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MkVDMzQ5RTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQyRUMzNDlCMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQyRUMzNDlDMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QtQgBwAABGxJREFUeNq0lm2IlFUUx3/3eZnZmZ2ZnXV3dZ1cV1NTNGWTfEkj+lD5QoJZRBlI0PahD9kHicwPBX7ID0EEkQgZC4UaimVipSAqkpZFZUQIEpqaq+bLuPPyzDPPPM+9nRmF3HxJN7ozl3nmzpzzv+d//ufcq/Lbp54GcjKL/F/DyLTlPUKhL5q0tyXqd2QpffXn9NC8KnmFKBOiVfyadUvWqsgitMawmg3Btxpva0j0h0k7Qw9DNUKxjUcUBQKdxI3OYixx6bQ0gENtY3UmsAc8ypugujcC2Zt9l+I/AEfCXg1ftXE5ORNaekhXD9Ps/wiVU4TFk5h7nqH6y0XCD88Qnk9jD5fNxsRUM1Rgg9JV/NT9BJm5JEfMI5bOEYs/j+cV8YqHaQ8PCMULKH61E109Q3x4GePEG6BXEjEUkiWfEU0EugmVe5xE6zhc28VNSl7joqT+FNbdqyit24a9ZxOxYQqjBsc4pIjrTiy/H6dV8tc+hlqpjHduP8l8QaIei9V/hONr95E4cwwnnYRL57EctyHuv6V3J+pVElHwJ5Z3TD4vCW2iZL+Am27Gbe2m8PlWLi+YRXjiFJlpPWSXr8KkpFjCUEDNECJWok5dQZeOEYx4FpUcjamcwD7+AeFADR7toyU7EffNDQQLe4m8Ctn7ZhDLZKiMn4T+Zh+MnSBUmTsDVgIaRprauDWYCS+jpC6V+IiOLCb4+Sjqwlmc0Z3oHduwusfD7wcprHwJd/RY+O5r1MiuQaC3Dyy0mpZZmCkrMK4Ph3diZafhTF6CO1l8FopIq6C6YzNm1xdSZpJBVcMLApyuMdDc3KD7joClyYlNFd25GF23//gN9Jq3Jb3tNM1fiJ46HefFV6jt3IFavxklDcOM60b5Hk5CDHR0HegtgEVIutTQnhXmG7KoZqdiylL/TQK0dj/eutXU3vsI/cBBatPnYIZ3Yr22nPSDD+NLvVZf7SUmYjSx2A0RnBt3dMlfbBSWKLimE5TufQuGzUQf/xV39lzaurqkPF5n4KfvccIaZtl89IyHME8tI7PgCTJif27Jc0Tr38UaM/52gBWWqMaUT+Bncqg5feiO2Wg5t6xVvQRPLsXb0ie5/AR7Sg92W4d4kJq2Jau7t6MP7CbvbiQzbxGOL4J0YzdN4WBgyYexC4Q9T5PsWsHlQx6qKo1h+zr8jZuwOzpILu3FLuQJ9nyJlUpd4agOMGEyqlSgvOIFKqtbsWpV7LqwtL4F8NXz0mkPKA/kiH57BHfDp6gt7xD5Jfx4gihlk8mNomPiJE4/tojo4F7soIpJXN17JAJKpoQA6VCVUuP5nyU0GFhEp7JCZVrhH3Dxd8n/j64kCKU2R+awrTY56qQ8qj5GWl9FjMK+97HPyxFYr9NrIzLy7LoomVe+3xxYFQ5NK+i8SVc+i/D3aWy7hqo3dcu9ztDUW18sjlUReSeSN6XxNkbRCX7QRW9zmI5OmmL9akLMbWz8ut1a9RuFrOUvQCZ7y2j+ZdRvOsW/BBgAmn3MQYJZCMcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bolivia',\n    code: '591',\n    iso: 'BO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MkVDMzRBMTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MkVDMzRBMjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQyRUMzNDlGMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQyRUMzNEEwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QnwfiwAAADFJREFUeNpiPCeoxkAbwMRAMzBq9LAwmvHnNbHRABk1GjdgYV+iPhogo0YPiNEAAQYAm/kD5VlL/agAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Bosnia and Herzegovina',\n    code: '387',\n    iso: 'BA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MDZBM0U3RTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MDZBM0U3RjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwNkEzRTdDMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwNkEzRTdEMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+PElEFQAAA31JREFUeNqsll1MW2UYx3+cnpZ2fMjYhyJj42PlS4tRRyLbpIVSyaJXM9NsQ72AJe4GF+PXmqi78MpEE73AmEwCiXFT44XxwmWBjYgj2WBRKKWTfTAwhE562roxOGy0x/ccLcY5J7R9knPy5rxv+/T/PL//cyoXFHRc7+7exZo1Flyu40jSfdy6peA/8SnV7iuovgIwxUk2rFtmOdbpZt+rrWzYEBHfrxnP5bVrbTl79nyH2WziyJHt7NhxP591zdPQspHvu9/hsaZfUf2pJb9bSMHgTVR1iVBIobAwW6gu4aUWK7+FVB5/+i38/VuwPjwDMQktjYlls1kiP99GOByno+Nn/H6FvtOTNDXlcEPdSuNzXnq+fB/HzsuogfQpl/VbPK6xfn0OgUCYwcFx7PYiBocOGAe2Vl6nxtPOL30fUl43mbayS4nF0lJMAGYW1zoWFzXOnQsa6kMzfrG7kQrXG4z2Fy+XPS2KE5GRISi0ymRlWUSpv0KWJdoOPEpz8yY+/kTF+ayNvq/fxuGaRh0tQBPKM1JVnIjMTBPB4By3b8eJRMJUV+fj8ZTR9qJE+PcFap7y8lNvKdbqGTJSUC7f+UDvt8ViEj9AFoljdHaOcvFihN7eSZzOXAGcneb9Xvq/eY+KuquoY8n1XP6vDU37E7jh4VnOnAlQUbFZ9L3N2CuvilLZ8AqB0x9RmWTye9YqAZzNto75+TgjI7MGcNNTOnAPUNXwGoGBzVgdq/e5/H8HdOBsNpnsbAv19ccN4A4dqsXtLhTALfDk7ixOfP4u2zxTq7LaiuhIAKeqMRRFoagol8bGUg62WlCiC9Q+c5gx3WoPrdxq8koOJYDTrRYOx+jq8jMxEaWn56qwXS5zi3ah/HV+/PYDqp64sqIJJ68GiL8nnMLZsxcoLn6Q8+dfNvZK7MJ6DX9NuO1Tyz5PqdR3Aqcr1yecppkYGrqGzxdCuXZhecINnyoxJty9fC4nY/4EcHrv6+uPGZ5vb99Gk2eTAZx7by6nvjhMTeM0zEvpUZwIveeh0IKxjkYjlJXl4XIW09oioUTmeGSXF98PJZAXZ+kuyuVkE+v91l+pFotVrGMcPepjfDzCyZMT4s9ElgCuHOfuN5ka8VJTLpRj+lfiG6m8ZRITzuebZWBgDIejVIzXfWRa4tTW3aR250FeeP4SeXnRf3zuDwEGABm+YrFv6121AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Botswana',\n    code: '267',\n    iso: 'BW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MDZBM0U4MjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MDZBM0U4MzE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkwNkEzRTgwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkwNkEzRTgxMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HqOdhgAAAHJJREFUeNpiKV11+ykDA4MUEH9moA/gBeJnLFAGAxJNF8uZGAYIjFpMN8Dy8vOfAbGY8fb3/5/onKJB4DPLvMqMgfExEA+IjwfMYpbsxIiBCeq7A5W4mpffHJh8LMrDPFpkjlpMm8QFbfLw0rnp8xkgwACv5h08wmledAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Brazil',\n    code: '55',\n    iso: 'BR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCRDhGOEMxMTE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCRDhGOEMxMjE3NzIxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJEOEY4QzBGMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJEOEY4QzEwMTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+TFbakQAABKdJREFUeNq8ll1sU2UYx3+n7en6uZVa1oGDwtYxnCw0EhiCxjgjH14oiV6Ampj4GRONRpQ4ZZEYvTAhwSxGjRFilO2GDy8gZuEGTAS2xUHmBvuAuVG70U0o++ranq6tz2mHc8YB48KTnL7pec/7/p////k/z3kV6h4ZAJz8v9e4SX4Wz3uZkoGEFWQgL343wE6Djj4vwJTEOpHPA64/qXIPw6Qj90yfmwdjw529N72pDjJlYufybloD52gKnOfDkk55ZpQ55+x3b8dBcjx2yxzrTJJmiFtYt2CIH9adY0VJCq5PY3ggeEXhueY1/HK9SKRPgFnujHJLxnMD64D6YmFpMCX4pOQSNRuvQKeRfYeqaOv2kpa4K/3DvPd0CwQ09p1ZQs3lMhJJG1gnwJCeK4A5gLPmsWSZbiocoK60i/LKGCe/9/HMru1Eki5MJNG3TGLGbR6j/tMjbHmpm76OPN7qXcmxcDGoU6JA7L/Ax41sXVaje3OGpeQr6qTAEqOu7AKf+3vw+KY4edBF9c7XUdIKRWoILX0VG2N4raPEkk72n6ii2tdD4OEIO8xDlNjHOT1ewGS0AEzJHHv+DkCbYayDxkWitIEdi4LsW96F1y4Ri2K4TRxsq+NseDXL3EFsihOTptLRc4X2kyEutPZzjWKqK4Y40XAAY1L2kvgjk0Z29pfz3eDSHKg1epP9DGNFSmKVbYKvy9rZXdKPQ0mTEJWMLujtdPPlkScYutjDxeYQkXCUPNWE11/A5h2VrKpeQrhjkKZujSfX9LO4YpK4mM9pzrCtSMrOHuGikBrWLGRydaSZssOUSrGq0bT6LPYFZB0bE2UMEpySD6FwHocOt4mBY7icZnpbhvkx+SsWye8Kv5fHX72f3Q1bqf8mTGjwOGt0frI2Jua2agi3CJtdzfhbH6JPwHXpc8DGKa6mjGzqWEvtkl62FEawSlrisghpTIWuKL4FThxWG+lUFNVqodCejyqsB4IR9u5qJFDp5/nabWzwecgMhciI2lapQomNU0EXe4KlhISgjqVfhpummjKmODPiYetvVbzSeR/jkmuL9AvxD+WrR6RsBgjd8OB2W9CSKWFkkFvBas9j+T0uLrRbOFa7n4X2ThTJr742LuBvdpXzaNt6fr5RSFI32HSHm+lcmenkSwP49o9Syls30jDozXrCKMO7LzQyGosRDOfjcJjErfHsnZ9vImNeKkG4eefln6BA9BUdj4YXslL2+KJ/hbDWcnv/45pdTjqKHpGAT4gZjg4V0x6zUpUeIfDYCGvdA9QfLyU46mE8qnJtTCUkKtnUNF99cICnXuxhsE/lte4Kai9XMJoSne0T0yxn1bJ2684lchNziIMn2VvWwxsPSu7OW/i4YT0dl4qkYyqU+8LUbG/CsSHG/pZFvN21komEHWzC0JCaZ+f6dwCaCJLIo9ozSP36cxRJUyI83asXwY2r8OzZAI3D94qsydyn8q579Rx9WzoHe3yX+cjfl5367Hcf7/eXSe+UMrHpsqZvBzoP4FlfKjV7CNjoDaHK/1Pig+zXSPrAHQDOOoHc+bFH39gkdaiOcfq6N2cYneXNuXmcQP4SYAD5sNLFPECeSAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'British Indian Ocean Territory',\n    code: '246',\n    iso: 'IO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkQ4RjhDMTYxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkQ4RjhDMTUxNzcyMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMUM0QkU0QUREQkJFMEY0QTBFMUM2MUYzOUU3M0FDOTgiIHN0UmVmOmRvY3VtZW50SUQ9IjFDNEJFNEFEREJCRTBGNEEwRTFDNjFGMzlFNzNBQzk4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+507x4gAABXBJREFUeNrs1OlPk3cAB/Dfw9MLWqAUeggF2nKWq1yFCIgDryGiQ5miTpxTkTDZpmObO5JplmyRxMjUOXRbxBmHyhweGxKCnAWs3AUKT6GU0pY+pS32Pmhpx9+x7M331ff75vPiC6kbfmFsSR4C9Mqn8+PNQoD1bazkHm+7MfBWeW4fDHQmdjjuxzBjCT9I7Rve5x+ZzqF0DS/WPRyWopay7JT33g7jRdG6RIprbQKx2CcnKehUURIrNGRQJINA7uU9RMMfFan+CZG3UGxVO3qd7T77T1377soiCflLIP0un+YJpFQtEH+dtoLRUeDjBj74U/v5adygL64+s2L1ZBYE2winS+P8nfFtwpVeAQIMFgo7GHOiKF6FITXorR8Kp85sST50dbexvcd+zcilktDcSOqyHfA331nwILP9JwLB1faPMXgsDoYUGqvD5XlwjzUpI4mWFbGRmCCPm+yAOr4vxWJcWpPd4/FA3rJi4HQAOzCZ1h1OVxDscbnXrL5kX7sRD7zmkFAfg5EMO0CYn3WdUBF9BBcbM/pKLBlBQYSVlwnTInUB0XMTY9D803zgCgbu1eRUJpdNG5lUQTOXr8llWiuBsCWfR52bAUF4m81j/umu3/5i/3cLQXu/VmcbonMgjZ7LIN4hc59M6SryOGf38fA43M2uthb9nWAfEE9JzWVs3RGfozOYbzyfah2WHSuIw3BHqcxtO65k+VEZNpcv5oKJvjl8vYzUKOAktjIKas/nUtEZXBtyTEJAHdTu6rhLpwsHZ1UFtY9HpGhmpvfwtiqiCtErIo42ClZRwbGdvM/K0mv2Jgtn1VBjU89xph0sKc89Ruq1VIDCTdUR5cL64bQKfoMWMPwqT/JvpUDAZviteerU2NoGHQjAVR/i82Oo99tUHa9XUkkjbgqnZOdODt3TMoC0ds4AjTUkjgpJu/r6H/VainYYqWGxkE1tsmnnVSzRCHvvdieH5dSbBhDUEULeSvcrdqOepASNF7uJiFVqbQqNOTGGLrI47JJ7MbyiQN9oiVieHkfDwD5KvRUPeyB86U0nngTUK/kZoclRlA6hHNHaAJsFpIrtXAqPS++bXJ5bNlndnjU3NjGclBFD6RhcWlYbANk/l6L/BDbw83ye/K0ZAL6dgTzdrJkVTY1gBksX1BCqM9CDAydl6N2O2WFEW5YfVVWcgIEJUrXudqtoUKwtyWHXHsiEgI9MvdrwYmoI0ezJiqzZl4bFYHWil2Nl21e5ZIbUwD3/Oe2DyytG2+3WcaEY3ZPNgQprm/rFmoNbY786nBEfHvKoF/n0Vu+K0Xlgc9TF49mxzBDBtOJcQ69EadybE3WhPDUxPKRjbKnm595ZuftgFnxpl4BCT7Eoxs+1BD+bTSrJDfimPJvLDn7xagE6U9+aEEFt6pt/NSYDZheRQfmoNC2GGfD7S6R7ZBE4XBh/fPU7vCQW9X4n0jO8CKxOmEyqOZDCDQt4/lrtxZP5sJwWF4MPoNjN5g6R8km3BKwYGdE0MDav/EuAaFbfeL3rK0aL02XvnpC1CBCdweT1enRGw0bKVPq214jRavV6vasmy0ZzfE71sGtarjMtmrwt31bPjQsH5fbmrmnNm42VV2s0Gs1mCFdYt2awAAiKT+ckRdE6+5FVpQEQfYHLyU1lprEZ/VMqucoA1l3A443lhiZHBveLllCFGcAwWLOzkjl5tp5eA31pjQGcNgC5IlibmDT/RaUOEsvQOBbl5ejS9ZaR4TndkYL4r49mB5EIfdPL9X8ODc3qdmUxfziZFxLg37Nxby1Do5KVoiz2xffzaIHEzgl53QOhUu8o3xpTW5ZBwOMnZOiV5qE+0fL+vKj/Qf4TIP8KMABGR9CQ7zSDAQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'British Virgin Islands',\n    code: '1-284',\n    iso: 'VG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REM0MjcxOTMxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REM0MjcxOTIxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNDJDQ0E1MjFCMkQxQkRBQkYxM0U2NTQ3REJCRjE4NjkiIHN0UmVmOmRvY3VtZW50SUQ9IjQyQ0NBNTIxQjJEMUJEQUJGMTNFNjU0N0RCQkYxODY5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SkUFawAAA8xJREFUeNq8k21sU1UYx59z7kvftnZtx7rSgbME5qgbhA1JlBEcUaOxiGxTDMOJCSaKgZjMEPniJ/lishjjDGriy8QPkCFbFGM2FhMgy2S4bN0kMma2du267qXre2/vPecebxkTv4jEOP+5H07uOc/v/J9z/gfNtLU5d9f0JO2tbf2j3VdBZ+t4Z9uhy5/21e5rvEhi4bjDht5ySyeaN6Y3PFS85zzct7gLI+uHT/cedsNLu9ZnytzXx6KPldFHBy/6ijd+5aM704HPvEUNXk9HtLSh7WZ0aoIQlRBK7ilKGCUUtRw7OxHHjeX0qDMmND0RtLkjnT0lTc/On/qIr6utjt6Cvc/1TOba3/s+9vvMyNB0MqWIIocQyDKjlMOgqoA1iwCU44goIsZQTlI01yi1v8F0YzwJ5lCKyDPhcrcjm8xMR+IOs7HQyC3ZndJCwpZNODz2FBLdI575nKjjCZXUdR5RWCsoOYDcIhb0yGBWwiT8q4REkHOyhuaD1nUJSE+nieeZR8qBmOMRIgHr7sZba4r21yvn+6TCgmFLrTMTZ3oeNLeMsrxPk7leqj44cCW8pj5ayPG3oh747VwVN2aiLLN81rjuWtHj7pZE95mKT06Yn9/Vvr3hauMhD8jj23d/8fKxNZc7Kz8+vrS5olHYuTVeF5NBj0m+WeDjSYnM+g1ziaNPf7jD+WRiajSbUvIz+e82+t0jO0LHS14JXjr31Nuepgtvtv40NzRqrCzmY5FXXW84t3zwzS/ogHfT+EF2SvApsiIBr5UxUDnAkso/bKioNtv1SExQkTKMtZkV8Q+qqTOtXR1zpmsLBUBTgJRLw2k1WjF0E8BgmfUNNh+5/v6+vSe9lS6r34KzccY0WwKwOBPGlJLD5qWQLA0sTFp4IfIXbh79eltvICBo9jleEg06YGrnlamz3DY0sKTXgmB0EoWNdP3wYpeKkEMnmgxYVVWmADbJOSsJBHn3A1Z9tcs95F/MyFpaAKM7G/DTAc2ECFqGiMp4LUZI4LX7ygAv5BtXVY4DjrOx/HqqLdUGGloFssXowNj+c0arhTKbRfKbN+idw5CllN55Mghq7rbAc8uDu3exIi0aaOWXLBuaX4h++3VvdrzqO7+rfaK3xxdr0ds+P9k3P1vcP2hHIP0t+t4iBDDWpWZze1zBA5XZItuN1k0zVXTx9Jeuvv61oRBFoCy7ee3PGp1evB80QiwnI5VaS0uTzd4Jd0EmLAkdP272TxZiHNXpVSlD/iX6H5WTbr9GWAUtW8SwalpFNP9fne//6noV0X8IMAASR8khb/BRHwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Brunei',\n    code: '673',\n    iso: 'BN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3NDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3NTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJEOEY4QzE3MTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJEOEY4QzE4MTc3MjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oskd/wAABCtJREFUeNrEVVtoHFUY/mZ2Zncnm002Sc1mczExdFPNbpMm3Sy2+FC89EVKSkEEFUEUH/RF1CpesIIpYvVJHwQfVAQvoGApxUihKRpQm6ZJtrm1m839YpPdNMns2r3M5fjP7BqamLVGLf7wz5xz5sz5vvP/3/kPl5xyy/gfTGCZRSd4anECOL6Q3lajc+uBhbJXwNID0NUImDIB6BrA6ItBhhfBcU7iIW74iamArTjLL71qct62cYzMXEz/jYBHwDLD0E0foP44gUyCabkYEBmOLwBvlyDPCpA8DFIRh/QyjVv+IfBWxvQ1IjIIPd1L7xHoBjHlCuzVMYydKsH0SRH7O5YobA4iWpAL038AvCUZdZZCO46el19E/4nLONK3F7ftHERycSWbIiM0PEeRMVJkz6uXbWeHE2qgogYjZ++C82A1SltOmuOS80eoKz9kU5QJk2bGAVW+gYwlR8aWXefQoQeZ3+9HMBiE3+fHTm9DXtCJnl4sd34Hy5lfcH16ChZRhFTlReb+gyhvfwR1LYXrc/XMEBEYymkmRGkaM8XLtIzJw/ANoa6vr0NbW4A8iObWVrgTKexo9sNzey0WOs+i9/mjqLG7EC+QkEomoceimE7EsPfddxB48nGsRmXMdJ1H08MPbMpRigiM5vQymB36Kz9M/oWngT309BPss/ZHWdcnn7OrpIvuYx3swuvHmWlzMTby2gmz+WGtl33qbWU3sz/teLOVUVC+QgmO4hqC1D9DvlxVgbfXgIbKaswffwEVchr+vhCYfzfCL72K++Rfb6oVy3tvOd/cUWaBQWFVZtC0jROS5I2SC3fwDrTsc6IRVpyei2K/JmI2toTnvv4Szu9Po9y5ho8/+hZ3NrXip+pi8Kk0SlwuWCxCvuNUld3xioaZGQ0XQwp6QyqGLqsIDSuYntbwBirRjRQiiGOm3YvHzi3AJzvMI3FekvHNPg/uGQyjJCrgMF+Ep/Rr5pKeinIEAgFTuLubmrBnTzNqa+uzwMlJN+Pp3FtttOVCcscfRYAhs6BhdFHBQocdw2IKnYk4nu2rwpH6AoTnVaqoDPWlAroX0jgwO4E2qmp32xz4IBnNG+Jdu7zw+XwEPOXeMscC4QsFRKTUqJMqEuMcLj1jx3wPQ10zBxsRNdIz2q9BWhHQpSTxPq7+/Usi3wdVJ08Qp7gGaxnlOkY1oFGDW+PpAmOIzlKNjnKorOEhNGs4dq8dB4pLcernJIaGVVyJqIjL+XWbd8ebbyOJwOFiMAR7fY7aEYGqEwfRr8BWyVDkNmaK2dKQ0LE0p2GACFzoV0gvCkJDKkbHaCF9G8Drp53WFKn8WiRqO5khTUDmoZH0lVR2jqkX0dAKedENNSqmIzKpYSSs4uIlZRvA/8LozoDVTg8nucSv5zh+q4F12loqSQ/Dc7H+XYABAOng97l61jkHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Bulgaria',\n    code: '359',\n    iso: 'BG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3ODE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3OTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODc2MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYzOEIzODc3MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+McDtIQAAAD1JREFUeNpi/P///yeGAQCMQIv/D4TFTAwDBEYtpl/iYpiWN5q4Ri0etZg62emamtBodhq1eNRiqgCAAAMAqc4MILa4lBgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Burkina Faso',\n    code: '226',\n    iso: 'BF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MzhCMzg3QzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MzhCMzg3RDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODdBMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYzOEIzODdCMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uO74RgAAAV5JREFUeNrslr9Lw0AUx793SY6m2h/iVEUQRJfo4KqCc/GfcHJ08B9x6ayTq5uT+lc4qEtBRFsKkmBKY5Im50tSJG6XgnHJg+Nekrv73PflveOYbe28AVih5qIca1B712cOcn0pcI5/sgqsPmvKgJDNvfX5psWznuX8PwOzrJNjjuhJQN/3YBx6iB5F+i4/RsX09lesrjIpvi0fHhdgXQ8wJep3NZgbPvBiAAF91xTBg0XFkRGp9TjEboDm+Qiilm04vBni46oFv2+ALUhaUaqBrZOOeqgpmWzHxPHgFZfWQxqGs+dt9MQ6lk4pAgZBpaJie1lHof/c1HCgTXDfX0UQc+wxD701DruuKUNTMCYF0lIymJqLa6eF29EmQgIfdYZocxfOmAQwWUDDRfezyDnNksUDymQtSkFsSkAjLCI2MVcvWn+SVCegn+ecX53VFfh3OWVXnkbJVx/3W4ABAMUjZvAvTtkOAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Burundi',\n    code: '257',\n    iso: 'BI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBFRDE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBFRTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYzOEIzODdFMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEVDMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+f3jizgAABTpJREFUeNqsVmlsVFUU/t7SmTcztNPOlFraTltIIZqWkoGACHUpFQiQGsQUECWYaGI0hAQRarVCadnREtTE5QcaI5KIQEGWFBAsGLQFbKEsFpRANwp02uns25vreY8wTKdFI3onNy9z77nnO+fc851zOcaYQ3Y4cXPNFnRs3gQZbugSRoKLE8DCYfzXwXE8mByGt+8KeEhIW7IU6RUrwBEwuyfkbvgNraXvo/engxAQD63ZAsZk4L7IvwPlRQRsHQiiD0mTpsKysRLxBRPVPYGVJFQUpjyh/tGkD8PQV16ClDUS7vqzcN9pgSjrwEs6Ao/xnoxhYUYeqW7FAAoIe7zwOP8g49MwvPpDZH9aDW1mRkRGqJtcX7G3qw4Z+mEYFT9CXTRY85Hy6iIwuwfOhlMIem9ClJLBCSKY34+AoxUhnw1hv4u+3TTtEHgDeI2WDAJ8PVcQDvmQuug1jKrZgfinJ0cAj9w6iQX1S8BlHyxg191tgOxDSdYcbBhdhhEGS0TQ9esZtC0vR8/PteDoJ0APU/FsJE4vgiEtHZ6um7AfPQ7b7t2UH04FF4kTCpG5qaofYIe3C6XN67H9+k4KiQhkHpjEFPC0/Y8zfGtmSTWj2eaWz1ns6Ny4hTWOmcB6avZH1sJR+/baH1mTdSJrX7VuwNmPrn7Jhu6zkn4TS/1hPBt+8EnGKcD3rBLJkjv+bjg9nbDSva/NW4EZqc8Mmjgtp4+jYfGbGLthE3ILiweVOXb7FMqaN6Lh9gkYpFQ8IqUgxELqHh8tqCyaNEnITspDY28zZp5YgNfPvoNWMiR2eO09cJ37HV7bnQF7SliXNK1CUd1cNNjOIsuYi2TJHAFVEzDa4+ghcAK8dO9d9kvINltRP6UGKVpzZJ9IBht8SCJuxkWdc8luTDw2BxdvnUAKARpEPWSFkjFDfBAHFWENHwcdJZokaJEYF9/fMJopBBo79IIeOkGCqE9Xv4OB/i1whK70E8l7Da+BwuTztd8BVNEem1ECLcH7abXlyB6EAn7kz3qRFHKqvFJzGB5ceB4ILFCpC4SD8Hk60Kc1wS67yHMdmkoWgnMFkCE/Dy0BEJPRWPIygn0+jAy/AA0ZYw84IHs7EaR7lchgmYX/GVjhKk+gCrdZyI35OYtQmbsMCcIQ1eNxB3aptdfI3b3ZBFIxbv8uyMEAJE6rKjxQsA1Vl7biq2vfkAc6ZBuU0sv6RWAAnXoDdvS6b2CUyUqAb2GepfihG0RN52GUX9iMi91nYDRkwKwx9aeT4qESjmt9lymTvVg5ZiWapx3uB3r7s21oLiiE89jJQUHcv5zGhaeeRVf1J5G12WnTcH5qLdZaq0h/iPRfImBZvUZOqSKtdI9y0IVZlplYl1eKfOOjkcOecxfQVrYa3Ye+VwOlQSKSF8yDcfoUiEOJm7ZeOI7WofvrHQgwm3rGXPQcLOtXwTB+7P2C47yGd6mY7G7bRzVfogvdbmQ5SWOoSr2NuVEeMn8QbeWr0fXBx5Q+DurROdSjKVHcbgR87Uom0NSQMUGaIWi06RCGJFBeBNXeK8CA1MVvwLKhErxBF9G7l8KvVDNuaVMlW5O3nPh3n5M9O/eQl1Vw/tkISUyDaDRSC4zhI1FKbYs8tUSeH9AWZacT3kA7hmTmIWPNe0heOD+qQsr9HwLey1fRuqwMtkO71C6kNWWRN+GHewhQj+aIbn7bDfVVYyoqRmb1eujzc+9uK0+fsMuNW1u/QHvFWgRDNkjxOdRbxf/n6UPRYEEZXsdVopoR6eWlSF2+GH8JMABj3HBuy+V6lgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Cambodia',\n    code: '855',\n    iso: 'KH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBGMTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBGMjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE2QkM1MEVGMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEYwMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4kgdbAAAAkRJREFUeNrslUtPE2EUhp+5tbTl0gsyA2podCPRjSuNMV42mBAIJSxYse2OFWEhv4S1MTGGJcGNP0D37pDGGu6lNE0HsC3TGc8MNSwobYwRNj2Tk2/mzJnznvf9zpdR4L3HDZjKDVkX+NpM+UxfRda+KxPkcjnDn0ANQ1ZPnk8J3R6Vlwr17R/SfaxlXhuz9fvYnbuL9QQg7nFFykNd/NabJxAyOFzJEWrWUKLhIM87qXSsqZfaAYrXxJPPX6KEQhTX1pDSVAPgDFosRmnlnfBDuELqxWsUTaO4vi7N/MMee02PT00xODtLQ+7L4tb8PEmJDYyPM5zNUmmqkJBYfHpaJO9sWhbeyhpu9dIvNjQxwcjyMsboKLHhYaLRKObCAmoigVutEk6nMcplrLk54jMzRMbGcDY2sMW1q3Hreruu/M5100QfHKS2uYm5uIi5tER9awunUJAEF8OyuLe6GuTXcjm0VCpophNrvd3++tKe7u9ztruL5zhUhYUPqPb2ng9RrYYjbOvb22jJpHzQwJHc450dnGYN72/2+M9Q9YTDDGUyQXHn6IiGbQegrgD6bBVd+vY81EhEJvmERqlEo1LBnJwkKrFqs1ZLjO9w6Rz73casAe5++QrpB3jFg4CNYo5cDN6JfR7rj1/ECnt4bgPVugN7eXaePcXOH7SS1dYPWgz+mYxV6vErjG8/+fXhE66wCeSR4+Mz9GVGpPd81obR1E6Vc24HSqi9/UQePaQsNQ7zH+W4GZe4K93fYhf4f9lvAQYAwe7UEk4oy7oAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cameroon',\n    code: '237',\n    iso: 'CM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBNkJDNTBGNTE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBNkJDNTBGNjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE2QkM1MEYzMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE2QkM1MEY0MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KAzx3QAAAHJJREFUeNpiZKiKY8ANTneexCNreO49HlkmBpqBUaNHjaaO0X/+Mkpmf5cq/vbnL7FaWIhUp9T4VTT2BwMzA6sQw8NqLmq6+sMxFkb5v4xyfz6dZqayq5nZGJ5k8zL8IyFyiDX6/Ta20cQ3avSQMRogwADcmBpIZYNhTQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Canada',\n    code: '1',\n    iso: 'CA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFREI0MDA4MjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFREI0MDA4MzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVEQjQwMDgwMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVEQjQwMDgxMTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IgrEzAAAAaZJREFUeNrEVktqwlAUPVr/TRXqB0QMHXbSqXsQdCRuQbsBR3bmJBtw7A4cuwyLBQNCKdgOVBCpIv7aUx8PiVZtNCo9cHm5yb3v3E/eTWwEPrEOlwtot4FIBGfBbAbE40C3u3HbsZQb/APslj3LZUDTrDMvS80NcbnIToc7MZkY18JO2K8wHu/2mU7JSIS/eRxHRTmfA6USMBjI3gnkckAoBBQKgNd7oYwFEomt6Hl3t99+T8Z20zdyhWZTrvn8tt3jo1wbjd2+R2fc65HpNFksksEgqWlkv0/a7Zs+7TZZqZCKQj49kckk+fr6Z8bmpY5GN5+nUqTTaeg2mwxuPRi327TUfxMLp3x+u6dmks1KX8vErRbp8x1PLKReP4H4+5us1cjb28MJPR6yWiW/vk7sscD7O3l/b06qqqSuH3ScDj/Hi4XceB+pqMpodIHJdXUFPDwAfj+gqsYWTifw9gaEw8D19QUm12xGDgaG/vJCPj8b+nAobc4yudYhMgsEDF3XpaygKNLmQDgsf9Y+PszH4kWIYzFgsTiJeGjJM5M56Q/kR4ABAHxxYPgLzAdZAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Cape Verde',\n    code: '238',\n    iso: 'CV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFREI0MDA4NjE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFREI0MDA4NzE3NzMxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVEQjQwMDg0MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVEQjQwMDg1MTc3MzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+zvajFAAAAj5JREFUeNrsVU1rE1EUPfPmO9OYNEPSplAqmlaoFDcuBBdC9yqCGzddVRA3/gL/g6IbJXahiAtBxY0gLiIIUkEQDNlIija0JUnzMZlMJ3nzZsZpJG1SUhOF4sbHWb1759zDuffd4XDuHo7mEBzZ+U/9b6mJjx0VLRkcjscMXbPhEVgqqLgb+ntqn4MjpGY2db2Opvrk+ourZ3OoRE+d2IjHjCA0OjWP8CLarAsHO0BVvrP8OK7WVzPz7wrHPmanmOWnb66YDZL7NAdi9uT/Dlx48UGPZAYpyVx+Lpa1qLJejTBbFiQmK+3ZeLls6SX7pIQtuBa44fI56vfZ57vPic8qwjURGAdYkNG5LwMhNDT2yBeWAH0UQwQxk9krAzGBrZcAnUiegROw+WI3liRh0DyKz5BIQJmHawxXnTnY1png0sP3QckiQcpH3gcdRTXnv3q9r5qPoXZ/14boLXh1wOupGQItwEgjsgRpFl5zuCHO5Yv9XucJWIM/H7RpDHC7ExrUkVBT3ALIFXDxkVQfmBBfnPQ8kgx9czy5bKmOLfOCK0nOZNi0mGY408QtwWuDG/6MeapcoM12Fw6tNZ1Nend5Jcpvf3hzejy+1jKpXeTSNx4aNfbl/QR1q7RJez45FDxSl6AI+1AJNPyoJVfXU6Y39vb2U14VPucW1mw9W5xuChI0ri//cHAD/jLEgxEG70KzF6a2S2aoWInAViBThFpwR91ogx5VsIzC1q998nWj0zGRQeyMhPsHm/KnAAMAsIUm2hIeMowAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cayman Islands',\n    code: '1-345',\n    iso: 'KY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjE0RDFFRjQxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RURCNDAwOEExNzczMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjIxRThDMEVFRkYzODE3N0JCQzk4OEY3MEExNjA3MkQiIHN0UmVmOmRvY3VtZW50SUQ9IjYyMUU4QzBFRUZGMzgxNzdCQkM5ODhGNzBBMTYwNzJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wV3Y3AAAAoRJREFUeNpiZGCYyUAbwMRAM8BCnLL/DAysYARk/GFg+AdGlBoNNIKLgUGAiem1nPQjVmbGh8/5/vzh//cX6N3P+D2Nz2hGhn//GQSYWX6XZy0QEn539oLUh/c8dtbffvxk2XPQ5OVrKQaGV3hMZ2Zg8MXtXkEuzs9r5/Z/+vytfZL5k5ca774J7z8kxsfzaUrPivOXZV+9lmdg+AJyA4lGA0OWbcXMyWfPi9Z1RyWlifX3K0WGCenoMi1cynvlKmd1ye6tOzV//+YGhz4JKQQYXfzB3od/ff/TPDHoxGmNqRMDWb6+un7xVXKSz5evzrcfuR0+IFycs42BgRuXq5lwhjPDt79/fta2mYWGS5mbOPz8xnVkw+q/f7+zcogwM+jW14tNmmd8/gowQD6SajQwNP4oyN1VUD6hrMkG5P/69fPvv3///v77/RskLSMnoqV1Q1b8DAPDT7Bi0rIMC9DZHg6Xfny8CLKKi0tUReXf3z9/wGafPfdFW/2ige4TcNL8T5LRQP3sx88Yy8iyPbm3fvu28xxsfy0cvDQ0NXi4WF48e3Lp+GIx0dcHTumBjf5Nagph+vqFj4fv1fPPDzom3n7z4o24hBIvD/+Gdcc9oyd+/7/D1JB388awT595wWGCPbpm4k4kAooyz7/zbnnx8hbDDwEOIRWm/+zfXp1nEH7OzmEl+NnvxVsBBoZPuKKREW/JBzKdgekXq/DJf4KH/r6RYPjLyCR7kemV49/Xbv//A819DVZDptFABZyMDIyMrO8YGDj+/2NhYP78/5cEOHy/kF+GwJzz7T8D8//fQmDj/jH8FQEXTH8JFsjEFKqM4PLkG4z7FcnWAaoKaGg0QIABAIW9+Bm2LAQNAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Central African Republic',\n    code: '236',\n    iso: 'CF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMTREMUVGNzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMTREMUVGODE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUY1MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUY2MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bmc50gAAAqRJREFUeNrEVktrE1EU/u4jM5OMedJYadBNi2t1Jeqif0FX/QdCURAFQRHE7lz52LiRbtzowr0gqFhXFbQbF4KFQGjEaNsxaZtk5s69nk7SpCjaW1BzhmHOPffx3XPOd07CcGxuBcxMwLAWWj6KfhuMGaxt+EB2AzQHmkMiTh7nG29xv7GIj04uMR0Nm7hWPoE74ycB0i0kS29dJkrMwYXO8lwLF8++huQac0+nAQ6oiJbQ+C9LViYf8khvZDBzZhG3Zl8AKaBay2P+5WnAjfAvRKLZ7oVzjePNUgXvFnw4UmHh/RHgC3k61hqGWtA9u3QRwYYnbOtdBaxvAnHbHtgbyyZx7PiOzh3mOHf3CrTmKE0EZEzB83KDxR03D1l3mQ40g+jZjNKQGcfgUN64XQa2NyYlEJo11jYJAXkpjA62JEIlk81SxCj5EaJ4eJQsZhDMPWDBzetMFqYSmwqWkb96wxRvXzYqII+NsQH+LsvFDN8xFHO757ddcn7ZFaVT+AYD2R8raGQ8yYqUMBTStpHmHCOSkQHLtmrvFOmexerKNCKtGFFokHhGd1damZiyG8Yd2xxrOf1oemflnjtq1N9ml4y4gCnU+rZJeh5+eIx7z56Yymdrh42sBlWxi01/lIYbYr1TJsqVaRT2uih1m2Z3la2sfhVhkLIpp15HKKVL1tds+sTglEdMVgNbTI8nPWT8MkppbgsMGShhDdyJGNrUXMRPRdch21YkEKh9AFfcyJpccTpGTkgW7SIX6dTxYzPuRabicuvOJV8d/2RNLmdSm8bzilhGgXLb68vLpM0crOPSqZoJq9zilD65DrjamlzwCFwaCs3Qr+0wOcIwx4NwXG0LTD83ah9VH/0mIbo/p2ALPMLORW+r/3ek9Z8wE6wfAgwA1dTxt+cD8jYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Chad',\n    code: '235',\n    iso: 'TD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMTREMUVGQjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMTREMUVGQzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUY5MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUZBMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OGKo1gAAADBJREFUeNpiZJAoZMAN/m/rxyN72ckEjywTA83AqNGjRo8aPWr0qNGjRtPOaIAAAwAKxQQ+Km3kBAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Chile',\n    code: '56',\n    iso: 'CL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NDUwRENDODE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NDUwRENDOTE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIxNEQxRUZEMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIxNEQxRUZFMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KpHXrgAAAXlJREFUeNrsVrtKA0EUPbOv7CZZNSIqQkCxsrHLR9hY2QuC+A12Pr7DT7ATrAQLbUJKC1tZI2rQVZNsspvMjHd3QxLwgcUONjkwu3fuFGfOfQyXoXJaB7BEq4nv8B4hv+DAO9vA7JSFDODSejAGRurQGdDup7sCHXEJRXCNoRlzdDimHR1Ej7eAA5aGZKMAWvIVEhYR4r6Fnc1l7G2tAvVW6hNqVKeKI4GIcewfVXCwuwbT0OCULByf3AJdrlCxTcqeAlxUn2GZGhiF97LWAPfagGMoVByDCPOU0+3DGoSg9MaFpjDHI+I5G9UbH1fnHhFL5MpFYN4B/FARMSukFikLQpK6aCOOdadHRWWSk5m07GFWMiO2pT9qJ33sJLbpHl1EyAkHMgzIUYQIs4kAu14vf4w9Il8g6UIaiZ1xreQvs+muprEiH38ve4o2p456ueuhL9J9JqF+Ze6fmk4rUZFn3sf/gAnxhFgZjMHI4/44+iiYPmKuTwEGAHthZNcUQvnKAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'China',\n    code: '86',\n    iso: 'CN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NDUwRENDQzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NDUwRENDRDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU0NTBEQ0NBMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU0NTBEQ0NCMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+63sBgQAAAXhJREFUeNrslL1OwzAQx322k+ZDpaFSVSQqOsCChGBl5wkY4AGYeQF2NkYQAxI7ElM3nqE7TAgJtkKaUtQPkto+zgUxwZCgMvUmW5Z+/t0/OcPDesRmU/x7BZKZIZgB0IIh0wmv7KbR3rtOgJnCaGCYQfYkvA3lbarsUdCW6OAhhKhioRIODuZFkyFDxZxlbfqwsJ9yn43b0mlo1eXxWWB6UD8aIsfkIhCRIYl8aApBRLhy1Xe3NLXRvNbxqZ/eC8siqkAQrEAmFi0qOLhxxZKp7wxp+9oqvbVK7pq9xqmb55OQZL1VhcqmlA9ty0OiDC5c1ExWDQRoezdsEvPa4Qgcllz6RQIhF6dhRm3ZPfdxAsF25jZt/5MO1zHnAfWFDAsF8umS3kpBvsDSO8nLqHu8ejAWIXaOQ16xPdHXzo+eihPu638sW0dKhpfsOXFllJtrhX+bRhoc9QJoQNaMTaNgID8VaYrFKdL8edBn+IbM0XP0P6M/BBgAWIia6c9dDfMAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Christmas Island',\n    code: '61',\n    iso: 'CX',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTQ1MERDRDExNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTQ1MERDRDAxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRjgxOUM0M0NBNkU4M0Q2MkFEMjJGRURBREU5RUVFRTgiIHN0UmVmOmRvY3VtZW50SUQ9IkY4MTlDNDNDQTZFODNENjJBRDIyRkVEQURFOUVFRUU4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+BJjG7QAABAlJREFUeNq0VV1oW2UY/n5PTk7+mzRp2tmkpm61c1bxp4K0tZWxDRV/cCIqijdejF3JQEEvhzoRRBBBb9YLYV7ILhRxiEJvxqy1VYarFNqxxiZp0qRNcpKcnHO+H7+sk+DdCt3LufjOOe/3PO/3nOd9D3zosxnAMYAS7HcgcMcC2T+P82pQBi0YagAkgIT7BY0jxstsJS3LYUQ4jm8Db1u6GhQI7IWi3EKTg87rY62LK7q61QlQ+uLEwSmEuSxE+fWUlQ82WcM4UMeGLR0N3AYBgh2UnInnC+TLE9YTKfurP/WQBiEEuHfwKEASeh0OuK/R39c4Yq57OWYkUUHqBA4FEmMEHA7zJtqxoEZuFbUbbQY9VL4/0Qx5wceXtbMTjaVt/e8K9lNJbqVIWKzU3nwl88bzD558teEsH/CPFOjhNTqUI4QXCwGXwWdG3KABFrJwvUr6A4CJDr5irbZwri6/eLq+lMdlQaKE5bboQEpVnTp6swSpe2h1pz3/R7bqmEQT2SWK1jNaK1YVthZqff1s/dSUdexQ+74wuJyn6gQBTWFDBe0h8odVOrukjfejR4btR/tsQuHVMkGU4OJWvVQ2g35PsdJcuFp0XaHr8OwH46NjvuJv8ezsU6dj0ccONlwLn5/zfrpgfDTd9FLedBBXhpLAYiDoRTmT/FVEZgVd2dQ1jBgDZLNkvnNqqm3zz8//2hs1dB2XKpZPp2MjfVcW1x3dTOp0NG6d/sn/7e+hYo18OGlNjZp3z2v5bT3oBQ4TMT9I+Hivl1PCjl0ILxY8ES9LBwRxheiJGrbjMsaEkNzlxyeHrmdrL7x1IRYx+mK+jRxeKXvee6k0EfScmQufma6Alra8g9LJ7QHhh1z4fQAIsLQJr5V8Pg09EHeVUkxCeGT6k81SVZmlrzfEGOdcpAdClbpVqdo6xQiBQlk/NGjOzX6nJXIrDSNm+99+9/jFa0bqyUUtvYEhalQCbRcGdODB6pN1zQMPT5xTkin7KhT1VHE0LVejSCNYyE4aJeLGhn+ov3HyueW7ws43l+75ZX4gExRCtdjwP/TeVZoqKIMJ07jZB91ZBEcnzu2uCEZm09mptpKJgHKyEN0kiuVWzVMq+hREOGIl4y31UrpE1A2oOTizgUfXaCoPOwR+IOAuQcd8u/sbLWc4HTkxk7mxUW+3WadP/gshoa7xaE872mP5DCbVnFGXajTDhgjwfJyvpkQ5AnUXJSrQ4wBHNRXq7q+b7aHByGsvPqw0cV1+W7NDEWCOInWs22wl0/p+xvrxcTebRAELBppdQZTcXEilL4IIYyD3OsChlJzImgEow8Pr5P418r9Zo1B3B5IEYq80ym2Iw4jZWRZ7nUvJO/kr6LLuN/S/AgwAs/Hl9f4h+7IAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cocos Islands',\n    code: '61',\n    iso: 'CC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzRDMzYwQ0MxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzRDMzYwQ0IxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMERGMEFEOEU0MzBGNTQzMTkxQTc2NEY1NDFDOTdFQjkiIHN0UmVmOmRvY3VtZW50SUQ9IjBERjBBRDhFNDMwRjU0MzE5MUE3NjRGNTQxQzk3RUI5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YY6ZXwAAAxVJREFUeNq0VU1IFVEUPuf+zLz3fE+T/jCy7AczrIgIqQgxEHKVSItwkdQqatEqWrttE1FQ0SbaRLQqMgr6g36wIrAoyFe+Sg01+ns+3xvnzcy9pzvzNFIji/Auhpm593zzne985wxCJ8LcLAZztiJow5sIvjMosPAhy8E1OzR7tAnUBA6BIsDfQpuNHO/YZA0ewoEOfrJFJgSDPMKsUimypdiwJJayBaiZ0CY+y440WBfaQaF98ZXdWiPf7bcRJHjmwB+5u1CXki/2JLcvtsCZvslhK1TO43faWFev3HGJ3XitLnygo5upoOlJn4J4xB0J8gzGGOgoT6MVYil6PMD7Q/Tsi++gCqmYAwInobfA6ip+qI5/U2p1JY1kWRXylrU4WtDX0wSJCCXLGpaLUy1W/SJ72GHZca3dKNrCotJ9w55DGjhflrJsmxc8XVKSgQ3pYfzswJZ17oGNxRMLsLvFW7nCvTKAICDChV1r7CcHhbTw9rsg5xMhq55nL0wICKJKJsOrHOePW8vObEuEyRFFrJtB56g3L9rr0VKs6q0Qzf7lbnnsUQBJBQGLW9arffRygBpP6/6iO+YHDHm6vSwp4VbaM8yAoZFCk84U8e6gP1AMQtEQhakTVsC1Xn/7ebF3Fdo11N3Fzz31wVLAERy9qprBfHX8ph8GlDNQJl994OF4JhdAfKKY6xdbnOOVHhfiGhIIGiNndpZMRibx8DFu3K0hRUbH0LMeS0mZO4wP3lPjWQ2VPsQgFGoMjIPCIpszLu6sKYsJutrnQIwAfpaxCSfcH8MwO04hF5MjRS8FelnVPyoO75TVlexTjgspCh5pi0InlJxpQeZrkP7mY8IwxF/M14RTumtmm9j0/AM9+qjbatnSctn7FUbyAbHJw+bOdKMVZUnTWnXW8VQaA6ORnYyU4ccmUTTEpVVbwTJjKh9Wj/5xPJWUqUAoJ5A4hZ0LtSnRszvZuNCOupGmdmPTXw/VmXJxKgT63pDu+eIVDO5UnuK/5ibHfKBvv3HCyovpWv8fdMlpSYTfzbG5/hXMzfohwAC83jil0Oj5WQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Colombia',\n    code: '57',\n    iso: 'CO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNEMzNjBDRjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNEMzNjBEMDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0QzM2MENEMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0QzM2MENFMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jvkEygAAAC9JREFUeNpi/HNRjIE2gImBZmDU6FGjh6PRjAzac0cDZOhH4zlBtdEAGfJGAwQYAIs9A9bKIFNYAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Comoros',\n    code: '269',\n    iso: 'KM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNEMzNjBEMzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNEMzNjBENDE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0QzM2MEQxMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0QzM2MEQyMTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8TQxCAAAA4RJREFUeNq0lV9sFFUYxX8zs9PdbnfaZbstpVIsLkotFBGqxCiaDSSmEm3kpREQsCGYSJRGI7E+akx4UKImvmn6oImJJlBoomIwRMU2NaCgtWpjpEjb3aXun85udzu7szPeneqbL+1u7507M/dOJuee853vu9Lz72+Z7t+oa2v8BuRcUJBAXCvdXJ9GqpuHE26OhdI8c3sGfEXIig1YrOgG5Lt9hbRhw4kxP90jDXwXqYYaEzxiA/YKMjZtiYBqOeOqrrL/cpADLfP0CQWCdQI8k4f8QsXZu0q3EjFFVmhUUkzpcd4Y0/g8Ws8LoSSH2pqgqhZSESG/WTlgSVCRZZnJ+J/c5m/hld1H8Kgqb34zwLPfG1yYC9AXfpHt9z26+IeZpBIxUO7oaun/Y3bCvXNDmI97z7C5eSsfjg7Qe/9+PHKBc78PM/Trt8zm0nS2PoTHJTwglz8U74NK//r6kHvw6HncLje73n2AkeuXqPXUEdGn0VQX1YrNhfEznP/lNJpbY9OajvJdncwmOR5+2Zm89dVJrk5dE6y3CNnX4q3yki8aDsuO5nuIz//NsU+OsG/gSa5N/VBejAM19Q5QqV35a5RGLUjRKpLNZykUC04y26KbwlirtSYafI1cmrjIyMwoe7v7eGn9QZoLPoouaRnmkmRnYgkAWRJAtu0Al57/fXPcb1lOVtV0tKMbOpOvvs6NKwOkrWoMdYmM4/NxxiNjrFvVyr1rtzH001lEzFkXaGUqddNh6hZdEZUspUnEV8lsHTc4eBbCPzYxS0r0OPISpZbaXmvRBZD22XMXnYVtJzcKU0Xoat9DLB1lLpPEdruYXq0QTFrsG1pg75cGPtNmuk7GVIRRlpFdUvjtHfrErd+0PZu7ea/nAxJCgRODx3ls0xN88fMgX+vDeH217B42OXw6R3vCJCryPuMVIbKWby7p4VOduiRJ2nVRQDY03MlTnYdEbOGjy+8QUyKE9LvoOWeya3SBgtAzGpQXGZZZQ6Sdp7brwmBaqXol5pMkczFqanQC7hDmwtM03nhESJwnFrQoqOWx/N9aXRSOrdMM/LUerMzjWLHDqLk2on7h3iYTyZYqfUiU3JEWb7fAaKOYOoCd7hJa5IWpJqkSDKuylT+YXZJ6U7NFHtqJo1hzPYJ6QKzOOMAsOUmWAGxld8zYqV7NznYuslYn/wVcOdBS+0eAAQAC6FhYtEMFCwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Cook Islands',\n    code: '682',\n    iso: 'CK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkI3NjBDQzgxNzc1MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjkyRURDQUUxNzc0MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQUQyMUNBQzdCMUE3RTk1MkU2N0IwNzVGOTlCQTRCQjIiIHN0UmVmOmRvY3VtZW50SUQ9IkFEMjFDQUM3QjFBN0U5NTJFNjdCMDc1Rjk5QkE0QkIyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+isNl2wAABElJREFUeNq0lWtMHFUUx8+dGZZ5sN1dVpYFpNSwWBQFLJuWEpNaH0hoNDZIVoq08YGmMaaNHzRKiakRtcYq1Ni0poFa8VGigkmh0tY2tdSqRLq0lVJoKY/lsbuzL1h2dnd25nrXB2LiB9uEm8xk7p2c3znnnv89F6G8nbA0g4IlG9T0RqTuLfmo7qG0lZl40In91OEaiyq1fG9Lw5wOz9M8Ba+YRHULE3z9Dp2ex0E5bocQVgErGEMMz4awDPGpisn6P2jzvpntWw9VT/5yoSq54b1HU1ZliRIGhfIgjdbIbzW77Bvohs3WJs5629FEv8OPeJqYYVBBiYFrDmKKJdco6ChwB0CSMfkDf9HpTS/Vz69eK/Os1Td23xNrnq1dr3NOeg81p9RUPVeesyWXSX6qqtucd+zk8C0h16hfUqIYaAp+G7UUZTQ3Vgxcde7dUTrlmn3x+Xt5QXP5iB30AtIwgDHCq0uIfzGEJ0KgeP1pelaal5wqNiqKILABc4bs9KbIs7eu0Cp0kmlunTfGISS98UyxKKvZqcLuz/sETiO6gttqrA5vKDYb+bpn2OsOIZ5j+i157qmgn1UKK1YZfG5enBIRi7/pEspLM4ty0Fm7P8VgT10x7naCoImNMDAbweG5wjVZzR0Xmuq+hex0kKLAaeq2dWSX3d6+5/EvTl+FQBS0AoKSDwvLrK9V5VYa56Lf9TR5kvMthntspUONn409UF5p8Gl6fzh82vH2dX2/qoWf+3jAH7xZ1tJ+/qfOYVhuJOVcqCqEpBSztrai4MvjwyNDInWg5q7zVl/lidaPbW/lN/S/vH9UuThkMjHstOPJB3cVVLd9Mp5sK0qzF3vfD/7IRGJhhvIGJJ7jgaPRgnTJzpJvGSsU3Gkx0JRKhENXr72/a1/nC3b6gMfs8ceAVRgajzrCxxMzf5WQeG64o2uoXW9BmcsTJ0ePXptflmXSJyWcPHs9ihCi6UU6RqChwvOSLxiRItjtDiLQbofUVJAjwGGUwIAiY+Ig2QR+EQkUJCZgVYWpABBhZKSC5Ft5t3l//cM1r3ZOXBGRgV+MxqoCztnOr2rPXBp7Z8cRGnLKgVGQBiEKkbyAJMYxAFFgKURR8UyJkZYFPQtIIeXyXPNM+IO52cZLA05IYOJWC1H7IwXFmZMuX2tbv8xzcR769wGNs/5zkTwxDEHZ9kjBY+ss4PBCKIojMRIPVlRMdDIlbt6Y/7TNOu8IAM3QyLT+/7eFuAMDd6z7cve58daDm2bmgmODbsRS4A0xPPXpQVtPr2PXu6ckHU/iuDE0YRMbci4ULiEvPYnl2cb60oErM3t2btAIFNn4E73jI/ZpMAo3jv6TL2gUOXaqrX8srGKK6rs4mbSM6xsUW3afmQkpKF2HFPyH1m+2X2NSpnAMxADoEiEQBp0WtCwicvp7MDfdjhFpoRoa0pPjE0GIvxdxl/gqWDr07wIMALtx7x8ZU/QIAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Costa Rica',\n    code: '506',\n    iso: 'CR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQjc2MENDQjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQjc2MENDQzE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0M5MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0NBMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Gc94EgAAADRJREFUeNpiZJAuZaANYGKgGRiaRjP++fxlNECQAMslOaPRABk1ejTLEB8go+U13YwGCDAAKSoIL49OOfsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Croatia',\n    code: '385',\n    iso: 'HR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDNjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDNzE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0QxMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0QyMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+JdsChwAAAshJREFUeNrEVc1rE0EU/83sbr5smtgmbalpTQ+2IehFrSCipE1BRD0qtAUVBG+tIK0H/wK9iQieBPEmiqkIiieLbRWjtaVSP2mRSDCxdTdpmmSz2Q93Nz14ywQPfTDL23lv3szvN2/eI5+C7RvYBuHN4WV1NggBryrQKQe+UrHnVKcTVNeg8g4Qw2DemLI4KTyPFklEz+8MFE8TiCCAd7fCKfjRRVW0NjvQbdp86znzAJQZcV0J5EXMHRkC5/eivLgGyRCwfDUG2UUgTywjJ1FcOC/Cly2gb3oBRa/7/xETVYW3xGHq0gmMP5zEIh9CIS1iPpjCVFRBauwHSodFXJ+YxIPJcyBVB7iqUh+xspat6ySb48DdBF6NjOH1yRj6b71Fz7cOeLKtiHwV0XmqD3ShgsjNeyho61BzZj7UA5QaHqnjQ+Asb6Lsa8NTeNAmZhEOtiMwMwNPtYiN3jiWzXvlQiqOShLKWhWqy10/0YwGRDLdC5E9tr4aDhtftpYXjw8ZK42FMoj1YXpKmoaNxwlUf2WwuTAP/2AcxOGA9PwZmvbug9DVBd/ZMyZBhPFtMopWKNTQJd8Zs+YyNZe3/+dMPZ9I2LpeLjMjboifj5Q3Vgfjtv79YL/xuaPT1lPDo8aShUHXmWPx7EVOh3cgBq57N4rJJFzRKLRQyNa5QADNx2Ko5TI71TLjsHhUjMWk8fKfG5q2aH/yyLBtNR+meGT44v0sG15e85TT7hv7qT94qBelF7PQZBne00OoLK/g8lwpn3P1lCipcizxTF5GGSu7RaGEyK4w7ry/je54FEinIa7mMT5wDW+WPpj2IOqXjq1otOUKe0vhBOh/SiZ8GR1tTgiU4GfG6lICaNBsclqF+Y75hpqoWZXoTgf0CkFGdtfe7A4C6hJMm8KeWA1vXMtGUIe1rLrFAm/PNSoU2yTW0QvbsfFfAQYAfYmMzgM7drcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Cuba',\n    code: '53',\n    iso: 'CU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDQTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDQjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0M4MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFCQTYxQ0M5MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9/ZNdQAAAztJREFUeNq8ll9oHFUUxn+zM7OT3c3spMlus8kS3RL/RU1JokglJrRaFH3pg2+C+CAICq0PRqigVYrStFhEfBEVXwQRn0RQEESsT2KqjUhrpaR/NFmbpNlsdjO7m/l3PZsWRXxK2PXCMHDnzj33nO/7zne19/v3LxxL77MvWrsgrEK0DsRo99Dcrj61FOvgw877OG4/gGf0QLACymvrAbSZzHClO6rbhXCVH8w8b6cn+CQ1JjHjsPon+EF7Ap/J3FVRYEeS3UBYwYlqfGHdxpv2OBdGHyTyqgSLy6hItTSwsRldHp2Ied2mqHfyUGOOkbVzVO+tkp9+EWdoF76sCV2vtRnL2/5nRiOS7DpUgFG6gjVQIDf1HNahgy3N+D/s0bQYqlymUfdp9N3J8kKF088f4peh+yl9+lmLM9Y0G6WI6g18d5HuRw/gC67rP/2I6WSIWQkaSxdR1Ol55AD51w5zaeQeUrJBd7ghUGnbDBxFNrqOmeuldu5ndp+fYfXzr/jj6Ksk+4fwrhaJmZYQLSAoz+HoXXw9OMEJZx9XzF46RH6m8rckv+usDiM7qJXJPvkEuReepeOOQZGxx9o3p5h/6Q0av81hpJwb4Ogo1yXrXmNZS/BRapS3RIIQv6H9LWCsGTpGMk3xg5O4M2eunygeZ/HYu6zPzkjQrn/9pGLCAymvoxqkow2Z2KacmvhqcgYzuRMVBBSPniQ5Oow1eBPad80lsrOQTiDBX7qAQ5Jvb53geHovZ60BKfWqlLqZbWLrclK+j5HZiZF1KH//JVaiQHJsmNrZ8+jxBN7SvGi5xI49+7n59Zf5fXxy89RZIVds2+Rq6jimoaQ9hmtVjJ4dRG5NMmyCoVGvzZHK303+yBTZZ55qUwOREUlZLRViXruMmcnSe/BpkkcOyxeztS3zb9JIyZo8KXgl1hsuK489Tv8rUxh7douCxbRq/iYfWmoSoSCVEy/uFU8+FS8w3TnO7MjDssLDL15FJNdadzotttipNuxbghK/GhneEVd6T7wZXfpSWWzR89tji2td/aqu6dIIxpi2J1mJ90lNy1LSensvAh/nJhdOpPfas4nbhVXC5LDyv1x9/hJgAIwQQwS2sEaJAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Cyprus',\n    code: '357',\n    iso: 'CY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQkE2MUNDRTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQkE2MUNDRjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0NDMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFCQTYxQ0NEMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+efiilAAAAf5JREFUeNrslU1rE1EUhp+ZZNJJMGm0Wj9IpVWsSsGvpQa6qRR/gBsRN+IPcONG0JXgtgsFFQS17lwU/AALoqApQQwUxVJbBTW2jK10Mp0kk5kkc71pcCFS00JiNp7N5R7uPe9733PuOYoQYpk2mCKBRTuAVdpkLQP27XmEa/87YOEsUXx6nvLsI7nxmwi8WjBRwUldxx49gRII0XHoLIreuWqY4PrLUaX08grVnEMw0Sepa1TnMpQyD1AjcTacvEFwZ7K5VV3JvkHdmMAa6cN7V0LtrkWQj83LRYct1zzp0Jr0naoe1cX3uJk7FJ6MENgekgy8epL8erJEQboMiAwNET31GKTUjayx1GoQ5/ll8mMP0fprIB5Kx6+8QnlGAg5LwNPn8IvGXwtq3VJXshOYV48hypJHpK6mKMrLkra2Z5DomXuosZ7WdC7xZRxl4jZFO4uX/0Y4eQl18160XcnWtkz5WGpNvWtFgpxMUvyPMwu2RUyPoGta8zqXYf7gwuhNbqVTzPu/gxqWyd30Cy6O3cdYNtcUb83/eFsszpFED+mZSUxrgQOJXoYHDjM+Ncnrz7N8t3Irvh2dm5o/nWpHn02/JfVpmt6urQz2D/Dq4xQfjDmO7t7H8f0HCQYCrRuLX5cWCWshonqYgutiu44k0v1/HjcsLrsdwD8FGACqhNA6kzA7CgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Czech Republic',\n    code: '420',\n    iso: 'CZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCMTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCMjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFCQTYxQ0QwMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkIwMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jrdRWwAAAjdJREFUeNq8lk1o02AYx/95k2aStKDr1s1VaPUgKKs7iuBFbSfDqzsJwtSriFdBp3VszsNwoHgR3MmL280Vdd51qOjBdrCt9aCttVK3Np1NszbxSVhxDFf2kfQJCSFf//f3/p4Xwl0YfJZ+cqO/a48oKGhOeWjPAIErRV/4pvH6/YLRxCqy1qMHkPu5jN7zoxgYmURFqzYFmxlVHV6/F/LBDkw8isHfdwczHxadDzYPek1Hi8ij9VgQ+V8F9Pbfx6WRKagO0rP6iWHQXq2hzaQP+vD04QsEzkXxxiF6tvFCrU7fE7TcR0z3w5PQVmvOBv+jX3N/iNw/jqGr7zao850Nrpfl3kX03QHkcwWcJfeX702hsrp799y+yK3i2qJuPEKeQVU1rMynwfUcwcToAC6GfEBFtWZom6UIW36UGo+JInDiOIxUEomTp1Ho0JDnRNS2Hwxha4tdx5LogS7KiKQ/Yjwzg8Plb5hbMF/naLM5mNEcaoyHIrVDqhRwN/Ec17+/xQovYm6vHzwNiNuhY6EhZQtRumScyX7Gg+RLdJey+Cp58YcJEOj+bkr4PyWDInfCoy4hOj+Nq5lZlJkLcXenNSB+B93UMNj86G9yaYgSwtlPGEu+Qqj0gyjbiNJlTa1dJWyklNRlDMXJZfodSuTyi3u/FWhnqBW8vmPD5HKMXIbIZYpclm1wuWlwXm6Hu1JENDGNa+lZa0rtdLlp8KlcXBlfjHnIpZIilyYl7xDlul8f5a8AAwAi6Fw0Cqzr+gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Democratic Republic of the Congo',\n    code: '243',\n    iso: 'CD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGOTJFRENBQTE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGOTJFRENBQjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY5MkVEQ0E4MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY5MkVEQ0E5MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ljpEIwAABUxJREFUeNqslWtsk2UYhq/va7v19K3dBmOUwYBxxoBDFw4CQZQs/NCFhBAMKIQgYNgYEASNogElQnQ4YEDEAyD8UCQahYgZBgVEnMiQgbDJOIxtDBiuo13Xc+vTdiZDxRDwTd6kP94+93O4r+fTs+tiI+CQ60aJQDAVVD/oPBDVcf8nCopcXyYErHR/qJItw9dScKJcu/yW9ZpeXmgdDzWCaUy2H6Y20I0Lvt6SgO8+BaWAQFfw2rENOM8buVsoqt0Oiz1U7uiNN2rQVJQghK3QliMP01jVZzUTrFXQIk3wOxKBiNybphKGkNTR2p+krm5en/oKN7qNp2hNGZceN3Fk+wCiRhVzSgg9wXTGpR5hSu/vuR6yk2c9w62uX2E1tGBSvay9PotI2JRo/38Jhi2SvCSa4aQwfx1vejdj21xPw0Y7l1oHYEoOkWIL4r2twxgIoLDjpis9uUHbm7OCCRkHCftS0Rmc8UCza9ex8+Y0EfVK8NBdBCUpTxbY25k+5mPWUkb257/RvMFCdZ0DoyGCwRyJCyrSuWGPXsW8BLfC7hoXgW4aXhtHR41nbNZRmQ/kV5RT3jRJAtbGFDruX4LS+ohBBLPBHCJ/1B5KrBsZeqAC93oDZ85lo6pRjFoEv1slHFEYOrAeW7Gf6oI8lrctduuJir/k5mZ+zSPmahacKmF+xh5mOT6k3DlRVHQdc6Zj1qq0tC/oVfIe28+mzHcZ+d0hfG+rVPzSV17IDO1hgh6Vttt6BjiayChuo2n6QIooZNeR2eC0Shm7LroIpWpPpB9AlQQO1k8jRWvi6YxP+aJlEp5wilQYSOh6paWRZAaOOMymnBImHd9HdD1UHsrGTxJmW4iQT6Hdr6ePvZmei5y4ZvZgpbmQjRVz4XoXsDRJ0m3uhLAS0tRQCtGwRjS5QZyZKuMzQ3Kj1KpLsBi04hh6knVDyph5djeUhajam4ULExYtJAYUwXY9DpOTnDnNBOamU9JjDqt+Xoi/LjaSWxDzTmI3dAjHWVY6tbQD/kCXOIvW/jWsyd3MossfwVYP1TszaY6kYLEE43/ztBlIl/0zZKZUU2hmW/9nWXGqmNaawWBslQKaJaTa2SedhTs5NWiXaF3RZzeycmQZL938gKT3b3FpWxcahHWLKYSqj+IRi2j4GF5QD8Uqe4Y9w9LqYhqr8iBJNp9REon+zZj/EI6jEVsk3aHbHxSP2cZrnvdI21lH4xZhsSUjzqLOGBU09CQTZMTEKyiL4ZvRBSytW8T5ypgZxQ+m+o7uqXcjX1KOCUaM8lOcavMybfI2SvSlZO05z60SCz/UyxbSR9DsQXytOkL+CLkPX8S0LEJl/jgW3VjCsS+niC9EyHI50bE72/rvO4etUfFHWMsf/Qmltg0M2ncCV0kSZ6t7oRMWk1OERZdKKMZi/3rsy/xceCqX4ralHDg+HcRQWOqkuGCH4D0dtzK6ar/rncxSbczBbwmUKvx6ojdhcbLJFibQruAP6hjY4xoZsuAbpg7iZbWQ3T8+J7tcbGEVAnTe+/mKuZXIPpMrstGrnT6YjTfGoizwcEDQ8AmLacLiQifOGb1YnTKf0p+ehyb56liuC4vuB/lsupUqY5bL7TNppjiLYuZ2A44kJ/3mNROen8razHmsqlhI8EpPEbyDxQc5buWktU/c1TEWuwiLg2cJAgtMbO03m1dPL6SlZqi4VFhMar4n09yrsN7fphPTRxlb8DtKkbCYO4MXq4u4+tlIqa5dnF6bYPHBq7zT1TV5PRtzlt92HHtytPuFi8s5d3JiYjfHWeT/qrDziS2ra38KMABPHyYU69kw6AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Denmark',\n    code: '45',\n    iso: 'DK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCNTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCNjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3OEU3MkIzMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkI0MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YilnMAAAAFRJREFUeNpivMBj/J+BSKD/+cxnEH2R14SXgULAQqJ6ii2EASaGAQKjFo9aPPwsZvwPBCPKxyzA4o9oxcAikwFaZI4mrlGLRy0euhZ/hmKKAUCAAQC4DxA6JMoNqgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Djibouti',\n    code: '253',\n    iso: 'DJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFNzhFNzJCOTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFNzhFNzJCQTE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU3OEU3MkI3MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU3OEU3MkI4MTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LIWFKAAAAkdJREFUeNq0ls9PE0EYhp/dbtllbUtLREmtCSYmvfAncdeoJy8aDImejB6MHDxhTJADGBIDJCaSeICEeBAL2ipGEBCbVqgabBf6g3Z3mMXUgyi04L7JHibZmed7v3lnMsrSj0rmUSIfncuWrA5TI9KqYgu8VFB+WUUIUXAHU6tFhpN50vka0aCG6Ve8LMD6DXZHlZrg6YLF2AeLUtUhFvLjU8ERHoPrym3VGHyTZ1p2wfSrnA74EBIuvAbXlVyvMCQLSG2UORXQCBs+7P9j/2BwXZNL2zxJFdiQnTgT0tA15bjtbwzsqlgVjCQLPFu09qBuABWFvS3wFFxXplBlcD7PzFqJNkPlpHmk/f8D7K7g2piehs5OiMf/OXM2U+KxLGB1s0ZXKIzh0+Txc47heHwcenqguxtGRyEWO3CFhTT0z2VF2SkKQ9MagcoDSn7/n7oOW1uws3Mo1FVCGWC0+kDYjiJMoTfqWOx3vLIik1SElpZfYNP868znX6e48voGy7mX6KEOWjRDhs7xLlyft9NclMDJT0PgDxAJnkOV2RDNxatxcNmucD11h/7UPahaBNvi6KrWjMvmwQPLI1ybv8nmz48YoS4C/pAE2t5dIDPfZrmU6CWVfoFqdhAxozIWdrNtbRycLeW4PNfH2OJDGX6dcPA88pY8alsPB9ekm1vv73P77V3sco5AOE6rBNvHa+vB4OEvE1xN9LH+PSmPx1mCejuOU/PuITC/+S5zYbY3+mptwlKMdiInYiiypQLPnh97T59dAQYAfWNBGb6d818AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Dominica',\n    code: '1-767',\n    iso: 'DM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3MDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUE5QkY3MTE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjZFMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjZGMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yQnKJAAAAtZJREFUeNrElUtIVGEUx3/3znXGmbIZUxAdH4mJaWkUYdCDoCijFj2IgjYt2gQVREURWVCWPSAoqE27iIqKatE7aBEmUYFEadlz0pSkdLRGZ5xx5n6daVp774DkgbO49xzO//v/v/Odo3FuyW/sWngiB6vaODTnEwUV0GdWEf3Vxtn3t9l+bQfklNouZYhnMQ6mM06WPrASz4CQBjEt9UtT6QMbtjPNJKhOqHgEsqEwmrzjFGKoPE/iI6kcfSyBkwVd4vkxqi9LSzwrpXGCVxhLYHk9lQscUJEPQ5ITsQeucXK1siXvlBH2XQtS+0hREvIw6B/CzBrE1d5Lt5HJ57pS9m7yQIczlW/F+GjNa2vQEvBe9bD1RhaXppj05/WQHS3H1+4lkP+KaKaTPXdjTKzqY2Cz0A78pTQ6Y/Xd4nzJy8gVX1nE8dYy9nRG0B1h1q+voK9rOo+bmiQYpKHEywF/JzwOpOSOWjBODoJRCcv1uaXIxXg2NX5F0IgxKZ7L1DfVXF/TzOvWCNMGDOrCCd4/m8za7ABBUVyLWwD3mdNGz0iAU9fxxHTyeoeJa7qoOMDSd5kcW5XHhdpvnHqYhanHGZHkfn0GwWjcUmqUXdtwWNX7fWqYeUpRpe7MnK24OF/tXDxLvueqI8U5Kla3y3Y54/znB9Yt6NZx1Zo0XPVyT+Tuz3CyzB3gVrODl/3F3CvS2d85gSubDH73PEIbMm08p4Yy6+Z3im6FOZy+4KboaYTcsIdEgcmwyOvv+sJHRwY9iyrZtln2TfdPaSxlA/jcYmVrgLgF3Ovi0pMuNjaFufnTJ08iwZrChdxf5GTFrGYBlK4alHIOW7Naw9J1LfVEOlw83/ILXn6iMdjC7l75+eIMLSfWwZfu1ORy2KgnbqS1TpSJ76tsiCJ46zaJmKnZ6PvwQ2JGWivHSHutJA88LGCiaOLfJSntf6zFMbIk49B4AP8RYABEcEyuCxX37QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Dominican Republic',\n    code: '1-809, 1-829, 1-849',\n    iso: 'DO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3NDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUE5QkY3NTE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjcyMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjczMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bJEP0QAAAXtJREFUeNrslM8rw2Ecx1/f72ZjG7MNw3yxidlhuRE5qFH8D1yknJUiBwc5OTiSUi6O7i4yNxxGEYWy/GhfTZvJj8nM15oc5PJMmcve9dSnp3fP63me9/N5JPzDGvCAiMIq/YN9rC+OfZu+HJ4iurKEsdyDoEr1XwV5lsw/qQDOm/TcxMXdj7e83302QPIlSfJdw24ykX6655U4csIsDm7p8AmbL2+cNPqa2NkOcXB1jYU0VR43fo8Xu7MTWakRXkvSMsrlimKJOIGxGVprXUw83zF3dMjI8jyB+ua/zfj0LUa1IjEQTxKVKth1QSiy/4uMc9SbycqFekzViZk1o5WwdojX2fD34LZUCaNKO6pRxa+TGaeX7uLGnMHSWc+QcMapSBRLoAtlYZonLQ2ZYZYNTM6usry5h9tpEz/x/daGsPkFFb3bka3Nki6zbV22Pg9HiAWDxGyKONhQ7hI2a4kURRbHzxdqLwNTNdRVFr7MAvhHHz/kmVv6IcAA7rhthUQGtAoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'East Timor',\n    code: '670',\n    iso: 'TL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQkUyNkYxQzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQkUyNkYxRDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzU3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzU4MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yD9vMAAAA2FJREFUeNq0ll9oHFUUxn/zdxN3N4mUdZNsInWNoVJwK0WFUhCLICKoNaQvkupTqXlJyUNqwbeANKBUQa2CGkNhV1daQnxIkYpYiQ/ii4hRUomVdmPTYNoku5n9N3M9k81Gq9Gk+XPhMpdz7/Cd73zfPTPa87vCmQ/2RMOBHzV+Gs9j3a2jWYDHtg5NptqzL0DyYBP3z9Ty6zuLOHkPu3V7E/CB52WGjZhG6tVmOu9tIHu6wNV0AaVpWBLfjgR0Tass3Izi0AsZXjo7Rehtm11f1FH3mE75d0XxskK5/uktZCzA80oR/nsw0R7g03Ot3Lc7SPGMw/RQkdw3HkpY21IBzM1XYFXgqgYfnmzixeN3wUKZ3Md5bpxzWfiygmg1b06CFWB/oWTxz3H0uQZOv9YM9wjNyTzZC54kUCZ7URCl/Bv1gCF4J+QZ0HWdnp4eHEdKOz1NIpFgR6SR0a9+Y/izOfbtrCH6YBC7TVH/uM4du3U8B/I/eLg3RP6QJOBLoNZprurC8zxM02RsbIyBgQFGRkYkWFra+36ySOLZSc68MSNv2FA2CAp4y7s2rW/ZhB41KE8pSmJQzVjWab3A8Xic9vZ2gsEgfX19jI6OMj4+fsvhwyemOPDEL1KRMtwUhOuK4JMGre/bxIcDNDwjCcwt34C1gH1ZI5EIvb29dHR0rGx0dXXR3d2NYRi3vPDHrIurllP2dZUcqBHN7tTQA+vX2r/G86ZlLbm6VCrhui7pdJrBwUFisRjJZIpCIb90+NTLUY4di8Cc7yqZtobztZjtbJmFz108ScJu0So6r6G1WQWsjv7+fgFLMjExsRLbGTFF3xb2H6yHXFEYeuS/Vcx+UmL+vItyKu42a26TsSQX/q8DnQfCDJ2KUfuAmCpTwLm4zPCClDxXaSha4Pavk/l/FXn9eJTek1G5r8IwtcjssDSQ8z6gEkAdS7b8braRJmKuFmxrskimW3hofz3e8CLXhkrSsQQwW9HQatSWANUm2ua/gA911ZF6M4aeMbjWMcdNX8NipUVWGaot+FL9BSy+eW+gkSN7d1B4pcjlj3K4hQrDqoZqCz+NPnA4vtci1dnEwzMhrjyVZeG6/AjIn4hVs3EN13T1022hzNAj0XDDJYOfv3MwxDRG7dayW238KcAADyNSlrek0dQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ecuador',\n    code: '593',\n    iso: 'EC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUE5QkY3ODE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQwQzE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQTlCRjc2MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQTlCRjc3MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oj8tnwAAAr1JREFUeNrUlU9IFGEYxn/fzOy66667urrrCusfyOgSWoc0KihLOllEXQsiiIgOdTG6dK1OdalTBxEpI+pi9IfoYBjZIaICpTAzJF1bXbdVd51d50+fa+dmRWHpY2aYj2+G533e93neVxifIguUYGnyrigFsEKJlraur21Q3fLhMkFX5VYgPPLdUDBzArndZMb2X9CIBR6JsxwAv4WotLB0nzyQV9Rew7U3EViReVEDWZ49Ndh/KkbkYB1PXtbS06ehtijsOB6iv99AqciiuFaRnakLqep/xiiEXSChqyEGXsUQ+TGGRxKk9ZPUhBYQ+kN2NjeQczVy4nASnzqLsOQ/trJRxjK9wmQq2UFTSKN5e5zWPStYK3GOtOe5cdWLHpqkOawxs9iJbSmSr+XM2B4LOFfFb6D/CPFx3OLaA6+MpYuGA9W4ZHF/vR/n7WQvPecjdLTKFNekYVl1VvXygs+5xrrANH4TqA3hmt5G+74Y0WPnuPl8Hl/mBZ3lcaL1X9GzM4hUECtfhJ2arlwsQtVu1KUMvZcesaXKJpEYwj8ZJpZapFx8ptHv5fucn0O3L2O6gjLSnDNwYipShK7dMG3ijSdpbGtl4p6XvsoBaqvc1A8ZZI66iWTSxEfrISz9JooAJpApAliHXBXj71a40D3M45k25r99IRCupHrrCme6Jhh5Iz1XUQbB1dZvOIuLvXedxSWbU1m1j2B6lLP+16R2ecgOZqVtBN4uP3UfdO783M1idQuZZGbNxg5WFp62W47AwrSkZ20WTB/p8Uqo0+mevo9mG1yPnZZl8OJrmiNaniE+q2Apzi4VgzUtdlEdUzYFS9pH1WyMvErQWCqcpTU/mtvANiWYbcqGIwpNx4my1phPrW+sGGuhLLs8hYDCZkJKQBSiK8AVOSi0lOrd0HjLqeX/3zxeLAXwHwEGAOXk99HjIQVFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Egypt',\n    code: '20',\n    iso: 'EG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QkM4MTQwRjE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQxMDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDBEMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDBFMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4WJtkQAAAL5JREFUeNpiPCeo9p9hAAATwwCBUYtHLaYZYPz///9HIM0HxCRmqw9AzALEPCTbCcSfWKAMBiQaP/j1iIHhxwkGBg5NiFt/3GRgYDcEYhWSLGchOYz+/WD4eyucgVEsg4GBmZvh//NeBiati0S6GgFItvj/v+9AXXwMjBwaQHczMfxn5gUK/iTZ/SRbzPjvEwOzZBGQ8Qsc1MzSpcBQ+EivxPUDiK9BtegAMTvJiYuR9NQ8WoCMWjxqMXYAEGAAUBIvbfhWcKoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'El Salvador',\n    code: '503',\n    iso: 'SV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QkM4MTQxMzE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QkM4MTQxNDE3NzYxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDExMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDEyMTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/anEfAAAALNJREFUeNpiZFCYz0AbwMRAMzBqNP2MZvz//z+NjGYhWuU3Bob3YPV8DAycVHT1j2ePTlx/LG8ox3Tt6TdFydfS8voMDPxUCOt/f59VzLxy+ehCIbbpR46eqph2+O+fO9QJkP8MrB+/Xnom8H7FZd4bP39/+gkMHGHqpBBmZvHsENlzL0RW7bJ5/uZVdog8M4sMFVPInwfPNp299N1Ij1dRypOBgXUgEx/jaMk3ajReABBgAAmeREpJl5cdAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Equatorial Guinea',\n    code: '240',\n    iso: 'GQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFNDE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFNTE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCQzgxNDE1MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCQzgxNDE2MTc3NjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Tw5JAwAAAphJREFUeNq8lktPE1EUx/935jKlb0BCCYagEGJCdKE7ExMXfgE/gHFlaFwoK9mwUcQmbFyYmlA3xrgw0W9AQkI0xhijRNGqUay1D7AIQkceHTpzPXdaISMPKdje5Exm7pw7v/M/95yZYR2RcOZoe6xtuQC9aAKModrDT5blycwteYJj7TH/UgGoFVyB9hXJdBSTqTC8LoCrgBBVB0OBmgdcXwh+G5Pp2sEVCKLY8CkkU1J5b03g3D6uw0vKFQXoOXgHn2eBJYOclL9WUQ0oZDIuOzixV7ADnkAicZNgbtF3+onI6QewsGxCtUkW+bjBeT2stax9zbQ2WMUihPmLAlJ3l2XA4o4pG75I8BV8+jDAxMlGXDvjdIEoQCy+BuPNFLYPMCgAbzet81YimCmbpiTcRT3lSeNSdIJFxuZYKbllYy42/0NjV0cfsLMP+9irqRQjqNNnZ9sGLAdlFG7yaVEwEI2j99E3x+281oRnb8fx9N0o5uo8+yiubXeD4KbASsFyTHsCAVxuPQ9f8QKOd5yCYRrQVK3CdtpyB8gMgs0YuHLxCO6fO7R+KzOdRTz+EaveNWS1WUzE32BmOvcfFMvKNWmfeSv6+1vE8AlnpTaFWhGq96Cxuwsq56ij3mv2VVZYksI3QTntWX0bwu+jYvjuS8u414iFpaLdTpZlQXNp6AkE8T2Xox4WCIVC0PN5zBYK1P/KbsCqs50kVBZKsBPhFxGMjA2y+TzUuS3SIue0MiNhbZRqBUPlG0rdBO1C7/MhjIxfR97vh94cgFuYOz5B2/Mr8096GzoJegMxCfX58dMVgPoP6P4+ElJpg1QaIeggKfVVHVoCBw+XlRLUR1AtWHWonWpSqsceD/kpvXotlJZ/ffTfAgwAojL4tK6cs5UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Eritrea',\n    code: '291',\n    iso: 'ER',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFODE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFOTE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUU2MTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVGQzM4QUU3MTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Jln83QAABGBJREFUeNqcVstvG0Uc/mb26XWcOHHjhDSv5l2prcojFKkHkHpCnLhwiTgjxAWJG/wBiBtcKnFBHAD1wAFRKAcEQhyQEDRNLYU0TkAN0KaJm4cdr73enZ3lN7tpsfOGlVZ+jX/fN99jbDZ3evre99NhZm4ixK3xEIuDEn5nBHAAOwxtFQYrwJEXa34R4dhLrWcCz0VajBJhS5e4Myxxc5JITIWYJTKFUQmZjZKBVYYU3TYRYeothv91qVFsXb9UoccMk4AjGZwm/hV689akxG0i8CsRmVOKDJAiuSihvUsk1UheRv8B/DHwvg9oih1ytMVqJDw36V7oF7h9kYgoa4jUnYEQXj56xBRONbGGRXs9OA6YFkcBQ0iARlbAfCaALHPIFY72oRD6LxaSAEjscImFIYmfLhCJieRuyQiRSB+SkVZgApUEyo0IxrMC2fcrCIo6vM9t6JMC9owH/1sT229noHlAir6SborXo4zMUkZmVUbImsJYa0ZiRfy9wORzKGlnr7uwX2rAvW7D/8qE86qH2ic2WFeEttdcMM7gfpiCN2dC02SMe1xGbk7ttmY3Iy3AoeCwzvvovFFG7V0Hm1fb4Qw3CLgO8/kAGy9mY0V6ChsQSxq2ZjogPVJI3x8r5XEqJKmbiGwTyfkRCVVdvrdh5nkBSUMrV9MweYCua2XotFABaX30CB31j1LQL5Fx0eE5VlWrEaESyb9O9wblwSQil5d0vPG11QQsk+QaTxFwUaNnDBHJvvMeidcWwf/RQLhF4BQ7/2cduKfBeFLE605yYNAouE1EeHOrGUs2oU0H0BjJ4UgEBR3hXxp0IqT0U0CsgxY5EbReeXRnjiDCW046HkE+4GCUQuURp+FdyyWEqxyNGxaMESW1BkvJPErPF7WTHxu0zBRkndhCt1j5F5ipGeRB/RvqKQUmS96KhxSgl3Mwzgp0fFyOq9V2sQ7rzRoaHzgIlg1wLg/FMoRATmwS0F10h3/ChIel7hF8+fQre+pErEI6rVIv+Oj4bhPBNQtrM93IXHbBqQaRy9D+xTbCH0yUrnQlkhky2bTaURjQSbdDmlTj0FA/sNwzisWhCarRBBaGp7DSO4zV3BMHnFw0R0iSc8KH81YdvEzDzwmE8zoiEkPMa6h/moKscti0gwwB8RiIUowcVvKDWO4fw29nzmJpYJxOskmsdfYg0HSkvRoytR3Yvnf4Wa06LYl76lwdzjs1+J9ZaFw3YyAL2zFDF3nc7R3EUv84Fs5MoUi7+v30CNazeXimDcerI1vdjoFO/COReKSkq1Jz3VhLGoOV7kEUSboi7aYwegF/9I2glD0F37CQrruPd8QjeWTV9JbUHeDRYn48BlocbPXI102SzkW7W0Hfw1VwSUCMNY07uma6I2qZNErx0hpOoZgf2+fRA/JIaAZJpzxSQPepbq01kjEoO+bvSRPwWmf+fmH0SqbZo5LyyLDpB75GHpUxsP73PqCD50cH/904YN0/AgwA07gejJviOMwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Estonia',\n    code: '372',\n    iso: 'EE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFRkMzOEFFQzE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFRkMzOEFFRDE3NzgxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUVBMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVGQzM4QUVCMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+r3fpugAAACxJREFUeNpitCo9wkAbwMRAMzBqNP2MHgWjYMAA4////0dz46jRA2I0QIABABDSBIkzwazwAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Ethiopia',\n    code: '251',\n    iso: 'ET',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRjMwQjczRDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRjMwQjczRTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVGQzM4QUVFMTc3ODExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNGMzBCNzNDMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yFhTVwAAAsBJREFUeNrUlU1oE0EYhp/t7rbJJv1JMaVJbUuLP4XowVapIGIv/hzUIh4VqScRUQ+CevDkwYMHL4qg0oJXUSiK4E3QQ0V78eK/TdVG20hjbX43ye74xYDgpRsRKQ4MzM7Mzvu97/fONxrHti2yDM2Q3rgcwHUsUzP+/BcNVBkcW8YKdJ9MGdXxPwHWRBzlQi4hOpngj1aDKHyuBuGPyLxR3VMTcKrBe5eqgBbA9wmiO6Frr4x7ZEEHewpmHki/C/kOicWS7g1u7BqY9zaC5tDizjCujqPWnCTvNLOuYQKrzuZpdoeQ34IKRdjvXuRb3UpcpXsLqJIh5ZlTf4p3ySFWTzyU73mR6SsH2x4Q1HPcmN2HTYvIHWFy824GovclHa2eOdeceFh5saU+xeDkPRLpGH1Nk4TMFBsCbyQkxYt8D3OFCG8z6/H5Znk5uB1KAWFtLi112dWW3FBv5MhmozxL99Em3LY0PyNipLie3EfZNTnSfodF/zTvJIBXmbXMpntpt95TLrX+/T1WYqKAyLpQCnNzdj9p16okgIKwyrv1jM4N86XQJV7L4lSMWMPVMrygXWURDCSIBeK8tcPkZe51vpuj7bdlTeNpJoYtZmrSCnRZH4gE4ygn6EnJ0MOOB1s5wXI51z/KnsfDdBpxOsw5LsyMUBbGI+FxLMNmRu/k0sYz1HUUcHKNotHS52rJsz2erta1Eq12ghP+81weOgVFqVbFuKzJ4cYqCBQ5/OgqY4unpCx0iNymt6unemOeCVEiZdDJ0BZMcGXTYcb6D/BxRYhKmYim0hx6fovTT64x/z3Md6MZTXO87/HHrX01FVlH02lwikQWPpHzNRIP9Qonje6FaRpz35hrWUne9KG7Tm0VuFbgX+w1DV+5iFXM/XR2zvQLYINUIvVvX6cKgK2b2P7m3+b+q/c4vRzAPwQYAEGjBC1vMOsHAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Falkland Islands',\n    code: '500',\n    iso: 'FK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YzMEI3NDIxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YzMEI3NDExNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQ0YxMEIyNURBNzM0NDZBNUFDQ0ZCMDM0M0E2RUFGQjkiIHN0UmVmOmRvY3VtZW50SUQ9IkNGMTBCMjVEQTczNDQ2QTVBQ0NGQjAzNDNBNkVBRkI5Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oe8x+wAAA+dJREFUeNq0VV1MHFUYvffOnZnd2Z2dnYVdWaBAC8rWsqBESa0KbdKSRh+agqYJ6YNGjWmsTeShryb6ZOKzaW2JiSTGB6Ox2iaIP6VQK9BCKa2lrMDS/SngQrvL7s7uzNx7vVvbmvhiQuQ+zCSTfOc793znfANf6OkHm3MQ2LSD3vfMDh+Q+955OtTRFL1Hx+8K74alM1/0frjdWi6rjmJdF+FxT3y4KXriJS/S1FzB/k9QyBlTgI+sPb6zL9L7zO0Tu0I/HQufjOJiYaEILEvXnnSpe6+P9jSr6+66D1xN30TyMH5NVWXKiyEgNrNsBh/CMcawiDCGjD34go/tDqY9rTNyTpsc63xO7nyrfearxDTIbpHo6TDRJS/oPjC+Klhnr74qk599SiZvy2KpXhAAhZQwgBGklGKuAOIN+PsBNpzV64MFkizSGBVtwJwgzwAxUQDTFQEgpteYd5crQK7BJSTlwNudvSnZo1qFtdX883vKu3dXZrIkRaCEBV9AHRmK/vBdzOtzQQgZb5Y41BNZzueQ2NyxA49PaBLJCK7pU6fqD3aFXmyeuzCZtmG8sSX55x0sYlAUBdPkWpqmrXqdtdsCtVhxerxAkFfIvZHfFm2LPlIcH3XuCh9pP7zVajRurevSl9XPNgr5+k8/znYfPPfK/r2vrTZOjJ2ZWu8vfyrqrsCXxlykyEUVuLOoEMmSRCzS8ERdYjG6Rk1ZVBGC/0AfDzu6lr6VJ2OfTRe/15vODi3018bbgX05uvjm0YFmD3l9T9Whmvl9yanPR4f67BqKJQkwi1JdEht09+nBQfyH4lXdlUFNhEEkSAzy2ZYaYBiLf/LLld/DbcNqGY3Ew35zOCUvtr6RWpZDYnH+avK9K7cHuto6/DUW+tFJCgZ280HZFHLiTgZfbtmHjby2NaRWakuzFw3L1ID4N2thytE5WtW6tJINmBldlSTbml6jI6GdkTuGy8jqulLukWevLQ5cTk64ql0Skhi57wDBZMQfyOKc5dT8C3PzkuYZvJBKxtcVRSyx5l6p9kq2vY4ULh6ilHEHlTlBWXoJOHi9SGgJx+9T/CXrGoDwKHBPA0VzzNzMJi6mHwumzg9EK30gY9DJacOjKxDQjQedo2cLsGtLdHvs11tzat22HbnyNufJj1punjNVD4Fo49AMQAcrpCzfiLuFIKWmeT/K0CkQJMEgNgz4KI0bWmnUpeDz6YriitVUxRa+vpTLgBuVhwXEfGb6fvaFDUKXNKGsXC4CGSZTbC5BJdlRJmcgYbQ0CAA3zPrhPio9HBJwSKX8cJnYvy5HkYSY9f9uasY7oU39FWwe9F8CDAAMDrLSTxhgUgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Faroe Islands',\n    code: '298',\n    iso: 'FO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6M0YzMEI3NDYxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6M0YzMEI3NDUxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQTQwRERENTE2RDdEODBFM0EwRTg2QkI4NUIwMjMxMTQiIHN0UmVmOmRvY3VtZW50SUQ9IkE0MERERDUxNkQ3RDgwRTNBMEU4NkJCODVCMDIzMTE0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qirpigAAAaZJREFUeNrsVM8rRFEUPufcNzOM8bMhiiEL/gAxUmxkQzayUChFSvkr/AMWUrKwkJI9O5ONhRT5uWChNKWxGIOeR71373EfjSbewlU2cu7m3Hfu+d65537ng1wux0E2tnQ82DR9AvEzqBpunBqaP2RDI/g1+4f+DC1EMDoict5nBtTLFLq0NBwYiAhSkvPQygoZV22NLx4RFTOqgqqQUKZy0c5EnZXWHOKS+prtx8jE8gGz8K/wTWh3YfXZdgWJwq8KVVd9befdlYNFui8d2Wtva+M+fUMmZMVTTCi+JwgXFqM7S+A5EHugqAKoUE4MbAkWAxv0OuQflp9y8lv59h9WvoNGuH5D5lr6bcezyILCTIZIQ3Uye5m83CWF+y3de/FWJ32LJjSxvNnREooyqA9onS8Qdh7L5OZ638U2gdyPN6cGRnorbcXff0WwNmbbAIu/BiZXzjPXNxJIc/opnekpf1mbaTfjtW27gQHXU0Tv92dEIV3zkfGkCgxoVfzorHZM3/DvKZ+eGvYFCt+o+CN5CoeD5YlFCJRWRY/02GueCGEK/SrAAFuW4Upd7P7AAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Fiji',\n    code: '679',\n    iso: 'FJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxMDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjUyMkUxMTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTBFMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTBGMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+scF2nwAAA6lJREFUeNrslH9oG2UYx9/3fiW55C7X/Lok7dKuxNqljii6abVzdXNQhqNanUzrwGq7yVxRJwMdgyEqYzgGKipDNgs6qdCOFf/QualU0ZVBdO2SJgWrTVuXn5fkkkvuktzlvLLgxL/GxvzLh+ePLy/v++HL8zzvA/s/mgC3JhBwywJ7I7XU2LXmi4z57bG5hTNTwGL9dLi997P3vt6++8mxNCiWHYyy31PZ3dMst3pfiFVKBYHE0Oty7X1/8ZXh8Sfiwcs7nUeP9TkeWJMpA70oFXA97WIOekuhZ5v29q87VGxlTyQT0aSVIq7TNXzqpVHJ1PAwU9kFlrHersKqtuWx7+DzA+DjE0bKsApkwUPdI8HSxAdnER2gOh1VBEBFRRVFNJJ5ikEkFUAtgYKitJgjhaIm6mhx7UbNY7YgRyWo8gWbHqkqtYzBxAh5PY5wNlZNcI1o1e4wAIYZGtybpBlKKsmkgV6I2hfiFRON6AGEKiZWUqw712jBpWq91vPdW7JRTgCIb0OHJZ0wFXlOBKmRUfrpPkdnu/lCKFWBl1gPcyVGspSKY2i1oj1LQcP6jLTvz7dkfzkV1VtliZgGH/r3jPmG3NJiHX1XiL1327YDj9/uoTh1cvpYjPa30neOfz7T88jE+q6hQYUKXgqfjw7zTRer9KMV0ULIkgKwfBH6nDNre2uZpDvI/eghSls43msjufK1CTm62bXHHsVGfjgyHn5nUc/JtlNDrBVDhYuRXc9885rf9vqOO15lsU2Ni+/+nPipbZ2I6CCoGgtFfoPr1H07LReUF49/O39466RfuT/kQ05PAbvxKho9vP+5X85PHSwyJ+kWxEq03GNpbmN4koy0ty21WAQ+fS4Sn7nb7+ju8BpLEYiVUAxT1YyV8k///vKhUfu5QCH1hy8obD8dn8vxgWYnVZXrrveFs7XOjYws9ZMQw91Akady8tnHdlDZ9OZNFOhxK7Va7Mrym5Oqjl3tEEukrNQgxBGcy8eiOrUBejgxXasmjeJshR+AqB4AqY52GwhQLGhKWKnSSotoLVMJTeSyCgAr7TbhhAnXbgia1rgrJ/F0oP22niMHOgAorh5s+cQhNdkuT/SScwFA6+roG/vEhAmVsvDLr0Jmq+yCSzPf+46bH/xtftZl1ikquCk0UGGDCQ+EZ8OK0jHQF0k3F7Koyyhqn+nahNzw9tF64DQQEoS/NjmNecFZK/+Te1Poq3XXFoqFz//dg/9oqf6P/lf8JcAAQ7yON3YEhEoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Finland',\n    code: '358',\n    iso: 'FI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxNDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjUyMkUxNTE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTEyMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTEzMTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+FFmzagAAAQ5JREFUeNpi/A8EDAwMnxlwAJO4WQxn915jYJAWhAg8eMPgE2PFsLkvkoESwAKleRnoDJgYBgiMWjx4LGZkZMQiRrnFjIFlK/9jk2BmYmRgYmJi2HXiDsOHV8DcxskKkfj2k0FCVpjB2UyJ4fvPPwyQ3EiGxQwi2dh1ggwEycgIMTBwszMw/PkLEWdlZmD4+J2B4ek7oOuYQSaQabFpw/8RlbhYQEUg/qAGFpVcaEH9CRTUH0AJgeygZnELN2fAlbhAKfrIxUcMn959YWBghyYuoKWikgIMlu66DD9//SU/cf0noNM0fjbDmT1XUSoJ31grhk29kbSNY2zu+v9/OJdcoxZTLx9DwGd6WwwQYAA8jFV5xASNJwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'France',\n    code: '33',\n    iso: 'FR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjUyMkUxODE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDQjc4RjdFMDE3NzkxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyNTIyRTE2MTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyNTIyRTE3MTc3OTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NYcTvAAAADBJREFUeNpiZFCYz4Ab/L+fgEf2q7YTHlkmBpqBUaNHjR41etToUaNHjaad0QABBgAMOgSHJZqdhAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'French Polynesia',\n    code: '689',\n    iso: 'PF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0I3OEY3RTgxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0I3OEY3RTcxNzc5MTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjlGNzM1RDc4ODNGRUI1QUNGNDFCRDA4MDk5RUM0M0EiIHN0UmVmOmRvY3VtZW50SUQ9IjY5RjczNUQ3ODgzRkVCNUFDRjQxQkQwODA5OUVDNDNBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++fOASwAAAW5JREFUeNpi3MugzEAbwMRAMzBqNBpg/P//PxHKbjMwrDyd8VIyVkDGWpiBwYOBQYOwpp+/fv3HC37/Wv3jn+S3vxK7mCXPx6r/+S/17af4r98LCej6/YeJAa+r//y5/fNHPzOjKAeTyf+/Ak8Xv2dgUOZgk/j1vfff3ztgJbi0/8cX1kBLWVjWcfOe+nmX59lZCY1+SZlkvWeXFV+fEefmvczEvIoBb1iy4I0IhgtXJFgFi9gPfn/z3IC/Opmb4e/DpZ8E7+7+p2b587O8vPR/kCIyjAZq2nHE6twT5xDRhzK7Jq75o/BbTclv9aIr3Cp7F2faSX8i32ggCPfl5zt0//5Pdg5LO3aGtx/ec/ww0n/HLy/Dcd3GRAWPuSCX/fr5k5WNDY+K42dvH7v08reIOP/fz5oinBvvfhNk/G0ozuHrboBH198/f4hK108ZGBZsf7j/1D1+Hk4uLs6SBH19TiKyzGjJN2o0XgAQYACA4seGjOuQWAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Gabon',\n    code: '241',\n    iso: 'GA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozOUMzNjM2MDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozOUMzNjM2MTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzVFMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5QzM2MzVGMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XUVjwgAAADFJREFUeNpiZJiXwEAbwMRAMzBq9LAwmvHPRbHRABk1ekCMZrFbsm40QEaNxg0AAgwAqCcEmp2Ti78AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Gambia',\n    code: '220',\n    iso: 'GM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozOUMzNjM2NDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozOUMzNjM2NTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzYyMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM5QzM2MzYzMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I9VNdgAAAKpJREFUeNpiPCeo9pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERp7FLD/e3x0Qixn/11R/ANL8QPyPjqH8kfHsy//vgAxBIP5Dr1AG4veMDLxtA+JjFlZOZqYBSGhMLExMjAOTqn+++fEfyv5PrwQNsovx5tV/74EMASD+SyeLmYH4A8vZb50Dk48lE1g+0bmCAIHPLIriKqOVxDCvnaBNHl46N30+AwQYACKRKLCtBsdeAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Georgia',\n    code: '995',\n    iso: 'GE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzNTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzNjE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM5QzM2MzY2MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjM0MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+6i4DLgAAAqBJREFUeNqkVllPE1EYPXfu1ASwIqEErCBRQ2Ki8UXjg5IQE/UJWfQXuP0+EzHGWPRF9MEHDRXColIBbbSWFlptO53l85uFhulMZVpPMpm7nu/ebzm5goi+A0jyV0YEULWG/IWbMDYy3JOQQwNILKWg9PchIuL8ZVWvgQN/wLIA0wQUhbklOoJpgZhD2PulEjCuhO75uo38lSkYq1/QKcxvWeyM34WxvhE6HzCspRZQuH0P+soSijMPoT1JtW1Ue/EahUnmWE6jOP0A2tz84Yah66BKDUJIJ56k6e1flzlQqULA46iHcHBylagJxqcM5c5dJ/3javMUWZUq5c6MUxYn+TtFP4cukZkvBNYZmS36dfEW6cvrFIKSGnZgeXYUA5ypEMrhtxMidFiODiPx/lnLeTXgBiInm0VMBRmc2brZ2CyOxFy32WvYkc44t6luuFv3uXwcPKcbgQOI3NhEyVdKh92OS80q7LrlZvfZgNJ3nK8g3TKMhrLIIhndMMhxv9LLYqFIt28fZI8PQkZorrYyrNrqEx10gJyaikN13R8Rqhw+Ed3ufky53Bpu5TGZHHRVjig6lbVb8rva4s0xCdHTDfpTdRND8ZKrNw7rRx47V2dgZDZ5gLV6MIH+t48hT4+A9sp+jm7mqPg5Gq62yUKK2zXU0xXMxt6j3hi567gtjsUbB/OFxQrnQKtsMDPb2Lk8CWPlc4SwU1O8PY5N1uprszDWomr1/BsUpu+jvryI4p1HrLMv21bM+vwCilPMkf6A4izr/dNXEW5cY23d+83eiTl/W2vbBdU0J97/5Gip1WMTpKdXOtfqjS3Knb9B+tJaG1rNGZpYfO5IXqeQI0kk3s05Mhtax96TJ+57+vCrQXRJ/BdYQoUqWz19yn8FGABqxdXVw6EGDQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Germany',\n    code: '49',\n    iso: 'DE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzOTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzQTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGNTlGQjM3MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjM4MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aBEH3AAAAChJREFUeNpiYBgFo2CAAOMNmhnNxDBq9KjReBPf/3OjATJqNB4AEGAA+2UCvgLMJf0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ghana',\n    code: '233',\n    iso: 'GH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2RjU5RkIzRDE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2RjU5RkIzRTE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjZGNTlGQjNCMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjZGNTlGQjNDMTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+nJIV5AAAAbxJREFUeNrsVstOwkAUPdMOCEJ5BEwMiS4wwbhRP8GNxGj8AF240K07FyZ+gq78A42J8RP8CMJKdia68MECQcqzls542xBkowzEoIk2venttDPn3Dl37gzLxzOPAFJkNYznMsieeNdB33Ms4Bp+6Pp7wNyq6EN3EmQBjXl+W8iR2POp9bbT9Z1hOvp8BEy3/SaHxXQjdZgsJqvkRMi+HkF2hdEJLaHj4qwBm6ju7oWAF3Ioco86Gwjs/mFyUdJYX8PnyUCgrYaEbjD4ExyX5xZMUxJwFHZZwCb6kyEGIZSiZlyqTnCQeDWBrf0qcoUOylUBh0BmU89YzOi4Oo6S8AyyJr83qwVFG0wynByEEY8w1JsSrbZEKABqMxCe1iHq6nprrmQq5jEsS6TXgshuBHoDrKwGsLAZpG8CmlQbyzWOSC8tB9MlDZsFC9V8A/fXYRj0fnhURymnI5mmZFWbZjeXJNs5Xa6QE1NZThN+hrsHB4kYw9I899pubjsolgTmZjgstaXlLqdXhu2sqbxBeJWDCBMBmOKj3NsESHoPUUlqHHFrtJqX6PP9rgz/m8Rv3Z26Rx5jzEef2rsAAwA2l4mM8iP6VQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Gibraltar',\n    code: '350',\n    iso: 'GI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDdFMDYwMzMxNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDdFMDYwMzIxNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iREFEM0ZBNDBFM0ZFNjU4NDVGNUVEQUQwMDAxODNFNEIiIHN0UmVmOmRvY3VtZW50SUQ9IkRBRDNGQTQwRTNGRTY1ODQ1RjVFREFEMDAwMTgzRTRCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XVIZMQAAAslJREFUeNq0VGtLFGEUPu9lZnfVHXddXV1NvKQZmeEG2QWMoiyIoCT/gFkGUZ/7Af4CwQ8JRRH2pT5I9SFSAqFPSTco8pK7Re6uu7q6V2dvM+/bpG142VnF7OEwDMOZ55z3Oed9kMfjEUWRMQa7B40wFApRs9ksSRLsNhKJBEYIwX8AIQRvJ4/viJ1uJyng/v5yoJ9Yik3U2Hn7libiv1IvuN3vHj2ke6pJkfT8ydP3Xt/Rg831h5rl+YBvYvr89V7LvsZ83NFolOsg4PO1mwxlAMNDj59dvnQH4MXV7qHBuw6AY5IUm1/g+vD7/fm0NtlLL9oqbmpax8Ihl3s/gPzTUyIIPQCdVVVKWenKGHQHgbSuzbm0UwEGz52tHn1dSIxjdmvNsnw4nnhbbPaKuH0hQlh6/IizZ+yNvaAw93gCAV2tCcA3Ig4D1FDsWgx+QuwjEWbkeCSu+ESDL5m2M9DjXUU+QTpOntKeCldqAUsMLYNq49AEFHElA9DVeWXnG+L5MH4BIAJ0XMAtCmpUYNJAFc4aM6xG031qMj81RpD7NgZmpmZHXu0FaEonS5fj9Uq6vpCZ5ThLyAeUVC2Aa3Qk6pnVJUaIKouLEAwqjK+phnBlhXfwfofZWtB2nKqqk6ElY8LbEO/6XJIhVHMyK0F1Xyfm+gekvj51bo6vdzdqEJRYFLmudZN7DzZskHYQYrGgcoeqKhxYUZK5HeJEHXa6UZU/GTdirSmEMfMHIBLe/K+mcrD3BgXGtGVQNpkGC4eRFtnsghBFYFCnZTXK0RoWPS/mXMEEGdFKEl4fqwX4yrsMwkKlYGmgjihKZL/z7IZtiD9sRMAcbeFrJu10BvzljERsmAHb0oL/JlCiZmi2VE5o19KWSp0YCsgVv1NEfRHWbjTKpGjM2Qo/ToO9XM+WtT4FBtYlZhCFUBtHKtvSvkk4lGpp/SXAACbxTzWqruOZAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Greece',\n    code: '30',\n    iso: 'GR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEN0UwNjAzNjE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEN0UwNjAzNzE3N0ExMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkQ3RTA2MDM0MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkQ3RTA2MDM1MTc3QTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KGW0OAAAAblJREFUeNrEVL9LAmEYfj79UgqtiCQoHIUobHAwiBrdG8JBqKUpAgkaoq1F/4aG9E8wxLHJVqmla8ghaDB/QA13lVh6X+99d6lIRHRH98DDvd9x3PM+74+PASc1APNEDWgim03h+HgdxeIdNjdP6fUk0QMTOlHAJoLER24FGHp+A2YJtondoUT+Ls5/992HFM/nU1hdXUCz+WpXGNwo7wA1CGH+VNc7RkUslx/SZTw+h6WlkKRdsEzmUv0qc6v1imRyGWtrYVSrT8jlrhEM+uH1MkqIUmh30evpYIzZ1dWYEEL9ub8DRKOHUJQrimw71nipVO2fVLVD5VxAJDKDRuMF5fIDxsc5fD6vdByLbSAUWkEg4IMDOCDHB8JkUmQyF8JAoXBD5x1imrhH3BeKUhcOQeXmnn6hTf3zy8jjMQZ+2trjnpzqev0Ni4sCtZrqxFR3R9ZGl5EwaivPg71NJM7gFLh5OQxfFMPwWO/YSGLM/jrd3rb6U93pdBEOT2F2dgKa9o77+2dw7oX97bG5Tk4K8+3tc7gBKuKWO47T6V13HLvW40rl0a0eH7njGBjTLGHtn0Sl1qcAAwDRS+VdNgkmcAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Greenland',\n    code: '299',\n    iso: 'GL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDcxODhGMUMxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDdFMDYwM0ExNzdBMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTkxNDkxNjg0Qzg2MzI5QzUyMjkyQjk5NEQ3QkI1QkQiIHN0UmVmOmRvY3VtZW50SUQ9IjU5MTQ5MTY4NEM4NjMyOUM1MjI5MkI5OTREN0JCNUJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jNGGgQAAAtNJREFUeNq0VU1rE1EUve9jkkltmqS2IU2tQhXB0FoVArYLQbDFgi1uFP0B4lYEl+KfEBHc66IFhRYbUYTqQkEpLdovTDc6adO0NWY6MZP5eM83KU1tkknjwsswi3fnnXfuufe8QZxz+D+B3RK89FQEq7XoFtQtIVCMrYw2+Vyfm8VaDlqaaW/cP3y1Kdy+ezQ6AJvXCsOylAf3lo/65hEsEfjmhUUMCwDJrubU/btmURff2IzXD1SttWUUlSsX9dcfpKhMggEhmvMNEgE8m9VXde+lgY7JNz6vrz73SmgbQBkd1icS3p4OZCPmCPNXiQgwRsbXNenyhWNT0/if2ph99LAwkfCcCnMHlVURAbEuxcJG4t3Wk8e7ojcGrU2OU1lgUHAbSkccQn3we+yZWTrOVRDRjHKysJJU4ieJ2NwkH9B7vQgFiHz+cijW4zp8hmFIQnDMEZHzqylb9uDWECdS/blCzDIz6WJ6VY71ILtYXSFjiK4NxR0NkW0rGc/gSLeyzVUNbPMAaEIh2Jq5cyt7+ybu7KyQxZGMc2osLhBHE8Y2uBX5RLGEg6EG/cZmZ1nyJ+SyFdAOUwSUtLUR7nTe49fNlWVtbqal71wjuNr8nJlcJN0B8PoqWomckzjeGx/ZZ6eLhZcvGqS8PfaUpfJY9ruNCErGIjusS0w00+Ltifeh02fdfCY8RQDUpYX1wX4CJvIHa42249z9cx0KIDW/eWM0n0m5cRG4+bSyfm2Y/1Jx6HBNy/CyZfaSpi2dOCKtKD/6z2y+nareZAHkpl+tD8Rh+bt0vJNbVm0pyoJgxzS8XIloLVM2zJxBh877R657e/u4P0BVtTA/o02Mm4mPJCiRrjAYtvvd7QiyX+tyOZhgy7DSm5bKIYC4j+CCDTlO/YCibUC9yLbq3tcONC1z3VcOY4ApjUZoVKhgIsZ4M4YOygGLPWCzOr+nHcuI1x8BBgBBy38D0GVnSQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Grenada',\n    code: '1-473',\n    iso: 'GD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowNzE4OEYxRjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowNzE4OEYyMDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA3MTg4RjFEMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA3MTg4RjFFMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RYghnAAAA/BJREFUeNrUVVtsFGUU/v6ZnZ2ZvU13S+n26gJ7aQPYEhKJtOqDIU0IJPhEY0I0RhMNRkHwmhh5UNPYENQ+qvHBRHwzPlCiiWhskAQJbi2l28u2DWxLd7tAd7ezO7M7M7//LKWm3PSFB0+yD3N2/u985zvff4Zc9EfxcILDQwsH+1V4ElTLZoksQAIoZRlw0bfynAvjx3wOWPgPGWKjkXpogkSveZyCSQkTRNKseIsn1KM+7svk8+4l3ckKsH4IB2pWCbBzFh6UoURxVhTf8vli3dSP3m2zBU3ibNahUunD1o2ndrV+1PjnwS1TPjEN3YOlagEX/afDEmGJOzOMbk0F0jLK8pej4bcXtndPzD0zlklIbhvaAmk2tdyw+9XBrhONkaOPTrzcPg1PDjmPmRZA6L21tAjvNODLIyV9dXlL/0h0PFWPJkeroVG7qarW7ChTBi4NtcVkVnnldPdnI+F3Osafa5vhvSpyXrPMw0H5AOMA8waHCuEFE7UFaM6T8VjfcOyvKw0QKwjk4JYZFF0dIwuRs6ALyHvAsLzFxGLg+cEnT1yKvNuZ2B+b4f0mJE9hSKAG8T1VRlmFRr4fDX8cj12YbYJgoDZnN8f4UbLGISzSmtiy/npEKZyZbIZUsgtQMjxf13s1OHB505u7E12fqJnvJOae+n3c+cOB/tNtv061gKM207tA10BPFlzdLelvHzvz+c87Xh/qgKzbx5RlWNzZTOjssXXxX37b+vVNyJh6VtmT3Ukjfig3wHq9F+iaKyPyVsYjYhAdo0toKjPElf8ZI55C5wydcH6Lq7NMA1Tl4LDuO947WLf51IF4eN/i7p/m/WikECx7uAU3ykJHaP7Ie2MbupYv7a1lgrQcVU8+fe74UPuFZFVlJt0tQe4H7XaYyAk/qI+gQYNuoOhi029rzhzZOvFiexI1Opq9pJ7AQM2uSq883RtIfTO+sX84OpIKwlmxC6Dq+ruhK8z5oglnETkZRW9zQ5aZ7+DmJNxF291zMjOfv0e3zZfhkK3hReNAZ+JAbOaLsU198dj03Hq4dPtlshaaPfKsqaKIRSlYn31jZ/y1zUlRKTAvmln/itwUZvr2AHhqGjyu1/DOykvbR1+Izg6Mho+PRFIL6yBzDIqsQrM1cNUhuTu193uGmQIOKQfLjZsKZMq7jOouqs579aKvZorsqMIH9UNtFw/tnfx0JPzB4rYr5ySuKo29nmTN+iPkC+1Rn1CuacuubEmCxZhWr6llc7SBTPKgDEcCku7yqr8XgpOnPDuS+ZLE2dC3lqpVwgLkqjPshRk5XOBEOt7nE26v0H/NEJAGaA7JmveIK0v1//eV+VuAAQAuXtAy981G1AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guam',\n    code: '1-671',\n    iso: 'GU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjBFNzZFM0QxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjBFNzZFM0MxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODAwMDg1MDRFMkQxOTdFNEIwOTkxMTdCQ0ZCNzg0NTYiIHN0UmVmOmRvY3VtZW50SUQ9IjgwMDA4NTA0RTJEMTk3RTRCMDk5MTE3QkNGQjc4NDU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wSFE3QAAAhxJREFUeNq0lU1rE1EUhs+9dyaZTjqZVFPTRChElEJUqAGhHyAuqrSgLsSFiCsXXblwqSJuXApu3PgTRKU7Feqi+NVNQaulC0tqbUhqOyGTmSRNM8nce5z4AzKBSc/6npfnvLznXLI6eTUprGHXBiJDP4oI15SG8rIuJUX1fXh8RT9FxX5fpAVTM87W9cZP6Zgw3w2MvTo6D+2CTxMSIOivLSen7Nfz+58pHFpJAqS4Z0W7SNp7Xd4xABcUIEChiV3RETHBay0i9USNFFyMnK5tTlrrgqvIeqP2EQUPE9GNpO3c3dmBmBp1F9ZWtDMgH4Cf7bQHZEWvGLezjZfn+KOTpVsTzXStgHTQt9FHmnjITbiQsNjl878No174m5+bmRltQbWJQQ0hFOzy2LgepfEbViYWj0RF1BwN0dyuGEwA8gCGIBA1vJUvHthGJtYq/dgofMszuyQpUmekINSdKA2NbPz6nvn0cDGcWvxSuTmxWS7OutpFgnvBvPbIWvWdI5fSiuHw5WdPPr6YW1uqXRHoIIigCSHQKEfYvaXnD064d2K700/fbNMklY3AhvzfRCJK1ePJx1/vi7e4zM4S7Q9yifSckK7b6+2fvPOhkQVZZqFtzqkvckeaomt6+Q+lwHe9FE/Oi9uIN0bXy5cymMYIP8zLV2HRaSfnmAuU2336CrRsc90iKlmdujbMq7pbBSL1CZfXacRg+j8BBgALAtvzf7DSbgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guatemala',\n    code: '502',\n    iso: 'GT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NjBFNzZFNDExNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NjBFNzZFNDAxNzdCMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODBCNDU1NDY3QzIxOTc2OTNGMUNENjM0NTMwOTgyQkUiIHN0UmVmOmRvY3VtZW50SUQ9IjgwQjQ1NTQ2N0MyMTk3NjkzRjFDRDYzNDUzMDk4MkJFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+T8VYKgAAAklJREFUeNpidF77kOn/v3+MjAxIgJHh/4Mv/0NV2NuspBhwgwNPPubsfyPKxcKMohuk/T8jAxMDw/9/jOh6/jMwMjH8Y/zPQAgwMv7/hykK1sfI8p/xL+N/JigXSRYizUAYMGLoBbv6P9Bx/4nRTxqAWMVEnNPQtREDiDL6719QgG44dfjAtQuMIO7ff//+EWE0I06zmZiAFjPMWbdg5rqFQMbreydyasN+/GO4cuNK7ZQ2oAg7GxvuGPjPhMeD3JxcDAx/lu5YziMg//nutFSbXU1RgqktZb+ZWLcf33rn8hFhQQ5cMQsMORY8PhLg4T1yYjMjK3OcqxMDg+L7PTeC+NRYnKR+Mf8y1TPbcmZXqK4NIyMuPzMy4UlTrMwMT9+95OBgBXLffeR49/URw+vp3N9WfvnBqqes++Hjhx+/GMgxGhhQ337+NVE1ev/u06tPv15dufiem+uvX8H5Z5yvXt05deWMopj0f0IpBCf4+OWTsqqRpqqGk7vKdyY+E5dlX9lSv/7VntVb8+rZs/io/C/fGPAkFXzR+P3nDyDZGFpw7+7j6CqPR88eHjq3a9LksitnrqT7xjEwcHz4+gmPy1gIpmpZVfWTp64s37r0zbt37H8ZC7IbjLVMvay9COYfFqb/wFKIQBbTVdDWzW6DsF2tXYnN6P9JyLqkAWA0/qOd0bQCLH8YmZmwlat/gaUQIYv/MTL9YWD5x8CMWYAApVg4GX4zMvz7j27Kf47//9gYWAi4699vTsZvrIwcLKgRBjQaCAECDAAobt+WaLkKAQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Guinea',\n    code: '224',\n    iso: 'GN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MEU3NkU0NDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MEU3NkU0NTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYwRTc2RTQyMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYwRTc2RTQzMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+S1dzKQAAAJpJREFUeNpiPCeo9pSBgUEKiD8zYAF/PzIyskr8+6u55tN/Nql/LED+f2zqmFl+M375xfFX4ZQjw9tvPMwMrL+wqgMCXiB+xgJlMCDR2MA/KM3EgB/8h2JC6ngJKUA3lBpqiPIBzcCoxaMWj1o8avGoxaMWD22LGamkBgxYoE0eXlxNH6hhf6GVPAueyh6mDtwSwqMObBdAgAEADjElH4U24o0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Guinea-Bissau',\n    code: '245',\n    iso: 'GW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZCRDE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZCRTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYwRTc2RTQ2MTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkJDMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+NfA1TgAAAaZJREFUeNrslbtKA0EUhv+5uLlq1ChewBvElD6AhfgOvoKFjZVvYClYpLDVh7AQC59ASGOh4CUiGIKGBI2S7GVmPLMSBCvjbtTCA2f3LMPwzX8us6w8UrwHMIgvmNGA/8RNYfdF5dfbUt0KfNck+TR+wTh5q8c9hjyIA4zfUvx3wDaXCcYgwML4x8C8S6dH38E6bHGGHBOY5w72Ow3cKA8LwkGK8XA9TpPdIEmpfdQBKkpjgkuU2nV4pLcoE7hULgo8AZe+NR0uyzWDDCCkiQ62aodJbanziCOvRfNisEfwY4q3M5ME4/C0orobNJRQOc8x2hMsMrhlFEaZxMHQLJabVzhXnTC9O5kprDpZXFPabV3mSPfm3Yw5OR02rOZHV2w72Cc1FQLY90Yqj0P3GWd0gBVkYaVZd2it6juy0U4LdNzo4Hc4cEH13EqPE3gMa84zykEbdf1xUSnCDwllMEBqZRAP+In+AksyGdb61H9FQSSwSM1VI7AD1p+u7s6WZwweTBA2W5Pqbgc5buj/Xf3j4MEe97DPvfHd5qr2CDfhVEWEvwkwALDLl6s6AZ8RAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Guyana',\n    code: '592',\n    iso: 'GY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZDMTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZDMjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFBNUE4NkJGMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkMwMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+jfKcDAAABN5JREFUeNq0ln1o1HUcx1+/e9jtbnO33eaUXDl1DqVRmYqohSZWKqhFBCb9WZhgiQhJkA+RFEmBf1RahBFSQU8gtc25ypGz6XyYJGqKc5t7OG+7290ebw939+v9u5umsZalfeEHP+73+X4/78/78/68v2e8XLW321nkYd+xQ0SazgLD4M4G1ziw2cE0+T+WMTuv2Hxqx2bWrp1Ng2eYvbX1VLXUEgydhIEQpGelgNiddxWE8R055hbCMCOP/btWM2/lE/p5GuVX0ygLtFLeWkO9vwb6m8GZLiAC4XRbW/X8dyBGMK/EdMQTvB1u5F36mb8cvt3pI//hlfq8BLqmUt2bxsFgN4faznEiIBDh8/oWFxO5akmmTjH+NRvGiZzppgsbxXYXl6PDbO4LUGF0sn4TfLhRERN1cMdcyFiqSmfRMHgPlZ0xfmi9wM8tR+gL1kGsR0x4U225zZYYp3OKk1Ex0Tbe5qDAcPK1qtvENcyZA7y/w82zKyS4SAz8CvQ9CLkrlGQBweh4fgwnKA34OdJ2kqaOWuhtgTQPeHwC4frbdtxIzEiI9Uy1p2GKyXfCIXYRYP7TsH+rj2mz0uBikFhoCIdeySwQkMfExiLMxAx+7fNS1h6ivLmWOv9RtemykttS4kzLUDbbDTZuSXx9xZXeraDpQnyub5AN/dc4nt7Fq1vdvPWCKM3SmF0aIhaLYiR6sSe0yZ2RApG9TKeWcLbHTXlogAr/RY5dO05/8Ixo7VNcTrIloya+viz6J9qcTDAcI/T7MUsG+eyNbFasVqKWOLFgAsNpiWtQGyIYYspmseGdAzmPSxdz6RiezE8RO6X+K1RerSQggY6Z2FqJkcEpFP02HbonHGG7ACxabOfjnV4KC+wkuhI3d08gpIdEt7xoGLvIIWNiCohbInUu4eJQgeT8T+ob6btVvUf0e7Fb3kZXl0nC+jDaCdZ4WTuNEeRxqX44qJeoeu3GJ1d0jJXUSpYnmieJ7tLOXjYl/HQVRfny9SzWPCdLDcSJt+vkJNWCE5cRxUzs1qneB0T1Ys35PDqHJlPTO47yej8VjV9w2V89emILpFNwZzhcNA/EWNXTTIXc7aXXXOzZMAHytO3SMLGhAUV1YwyocJdKz31EAtOoOebQGM2jIhilzF/P4dbP6QlJXEPh1B0gld+S2EwmNZksdbjF4e6OcLKfxUsTnN6Ry6yFssz6CLFTfTjUO0eGFOpbDePkcEjJ0XzKW3r1nKGq9RM53IURh1NchswlM+fGXN9iID7RWijnKQv1sVG0Bu/r573tbl58RmIZEJVNCswuUmXy84zFRCWSqoiNUs3u4bY6zgeOQ7c1u6rHkzumpzssWq2ySxzptIjWtZ1tfEWQNevgU9lm+hQh7pinl0fh/jmifhJHe1yUXmqgsvkbAu1yq8FgyrMt2/RN+Uui0YfGca+EkylUuzua2KZ+zVwIDbvSKVyg2wL5c08Jvzm9VAS6KG37neq2A9LQuT/NwGNRmHWTP9/eZWEctOWbWxLthAuz+OjN5Sx7/kn9XER1a5ZupAhlupvr2n4RhVdIDqXlwUkKbXd2LZZ4CsxV2zazft0SAt4Ye0828n19DYHOUxo7fyqJlUwKv6t/BF45+EF3zkP57Ks9RPMV64rrTVGY/OvjuKOqxlp/CDAALJ7xfKNmRxYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Haiti',\n    code: '509',\n    iso: 'HT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQTVBODZDNTE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQTVBODZDNjE3N0IxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFBNUE4NkMzMTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFBNUE4NkM0MTc3QjExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vIrdngAAAb5JREFUeNrslT1IHFEQx39vbzeunkYvIRH8QgJBBAXNR5EQkIASREhlomArVulSWVjY2CmiWKuVBLGwEYuASIrAhigkhSFgkDsQDWjirbruebfrrFZW9wTJEXDgLcwyzO/NvP+8p6ifTlMAM2WVFQJsUCC7Af9TcenbrRikXPD8yBFZ3oUj8YNDsMWvE51mgmsGh7L2PF501dP4MMGRf8LaxjrVVbU8uN/Ez19/Wf2YglLZgNIBK1sTLOS9E971t9DzqgqP7/SOOiy875QkjSyu7LL6ISngIgHnJ5vxQPP+CKKSXexYluTWDjPz20wMDDI55fL29Q6WkSNO1PYoOD9YfU48D/XAAd5BkpfOMrPZewy39fOlO82juVJGnGn6rD+stHZQXF4jks2vWbNas2IlYJMMm1vbpN/8oH3MYWg9Tue4y+FTh9RSggZ8crkDiY7lz/et4olWxUqibnsBy88q+NpsURnG8Q0TK8yyrzweb4S0f/qNaytCjTPWBkeWMxQl+8fY5xK3pAMGWTnUUDrhyde/U4YRhNc/xzFJmikv5vTy3/NNRDhd6NUvkGiq1MVI39zV/9Uj4RYCfCbAAH4eks60LgqAAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Honduras',\n    code: '504',\n    iso: 'HN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxRkM3N0M3QTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NEM5MDFFMjE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFGQzc3Qzc4MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFGQzc3Qzc5MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++ppqvgAAALNJREFUeNpiZHDfxUAbwMRAMzBqNP2MZvz///8AuPrS1Q/4NV+98RGf9H8c4Pj1D3J+e68++IxLwdM3P+T9924+8QqXAnwB8vXvf25mRji3ZuGd7z/+9qSpM8LEvvz5z83CyIhDOwseDyGbC3TA1x9/P3/7C3QIXJSHhZGcADlz66NmxMEbj7/iUvDi3U/tqIM7z77BpQCn0UCw4/Tr/3jB9lP4FNAw8TGOlnyjRuMFAAEGAEq7Jwn/ToVjAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Hong Kong',\n    code: '852',\n    iso: 'HK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTRDOTAxRTYxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTRDOTAxRTUxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOEM1NEUwNEVGRUE1NkNERDAwQzk2MEExNjM3RDQ2OTEiIHN0UmVmOmRvY3VtZW50SUQ9IjhDNTRFMDRFRkVBNTZDREQwMEM5NjBBMTYzN0Q0NjkxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OzkpswAAAc9JREFUeNrEVUlLw0AUnknatGqhShGKIErVizfBsygVL+JFRFC8uJw9KOJycbnpz3ABF9qKeKwe3ZeT2NbisQoqNmm2mkyeY7RQEJO6FIePxzCZfPPlzfdesIGKNZiiMSNH4VtxbgJ/q5ry0tTpNJaUIoz/klpDSO3rVUOhjMdD8r7AahhfA3KgYuWuTgkgQ1FTTcxFww5Wz3QTYErOJm6Ex0cRQGtroSskd7bF64zFjand3dmJcb2jQ+c4cp9ifT60vS073crWpnZyLA6NaNaZsThWGRyWAUReyKys8fML4u5OOtgmAPA0Lbyo0ri6rDMM/EA1ioQILxDOhQf6iaJoo6Pg4F4mp1yRCJZlfWODRKPgdH7P1+/OdabTEGzFm1vg9RqNjcZ9qozBantQiSVKpmfYeMxtSoMfmI9FyH1+ydTVG3OzXp53rK3rTc0efxU3PQkNAWxu+JX5VH+llExKD09v5ltaVI4OhNSdfHur2znEhlqpKBfOz+hlPgNIh4fZQEDa36MWVOJxW2q7HsKy6PTCkRGMqysYH2NUjfT0osQ1Gw7/qhrzC4d8zBnqZamu9sXlsi1IbBTQmCAvFt787JsqfIr//ysoIvWrAAMA7mZQmc9OmukAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Hungary',\n    code: '36',\n    iso: 'HU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NEM5MDFFOTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NEM5MDFFQTE3N0MxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk0QzkwMUU3MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk0QzkwMUU4MTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+JU411wAAAFRJREFUeNpivKSs84lhAAALEPMOhMVMDAMERp7FjKcZuP4PiMX3kzMHxuL/QDBq8ajFw8pilvgd3QNTgDBUqQ+MjxmE5UcrieFtMagF8nkgLAYIMACetyMUbe9cBgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Iceland',\n    code: '354',\n    iso: 'IS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkwODE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkwOTE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk0QzkwMUVCMTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk0QzkwMUVDMTc3QzExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EtSEQQAAAU1JREFUeNpiZLCYzoAG/jMwPHg/dWtBFuup8/oOAqbGiqfOuNcd2TXnCIO8AAPRgImBZmDUaPoZzcJw5y2WFPL2zdvv/xi4mYE8RkaQ2P2XXxmev2L4/ZcEo8tmxWMx+t03dxvuv1fZgcy//0BiFXkuN82VGAQ5iTea8f/Hh1iEWZkZHr19uXH3i4ZaDlU1menTuBVEGAS5SXI14xURERxS/xnZOZgFBf///v3n7VtGMsL63/dvOEwGhjITMxMonv9///7/P5BPmtGM/1/cwBADB8jDty+27n/Z3sKhrCzd18ejKMogyMXwi5RorD7Nj0X43ffAOHNDNpZnNZUs7Kw8zs4LbzHc2vqAQYCHBKPbEudiTXwcSi0mot+BHmAGh0NLz847s3cyiAiTkq5VhLEYzcIkzMnE8BPkfWAgA4GSBPcdSbHRkm/kGQ0QYAC5z2/IQnQq8QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'India',\n    code: '91',\n    iso: 'IN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkwQzE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkwRDE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTBBMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRTA0OTBCMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+OIHw6AAAAPlJREFUeNpi/D/T+D/DAAAmhgECoxYPf4sZ/wPBQFn8CUjzEqvh7cffDAtX32Xg4WZhYGJkZHj/8SdDTLAKg6QIGyn2fiY5qGdN38/A8OU5g5k2F4OxBicD59+3DHNm7CXZxyykKL548TGDmCgHg6mpMoObWz/Dr19/GHbvLmS4desZWE5fX5Y2Fv/794+BhYWR4e/ff0BLfwPxX4Y/f0BiTAz///+jbRy3te5gEBTgYrCyVgY65D/DuXOPGJ49/cBQW+9FUhyTbPGnt78Z9qx7wiAozMnAyMTI8OblVwYnfxkGIQk2ki0emOwk3MExWjuNWjy8LAYIMADBumJ9k9IhVwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Indonesia',\n    code: '62',\n    iso: 'ID',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowMEUwNDkxMDE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowMEUwNDkxMTE3N0QxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTBFMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAwRTA0OTBGMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+D76wCAAAAG9JREFUeNpiPCeo9pSBgUEKiD8z0AfwAvEzFiiDAYmmi+VMDAMERi0etZhmgOXP+w8DYzGbtOQ/KPsfHUP5H+Of9x/fAxkCQPyXThYzA/EHFmYBPmYkAXoB5tHsNGrxqMXUK7mgTR5eOjd9PgMEGACLNBM7Kx9mIgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Iran',\n    code: '98',\n    iso: 'IR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDMzQjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDMzQzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjAwRTA0OTEyMTc3RDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzNBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bVy5sQAAAL5JREFUeNrslDEOgkAQRf+QLUSUwsZ7eAoaOo7Aoew5AyWcwwNAsa0IWZRdnC3sXaPZxOxPJltN3uyfn6HD+bTCgyJ4UgD/P5hWlg+w4Bq49m93zA9AE5a65neByHP2zQDxxoU72B9fXcATA3XfQ1ujjIGIt6BdgqQonMDOO1YMVeMI0hpkDbjPUF33+3ClWQbB4LFtcWsaRFIitXZ/EC4nq1+SZYmVBzhWFUgI1/bBX6ovROFyBXAAf0VPAQYAymNH2XVfIfsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Iraq',\n    code: '964',\n    iso: 'IQ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDMzRjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDM0MDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzNzlEMzNEMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzNFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A6ksKQAAANtJREFUeNpiPCeo9p9hAAATwwCBUYuHv8WM/4FgxAX1Z1I0LLizh+HJ1zdgNnJQPf76mmHDo+MMb39+IsaYzyT5+Oirawxy3KIMMtwiDOsfHmO4++k5XG7vs4sMxYf7GNbfP0yUWSzEWrrp0QmGzsurGTxkzRj6rqxjEPz7i8HOthgs13tpFcOWWzsZxJhZGR69vUu9OE4/0s9QdXYhAxcLB8OWhycYWJiYGTh4JRgufnoKlj/97h7DJzZuBlMFW4aPLOwM1z88Hk3VmD5GS5yjReaoxUPfYoAAAwDKmktuMenkLgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Ireland',\n    code: '353',\n    iso: 'IE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0Mzc5RDM0MzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0Mzc5RDM0NDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzNzlEMzQxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzNzlEMzQyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+fGQZ6wAAADBJREFUeNpiZJiVzIAb/E+dg0eWodkOjyQTA83AqNGjRo8aPWr0qNGjRtPOaIAAAwDApAPmE9cHWgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Israel',\n    code: '972',\n    iso: 'IL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMxQzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMzVCNDMxRDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzFBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzFCMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5PxNOAAAAaFJREFUeNrEVjtIA0EUnD3vEj9IiIlooSJYCmK0UAloIdhouhSinZBKIZ2dqIi1hZWFQRFBsJWUghaCkPhBBBsl0SIBTUhyBM391r0oClaXTcwNLHss3A0z8/a9I5QBNkDsm7uU2d5aZ15ZfLrLwxbFyKl8b5LvnTMosraXKPBY3eGWQAhBOqtwWU1YbXERKxqFrlM0OQUuYoE3I//SNQYWYlVkbBG6QRGJpiGpBk4fZMTYAlMcXL1HYMiNIss6NNMJSbSmxbLV5m0fXbxC7CIDV08zlme70egQsHHwjGyyiH6fG7e7w2gQiCWrYRJTi1BUg3qnzunW8cvPWSSaom2TZ/RD0WkFKFSUsSQSaKyoBPKrSmBf0JjlTkn4n4xNq8fDN8i9lrB5mCwTmlavRBIovJXgC8UR3xli56S2xAZjDk60Y97vKRdXePsRBiu46TEPAixvmT3rxpcDNS2uvxhkCnOyhsTRSH0bSL6oQWV5e10S35BY309yNQCzZZp5pjIKX69G1wmX4iqHhCzC47BnLHp7W2whJu8l3ZZfn08BBgBy6AUOH3COZgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Italy',\n    code: '39',\n    iso: 'IT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMyMDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMzVCNDMyMTE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzFFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzFGMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oQE2+QAAAJNJREFUeNpiZJjk9pSBgUEKiD8zYAM/PjHy8Ir9fZK47D8/OzcLUOQ/A3bA+O/nz79Xnf0Yftx7wMwiJIhLHS8QP2OBMhiQaGzgH5RmYsAP/kMxIXW8hBSgG0oNNUT5gGZg1OJRi0ctHrV41OJRi4e2xYxUUgMGLNAmDy/Opg/EsL/QSh5v0weqDgSY8agD2wUQYAAUKyFbP8LJRAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Ivory Coast',\n    code: '225',\n    iso: 'CI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQjc2MENDRjE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQjc2MENEMDE3NzUxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCNzYwQ0NEMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCNzYwQ0NFMTc3NTExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qvgkAAAAAGxJREFUeNpi/F7P8JSBgUEKiD8zYAH/vzMwMPJxMbAXPWZg5BRiwAd+/P3NILuqmOHNe6CRnHy4lPEC8TMWKIMBiaYH4GViGCAwavGoxaMWj1o8avGoxaMWD7zFLNAmDy+upg8tWh8guwACDACJtBIpqc7c2AAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Jamaica',\n    code: '1-876',\n    iso: 'JM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMzVCNDMyNDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU2ODE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEzNUI0MzIyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEzNUI0MzIzMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KsC74wAAA+VJREFUeNqsVttPk2cY/30tVAVKC1SRo3jAAjswnXFL3NwfsFvNlgXn1OjFoomJxgsvjInxZtNh1HnIZHPOw1iyLWEXS1y2zIsly2KiMcZjQRGwA1pBaEsp7ffs9/b9KhQ/AhPf5Pf1OzzP+zzP7zm8NdYe8Q/905sPt8tEVUECAkDU5SUuQ4GXx9FcDIw6sWJ+DIb5EHLhfglabpXgr2ABiuakUJE/lpaerQMZg8FYLkIjOVhdGsGm+jA2LA/DkACD9ALmMPDtvRKcu+PD3/9qBirzE2lF8386oHTUUhEOMsKVjHBjXRib/CG4PNzsKWUYlaCHUnHCQyMR4GKgGGdv+9IMFLo0AzNxQMkYGKd0dWk0bbCpNow5hVQe4sdcogpwLl6A/W808qGSGKAiWX69ZgQfLwmjujCB7qgL10N5iKcc8DINMOwpdShKafBRxIWG4jj2rgriyJourFocQ84oBUyiRsu3XtQ6Uu8Hdn0KbGniUzHxHAP2NaAq0S6HdhEqes9fAr44CVy78Uxdr9fq6cAOYON6PvgUZ8QIMbkG2AUqeochCNOgXQ7hsljkfeuPwKFjwNXr2UzJZDT4IWeOsqj7CNaAdBMsQumHpB5AvrtcLG8frpM3P2+Qr371SbzdSH+TduKRpfOEcqcgKxqf3z8T7FQfpK4WcvZLbVBtlgpYDtCh6B1Dnt52aOc6IMn7lsFByPctkMZXp953WsMZFBVB9uyADCkDjGj0Lg081FD3Y52QCO/37YaULph+P4WcmfTlAKt9mEUmhi7hZ+5OaCP1GIkCofDM+31KrxZVQpoPktZOi2pGLPc01Qn+xu5adUCakwEtk3wMOXUYUrvkBaiuKIMcOsDNe6y89Y4blC5I2xWPrG32y1sssB9+LxLptOpA5TmodUzqHP8MsrTG3nBWO1WV63ba+hGQV80XvdC9yHYCh8DPAS++5kT7s8eNeTlmemgMJ5x4p3wYm+tC+GA5czKPsoNEPlEGJINASyvb6SgQeJA9dKRiIbCTA2T7J8Bc1ex9lkGPNtjW4eUA8eG3rkLMdZqo5inmdOgN1Bjt4rSKjTnwXgUdaAhh/VI6kJftQIoOnDwHNHOAdHTSsMrhtiYrwn5L2Ksn10/tXnyjIux2I9cJLHKPpqOcPLMz79S4jCcdWFMWweb6ED6sfTLuQAGxUDtw5lLmkOjTEyZD6S8dHpy+OR9/dDNCUlrtZoQzOCQyDigGomTg3fIItr3Sj3UTGbAcMFTR2OXQ5ZQ0pY4XOBYzOuqAUSmwqwFDjcO2dvscmrP8IzCRgawaWDYA4/0Ty4auTJPD2S67GvhPgAEAIEVx8Ck6yuQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Japan',\n    code: '81',\n    iso: 'JP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREQ2NTU2QjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU2QzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTY5MTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTZBMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+sXSjEQAAAbhJREFUeNrklt8rg1EYx79n3k2WrWGY363EkgtJSVntgguJi5UbbuTSrf/CHTeukDulUVJKCRciGVIYiYvNhqZmm9H2eo/nfWlcbW9sk5zT89TpfTqf59c552Wc8xsAlSQR5GYYSPyMwOGPRS5H5O+BeUKUNZhWmxtwYHqBxIWn00vicugbrbAMO1E1OpgdsBR9wYFjCF73IuQYtSghzZDAAwlHVVMPWrfmIZiNmQXvdfbBt72CIjTQSiO78vGFKTqEc1haHOg43FAF1qix8k7Nwp+E4gtUqbYiJjTi9mgT1+OTqnKtCny3sAyBImNpzHVkdb+0mhnw6/MTYsfXtKmZ4pJS9TnVvRgvF36IsejPwVyenCdrmf6cJdXPwEJBIfTNdYgjmMZc7vAQ8ustEPSGzNS4zNkLUUkzT4Fl5Fwcpf3dqhKj+jjttHXh1r1OnW1T0v/pBFNmCB6Ybe3oPNlVE476cywGw9i3D8DvWUM+de97s0G5QOKky2vtaNt2QVddmvkrk0sSfBNzCMy4EDu7oqaToG+wooKuzJqxETAhL/uPhPgYlT2BYDLiGyPyP9/jX/n1eRNgAFs4yk+Ai07FAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Jordan',\n    code: '962',\n    iso: 'JO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCREQ2NTU2RjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCREQ2NTU3MDE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTZEMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTZFMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+QGsVzQAAApVJREFUeNq8lM1rE1EUxc97M5mZhExNG6F2oTRtzKapdVWJICIuVCguigtB/AMKUlz0X9FaqQtB6S6IYkMKIoJIRRDUhSt14UcVTWLSNsl8ZJ53Mk7aGLtoMu2FSZj3ePzOOfe+YXf1w1/nawV91a5iP4uVDqaFJQRyZgUL9SJeWJv7A37Vn6pojOkJrqAqHDwkAYv1AlatvU2AvSYw/esN+tHAkJA8AcvmelPA8z1KoAX2F3wBwyTAoBY8MstYqFECAc9AB/h/AmqUQNAzsCO4TQCjFvydgaWNNeRiGpSp85AjGswva3AMY9dguVMKg1OtQdg2JD0Kid7dqX/fMJoJXNHiuEwidDWO8OwMkEwE5NgBBDljnEGYFpim0YKzdYJzcNOGsf4JHCoGpqcxNHcN4cyJXYH59hdhWbCqvzBy7wbGP7yEejQB6/f39hOOA0fmUOIp8MggfmTv483J03g7NonCUrY7MCUJAXKpKpAH+sEkyVvcqSROuzKFZMAuFCHqhhtXF1FTP4VlkhwJ8oE+2MUSWEj18m+doKhtQlU+NnXHzl7Aoesz6Js618NwkVquaGhsbMAof4YcixFIuDHAIeMy8YdKm2SUI3rxKtS5WeDU8a6Gq2OqhdOg3oWbjzdrAjKBEyW72ZdsMoTlM0egXJqAEn4H60EeTr0ewHXy7y85VMjhCAHdepLUsDgZRW6CuiLT7X58E6Br1211gP1IXaA7JvmUhjsEXBmL0JeEPBctwKad6CA96B28HejW01ENtzJR5McJqNBmiVxWGt6Qs94/mbIP9HuYT4WbDvNp6rFKm8WG5zAgYOty/OSjIuSIrR4ei3hA16ElAoW1OX42rH67nYnqK2m/hxR1OXiH/9YfAQYA1jgMxWJoPhoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Kazakhstan',\n    code: '7',\n    iso: 'KZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMzkyMjdBRTE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMzkyMjdBRjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJERDY1NTcxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJERDY1NTcyMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+44EnowAAAkpJREFUeNq0lc9rE1EQx2fee7ub3cSyjbXWIgFFS7A9FC+iVEWk9KQI9qIYPHjyJBQE/wSxh4J48qpQwSL2UFA8tPESUC/tRVotKCX+SO2WpMlu9ufzvRybZCOYDLuw7M77MPOdH4vwugC9MQI9M4lWIKAQAWCX0SaxF9OPcsZ7CNPdRTMKYZYVB7ACnLV348A14AmZGdbl9Q8psjpX37rjG8GRxoGWFgE3EOvDrKRAWAxNn6cA7Y50ZqB3mFiDtALIG968KWLDJJWriUJOX2Hov3AuvnQuWJEJ6HRAB0Bdrnqt1RDx6hDpp7TV+8nFMUO26VFS3giGlp3zQKIGvW2PEZdLdFXoyGlTyFQTiRNH4EeVLeAIkXpC+d5HPPFSlVwa1yEGumfV9WO0JJtwn4XpW0b+wYH5Vf/4G3dcKCNYy+7pT97ITGrhhp6HsD++jNpH/+S38BBA0PSVOpxeS3x4WJ2+V75T8LIKBvPOxK8oedtYeVybAq7GoRmKYeE6eoDB/jKSnQV7aoT+vptcemZfmq1eN9G2eCKn59+5Y6/sSaBWHFoBPynUFOhmQ9+LUk9qV86omxPqepZtbQaZc+qazbW5vZu74UGg2zFyM+FXCs3tqK9V5xEg1p9wYMkZ7ic7GfpzVP3sAz63LxeDDLAfjcq3j1pDf1Jb+yJGJtKBlJvlBlID2NvlxtPqNJAqhINyXjpxJZoDfg2GLDlgftwWk/PtygfZS7wjV8op9nUS6wEwlystRvF/1pO4a3LvQHe5vf8V9Mj+CjAATRXoTFoxM8YAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Kenya',\n    code: '254',\n    iso: 'KE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGMzkyMjdCMjE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGMzkyMjdCMzE3ODAxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkYzOTIyN0IwMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkYzOTIyN0IxMTc4MDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+4JAoOgAAAoJJREFUeNq8Vs9LG1EQ/jb74o8kdWOktWuKSamUtoqnekmRQA71UKjkIJSeEqgtmEIv/hXBgz2mpRcRkh6D1IMVSi7iIVBBPFRarIamIsWsRpq4yeY5m24llZa89JCFb9/MvmG+nXkzOysB+EYYIBTRnusSIS/R7dhS2nkVhYllWYYkSahWq3/dZ4zV13/tXySGRcybQVVVHolEznXJwm89Go1yv9/PRXxZnGLEJlKpFH8+O1uXX4+N8cVA4BdpLMbT6bQoaZ2Y9fp8TfNipvgwl8PbpSU8mJnB1NwcnoyPA4qCd2truBsOI5VM1m09fj845019si/r60LVYLfbodE5VohohPRdtxvM48ELki8XCng4P49X8Tgqui7kj+WDQeFSdBD56v4+nCSrNhsljWOP5I/T0wh5vTimwhKJtk68u70tFrG1viQ8JgQyGVTpRfIkv9E0eAkOkk8Fg2AdLXT9AWGL8J3QPzwM3tmJ/PIyNkk3CC6rcoSIW+l63rDaKFpOZ95IJLXgi1UEDU8I3YRb5vmaUWezqBG5+a29Y0Vg2oj6Y1f7BoTf0ikzxH4eQTk5ghwKwd7TA3VlBc8cLlx3eaAbVfGIb25lhQxtkozqlV5Mvf+AnfsTdKYcEqV6kPaCiwtwhSchH/xAjRtixLcXJoQMy0YZ1xQfPN4R3PAAiRwltmBDnKpus7aKYiKBr4ef4WAOIX8SHglOpzIwOjiKQtcpcjufkCzdg6PGMNmdgTo0hP6SCxt7G0CX6HR6Kj4WFUlBSS9Bd+tgGj2o0TTqox4v2OHscELjWgtjsQXi894x+0a2ZOPCc0Hilvr4D8fGfzZwwwekaEXczl+f4pkAAwBDiPf/eEPUkQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Kiribati',\n    code: '686',\n    iso: 'KI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzJDQkU2RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzJDQkU3MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTZEMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTZFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pmFxjgAAAoFJREFUeNrslE9IFFEcx3+/N292dmf/NLppIWJpCoKVCcUWIltqVlAQdOlWdOkWnQsEr12DLnXp0rlDkl7yH5HQHxLLKNTWrDZaXXd219kdZ957vbFT2k6HrVtfHrzffHjf7/B+82NwtP6QzhyoJI6izsGAgEXNtRVCXPWgwyOMpxX8roIiKvksRaV1jgU+cpBxR+yzw5eyIUaJwcsWL00GWUojLgBWjA5zh64TVW4VowOCpjRnSYUa0K9Y67O0cD+CMzoJcukGXtEnY3Eq3uEXjd7CnGIz4tINcEEFqmrCy5USftEU/CXNBeIYjnG1oHe5XhNfq/m7EbpCweD+1j9Fl9EJ8NpBs/6irRYpEOEmLbWRrd7YQUsKBIVfdDk3rzJKtbh8cO0sg6IsFAj/JGXbpG1mrBeUrxBSorI7VjYfTcJKc8Z6FQsyQ7Zru0uSsuJg/vYdnHiaGpkQnO852RM72weEFB+PeYTxxp5kzWA3dDuwNg7fxkBw2J2E2l6YCZo3ny2PjQvY5trMwb4eHBpdGGg1jmoFEOKFExtNFTmHgeZIYpO85NGRNyU7jWcS+rH9puz983fG8HSJxNmpTj1Bi791STIyb2L/9QeLmXUwDDkILLfW0RAjBN9+Nn8hiLMLeYY13sjwtQMtUe/MF9PH1bJTp9cuHG5uMBY/ZzkXrU3xdKYghGioj1VJltImdl2+B1y0743L1859XKEK8b6Dy6sk3v3ml1dLtjs980lwkehs2lUbljSTs6okekhFo//W6e628yfaEfHR5IeHT+bkjc4db6+SDE+9RzgyBGYJyhvelGvyX6F7Ra5qYugU9IC3tij0FwiBf6b/0Vv0Q4ABABynxPRdAJihAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Kuwait',\n    code: '965',\n    iso: 'KW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk4RTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk4RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OThDMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU1RkY5OThEMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rNTKhQAAAX1JREFUeNrElktLw0AUhc8kadMmBhcttN1Y3IkguBC1goKPRRHxN4jiThR0r4KI/82NOxdaEZWKD9Qi9pXX9aatIhQhixm9cDfJJGc+zpnLGJgcrWJz1UExD9w+Al4AaAKqK1IgWClgfQVYngHqTeC5BuiaUmGdew+eb+L0HLh5AEaKwHAB+OAN+EwvhDLid27n+4mVBjaYvjwNNNvA05sS+n7hryqNdTcwlFPi/e/CUdk978sl4KoCNFrdL5QL90qbG8fS/q5vhiAKQvFnwiZ3q1YnDFoEScyxUkPJJF7dhuitFzI6dlx9CqWmWsM/VXxhyWfZiLPIDT1QJkud8SopXLGEF3UH4dpOcGcmKSBSf5wMfn1g57CVyqD6UuGFnvrJtZAYwJGdx1TCwkXQRp1TrUOo8zj6eSQYUbbZ0jO/yQkUUkX7hOeZ8phFJ5jykikbkin7LgIR0SF7uZ3O8qAgXIduh1LlPcSYTdj3J3bBmepQuuxloIzyZ30KMABBFnf5qa4SdQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Kyrgyzstan',\n    code: '996',\n    iso: 'KG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk5MjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk5MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OTkwMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU1RkY5OTkxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZagutAAAAeJJREFUeNq0lc1qFEEUhb/bVT1Dz2gkShZRUQP+LDRushNXvoDuBcGFa0EXbnwIX0BcKAr6Ej6AgpsoYiAoKgnqxskkM9PVdb3V4nKmZwan6UUXRZ976px7bsnO8jqLefyxpTWR7L/jqkafZX4RlI2uN/ipWFcwEgRyxU3Huqk6BBgIVv2QEmFfUplCyUnLCVo34I4MWjhesV7KpWDf+t7z0fPVpQJtReeDDjXu+SA3DzgV+OGsmFwu2XH6vOCDp5wEMFFlE3e1klv7xk5fdBiKFdNXhekgt/ucrChlLkHsvKbmxcBh5YuTtaBPO0SVa0N6wopi9O0cYSzGeNZRjKxcKPnsWFZOV3QjS8pq5Gjkk5eNkiJSyeystX5bqTH0ZcFKJQ97tNFHXXYzuT5INkht9cxaZ5r6wZrhXGAAW16ujGRjyHdHL+Ns0HeefobT2VnbzgG8zblayt2+Pu7ogyMJqFC50+enYzNPxnZ0rg6x4O06fVaYb3J/j1aKjNzbM4f1SZFauzUpMxLO3Bgb9L+RMaNO1JGxbjHpN72+yfnmUtzHR6Yp6PZbG8rUfIalrzUVMxHKGjRnQhSb0kg9JYxdN1maJgn/ljTgJuhph7VX/IxDNcawqKvg1+/tBV1gfwQYAP8yvkoLLzQ/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Laos',\n    code: '856',\n    iso: 'LA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY2OTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY2QTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU1RkY5OTk0MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjY4MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vPM0fwAAAXBJREFUeNpiPCeoxkAbwMRAMzBqNBpgMRJ3AlKC/35hlWZkZGBgZv7w+M2/bz8ltOUYmZieX33IxMYqIC/K8Pfv///o6t8zsSGMhgqx8OCwmpnhznN+LZX2niR/aw0mRobtJ++Ulc57c/4ug6o0w5+/6OqRnMjIoJGB00tANz99q6Ald3l/Kw8Hwjm//v7Tc66+efYOg5wow7//ZIU10FF//zaVByObCwRszEwd1eEMzEwMv/6QG43ffjDLiztZamDKOJir8ShLMnz5Qa7R/0FBwgiKSoygYmIEif//T67R3Bx/Hr4+fPoWpsyRM3c+33vBwMNJrtHA5MHA0NCz7g+G66o71jD8/M3AzkKE0UysWBAjC4OS9I2T92TtalafffAFGPgMDJsvP5F3rr944DqDigwo7aJpQQ40SOLj/P8XR/Jj/M/M9P3BS4a//yUNlZiYGJ9euAdMcByK4kz//v/H8M13RmaE3tFCdTgYDRBgAIXydkRRgS1WAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Latvia',\n    code: '371',\n    iso: 'LV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY2RDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY2RTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkxNjQyRjZCMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjZDMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+92Hw/QAAAF1JREFUeNpibBNT/sQwAIAFiHkHwmImhgECoxbTL3F9f/d+YCzml5MZEIsZf37+8n9ALP4PBCMrcf368nVgLJ6sbzUwFn989GRgLOYUEhwtMkctplkL5PNAWAwQYABbtBShZM+mNQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Lebanon',\n    code: '961',\n    iso: 'LB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5MTY0MkY3MTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5MTY0MkY3MjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjkxNjQyRjZGMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjkxNjQyRjcwMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KNMpfwAAAapJREFUeNrsVd0rg1EY/x2bNWab0aLEBWIkn+XChVJSSv4AKXfyH7hyq5SvcqeUK5I7VzIpLnxESzOTYhOab5t3693hffc+TnPP+5Zxs1+dntM5T8/v+TjPc1iqpZTwD8jBPyFL/GdgWvRFEtKuT53AcnIBmwNjO1OotpVgqH0QkDmIx0UYJr28cRCRRAbhjZ4RFlsJS13U65uhGKlGTUiGUx1O3GF0exJ19gaUMSe8vlWEX68yX+MJ/xIu4xHcJO5FtjR4imsxf74GRVMN2TEbUQ5Ew0ioHLL6DpclX5TUgsBTEIHbAzS6qjDi6c8M8fLFOnyPpyjKKwQXDihKEg6rExXuepzEQuCpD1iFM79K7I9eQjFb8fB0BkkQVJd3ICSiJVIR4G+wiztJkX+feP8xCL8gne6ZwLGQs3uzcLjrMN42nK65U6R+M3KEgcpunZ2ps504aRQiOb2fu9ogzHsIC00UlK7TZymxDpMRklSuq50YJeWfB4h4vRARwcSwFd7FM4+hs7QZ06crqCgowXBNHywWx1ePKBzQhD5j3w4Qlv0Ws8SZwqcAAwBwcmoqHHZSowAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Lesotho',\n    code: '266',\n    iso: 'LS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMDVDQzk4MTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTdFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTdGMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0nsttgAAARhJREFUeNrslc9Kw0AQxr9Nd/uHNFSQHEqoKCrWIsV3EHydPEz1Fih4EfIMOXnOQTA3D1FQ6ik2K0hJ6o6rB8/ZHCyUfDDsZWd+sx+zuxz7c8IGZGFDasDbD2ZLWUi9OlUThBBotYDZ7ApluYbv+2CMoShKE+4HHzjCuNvnp0ck93dQSmHxconDowl6HbM6vI5Nijg+V9An/tKedWpZXQvseR7iOEae53Bd9/+GKwxDpGmKLMsQBEG96SIiSQaKoog45z/P7F/oRshQ0gi8zN7pYDgip92j6fGEzk/OaKfbpz13SG+vCyMwL9S6kjNti0PYXQS3N0iSB0gpYel7Zds2Tsdj9HcHv/uq1mO4vmh+pwa8XeBvAQYA1mkQ97LOB/MAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Liberia',\n    code: '231',\n    iso: 'LR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDMDVDQzk4NTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTgyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTgzMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+G0pyRwAAAdFJREFUeNrklM9LVFEUxz/3vZlyZnyKNNXkGIhDmZtEaKEEZuBiFJfSJpyCgpYGEW1cuHLTP1ETCOqiGYJxIUgMtBpoIUVgPxQdTcksnljjNPOeZ17TIghqcfEtOnDfu++eCx/O93zPU5wf2gAsfkWlAqYJSv1cEpnVIgMHJdYx0BUBWa3ergZxHCiVIdQgGYFU5VuOw73dBIIBGl1XI1ipPUzDYn0LvpVI3btJemYeVopw5qTcMOl4niYilyOgEVytova/k7yWpL0txsMHt+hKnGXp5Rtmc3lJO3xJZ6nEopS0gkVLt/yDyqddJqbuEhGZ798eZezOJG5N2tBxPtxIkcDmPUobWNE5bAvBYvk1T7KP6O/p4m1xi8ErKYi2iL4hXlwf4VJLE3saK1bialsMZUVbTzHY183cTI7kyFWBb7OcL4AAV9YWaUdvKOIDtjwtz9UfdzxpPWefaJZsbXxcFnovcjncwGetPT4WrG+ln22nwaiNVX1sTMM7tp/mKIu1dnX2+J29b//2A/lDxF0HmWwcnVKLc/8Kpg41dEr9Sl3AjwhYQ/2+gP9Zau0Vf32c8afiAsqfis9NP/vPerw2Om75UvESiU15Nx41+FCAAQBN8o5alKABbgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Libya',\n    code: '218',\n    iso: 'LY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDMDVDQzk4ODE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA0QzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwNUNDOTg2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwNUNDOTg3MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oNTByAAAACVJREFUeNpiZJhqwEAbwMRAMzBq9KjRo0aPGj1q9KjRtDMaIMAADHgA7Vx8bugAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Liechtenstein',\n    code: '423',\n    iso: 'LI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMDA0MjA0RjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA1MDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDREMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDRFMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aIartAAAARBJREFUeNpiZNCuZ6ANYGKgGYAZzfSP4Q8bww9mhq+MdkrXpXlfMXxgZ/jOwcD8n2yjWaD0T0525k+V/ruEuL5fvv/fQuqfig/TpP12V+6oMPB8pczor1yqGje89e79ZBD4+e27vBSHjdb7C4+uX7mswcDDyMDwnwKjmX5+/iIgIi4kJ8umqcbHzsbA+e/7p1985BmKajTf94dvZIsX60lwXn736jsXN5OEpMrWG6YMPD/INp0RmviY2RiYWBieMTF8+szA9JvhPyMDGx+DNBsD2zeGv6Snon8/Ea7m/vOV4f9/BhFmBjE2BkZWoMj/f98Y/n1k/MVIhnu/gk1gPCeoNnSzzKjRo0aPGk0UAAgwAEdbUI8xqJtmAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Lithuania',\n    code: '370',\n    iso: 'LT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMDA0MjA1MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMDA0MjA1NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDUxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDUyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dE0CWQAAADFJREFUeNpi/LtTmIE2gImBZmDU6GFhNAvzRsPRABk1GjdgPKiuOxogo0YPiNEAAQYAG3sD7LiMQpYAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Luxembourg',\n    code: '352',\n    iso: 'LU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMDQ3NDU2MjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMDQ3NDU2MzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUwMDQyMDU1MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUwMDQyMDU2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+HeS18gAAADFJREFUeNpifK+ty0AbwMRAMzBq9LAwmvH///+jATJqNG7Awrjk3miAjBo9IEYDBBgAMnEF8ALV3YIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Macao',\n    code: '853',\n    iso: 'MO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjA0NzQ1NjcxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjA0NzQ1NjYxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDExNThCNDE1MTY2Nzc5NUQ5Rjc0M0UxN0MxOUIxM0MiIHN0UmVmOmRvY3VtZW50SUQ9IjAxMTU4QjQxNTE2Njc3OTVEOUY3NDNFMTdDMTlCMTNDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bj2DXgAAApBJREFUeNq0lU9IFFEcx3/vzZuZnWXXdQtX1z/bWuimGIFU0EZUqEVgEFRQF0+JVws6ZRGBBUGnTh0CIfJQhzynsUFiKFaHrBC2XDVXd7F1c2dnZ3fnzeuNXoIabc0ec3j8ePP5fX+/933vIXgI/2ngklajtW+70RypA8uVgMebEw2AAoApHKmTzza6JBAhb0UQ+ke0AbVueb/PCau4p4k8Og6CIda55NZKGaiwVTQXxQBW4bBP7GmSABe7RrI1A6qW0tqCuLtZYRmTJ+bakS3AziEMnKIUcpHZLNPyBYbJxd3dPjnwePp+Bv2g1Ah6iF6ks2oRBGCsJNVF8Mv4VqsIOKenaW/TlYH2B/eOXnvSPuhV/HrS6G0Wz9c7mQbMBkBs0RLMZPVLEV3LWxVUlFWuh/eWh5a1BP/v6ptMgffCBXZse9UMkCntlEI3DtwO14fHFycoozw8Gh+tFqpuHrt+wn/O0B2WTxgqsdcatPhaJi5MKKKiF9WR2Ku2+g6FyC++vAy66xp9jXxJ31jfndF+Vl6qahGW1KVoaoZPHaKrs6ETMXNRTZzc07bOBRM+rk4xe4AAZ2y9g4G8TYxLTFIM1wpNDX0dGpkb3qGU0wKdTIz3T96NxCMqVu3k2W+jCV63J+RuGFt4/W7+/TJOz2SiyGQfUp8DjhqCCE8ccOxK5hImYn/cSbJBPXF1YcWbOVV1mtK8pMa8gseK4kKtw18h+6ez0dlczARm5xC0yaWqwUFfa1fwcrj6UJnTKSCcz9Op75+ex54Ozj3jibhHeX1bQq/RwQHtNR37KppFQuZXvg3HI8vppAUltqb+OzR3LTd0du0KZFZLQAGQN4Ju1utfzo7lAfdvwe19ZUoaPwUYAKgQ8M86ceGrAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Macedonia',\n    code: '389',\n    iso: 'MK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyMDQ3NDU2QTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyMDQ3NDU2QjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwNDc0NTY4MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIwNDc0NTY5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+x/HZMgAABhZJREFUeNpsVmts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'\n  },\n  {\n    country: 'Madagascar',\n    code: '261',\n    iso: 'MG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ0RjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1MDE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIwNDc0NTZDMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDRFMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9rDjCQAAAKdJREFUeNpi/P///1MGBgYpIP7MgAP8+/6D4YqOHcPPe/cZWASFGCgEvED8jAXKYECi6QF4mRgGCIxaPGoxzQALMYoYgZjv61+G30DI/OUP/Sz+D8RvBFgZvr9hZ2AVYqOfxT+AqkLa9Rgefpdg4GfjpaOPgWH9SYKDgeE3F8NHFk46xjEorD//ZmD4CcSsv0ez06jFoxbjzE6foa2Pz/RqfYDsAggwAPr+KDn2/fllAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Malawi',\n    code: '265',\n    iso: 'MW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ1MzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1NDE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5N0U0RDUxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDUyMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+taggYQAAAP1JREFUeNpiZCAO8DAy8TEy/2dg+Pr/36f/f4nRwkhQhTATix8bnz4LpxAjM1D1x///Lv75vuHXx9f//lBktAELZz2X+Jv/f+f9ePvm318mBgZ+JuYEdiE5Jtamby9P/fnGQB5QZ2Y/IKCcwCEEZNuzcldziQORCxsvkBvOLnBYQAXoFTKNns8rW8olCmTM4JX5L6r/V0T/j4j+fzGDhXxyQMFsTpElfHLMuLXjlLJm5ZZlYm389rKESzSfU+zwn693//26/+/Xg7+/XFl52RmZur+9Mmbh/MfAABTEHtYXBdUZaAOYGGgGRo0eFkazJPXyjQbIqNEDYjRAgAEAy3xInECTax0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Malaysia',\n    code: '60',\n    iso: 'MY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OTdFNEQ1NzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OTdFNEQ1ODE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5N0U0RDU1MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5N0U0RDU2MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WpzGZAAAA1RJREFUeNrElF1oW2UYx38n5zTn5Lvt+pE13XLhoNPNaZirUqc4BTdBBcdAwSlMFId3YxdjoHgnCIpXohcieDFwYAteCFZFhcKYFVfHKhq3Nfsg6dIk2CZtkybnY8/JWTtEbaMIeeDl5YX3ff7P//9/3kdhz2gWiLAaiuPthT5YNiC0DB0mBGX3r4Dt429DixJayfP9ucMk5Vhk/dBkDaydfBZUgzC7mYf3j/PC41+RySa4cCnJmfQOSgtdUkRdwFXvriYFOYr3tlxG6QyQOD1GTDcxmqnXB66sMW7owrSfd06+xfEXR3n/1DNMnr+HuapOh18AFRvqOnpkgYalYdcCYIgSjqhQX0HRQkQOPo1fsvpbYHxb4twgrz3/IcePjXLgyBuMnzoCW6+CXqezN8/Ijinu7JtlXlS5kE1yrRinVvd7zHt6sCtzpEM6SbNOUVkfWBGPy03GKwY+8c/6/Am++3Enj748BtunhaRKv17l/rt/5s0nT5O6N0P64gDvffkU354b5nKpF9sFXrIIb1KZeXuQLt3GRG2R8XKIgaFfoBc+ndwLAZHQ50rrJxRuMLItTWp3BsTaoVSOAzemODu1Rwq71WyOg6IoqLEYPkPBh69FYK3B4lK4mTgZK4jfHZ6nmsV8OcaVolS0JPc20dwz+T6KlRiolve+qwt7Kc/MzqFmVxdoVWq38hsJfvjgWYZFTmVkQpKKUX15DEslLt6+8tDXPLj9N9K5BB9PPMavV7ZRNqVAVaReaBCJG1z/7BGiQdUVoEVgt7lKPXR3Fyl9cYjpmTj7jn5EMS9M++cIR+expQAVm55IhcJilFrNEC8VrzHFmXAnXDwRoNtv0djAYwEe84BxvMqlWwe3/M4nr79Lh1Zl/OxeJi9tYfraHczO9XtDxFGb1jStaA4cAVfDBBsFJtKvstVapLQh8ANnymv/2E3ieuYCLMs3ue8nEvEC2esyY/Kbb/u5etddqwPkD/nngwEq3wwTZuNQTvTuL/9pZN5KaonnC9LplqkSDlYxhKniMvsn72om/qjO0Zd2o8kE8bG+yYqzb+ivwP8l3EY0bWYyFWzb2Zix4zj/D/C/DC13+DnaEZqZy7UFuH1SZ3bd1R6p9VQq0i6ps+2Q+qYAAwAlKDesr1W8UQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Maldives',\n    code: '960',\n    iso: 'MV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNFRTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NjMyMTNFRjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0VDMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0VEMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+25GwywAAAhZJREFUeNrEVktL41AU/u7tIzdarUU6oGNFRBlm5cafIAriQmRWs5jVLCoMzNI/ITO7wY24E0Hc6x9wXXQjiCBi1YKPtEmbdGqSOdemjG3iow/rgZvk3pyc757vnHtO2MHAdBbAMA0d3ZE+Ghdh7wGP7l0B53gnCT+euAxgLtBfBrhTnbcj0pZDNnSF7rw6DwSuvbjpIUU575B3Ubse1AcsPb0m0C9fIzhNAAkz2FCIh2BYRVjGLZRYAjERg+PYPr0CeZosAjubFaQ0QFOf8VjSqyXokuS4K7oBqBGi5AzqYBxzC8vInGaQuzoGIsKvS0CapJkxcLeeQx4UF2bSRYKWGoZJH15cYlCM4OjnHhbjn3CdPad1+HVLng3T23xD3JrLavseuLew+30NN8U7LP/5BruUpyCq7WX1i2LmMTQ6hemPn7G08QMQvURnnLh0mgZu+hxzVuXMfkim1vO+OWC1H9mzAxzmTrAyk6Y4UqqWDcLnbwwsM5qHMb+exuSHcfxOb1B86fxVrPaBH6qVeGIoFMuhYZxrx5j4NYv9cg4jqbHqunD9+jLnlJrhV5RMQeyBnFMDC0gFLDoK47aA7a1VhPqS6FF64Vr+AmJWyIbxvz7UHVtqi4VaZ2LexvQo89XWVsT1KI39dRtrv17nsSzonLRTBaejTSIv2MtNQr7TRKfag78BtXyOO9mPdS/G3fz10f8JMABK7r8EsRKWRQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Mali',\n    code: '223',\n    iso: 'ML',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNGMjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo5NjMyMTNGMzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0YwMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0YxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uyeEmgAAAJtJREFUeNpiFNlq9ZSBgUEKiD8zYAHv/jEzyjL//nte8sF/QZbfLH//Mf/Hpo6Z7z/j79dMf6+H8jH8fMjEzCL4H6s6IOAF4mcsUAYDEo0N/IPSTAz4wX8oJqSOl5ACdEOpoYYoH9AMjFo8avGoxaMWj1o8avHQtpiRSmrAgAXa5OHF1fSBGvYXWsmz4KnsYerALSE86sB2AQQYAKnHJTCzkNpyAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Malta',\n    code: '356',\n    iso: 'MT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5NjMyMTNGNjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTVFRUNEODE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjk2MzIxM0Y0MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjk2MzIxM0Y1MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uPhVmAAAAQVJREFUeNrs1s9LwmAYwPHv5hvI3AvqZrrK6AcFDSSoTpWHIqi/OegQQYcOHaK/QNtWastY6jJ0Zeg5OmwR7AsvPLcPL7y8PEoURQ6wMArDoO94aFaZjKbxU+O3Hve1Y4YNB1HM84vk13HFdGDQ8eXd5RV2/YDCxjoxJ9Vx+M7Hs0/Te8DJqjy+vjB8ajPqD2KVRc91uT2/oGNIGq0mypzAu75h5+SIvL0VH6xVyuyeneL4bSJFYXNxibW9fbJmMdYbq5OHpK9UsYwSZqtL1ZhHX11GSD1eeDbkTIPt+iHSqpBEYjZkchqFmk1SqfxRKZzCKZzC/w+e/NXBdAsJEjK/rU8BBgBwJ0VJGmmDwgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Marshall Islands',\n    code: '692',\n    iso: 'MH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBRTVFRUNEQjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBRTVFRUNEQzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFNUVFQ0Q5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFNUVFQ0RBMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YGjCSQAAA6FJREFUeNrUlV1MW2UYx/+nfenHac8ppT0TLVAEZoWxwZKB4OayGJnL6p2axa9NEtggMcZEvV6yxBsvduONMTF6MdR4sSg6wleaxUFhDM1wLMDQ0CHQjkJp6ddpT885vgcKsjijI9mFb87Ved/3d57n/3+e5zBo+gSPZunwyNb9aAZQVO3ZzVLBKMhaEC81M/pzZUPkvt10zsgbZVnJiTkU6B8CS6EZHqKD5Rc7q75uc/c9zUV3oHP0m/KeQnMyk4usZ6DXQc9A/S9QDqKTQjuqutop1BaNR3DjjnELLcnEROr2F59sdgdXUlf8gWAornEp/d+gZn6ps6rrbHmvxxKLBnF7ASYX6zz+GtH0TUk05PoDj19898hz9U+kxFxlCf/RF+OJpXXYTA+I/S/oYuferray3uqCWCSIqTAsnnpXw2nu0OspYieQVZ43VdjN3iY35dKLrIm8+nzVyMj8TaILJrKSrEDH/D3Sjr1ftZd0VyupSBizhcR69JT7mTNsdUv+ZCqrCSIrqijJsVRWpSZvQNaTUiKTy0iymg+YbqibRm1AL7UJ39bIiCUQKK3hT5x5suENYndtZ5VKS4PDAULzTaal6XVRGg7UewRvs3s1Jn72/eS1O2FpLQ2rAXoKtSFjt/CL7RVfvs1drjMhwWLpqVdsTa3l+05uE4P3Er6x+Z6hwMD4H+HZVSbfjTRrhhEc7LGDruW19OhkKJPOgjDIUmgRZ5s/J3x32jq434FsWWmy7h370VYYhE3irZmVfv8cdX54IpSdX9MqzWmhJm1VCNHRV+G5yFVa3FSKaAJEoJparb+fdX7a6hytrQRqvDjygaHkmGHjxk+/hPquzfb4796cDIGWEy02hwXlRZoxqiYj2W4lrZCthtV4WhE55IotBVPtRRfbKm7ta7Tj8AUceA/gMkDfUKjHd7v/+t256WVQxTgjHCw8ezRE3pd8PZEdbUpf2ZUwVffnTqH7/WcXSl9qRPPHICeWgX5fpLu31zcWWP1thTYt7GYUsXiMy4PUB7QW2YAC2ULEDCbZ/2HN2IWXC/CiF8KbU9HawYH4Dz39V6/PSIGIdpwG6LJp+f0zccdAOvg5wlIxP3H+hZUOL4/K2plkyzfTxVd8kzf8E1iMwKjXbLEYtAgeZnAxDcfPv3VYbKnVKWzZ5YVDl0akmdEJhEIay8li0+ddjULS0sguGcpP/ej6dfwelgdg1Wk6eoStlHc/r5n/5V/mTwEGALOVkZrh0WmoAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mauritania',\n    code: '222',\n    iso: 'MR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMUYxOTgxNjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMUYxOTgxNzE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkFFNUVFQ0UxMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkFFNUVFQ0UyMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I0M3dwAAAo9JREFUeNrEVjtvE0EQ/vZednx2/CDGcQiJLYMQ1EggRMkPQKKiA1FQIaVKRUWDxA9BNKRAogWEoKCFIgoSBixix1GwZRs/78W3xyGFxmcfyKw0utHu7Hwz3+7Mnth4fmUfwBqlh8WMFKWuBQqOfRcCrkTZpQkPA09BnyL1KGMuYEFxJU+2jrxio0DZp+7M62gWey8QOSxPICVcZBUHd5bbuJtuIUc9o7gYe+KPPaGshWUowVTSKSO0KR1XxfZyC1vZQxp4MFyBh90TsGhtENLm1yFyjGte1IwnBD2tWTCF54Mm+K07OnZGJtPiVq4/GydQs2JIkgnXt3FR4h4bIjrVMruL8QHW6KhLXWZgktoi5cbBJq7Xy8gyGFO1fVBpIwO9vNRH21GiUz1wFZzVx1in45c/0sgziJO8UK9HCbSDQOR5F1T7V6CWgavpIxQJPuA6VCdaxrJU3pDWe5kjnIkNUZ3E/YPXOS/BVilGUE7VSQxFBrlF27cMTA0ps6nABUb+tJfBnqVjb3PXp/EznR44GvpkQ0qTepVzeWb3sbSLBjN93M1xrx0dWJcGiodbjTIUOq5V3uNBrokLzEyyIeWcPsF9zh1WPiBJ/XajBFfe9pCiEuzV3WntUjqXNF4i1a/WPyGeoDlvcn8cp2uBpDEE4kN4wySufavgBY+mrI/YVKbe6p4WVugOS6ZsjPFusoRTX85jm5fnptnFhjHyz7vOIJ60VvGos4KmraFEUDeklGbK+Hjm33meHTo3eX4llS2D/r+yZfY4t8y5FV422xOzdMzwjH8P6TAt26PhYES9xkbi1zUbRo6MeIHNzA/NvK+KBJDtMCacuXrzX71O/3L8N2At+OVJLfjXp/dTgAEAlE8F1+TZHx0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mauritius',\n    code: '230',\n    iso: 'MU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMUYxOTgxQTE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMUYxOTgxQjE3ODIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxRjE5ODE4MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxRjE5ODE5MTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+lva3PQAAALZJREFUeNrEVsEKwjAMTduIbjIcO6h48CO865/4j36QCB704BBHq4iMNWbQQ78gefBo6OX1JSENntfbGwBsmAFkUDHvmALIThFxC0rABf10hB+mjCmOQppjliMe6qOO4yc2NnuJFCya+NVxTL7QEZ4vvUpzmfayenFQMwchYcfsDPUTLzy1RgQculKnxm7a6wj7z0xncu1Oe0oXJGiY8PouXNZtUnDYKNVY7z9OK08lvPqEvwADAH3qLsG8TnJFAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mayotte',\n    code: '262',\n    iso: 'YT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RTFGMTk4MUYxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RTFGMTk4MUUxNzgyMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTg5MzRERTk0QkFGMDJBOUYxMTU2OEFENjQzOEYzRDMiIHN0UmVmOmRvY3VtZW50SUQ9IjU4OTM0REU5NEJBRjAyQTlGMTE1NjhBRDY0MzhGM0QzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pK5/OQAABEJJREFUeNqklMtvG1UUxs+8PbYndvwKiZ3EiROndVJIE5M0BSSya0slkBBSFlXYtGWBhAQCsahY8AcgdlQQiQWwRIIltI2g0ECqkHfckCZ2bCd2bMd2bDLjGXtm7mXkCkTVOKnEuaORrmbmd7/znXOGwBjD44H/uZPwv4I+gqsjtLeHWUonGXDYILIBPQGCodFyRCvlqbOD2uIKBkQgRDodmKYIijP1nyaeQBNHqMaodu2tymrEdO1NlM/o0TR1fkSdnSG7gpgAmufR1qZ+LkzPLAAF4sMHzJWrtisTlME6UTXCupbaJfJFvL6B8lkIDuB7s9zgGb23D6an6edHyM52+vKrWLBXkylqbp7UFATGKSepRhhUTYWNda7JUcmlye5Olub19YfMaFjNZbUffmQmJyGXpZub1UJGUyk2kVR5gho6xxBPYcgj7TKA2TipcTG1espKXS9z1AtHoGPR6KEoGldfsNfpdH337R/xnaJVYCsKMBiZeCKTq5oYeOfdlzEm5ucWLRYzb+WDhl3He722vLK4tHTh4oXt7djuTsrt9tyeTn/+RQTAVq+TWk8JB3uo9z+8mM2kFFkaeHbg9q1b+5n9F1568b+ox9ItFgqxrehwOLybSICu8RwLUHN5OIPb2mZ3ubk2n2N0zAtg6gkKAFWEsImlY1tbw0PhUqEYi8UaohVFMQvWUH+oqdkh2B1iRdKqUjqrG+gSwX/86eDNr0cl0g7QXKlaAB/mCwW7yyM02f3dfofLWZEqDQ3J7xfaO7yFwl6gJ2BsC8UisFarRTXBDk6ZP7uR43i0/qfEAbI0+YAQ/P5OlrNyLJPP59wtnlq11hCdy+cye5mJidcl8YBlOIuJ38HE297IDfioGZh0glRA6wS9CrBlfiNy+FoXxRnDKIlFl8N+f+Y+wVChgf6jDRk7P1aRlampb6bv/LS5sc6wNEfS7Nq2k4bvJ90uDzol6Hcm/AIPrbGdGgaKoePb0V/u/vrl1FeJeCIcDjdUbTFbrl+/+tvM75WK6O0IJJIJ5O+iSDanwaqF7eX5QBHNeoUACSzBIKSl0nmXu2V/v4gxfenyKyc0X7lUpgno6Oi02e3VWjWSy3pA9gB8cDOJALFAvvfJA6Njorr2lyS6SMpmszubnYokl8tlm8123Mjc+/muy+0Ohk6TBJFMJDPlsu/wQMwfMCarVsxg2oQ1XM3vmtva1eEhLEqhgQFZVjKZvXg8Pj4+fpxqT0uL0doOp0OuyLup1HOhEOU8Y6uPclySkKZ12Gy4PjzmWnVufmE9sur2PLOTSDYJwsmDvraymk6njNJ3B3pdbs/q8tJ2dLOttVUURU3TKIpS5Gqr1zsYHlFVZXFhThIVn6/jbHjoqX5PjyKbzao1lWXp7F7GarUKVmutVhMlsVQq+3w+BKQkiX2n+hp9fhxa03WSJIx19FNNk2VZeMKHf+NvAQYAoQ8NT92b0fIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mexico',\n    code: '52',\n    iso: 'MX',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczNTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczNjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxRjE5ODIwMTc4MjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzM0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0LwZHQAAAaBJREFUeNpiZMhw/8SAD7x4zODm6M+wM6+NgVjwKKeS4enUTgYOQVWcaliAmJdhAAATwwCBUYtJAv///aOfxf+B+Pev7wzPr51g2NwWydDkb8Rw5dQR2lvMCMTvX19guLWrleHW+bMMBw6cZygPtGV4fvsyLSz+D2f9/PWK4T87N4OgmgvD1TuvGBz8XRnEeRgYVk1sRKj+/5+giSxE+ZKJGUy/fHmLgecfJwPTh6sMHB9PM/z5+oXh4zdWBo+CLoZf/9kYnr+6zSAupsrAwsJKLR8zgskvnx8xHHv0jGHJ+a8MD8UcGFyqehg+Pj/J8OXjdwZbHy+GJ88voain2OL///6CaW4ucQZx9tsM/zS9GJZ8MWa4zf6HQaK0kYHZ0ovh8/MzDCJCsmAD//z9Rd3EJSGlyyDCI8WgzXKZIUDoFoPj48MM7L/5GYT5XzJwCIkxKMqaQf3LSJ04RgaSKk4M/C/OMdz8+53ht0kOgz/7WwZhEXEGaRkTksxhISc7cUsYMRgBMcM/YOplYhyAIpNMS0crCboCUOL6PBAWAwQYAIwVfZVkoDrqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Micronesia',\n    code: '691',\n    iso: 'FM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczOTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE5Qjk1NzM3MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzM4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pVbFKwAAAjtJREFUeNq0Vt2KEzEU/jJJptMfu3+u7ML6i+zdXop4JSi+hyD4ArLghe8h+Bi+g/gCXgkFvXGFdi1ut9NpM5N4Tqq0CGmbcQ1th+lM8p3vfN85iTh937tAjeHc/CoEag1F32uxkxJCy8vKg7dTCfsnipg1YidIAj3PDW5uN3B3N0N/PINMRC3GUWM0q3BvL8PLR4dQBPj2wzd8HU6R6QTifwJbS2mlz1Y2n8psZ5VDU8etI8hcUQKVBNwl0FY6ZzgxFsO8hJbialPNUS0vyQCjosT3C+vvOYCGErAuPCcamI10SZqya1OZICUANjCnt5vJRfodOx2Ylo7Sbr3r2xSQdTWAk9/uPb7RxNQ4VIT4c1IGHcw677U0qMjQbUh87k/oqujObV5O/OrYVLhD5fL8wQFOnxwhUwnGMxtkUJDWEA6vHh/hxcMD3L+eITcVQiWerBKXyWn64TTP/1rvwyaVlab3kzUtLehqnjig5nBy2IYhsQpK9w9KvQqk2lCq9zvaS8H6fjrLvfsRCDaoMRtqv5OiNyi8ftwgON2h9tigZ/1Lg6K0PrjtplrZSle6uiKmvGCmF8EwYWbH9cuDA0ql8M+41LSUXtd1/XttHf8tFbPfIjY7rcUuNSS3L0uwyY4VvUlMjfWsXz+9hTfPbnvG+Qq3X1mvFoSqiBKnm9kyOUUp3qRb/RNwh/bfL8MC7z6e+c7GjWKXGkfsnhy/OxEAO7Y3mHiWOy1V6yDAwKM6xx52+/IRKHb8EmAAirfmzWzPA+cAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Moldova',\n    code: '373',\n    iso: 'MD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOUI5NTczRDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOUI5NTczRTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE5Qjk1NzNCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE5Qjk1NzNDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+UdXXEwAAAipJREFUeNrUlctrE2EQwH/7SDbbmI3m0SpF2iJRaPEQ8FJE8OJFD55ETx5U0EMFEfInWBEFEfXmQfAmCFqhFKHSg+2lBsFSNAj2UFqatNQ8TLN57ToxBy89rCUxODDsx+zs/Ha+mfk+Bd4W2VVU0YM8u5fiauo99jc8iXYYKq985G+EUKOOGHb300VD9EBUeiR7AquKqPoPwS2gT4pTrYN/PwQi4Dptm6J0C9wQmCG9cghqsn76MMT8bAgzKjb5AUPeuY0ugI04pD/5uH39AEGBf8+FWVi2KLtwU2xfMhpGtAtgRbJa/Kzx6EUfM48tEopNJGsz9SDMk5cm6SVNxsc7WPfsuQPhqM7l8T5G5n5S2qgTUFwSQzoXT5lYluRQ9Z6KN7A0jr0Nc2mNuGUwGxvm+KUVlKbD/Md+Brc01nMqTkECxju81a0uNnwFPuQd7gYusDwcZHpglInCLcqObPs+G0UazHE6CZYGUiVo8ohJrlbi2sgb1jMx1paCXBmdweovELH8KH5oNrswTlZYJ7xR5Ky2SKigcsK/xmTiNdsrVfJV7XdJvM6z5+aqb8Lp8RLJ5zD1TmNhuohhNomdV5lIlRkccqhvieNAh8ENG6KW6BicsRxWs3l0SfLkOZejSanFqtxKO94DegYrArFlXNwMjB1zuX/nR/u8NgX4Vd7rbZ+uXRKt4JWsPKV7Hal7ZbMN/VvZwycCap0VtT/r/+o+bmVc6gX4lwADANw8m6+4QijQAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Monaco',\n    code: '377',\n    iso: 'MC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QjA3RTdDNjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QjA3RTdDNzE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCMDdFN0M0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCMDdFN0M1MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+o1HuEwAAAEdJREFUeNpiPCeo9omBgYGXgb7gMxPDAIFRi0ctHn4Ws/x5/35gLGaXlRkQixn/fP4yICUXCzMP92iqHrV41OJRi8kCAAEGAK++Cy3NEBqaAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Mongolia',\n    code: '976',\n    iso: 'MN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QjA3RTdDQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QjA3RTdDQjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRCMDdFN0M4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRCMDdFN0M5MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+XDrqKwAAAkFJREFUeNq8VT1vE0EQfbO7vrv44jgKiZ1YQRb5ATRRJCiQkKADGn5BaKho6egogQ7xExBlJBoKUDpEgyhQCiJSxBKREcaJ4yS272OXub1EwiYFEnuMtPJ5NLo3b/a9OfpaX/4GoILJMHxoPCW0xnynjacPn2Dj7jqW9lr4m2gvLuPG2w08evwAB9U5aCmhON8YqzoFS/cJImCwaQOTwnkIPv3JpO4Rpq4lUBc19DEKCTGZSH+SBVx6eYLwVoykJ/4PsPAZvEM42VSItiRInldVBOMYKF/nMddTTN1MIEO+40HRwCwiMyKEdxIGH6F6L2JxaZsrBphy+yQdATVrkHYJgw8+hh9Z9iv8f0Aw0Z/2+pdQv3tWNTIVE+JtbqAuuAE+P1hs8xpU4prYMWN9SCDfoPmpj9qzAQ5feWwpgT7/qkWNlS89q/C4Kxwz1nkLqqYRrKUIriR23N7lFF5TQ8zxmeUy7W7cY3esE8JoS0BWDfzVFIYnEW0LW2CGTq/4lPHZeh7xy3lNVu9HKDVThLdj6CNyq6pz7cSsM7ZJSyBpSwRXU4jMx0UDizJbmTf3/gsf8Q7h4LmH4zeKYbVz4DE7kTBQC8A0j1g1mCmryVzK2ZJX4ALRvKHiXcLRa+6HDIbvJQbvJEwCKy7njMWMsWuxtVaxGyreEfi+HtovVfY93l2dsb4uXeCRd90BVyxvfmfEVspGKhd4TbKVbEPMNvqs+FlDBW4Z7/GYK9m4M8CzhSLK+XO2KmUtF5dxqLFfAgwALQ/bbU/KwEgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Montserrat',\n    code: '1-664',\n    iso: 'MS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzRGM0JBODYxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NEIwN0U3Q0UxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRDk0NjlGNUJGQkI2MjlGQjlENTFEMUY4NDU0Q0QwMkQiIHN0UmVmOmRvY3VtZW50SUQ9IkQ5NDY5RjVCRkJCNjI5RkI5RDUxRDFGODQ1NENEMDJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+w2IgWQAAA5FJREFUeNrsVG1sU1UYfs69l7WzWxlt1466spISNs02ZLgExpeogAmbGwEyg59hQKiO4PwIKmqm4JQQ1MVERhxkGfiDRBf/YACDQBgyzDbiGMOMwcCytdCt++rXbW/v8dzjiIs/jJnun0/uj3vved/nvO/zPueQ3u0vOzesrOtMrm7suNvSDJg/r3DtOPH+qZJdq4+KCA6KYugVu79225wxZ57jjc4Rb4AgCX8LCogihNlfeDY99el63/mOyozde56dkZvjG45DVgdUMXmG/gXbrbYK/d7qJ/YLRZlf0RFfgGXhn4CClD5TLxuMi/WDbsst83NPe7MW9dZ/Pb3y+ciez6jTVRjrxtqNje3xYwePR70DzRf6Y0qc/MlOqFZiAhAIBF7u/aoFtvbITISj92TBM0rjQwGHxaBEYr+FFDOoIUUYy3DJXl+6MjZrdroqiA/++rhPTSeI8Hy2wTAQBh4AotBUMhGobIVTE6nVmD0QGR6IhnJLltgTY0l3ro+y0HMt+kcLZi3Nv/lDc9DhaDG7bof9ZJoUI9MAhVfGeP1Wi2l3zebs/NyermsfvPetp+8OkMGb4B1h+uvOskU7X1ywLT8uN538qFOX87D1yaqyK2/W3ly7udziN176vq6p95MbabcVC9ovExoDJIqRh1ymtw+/GxGtKf4O0V4gRwP73R92dPURmJlKTBBx7ztVDUtjRT0/1lUdeqnR1/STtDpzZFnf6XtZ88sqznzT0p06x7Vlvt5t8iVdvXxhCImEntcVOHJoq3NZXs0Bf/jSzvPXjavW5a9faKtvOAOwAEEgVHIEB7989ViD39olZ4MGWc7JX5TQ0LxrbTGkSj0Xf950sX1fcfGO5UW2tL6kRCQGA9fEVLTYebYfqXYb1dkDROftx4rCmYAFiEMbKSFAGZDJvxUCiVVEtUwrk5Joium4BwJ87HYWRqBwH/hPn6qe+5jdXX7YYDkuFWx8a01p/G6woHAXYGTUbIxsGssZHdFUF8bV10Ykcz+xF8qXkqE9bG/Ky2H/5Lar5LXS4XKdu3VUKMnrXpKRWryl1+u5QbS2CBOExW3FZCBSDM7NmfdxZZhEznqiC498l9badoXABKjjvp4s9R+HZRSwpRj0wVAIGGIG5w2NHxkJkwTlkzBShDkvuA4Tt9YcSvCvQO4fbooJVFSlEhsl/huQiTefIFBJVVVMARLquOGmBP9T/wW/CzAAKWlmnQeZkEoAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Morocco',\n    code: '212',\n    iso: 'MA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NEYzQkE4OTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NEYzQkE4QTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQTg3MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQTg4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+AgxteQAAAiBJREFUeNrEVktr1FAU/m5uMppOY9up2rEVVCgtFEU3iooVdNWFe3euXAiCf0DsTty5E6VbN+5EBdGFuFGLG3Ezm/rAQseBthJppm1y8/JLTEREnHScmV445Obcc853njcRDQzXAYySHPRmWaSverbBb8+egGvYptUWcEjaCZFS2Caw3o5SHwGXjQhaDFQCAdWLiImFIardP+biwREPFciU13XgXOHRGYVnJ3/GKrqR6ogkSbsJKVMIDctmgG9eBE8JNGWMaqinuQhIq9SICzjTEtikCZ+mbhxdhz0cY6oh8WKSHFre1GNcnlnDqUUDtWqAUZ5dq5mpE+p/gUMaSWq6x9Zw62oT1opA+ZPA9GcDygBejvl4clZhoxzj3k0Lu+ioXaDqgjfX2r8ujzxtVfq4YPq4cs7Bmwkf9bkRfDcjjF9awYX3Jdx9bWG/kmhkA9Yi1U7LiHMDdVZwYtPAbK0fM+M2Lp63UwjLFZhd6CeonsrITs9x3s2vRhSEJvB2yodO5Dggb6/C8bq+pREpLGtkPf5w2oN7MMb87UE8vzOI5mSMx6e99FR2A7hC0adDjPYj8OF6BYeDEk64Jbzj3lsE5vsUBrYw0S2bK187aPRLKWSTSexTGpZY4QRmjO9L5K9GEQ4EEl6xe8wpXOMNGjzErpVpo4W/miPZD/AiKfMkkel4cyUG3Swa+Qd//S/8rnwWO7H07JfH6vGvj/NDgAEAfcqvgcMO6pAAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Mozambique',\n    code: '258',\n    iso: 'MZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NEYzQkE4RDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NEYzQkE4RTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQThCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQThDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9o9/QQAAAvpJREFUeNq0lt1rFFcYxn9nZnez3x8xGpMl6xpMNCaglCiliAqKYEVbCQriBwreFEuhsVAU71oopRRv2hu19QNBBEVQLxTxoqEgGsvWoIwSFzdo/EjiZjOzu2YzOzOeXan/QGcHZm5mzvmd55n3fc4RP36yafzYlmXteFWDt2VQBA2+IvJ+KRx69BvJRGTv9l6mkjGYKoFlg2joAgzlQSLMxvECmVPDrPlnHOYFIeAF22mobEVxHEaaQzRJlUOX/uW7axr4PZAINBQuRuL9es13S1obNi2WFMtcSs/nwJe9FFvDMGE0wnrjIxg5r20J7DmFFbM6z8J+dm3tZXhlEkomVKV699iGp/a0cFjgeGkKCp63ldBex+gtV7h8YYi//AOMHvycuWmdRXgxccd+cT/Ur6dVf+Se/g5t5WsGj5tktqW4ZZT4DJU1/hAPkgEGDI2sWWSpJ4QiB9r/V3FHK/xdKrBTH+XrxRXuyBn/CE7QZXTS0T0PTa+Qzs5xWoTZ40zwhJI7VZ1IOAz1P+ToL61sWNXP+v0ptvw8wPeFCuGDj6nM+Hgqq7wvsZCxlnUcCaTcAWsZL7/mekg8DbL75lp++PZPXnWfYPhMH85PUayKQAQsqvV/KwgJ1RWwpyUOhx4VuGsFuX6lg84Wg7F3xzm5Y4p9083Mj1dpKwuy1jTrqqNocgmugHXTpll20/nfX7Fs7AhPNiX59HYWezDK5OGldM3EuOrz8lVVo0hUDgm5U9WZwCo93a5EnNVTjF2OY8358KVKtPaYvLmp0jbYQ+6bzUzmDTodX731HNcCRBAxdR+epiqqv4qRj6N6qnSfzBDbL5NL9i+Wu8lVD5CaBF+sgl1RKOajxJdP0nnxMb4+E/ulfD0rk0t1N6vrYKE4mLJtTKuJ9l05Os7mPoh8Vqv7/75yGSyk3Nl8UO7/Fl2/jZA4lKeWEdbzxgA/gsuFMOH0jLRWw79a2v1GWltuLLQOXvDFCyN1LhtRohhWjg87kNpQZu3oY7wXYABi1iBcy/DE+QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Myanmar',\n    code: '95',\n    iso: 'MM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VBQTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VBQjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc0RjNCQThGMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc0RjNCQTkwMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hqhQlQAAAbNJREFUeNrskrtuE0EUhudy7L3E9q7XlxDZEgbFCRApQkQgykjpeAFqyrS0afIGKdLTIB4gj0BKBEWaSFEig41jiPBtvbb3Mrt7MpZF7zWiifJLoznSGX3z6z+H7uweT6nCGXUmAjg1c4ppqI4T2I4vwljTwCZaKbI/9I/Wov6I6WRhQY/l5OV5oZnP7WyVp17ouaJSMDdXUp+/XA8FumnFpWkkhBIkScQ09BGJ50fP1q0VDfZeVw72X77aLjNG6zXTdUOyrJg8cYxFS7vpuiVLf/umvvk4//7d8yePTCFiXQPZXR6NBKVHy1DqD43u0G91HBn9Rs20TCWXSUfRP6Ald2h7ugqN9ohR8mKr1Po1Pv3aUdJ8NA5kdzk0yPEwxnyBV61R3lA/nlwYWaX9exKE+L3t2OMgVchiuAwdfkJxQlUosW+NcROw+oD/uB5UVzN92+tcMlirOah7CLF0QOJk6EP7U0j4rNLp4DwQZ1G5oP85d+c7HvXQp6CjrxExpWoiNPWfptjfhaWzkc4WRuY7r6U4ieXfLSgLwnkS49CE1QWf8oSBMPLfdI++R99F9K0AAwBXEavacm2ESgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Namibia',\n    code: '264',\n    iso: 'NA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VBRTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VBRjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUFDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEwQjc3RUFEMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rnH82gAABORJREFUeNqslmtsU3UYxn+n7dq1o2Mb7OJUBGZEjck22ECHiW4EI4iiDEb8IoPAMHFsA+/6xS9+YAheEgNjDBkDhiSKSKJhExmg8cKQXbgMAxHGGDCB9bKu69qe+vb0UBiXgOhJTtOe9LzP//c+z/89RyH3g7NAupxu/uthNMBgANo6Medn8dX2cmYca6HjpTIGunowJtjD/wp/dJv0L5ELSkhujIEBCyhyxeKDmMCdiZqM0HlRlu/j+XXlfDkvC+tHqzn45ttSKxHLiPsIBQfBYCA06LebojeGRd1xWG0D5GZ2EAopNJ+8H2+/FWze21O2nCK2IJuNG19jTqAb58TptBxowGZ9FKPVpokqhhh8jm5M+IkIiyZBI0mpl5iVfYzJGZ0EVAPj7u1hZ9tDXHDERxYWPm9G6RxgxtoythVnY/24isPL3sGDGXtCLiElqAmE/EHcnhZGpzxO+qYqXTjcV6GdOqmNwuyj5IzuxmIKMirJiddvYnNDHsR7hlL6hPKQUE7JpraulKLBszgmzaDl911C+QhxYUo1IJVNeC+fIQYHefNXEqoqY7Fnpy4cMGIa4cTljJUAKIzM6dcux/QKjMOKZaQDn0dabvGLqE7Z59Mo6+dnM+yzao6Uv0WfRplzHWUrGSlPkLppPfunplO0+1XO7/5aFzYGCfTGk5joJeRScRyK1YhVZ4ikxH58l6XV8RK0gCqUp7HkZ7Jp8xJm+4UyZxq/HGzUvIxSKtdSroD15Szq+551y6dJHqS7o7J1YUNIC1DD0QyS4rz0uIcRCCr80ZnODx0ZIipt7boErgFeqC7TEhu7cjWH33iffilvTxRK1EhcdC81yq117M1PZnbDQi42fQtp42C4DdQgV1Mt2+ZidzK1eyZy/NxfsnIDv50Yg7vXDKc6sDydRe3GUuaqkljx8pDupS1MGQpe46WTvGKhrKlgsXcXayufEcqQRomqaqJaLqPCsn0Y3ifb0EzjgcdkIRKg8+clRC6eW1PKtvkTsH0qXlbcxMvBMGUbY5MnkVa/gZ+npDOroYSepu1C+bB0zBYVjG6IIb/C4lZpq0H8bD+DpSCTzfWVFHo7xcvptGpeXp/YLqG8TN6CMGUZC13fUVM5TaccP4Ty1sJX9qXLx0wpsuWVLGyr1nDk9feEUrxMmCBrU4cmNlW8rP+JpvwRzG1YJJQ7IHXcTSlvFJYxhl9IW09jfiqTOklskXoOR65Mn+YGIdQTG/VSp5y3HDYspcSzi+rKJWILN3h5a+Ew5RmhdMj0qVoSnT5Hlr2rUcZHp4+e2L7WiJdb97G/II1C8fLvpm8iib0N5VDh5pNYp4zXKAs9p3FqlLqXtuunTy95C1dBdelVL33qHVNeeygza5pddQsm2O2fCOXSCGVcwliNUlEUVBmNfZ52xoqXaVs2sK8ghaLGpVz4UU+sxfavBPXDrYT+POG69HKp/bgkNu7Kk0QKKYarXmYVfwhfVFAi06f687LI9EkeE6EkdDdPbrfSbh3t8np9dmviA1LiCqVfEtvOgyl5ktha9hYkM7exggt7dkS8NN8V5RBhk6rEE5sUG/HSGMOgq4eAv4vJxZLY9ctY5JEZu+JZeTm4Oy9vGS7FbHZLsfBbiDvodGKxJzG+ah2/znmSFxtLIl7eI17abf+LoP7G4/5HgAEAvGpSdeM9fnwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Nauru',\n    code: '674',\n    iso: 'NR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMEI3N0VCMjE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMEI3N0VCMzE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUIwMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEwQjc3RUIxMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+zsfIiwAAAWVJREFUeNpiZNCuZ6ANYGKgGRg1elgYzcLwm5l2RrMw/KeJ0Yy3N2jzsP/BJsP49+8/oKUszEwM/8mxnEWQ+xcvx290YWbmb5++f//3l4mRke0/Izc/J8PffyS7mkGtCU0A6E6GJ+8ZhLhs7dT//f9/9PAtho/fGST4QaaT4npmBkFnhv+MKOjTT14hntQU+wmV3iFuOv/Z2K7fev3z408GFhZ0lXgRCwM7amj8/cfC8N3PX6+n0JqDHZQ0uwusvnx8u3je0Z/M/0AeIj9d//vPyM7y9+cfDnYWaGwwM/3+9YeRjYXh33/Ksgwb8+8//44cu7dh3w2IwLYjtw8cvPXj9x8GmGVEh7WYA3rMcrN/eflp34XH7Gwsxy8+Lu/e9ezxO0Zh3v9//4MimYQUgrUqAKblD99AzmRiZPj2G5haGH7/I8lc3GUIMJ3xcjAAnQk0kY+D4Q/J5oIzOh7AyUpJRgcIMACUJouaxkAcBAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Nepal',\n    code: '977',\n    iso: 'NP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRkNCMjg2OTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRkNCMjg2QTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEwQjc3RUI0MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGQ0IyODY4MTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8vLQDwAAA4RJREFUeNq0lXtoU3cUx7+/+2rSR9L04SNWbdX6RuhGcW51uKp0FXVsQ9gfUphTBO0/goj/iCCICBNREJyzjk7ErlPEirZqnYiPWtOVRTYb1zZVY9NIjbFpk97eR+5OkmL/atLXfnC53PO793zO+Z3vOZcZhoHRFvvspyoIGYeh9rlhaFELxrOMpspR97hEH64JPt9W4Wt0QbL9ADGTPEUwVSshOFcLBard1eKZzqqzOcq7eqTOKgQnTkkACcG9fDoXSMnBtrfNuOc68eXWHspezNgHshF9+PofwDwiUBkHp9kOy1AYZzuquQvtp4/OD79ugtm+ErxpwtlzSQWi62DBPnjkMJwaj83eJtx5dvyT3a/rHoNLOQLT9GEfxtSBmSTG7xyHxbUXUHj5N/xjzoNuMJzw3cB118n9RUFXG8wzyyCkjSv7hGDF0430VcVY7LgJ25ZNsH2zASue1EP9Yi1a5AhKBrrQ8O+phQde1jQQ9GcKwBJ3aUwOzEkSQm1/Qw8GP7gy+19hZmsj5qtBqLwAW2QIh15cgufpwe3be267UxmrABOTgoWEm9NyoTv9cH1ejuklJXiZYsPvjjeYwS+AlF9M9ddAp04SZChQAigP/JXdLlmr71kWVULX95CLhxMCG6pKgysTgibg7YMbyCDb/SV7jdb8DUcQ6q4lsp0UwIaFQBHQ+2pQhBbOp2dpwhmDRBVRFOjyIDTzXGTrg2hs+5F9F5G/vZW37ijCXmdMUGxklGpMmHyNoxnrggJL6RosvVmD7DvXECndiFrPuUXrfX8EqJU+Hu65uKJjqh5bWyXMWH9HvmfnY9r5UxDsM2I2ueZX9K0vx0XnSW4LJzbdzfm0GIM9zmilx/MT4ZINDzFv9gdodJlybQgULEc/xXyl4xdxtb/5MbXRsrG20dgmF9VY83mhv+kdqaE/AL3bDS9vRYhG5tWOc6ZVfkczwRfGMzYmDxaybJC7OvGiYjcGHjlil3vrLoSfP4OJ1N4tWSDT36qusyqtONDaQvCCscKFZANEVHj037qN/gdPYj71UD+ktEwwQYBAovISfI7yHvXtZzLKCne2/Jm5ogiy79WkwCZtyJrDwuBS06GG/fFg0mgmkw3KSFYq42FXgmhpO5b11YIdXXVZHxVBHXg6YbAjNc/z9bzvrTITjGSHF4XPpcxVQ7dS49dSdKVk9o72/n8CDABnj2XIyb5lqQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Netherlands',\n    code: '31',\n    iso: 'NL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRkNCMjg2RDE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRkNCMjg2RTE3ODMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGQ0IyODZCMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGQ0IyODZDMTc4MzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dLNUtgAAAEBJREFUeNpiXCej8Z9hAAATwwCBUYtHLaYZYPz///8nIM1LZ3s/j8bxqMU0AyxK7j28A2Av72gcj1o8/CwGCDAAa10IGBJ1C8IAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Netherlands Antilles',\n    code: '599',\n    iso: 'AN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Q0ZDQjI4NzIxNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Q0ZDQjI4NzExNzgzMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQkE2REE0NTQ3MzVGMzJGMUI0MjQ3MkQxOUFBQTIyNDciIHN0UmVmOmRvY3VtZW50SUQ9IkJBNkRBNDU0NzM1RjMyRjFCNDI0NzJEMTlBQUEyMjQ3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZDn+FAAAAexJREFUeNrkVM9P1EAY/aad7UK72RZkNSgmROFiOHEyZoUQIgkJRw/Gm4khMfHf8KxnxRMQTsqJAyEEDv6InkiAhUAWVrbID3cL2y67225nPmd7U9L2ZGL061ya7703r+/rDEFEiCxndcUcGVOuXAVKW++cez/M7tk54/GjaKIEf6z+VWkinl8LW4vEEmksItWj9YKflG1GBBglCj5A8loiXnpxaSu8i1SmF2vfTuQ7tKmf2S5y7OhUuXSSWS5pZIdxH5CEfy48i9y7KXwDyQBWHj4fNvS2qReLQNKAFkA1yJNEBGKEWRbMtKE4VQ/9BoDf+G5VLIFngC5Au6aptRpHZGEDkwGGgp1/Wy1pVU3OTI8XCo5ZPBbed7b2c+tFgDRA/fatztdvRj9/PD6vXAT+LisQIX0/JCjCGG6sl/O7tuuKyQnjqpgfgC1seq68mSvl9yqMkbBMhHQ2dIjIT0/LrusamY7BwZvFogPgZYf6GCbKJevo6IyxmKyt2H9f7e+dmBz49GFB4B88yb57v3d4kA9a9agDMfX2S0Rblmgtt119+SqRUj1seaSSz85t7emkeu8u580oSxhb+1+Ft3pKwes63tAbeltNsFbnY3nxp9EpVE2gSrILWABWuAdm92HD+F9vvr9R+qcAAwDK6wIXIkUhaQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'New Caledonia',\n    code: '687',\n    iso: 'NC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTc4OUU5MjExNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTc4OUU5MjAxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOUZFRTg5QjJBOTY4REI3QkY3NEIwMDg0OEVCRkM5N0YiIHN0UmVmOmRvY3VtZW50SUQ9IjlGRUU4OUIyQTk2OERCN0JGNzRCMDA4NDhFQkZDOTdGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xxyn+wAAA1BJREFUeNq0VVtoE0sY/ueW7CZNm9oY0jRFihjFC2K9HUWOCoceUEShL17w9tAXwSfx8qA+iFpQq0/KkUKtep4UER884PH0CK36oIiXIN5trVirrYk1SbOzu7PjpFU0wS2t4DK7MP/MfP83///9/yKoPQ+/5sEjLyOJ1OfrTjQmaDoisCOxDp/KIYOACHAYBDnoSXDEaNy4QTvACPTFoO9jxZS26TN6YxH+wdDb2uPWqxkwAYGvH8TwVeSYoB3EvPJlZdm4jsYjf69dfr+sCrc0+X5flGE7/cdb5xxu3gQlUyDSBaYDkrqhI5h1tdjGMHSXxSMX2s41xiapeajpoDx5CrVdZtXxDED6yqXQsi0HHd9cCPYpGm686RKSKAwEeDPBlKez9ezR2CRqvAlpYR7w04aN/up4LterUaL/ufL9X6nGE1t3RoKOQXIgkYsEZtYWSWbwCX2yq3PWngx/V8I0WxBt+w5obkmdaQ7VrxU8aTEvNkvTD+pD865XQtR2ZZ21yfdzv0UeBQ36h9oecKTEHpRNsbsJ6S3130ug+vytsJEFX6kOdfaryzI6npl544+gOS6A1kw2WGWGK3E+RQh4mgTCvK6Odb/1rVihfHEpdIStfOhqaM84EpWYEzTKkkFCSRjL4QhKxZ5AqDyn00w0DGBr6h2SBFJHBUIjyBsTKQsGE1ovzfWrbAqFThmy0vb9BDAvu9YhgFCJkMx7leS1E05KC8lihK+DlqVFgS/pzO+mL/4hUMsVYRpw+ru91/7nj5+nb9wMrl/nMKrOgQmi5KIWNxBkLN2tZDbUVxUgI0m5N/ks0PL0VkWc2ykWmkj279UPHIHD+5iTNiQGFrT+veJp8kyr3qZZwKWbQs4uCBbbNAxdFatbjasNd2iNOud52ulEInrimblwKcKQftnONv9X27OqCkqMoei76BpOrim2KRo+Am99s82uQ4sfntndc7r9y8qFY7rvt8jqi1MHYtW0NCW4Sqhr7/wR9DC64s4D0DUAt5/T7ABYlk08EK2E+TUQooAHwRJIVZx7C3TpfEpUXOnvI0zWYMFcAIEt6WHYNAGSWRCG0h3kFfrz/RojzmUvtxH+cpV8mkdiOmrofG0MNbZvIkBy1H+ZzwIMAI1PbW2aWDCwAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'New Zealand',\n    code: '64',\n    iso: 'NZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxNzg5RTkyNDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxNzg5RTkyNTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODlFOTIyMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE3ODlFOTIzMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ycsmVwAAAzVJREFUeNrslF9IU1Ecx3/nnHu3uc3p5lbOWDk1VDQj+muQgVREUJGFqEQPSf8IqYeIiAyKngojCiItqLCIrIewsH8WQf8gJNK0P6LRTJ0619y/u927e+7pbgn9hR7cY7+n8/L7nO/5nPM7qOvA8ezyOS0e87EbvZ9bX0CatXlv/vqWE/c21FVe84EgTk+T9zmFHRW5gs05++ib4LAXjFr4uWQFCAYEvxVX0jS6/XZfw+5Fm7c7GldVHm/3BBlNpVI0xZiRjepI3561OUa77fCg+dSdkYhrFMz6H90YQFS5KUCjoEGg/IJGm3ZcVczWckt0G3Fp1pUFHYUDN9uhtgqfv2owpcxEXli+4lJXpLXpoRIT27rHYkERNGSyO0qdDmN9CW7opj0DAmjxL+hA8Xw143hQdkUw8wesOhxTmFdnNIf8Wh5/tdrZmCeLSPaZJgnrbdFVAaYHJE12h2L5eemnl/D7X0mdH/zx4OquBAFLoF/vqg+6v4YYKSorNntHTILPI6Dei1dyayozSwv8L3s8Ev40bVbG+Agy6JY/5UICAx5AkOP9elUxiQuRIxwHBoM2HJZkVX3CO2nka/pXVyzbV72gNIuX0UnNPFi6qOjO5Xd1hx6Vbly6ZaUlP+PdGDvod9ZHciXXICgxjEnBrNQZthT1rEymQEUIxwqzTTfWpD8fUzxu1UzcGLmwv+5MUWB2x+NzR25Xt7ivPwlUO0Jzh54N2udWbG278vijwWKtylVqU93W7rftblAYxkh3dhlf6UDN/RyNicATwChCWV+AdY9EJIXFnajoDQtX3G1s29lBLg1ZfN4wpAND0PtFfIDsnTHk6+htbX1/U++UM7N499DdL1GFaJgidQnk/jAb9gnAJa6Ox5JI+11hSWWqur+7Bt0esGQAjYAeAc8BlWFChvRpMOEBEwYNr+aEoQlQby7TBnoKLKEymHCdyn2n/LUQ5NXDFEuicSd/jAyeElTtlhQwpAFlyUYLSrHTdKtcXuw0QpQlFS1RHY9zTDyvPgmR/v6HTAltJB0DoZJxEwhBMOKkpiYE1JHxjoMsx9fJTM2YOiyg5SbXyUz9r+fzH/1zfRNgANDBXQHER7G8AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Nicaragua',\n    code: '505',\n    iso: 'NI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxNzg5RTkyODE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFCQTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE3ODlFOTI2MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE3ODlFOTI3MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+KfyaKgAAALBJREFUeNpiDG7/8p9hAAATwwCBUYtHLaYZYPwPBANhMQsQfwFiHuK1vGFg+PWD4d/rBwwM//4yMIkrMzCwcQLFhUmx9wsoqEny8ZdX74AW8TDEPbjBEPrgHsN/NkGGb+++kOrh/yyk6uDiE2Y4de0Jw+VbXxn+MTIxHBN8wGCtJklWUDOSlBo5WBjkud8wnHQMB2v8zHwbGAIkW8w4cIkrpOPraAEyavGoxVQBAAEGAHrPMKYO1i6mAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Niger',\n    code: '227',\n    iso: 'NE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RjI4OEFCRDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFCRTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGMjg4QUJCMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGMjg4QUJDMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+d5ixUwAAAKxJREFUeNpifBDExkAbwMRAMzBqNP2MZvz//z+NjGYhUt2HZV0/b1xmU9EUjKsi1uz/RIBnpWbXFRjuWDFcV2J4mqfz/+8fYnQRDusfl/Z92XuKw4CRRZKNU5/p68Er385spVI0/vvLAI8ORgYQ+98/6hjNoevEZ6v76/z//y9//Tz/j8dSmcvYk3opBKhkaj3DrSsMShoMOa1Exj0tEx/fRp3RjD5qNG4AEGAANauB5CbwRkAAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Nigeria',\n    code: '234',\n    iso: 'NG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RjI4OEFDMTE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RjI4OEFDMjE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRGMjg4QUJGMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRGMjg4QUMwMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+qCpo0QAAADBJREFUeNpiZGgPZMAN/leswyPL2BGER5aJgWZg1OhRo0eNHjV61OhRo2lnNECAAQBu1gQALTkVbAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Niue',\n    code: '683',\n    iso: 'NU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUQwRkFFMkIxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUQwRkFFMkExNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMERFNDlDRUIyNzJFMTE3MjI0MzM4RjQ4QTlENUY2QzEiIHN0UmVmOmRvY3VtZW50SUQ9IjBERTQ5Q0VCMjcyRTExNzIyNDMzOEY0OEE5RDVGNkMxIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+gBm+VQAAAyhJREFUeNq0U2tIk1EYfs/Z59znbbPZ5qU0nZp4qbRES41IMLooVn+meIkuNLtQGlhmhFj9iDAoyh8VlYRgJSVeEiSzmxgZeUMWbqNsOi9r07Xp9rnLSabkj5xp5MNzOJzDeR7e87znoJ8tje7RUXUjdMO1xkCRJ8eNHbxBmDCstLT2qtMT36qwVWtUDE66Ra3JovpC+FZ9Aq37oWBhDgCC+UHYbNP4WBDV1SxNrH+Wmp5WyQs7V1wDtnbxqaLdfk/gUcVXj5uSu1MwpKZZzve314Yci+odjaC1+UF+nfA3GI3ZuGwgAJWN1Z8or4p7JW/ayRWljkoZSAa4DIyZABYWxUxO3rCIT2/LrIuIzGhX9CpgEWCBK7Up1rdGJjkVI7B8kaav7x+SH9IBp3VPXU8DbK5ap/wYumpEYIpOyW9knn5u9t0WG7A2EKDbLncYiH0gpHv80KPtjdXMGV8ppPgarmK4xyn+okZGeXb7f08tW6MiwXyNwcBuH/UI8AaCLccrkb+S5dB31lo1kAdjOdnEvrLyQVsKxAtKISDj+nYFWZcUnKwGMO8H3VmYOTNN5h3bTJwIQY4J0xxUHqVMGQe0kfF9Cj0d4R0pDoGg94W84NyrfTEFbfdK072yrkBzE+Pr+5bn6mMyrFjBdREVs0EGC1VtDwsRXFRv5BcajgjETkdyWSpzm9yjevWuCpFcCbWBNHWLHwc5kpUT0KpiQhvDvC64dI6i37deyJqFscGGd2TG9oi/hd8tKcms3lLSX3mp2zkPu5eDeVx3klsWmtIm9Usq2mt95/3cVd+hMbIW7OFc4NRtiUgg/dBypjPjpf+IRQgg4/Jp+IThDqA0N/ARyt40hSf2557f+aBgg2Frl9ZtAhYHNNFx0MV6/wUdrelThQucGBsIRTyR+gd0D+uTRVI1sJipMY1RPqBJ2ZcSxGNs+tfABTxf1YTYQ0a26Wl4SAI6/eGZnv5B5GAfFngeNtusakgloYAgx9khWCIQmpNiQmA5QGwE/0Npi7NGeFmM7YlgWDYsozUFaGoxH3fpeTDUhCEc440WC///9ZNw6HGTKfSXAAMAWGmKZjQmfUsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'North Korea',\n    code: '850',\n    iso: 'KP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNzJDQkU3MzE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNzJDQkU3NDE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTcxMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTcyMTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uqrYYwAAAdNJREFUeNrUVc9LVFEU/s69982bH82QzUjOiDjpNoSgraNIuGhR2apVG6GNJEJBLtxIiP4jA26CLCFwM/4KESlaWLTIhVIKJjX2Zkbfu+/d2xsJsnHz1N7Cs7hwDvd+97uc7zuXcGsa4QRDaCF4VIL0/wfWJLwDERbrxz1Jk5+gTf61gCvrq2H8SQOHv932NJULhSScfw4KgUoFW1+RvQrG8G0Hba1IJuG6waEtRMSv9U1P2cf6yrS1r2Q18eSZ6ClAK3dltTY1QSxKTVfgeQHRq8wU2qejIn9rnlI/tlMvXpr379ozs6hW45PPjb7ecn8/NyKIB22M9qEbSur7rjnwgF/LV4ZG5PwSlJJvV6KPBqMPB+1ikeVaz65rLS3RdZ2aLntfNuSn9/LzB3f9I11KiJs3tFc7l2WIxeTiMs+3x8dGCQaBx4aHeGeHLC34/T0XNGvJOaWSM/OaDCP9czdTs1hzxnkz57ya5S1tp9M1LEsfVwjnxMX+vTuJ8QmzOaNB7tq7ytMRIKalg8ODwJwdKnd3+7pGo64tbO8gna6ne3vIZZFKQbrBKdd1PXV71BQnhwhBa9hHrzFN0OnsWHejqym8oRrq5Ds0Lt5XECL0bwEGAHp0quOMFme/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Northern Mariana Islands',\n    code: '1-670',\n    iso: 'MP',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OUQwRkFFMzMxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OUQwRkFFMzIxNzg0MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNUVGNjQ4M0M4QUNDQjhENUNFRjMxODFCREQzNUFCMDMiIHN0UmVmOmRvY3VtZW50SUQ9IjVFRjY0ODNDOEFDQ0I4RDVDRUYzMTgxQkREMzVBQjAzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8++R9VmgAAAxxJREFUeNrElV1IU2EYx5/3nG1nX7rtTOfH3PxqFplgH1pmRsaILvpSiYToA6qLIIhuveyioKKorhIyC8NEKkyCAkspjKJyRYZWOtfcMbe57Zx9n52zc5rV5cwZSM/NC8/D++Pl//yf50Vw5hksT2CwbCH5WxEBJAHiciDVJimjmqVzSEWc1LyjJeBmQRUGKQIB/QMaAceDqsCq/bE3fKmpkuQshY+mvA2qIIXxPUWHuiZNEPKBGkBMfx+HuiPpdWKFbMzQFps9T15u3C6Mq7YMSNb0fsfyDGTrqmBz5F5RYUF/yAxhFmRoKWgexySJjprkSfZqrL74uOdC+3MmOmorFvmnocp+OJCn4VqUQ7q8xifOJIhC2pYtgA4kju6oOCFe7AwKpwJnhx7PyIXxmy351Sb1tWH3yISuj9iKfC+aYw7aZP3o9IBMkplDBIQUWbv4Yczvvc7sHxudhYL49Ewov6pOX7XV6+YgN0HbHTeCzVPI14A7gCCW0EaklbM2r7+0zC23rNLOtB9dQ6oqSHMBCaKt4zAdiZy89dmFVgDOV2qHteQu2keDLJNXI0Csn9NUs+XH4lHPl4DyxjOnMUf3y4yYWa9uH3B+Cag4YHIte/32EohHUrpmJogIUqW+l7qNy+3bykvEJHa3j+qxzf4udr93d/fPiEhcX2R2Ibbz9VscV6fFpM/FI9hYQiOLfD29MRc8THZd8Z4Vsvtddx50dzWvVOhqjOCN7ysMrxbc+Q2bmUBwKeZjo1mGtY15aMfKxChR9uGtnXC+iHuogM/z1OYYnJA37a64UmVPZpWesxspigEFljFaipg5cTSmtsq/HaxgCb2JcjpK9QSB4yM0YW3cdLN2MsFxLYO6VyN+yCFAFDNGp4KAH17soUuxU0+1WuZcriDNy4I8vkEbbasPjrnYlsH8l58SoJcsNOlokaUalZYUa2pDA+uSjnJjYYryYXruo8zyRlrjnWZAgxbcIIujMQTh1NxLyrIpM07zIv5JMDIRHWARUGILYxddqvOTKYIydXB2MNiThj9JVWzeRuL/+wqWEf1TgAEAg8xMLtJFnKQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Norway',\n    code: '47',\n    iso: 'NO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0MzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0NDE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjlEMEZBRTM0MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjQyMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+9564bgAAAchJREFUeNrslc9LG0EUxz872Wm226baJKKHSNNTwVbJQRC9xmsvvfgHePEmiH9Jj14KCgrtzUtBsIdcpLRioVINliIKkkMTxehisma3M/lBG9hoXUEP+mDZmfnOmy/v+97jGYcvB32CrFrFdxye/tzg7VqJ6ewMPLJY3nzHaydPaSSLSKVACMKY9ipz81YW3JLdPWKT8/NgRJ+3MMP4e67XvqpH123gIYvL9IrFYKRSwT89VSRe++ORCNRcvDMHtG9Y4vjWl2BEE9bU97CHXreg9ipCV5KqnsDgKMn9PFhRLUE44qWCFYxoSQ2B93Wdj6vr0NUFUcn8wgo/Rl4h0v1wpFPhhyI2sN4cq3/swltPbOjrBk+RHJTAqVy7j1Vx1S6/5nlNBfyG/P/jc1nEc5/3giNuSf1rl9XcNz4s5uCBZGpynMzwAOJZf7PqQ0ldNvxiB2KvWVy9z3n/aZOJ7KzKsc3G9hyZdFJJvqP20fZWu4rUpRfDF7ZT4uSAgqlybEiQEfblYzLf1/g9NIaIJ8O3k0gk6DidbLsudz36ltVUfiMSYdnUfcMSY5qdC6qF+f/kUa+1vFI28GuMxfvpdGPEsVvgjf0RYAA4FZnydWrl6wAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Oman',\n    code: '968',\n    iso: 'OM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0NzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0ODE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY0NkU4RjQ1MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjQ2MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oZcAewAAAahJREFUeNrUlbtKA0EUhr/ZS7yu5iIWIoKN2FioYCPBS2NloRaKlY/hY/gSVhFUlGChWATEQhFLK61EEhW8JMRks+OZbDotLDYJHhhmlx32O2f+/8woPz11B/SitaZUhP44WDa8vkB3F5RKmkTSsveyPWYmonBkjPFVhpFRUPLmxgQs//c86BTwzRUCJOoQsPog1uFxew3La5LGOOgAHu7hICOJuLJERQ62CGpQqcDKOvT1w/QMLC6hh4ZhcyuEVqtNAJtiip8QF23nFtFeH/ryAnWahfwT2KK31YyKjZE6OuFoHyWVqcwuKncGs/OQOzfmEkHcyHV2CILQTOkF9OEemGF0TaZgdQMkEbPV+uRYvC+GQ0cCVn568h3b9erb+VxotJMVtlNC4DFJoiyuL+SpJxkR2Kn3UM0Xg/mhuUwYQDwBfjV0uDFYaiDqdmqE7fz8aoz123Mk5mpTOH/OULcaLPIqgaqiaB3o8FhtBdiqaiquYjvdw1u3Lb0etAas5EStyb2xMyEXRkqWl4IWbrVMg+818qbXy8H/dnVbwV67+vixHfBvAQYAQ9x1aPT3zwwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Pakistan',\n    code: '92',\n    iso: 'PK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNDZFOEY0QjE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNDZFOEY0QzE3ODQxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY0NkU4RjQ5MTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY0NkU4RjRBMTc4NDExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+95KRfwAAAndJREFUeNrElj9IW1EUxn8vRqpNrS8xoKnW0qBQzOTgpHZQoXTp5OBUOogIlcbQTScHpVAdhEKGDI4OUsSp4CLS0rFdirqorTXSanxIbXwxMXm9793bJhUpSB72wOG+c+6f751zvnO5mmVZSeCW0GPOydSbKcZfjUMTbkqN0D2v+qBkvAqp8fCfxFPWzh+gmRqaV7sCYE3t2oHOe530dvRi/bTAUv6c0IxaW1DrXQG2d3yB/gf9zI3Msb67DnkFIEB1XSfoCaKlNKp8VXKubGD78H1oibSw8GyBmcUZkh9FU9xU8ycQrguzPLHM2OMxcpmcS8AFGVX8SdwxE+8SEEIefiZU9EhXSxftze0MdQ+Rt/LSf4F4LwWcBv9dP32RPrb2tiiYhWITVsgwEm8T1FbXsp3aplFvJJlJugBsQmtDazHtXpWFCmULzZ5lnRKcGCLvdcLn48J0ey5PaknTcChMW6gNjL9PyRfynGgCtEEYlbhUY0HSzf1NzKzpmLFHMaeX7Uz8OUlTgPZ4SpHxZQHfgNRWiqUPS445eH+Q4aFh+GzfvkKzimRp2XLNgWYC/oDs7bKAPbKeE4sTorQFxxUfiDP/cp6mtqYi6HWYfj5N9GEU49BwgVz27VQPG5826JnsYWV8xan5QMeAo0fmEZWeSnzXfKx9W6N7stvpbXS1t6ybyw70Nqy+X6V+pJ7Z1Vl2jB1nSq/WMXMm0ddRIk8jGN8NyWyr3Ih/R22T5Q4cHBww+mKUWChGIBggk82Q3k3LKBskGd25QErBbbb6ZRqtU4vDr4cyf3ZagyVrcBO49Adsuab0vJ9/Ax+r18fxVb0+bKxfAgwAbIbG6d67HZUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Palau',\n    code: '680',\n    iso: 'PW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNDdFNkQ0RTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyNDdFNkQ0RjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI0N0U2RDRDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI0N0U2RDREMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ffmgGQAAAhdJREFUeNrElc9rE1EQx+f92GR3ze7G2pi0sVKrJ5tLEVSE3kRD8eDRixcP6kVEEHrx4v/gpdCDB0EQxaMHBQNtb1FUMFpbwYrWxJhks5ts3J/PtwpSaLNhK8HhsYd5vM+b2e/MPDT3qALDMQxDMxqxh4Dxr+WnOr7KGBKJpdA2hoDxnX9BU+S2vZGanT8orc+kVijyq3Z+rVMQSW8s+dlndOAFtB/3mz0hIPfm1Hwx8yCf3OAc09WW28W7n268tY5Nye84PRqNtsvIU255o4zhhem5Qq4MNoAH4b8hACL8tKTLr5+86pyclD5E03eQMQDccPffPnylMFYGE8AJXSGaX2CCKPXuHD2fFhqGl45dIT+c3Cnt2ensY+juoCx3qqp+IbtQdSZiow0/fVwrgQDg9zkUwAntuYy7ASNx6xqptBUVTwB7hfoeYvgQG806nhadqu7uswIF982rD1oh7bI5G4pG+h56Ycx2/RRBMdGjiepSq7j0vQjy9nyAO3umfL92NZv4GltGHkuaNm99XFyrT4MCoZ7o9+JJKBA45Pr7h3VnXKPN2OiA4Uxik4+OS2+e3lu/1nQyYc9ScIJkafPcxZelFf3MIWl1N934t9d5Tzac7BG5MimvEuTV7AMVc4Zgfzy5wctulzOEm8cEleiqpOveyHLzLAMs4W5O/ELBGxjv4KH6J64UMfjaOgb+/1MwRPQvAQYAH8/QWrO3BXUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Palestine',\n    code: '970',\n    iso: 'PS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MjQ3RTZENTMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MjQ3RTZENTIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDdFNzEzNzU3NjNERjUyQjNBQTU3RjQ5QTU4OTk1RTciIHN0UmVmOmRvY3VtZW50SUQ9IjA3RTcxMzc1NzYzREY1MkIzQUE1N0Y0OUE1ODk5NUU3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+0ETvLAAAAYtJREFUeNq0lT1PAkEQht/Z2zvDHSCgiYbOwsrGvyCJhbGw0tbWCDQGEwtbC/+A/gBLeyu1ozBWGgsrGhI9SbRQlBC8G3fv8APouHUzuWQvm2dm3/lY1DJZSIF/WFadqGM7dWaEoWE2k83S3vUyEKZjb0uHlQPb2XEzsKRJ9LtGk6Y7TjmdhrCMo4WmS6eqlJGWSXQIEcR0x9ny0kaUIYV2P3uK3t9DebFO1tcmanuu/xQEgYGoY+vHPp3ny3NOtobRsSn6G/BweNDpdsfjhmE4LIiudFBU4UET8J5fCoX8OO3CPNwmqiNjbis7mbq5HY8b5YxGtY5qfHGZXxNKzXLQlba7HB3tFzPNY2o2OPrzRy7+Pjhwe4wcIDVBfrRm0um7n8JShXw3QCPhbIL8jZdxPYtSBe1cgEdgJglYgIUU3N9dFalUpQ8vgK9mbeJWhJoXekrzxRxWttFLMXzWJUJJJ7X6SJtxNi9WyxZI6RDqeImMPATydIE2NpU0EC1iy9IZ5uTPi772lwADAA1uTobZeCdSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Panama',\n    code: '507',\n    iso: 'PA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyNDdFNkQ1NjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFEODE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI0N0U2RDU0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI0N0U2RDU1MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+IRlRqwAAAbFJREFUeNq8lksvA1EUx//3TqcPtCpSz5BYioUNESxJvGJBmlhZS3wCH8CChYhY+QhsfQQJCemiC+xKUDSNKtOhNXPnOvWKhZFcOj3JyZ3JzcnvvO65l0kp0wDaSA0oiFMwcdo9BesqDS0aVTENk177Pj7wba2GhLnbjiTNmTaEIz0hu4ILRYHl3UtkDevLEc/BRxcmxjdOsL5zjunNU+yfFcCqAe7vrEV7OcTDLJop1UNddRVPtc9tY3S4CTMjrSiUBCQ5wVgVwJaQmB+IIeTnKFoObIpa15j34DLkExTUuWvbi4cH2MgDeXWnfM8Ukapo5IxlUxZaYpQeG1pDvTq4YymhbJR7EuiM6kjubaOeVkH/yuC722f1AtHZzllB8EgECGjQAn+pcVhXtyq3eB3Z/VJakX+EFqZjqHG1yfVnoaZzDBOZ1S3Y2Tu4jb2Kg58Sx0hNL+BmZQ2p2UWYB8kfM1NxcE1fD1hrCPfIgDUFUDvYqza5/iMNY5NojMfpzqbGLd9unHkPli8WonMT4KEgnGIJUthgXPcezPw6lfQdxIOBX0em8fH6MFAdeWO9CjAAKGmKMiin+isAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Papua New Guinea',\n    code: '675',\n    iso: 'PG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3RkFEQjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFEQzE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUQ5MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQURBMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A8tj8QAAA/9JREFUeNqcVUtoXGUU/u5z5t7x9s5MpjNgbLEzNYyEJkwqCBJTG5AiLUJXCbgRpBBSQrPpQhSSjeuARVG0rq24UOJCu5AuJAsfCRFja5OGpLE2tslknjdzn7/n3ljJZGbMJAd+uPd/fed83znn5wCwrBDCp9oxvCipWHBqcGiSx8GNEwB7gwNHh8U4A3Nb7/XvL99xTZwpLOF6LY9uMYwY3eCAHQyUbrIINNzpQe1x4Brc/20v/xeY79xI+U+MVh5AJ+A0sdAuuB+ZU+YgdjBkvysift6CYVD4/nGudcR19sn2Jl4rLuO+a6FXUII5ryXiDr28DFQsCUdesCF1m3CK5AQtOiUOrXxvKuVPjoGXifobZgG9RL1GPDZE799JU8aGgPAJF+lLFYSf88DWJCTfMJH7IQ+1y4W5JQQyNEhDo0RDaxXUmKjjvehxGMzDqmdBesIdgVoFAR2vmtDOWtBOOVBPu3D/5iDotPisi+2bMhYu6gFlgsqaa7zXRFHE0+kTuMaV8DpRv+k56BHCAe3+FWaBR+J8DSdv5pF6uwy124X3iAP5B2bRhg0eyrkaOscMWCbfQHlL4KGhITy4t4yxy1dwy64G1H9rlZEj6hWKmoUYBI0h/5mKtdEoqr+K4LMuhCiDuSZg68sQaj/K4DhigFDZHmCxFfDi4iLm5+dx9/bt4D9PqXuxtIJJNYWrahJR3cXKFzLWP1dgkf/F701kuxyIzzvgH/O4O6rh6AUTCO0g8gLqwPfVuJldkI/gmtaJDvL7jmNC5Hy9eYRiHrQzNtLvV7B6NYK/bijIvFPBw+sKvAqBSW1ovNdCoRAEQQi+v7FKeKVwD7+4BvpkBSLv17ALe4vD+lcKFgajMB8KiPdbCFGSKWkXToVvrnEkEsHk5CSmpqaQSqXqNvn/c3NzmJmZQSwWC+ZWqc7PEvgH2xvwW26ckWoUsRpzUF2izkdOiJTJhVsypKNeQznXuTEyMoLx8XHIsly3ybIs0oeB5/nge7ddoU53iTpehIr1JL/T7STdg7nCw/iD0opkri6IEBXWuo4zmQwSiQRmZ2dh23bLMnMcp2G+V1Tw8VPP4LSk4DebHhrCUY97sB9zsDd5iHrdo1HeN7kGBwcDGaanp/fPAyqdDwn8zXAcy/TwbBoeJIFeKz+zGdprIE9M13Ukk8m2EtAkOd4qr2Gc6O/gRGQiEhzZa9qvD1VO7dhLUgQfUfRdlHi/u7Wg4/HtRJzL5TAxMYH+/v5DAc9QtxsoLuFrq4ge0t9PPndX6C2B+/r6gvIaGBg4dNQFz8VQaRXvVtdxjJfQScPeBV76t+/XDU3T2PDwMKMsZ83WDzrOyRpbjGdZNXGK/RzrKv0jwACqn6gx8GMIaAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Paraguay',\n    code: '595',\n    iso: 'PY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3RkFERjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3RkFFMDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUREMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQURFMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+8tTVLQAAAOtJREFUeNpiPCeo9p9hAAATwwCBUYtHLaYZYPzz+csnIM1LtEsZGRj+cHMzfL10ieHn928MAmYWDOxA+u8/knLlZxZmHm6SXPoXiJ8d3s7w/OAJBl5uPobv314yyDj6M7DQPKhfvmQ4MLebYfqfNwyb5UQYLqxbwvDz6jXax/G/X78Z2L7yMjAKcDPc+v6I4ddbUHyRXvgx/v//n6Q4BoFPGzYy3Nm7k+Hn/98MqrZODCLhkaTa+5nx09dfJCYuJoafnMwMXw5fYGD8/ZeBy8mYgePHP4Z///6SZjGDxYrRSmLU4lGLqQIAAgwAPdxSxGn7ZuUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Peru',\n    code: '51',\n    iso: 'PE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3QjRGQkQxQTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3QjRGQkQxQjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzdGQUUxMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzdGQUUyMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+b8OOOwAAAGlJREFUeNpiPMPA8JSBgUEKiD8zYAF/gJiNi4tB7/FjBmYhIQZ84N+PHwyXZWUZvr95w8CKWxkvED9jgTIYkGh6AF4mhgECoxaPWjxq8ajFoxaPWjxq8cBbzAJt8vDiavrQovUBsgsgwABVWxD3afjyOwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Philippines',\n    code: '63',\n    iso: 'PH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3QjRGQkQxRTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3QjRGQkQxRjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdCNEZCRDFDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdCNEZCRDFEMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RLn3GgAAAxpJREFUeNq0VUtME1EUPTOt0JYpnwJCVBQh0agLZWsgMXErGze60R0uNDGiK6IICiqkAgFjRFjgl5AQDX5CMEDih0QSNBiDIJRfpOVTSqG00EKZ97ydwWKEhXx6k5np3PfmnXPP/VRo+Dhmy7k7YOz50APEi0CiEZAZwBFSEzgZYEfZEzvy7vfB3T0OpEQBxm1EIHToInw/3ehPQ/ZZD3rfncS5S2mAZxHocarAGiFEEfsnZ5mr2Sga04GwJMXZ0TWF/IpvaGwYIB/JvydSlZ7zLZV6lp7GtRbrGodxvbwTlnaSP8GgXksshMDcTyvawLLyWlTVhYKH3zFvmQFSKf8Rm8//CjCbp4wbFCcbuQDoj0CMywputE16ca3kKx7V9VEN+FUCWkoD4xssrj9BLgxB7s0A99HBsosoieDOWrCh04FV7IzXo6YoHZ9fZeJ4Ziow6AFG3HQCqSIIm5OaT5jBHNUETAcKeiB8N8Qd+RCkY6s+rG2WcbX4DYY7xqj94oFI2i/L6wT2WYzMUakIwO0l5A2nIvIB0mGIUSfAtTEQt2cvC0TSOosBkwcMhShr9cJc0MScjikmSvr/Dl2rRApZjRKBitWo0gWO4Ax8yakS+dvkOboZFBpXlt4iw1rMZ20urpGkDUo9eQ9sopTwvQonQZcKMalcKbR/baalG7aci3B9aUWcGA1dVCT4uqUmYO7tBhs+A01yDZidwKSjJDcV2VwbxJSXwQ98vRZYc+/AXv9UEUUXnaoWGF9ff2uDDMJ2QbP/03JLMQhsEULCZfp9Xm2xOS+seYWYqKjCot8BfcReiDod4ckbmmhrDxCZBoVGCvKyVz/GaKEZnl8/oBMToY0xEeDSpgaIdk2vJlp5uJpaYLtRjOn2FtooQYo9SMHJmwZVgf2jlNNKCKZT1LqH1Dz2D8KWfxv25zXKuyFqH5ERtwRwBZjNQVh4TaBZYD4G280CjJc+wOLCBPSGZIh6/XIe2Rb/LXK1MhzPXsCWdwvuwU7ohARoTbFbGuGqiN1tHaPWXLNx+n09jQ4DJNMBGigspKAB+y3AAHmPY4VHbneXAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Pitcairn',\n    code: '64',\n    iso: 'PN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6N0I0RkJEMjMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0I0RkJEMjIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMDAxQ0NCOTM1MjkzODNFQzU2REU1MTU0ODY4MzQwMkMiIHN0UmVmOmRvY3VtZW50SUQ9IjAwMUNDQjkzNTI5MzgzRUM1NkRFNTE1NDg2ODM0MDJDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Q37dSAAABJRJREFUeNqsVGtMU2cYfs/p15bTy2lLKQUL46ZcHBlIXbEo6hwE2QZ/lhFcFsMuWWK2OTez6eIyl2X3zR8z8bIoW+YSF9wCGeiUjdFNRRJH8YroqEIr0AKFXml7ei7fTlGj/Jibxuff9+XNk+d9n+d9Cd8JmzaFHllY8t33f7oHXabMtIoSQ6HHEdWl2nnlhcHJgFpnlseqmLGMesvvw1y/3amh5XBXROI4P0OJdrUMkCf7N766siAgbXWT579oebFp6f7er4Yrqt6asF7/pXttBrO+4RFUuODzA1ff/7ov6nCDmro7NYTCL2woQyP5pc0OOtIb2FqT3thk7fzomYBn6lr7jrjG+M4667I1kSWNyx1S07tdUz+1n4yyDJh0IEXzmQgAPO8ZFSS0ihj97Etiz8GxtFzExpDTubi6JBbhLnbaZZkpi42qqAT5MvLGTg+ohFhpjrp+orAjaAQUu80jkMDLgOQBxQETNz9HQy+/YSYxoFnMeZ3XWI2Srlnpd3pCvhDISJJlpcVF4TiesPViUxqj13AYGIIUyQBh8FMwrQaxTj0t154xcJOIwBCXQpgGjIBINIG2+TMOlG3ZvbWqtpCDK0PNnS65dcljTQ2B6scPfvLpCta/LDzc3372wzOsTWryey8B64W4urLSiaQx29FSbb5v1cNUkk/dZqc4SUS7aCToNQiYFPWTT5Sn/7FWtcF94ueNuy2Nh17afu744XOmDEk2JWxqaM4p372tbeahTH1rrWpPuCct6geSAg5bF81kF9shdXCBlqlbFWAMPl4Oe7f0VK7oERg/sErAGOn4+K/fdG2a4s5CFgRJ0ET/GvK/HTIHLyEQYnB94uPNLTvXmJ+vy7XoUgwSj4enZMmRFqcriiSg9utkKveoZ4S5UL3cUmMJa/9W9+nk7mEBE1gioyt3dox5KCPgKKgJQiWbHJrugWz7OBf1emGBGpLp+MjU6bZzbQ48JVeClAdM+mK8CuSvr55dmtvrHqx7rmrq2NBo8+GyJ82xI71ZITdeWmkgJfokkEiAEkBGiA5hDgsaOaAgiCapKGAx8AJokiDPAHrRc060kffJFkuz9j09Ubga2+hXYjnEt2PvaYrMPsn5+s0Lx90qoHgxjuRcIolb8bwjm/jOsN543MovoyooP2UL2Ndvf63PtaG2fuAKm3Zx/M2mErRvx2HLo1chqhCLyXmE/xN09LducySYWmAO1uR/IHinny3ZFQk6HTFmxptz+XKmuOoiNYL7gIRhQroieYXCcMQb7jrUF9fn9ZlJoq27oONoMhemQBEU2yNvdE/8F25PSoRCYL2K/a1F3tGAy6W1LmMuXDSaaOdTBQbOsxCUs4kVFVcGJ2Yo3JtqHkNyZJwRMidyBpzFqYrj9mMV6aUzWB5ObPxN88SlnHMIYzz/xPwr5ipFSdxMmDp6ihZz9ePOdaCd/eGInkQCke7HrMgpiEUoEZLEWPC9CRcvEeKBToQMjLGEyiSRjwCR9xYVeUew7g/E3DGaoyPm6UNCgAEuAC4EDxCsTwhEUEl5+qqwxZisfIDM0wGmuNT0jwADAIjDExM8WLDuAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Poland',\n    code: '48',\n    iso: 'PL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCODVEM0U5RjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCODVEM0VBMDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdCNEZCRDI0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI4NUQzRTlFMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2uLYNgAAACtJREFUeNpi/P//PwNtABMDzcCo0aNGD0ejWe6K2o4GyKjRo0YPBqMBAgwACfQEVtJhm9QAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Portugal',\n    code: '351',\n    iso: 'PT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCODVEM0VBMzE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCODVEM0VBNDE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NUQzRUExMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI4NUQzRUEyMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bRhArwAAAq9JREFUeNrElslPU1EUxn9voo+W2jIUKjiEIYpaNQRMVDYuHBIT3JqwIU5/gDsS18SlJG78A3TDBldiDEFNZHDHQjTBGMCWUQZpSynv9b3rrcXEBaCFoie5ue++m5fvne98Z1C43TwNVMuVYCczVHxph6GRZQ7JfUWed2l+uWb0zQd+2/+F+VX+k/09sADF1lDSKoorz8p+Aisit8c9IMEqA+vYNRaOoqDO6rnrXXKm7wiakdcplabILL4qm9MVKcpr1/g+6UGT8lAGAihBcEw3x0JhPJZcxlXaIws8OqtTM1DJen8Ja699JN9W8aWjjOTdNcSyQHUKSfWSSdu5aZ51zLHWB92jLl1OA/FjTaD5SfRpJG9tkLyxLL038o65vp2QMFxawkkocWkcmCHc1cPgtevYNpxv60drv4lDEC20RCYsXzr5xXtrYEcjUJYiXJzm8fMQja3fiFlTDL5bRQgX24qiX7IJWbDRso4ynMEbK8LxunukWmQLlYumC17NBfGO+ilfMLA8DrbpYEYNDk95SJQI+SOSZXWTpT3HWHdZTJm8j5aSCWaIJi1OuaNcbS3jSmsFJ+0xVsqS1N6LY370YUwbUtmiADHOplLCZHG1mCdtn+h+0MDxF0+50DtPrKSYNwdeEu4sRzszjZ6sQIlJcTVYeXm9fR4H0/SOhTkaSHG5+SsP6yLULw9zZzLFichBMtZnJu/7CfYcQK2zcfOkWpHdKb5lg8h6LUskaYOLdYsUSbHVR1J0Tkilj3iwl7yYg/Izv/NTVHkWkMT2HguZmIbMEU0wNB6S9TLNUixF/EMxR6IqiRkPojKDMETeVWtnqn+BZz0vTctarTEx78cYt9CQ1FbbuZi6+9mdRI56YUoPfQ5CspBv+uy+LRbY9M2Rx//H0aeA00cW64cAAwDqlwCQvzogDAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Puerto Rico',\n    code: '1-787, 1-939',\n    iso: 'PR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Qjg1RDNFQTgxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Qjg1RDNFQTcxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOTc1NDI0M0UxMTY0OUU1MTE4RDY2RTdCMTg3MDk0QkQiIHN0UmVmOmRvY3VtZW50SUQ9Ijk3NTQyNDNFMTE2NDlFNTExOEQ2NkU3QjE4NzA5NEJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+giI5EAAAAmdJREFUeNqslU1oE1EQx2d2Nx9NyKE9tLb42WNFW8SP2mJPUigKCl4EIyhetD2kJgQrgopoRCliFUE8eyh4sBXFgwcvSig9CS0UayqpFcGmSUiyyTa7mfHtpmnwtmQz/GG/3vvNvJl5b3G/Mv+Axkfg6y+AFIEMiNAckxbp8Fn4ElZimuTrQYFmQmRoAl/ESIwmchck7mLoPH3IVGANTDY7RAuChBVAInaBBGf4dbR9cqBvPZF0qyo7RNP/jxDYAQ9vp8eueQA8xFKFqg4acUOWRHoNgE0LYWpgmL/9YCdWR6NIC2gApS1PpvITNzbUYoHZaACNNZCZDb+/HAppsZhIhWJJvDd279FfTBmnh5aAlBLtRERJlJ3tlVHUsLNTLxakvkP650+wr5vVkiI+pDbclm+B0U4FPk5wtJdWVthbRkWywa7OpCPH85OP4UCPr7UN11PleFyLRtzfl32i8a1loaXCFbgfgUeiIGUbNVQsPs/HfcELajIpZvk1lS9fktNpL4oPpmOpNtgL4JJrfmyhLQC2tXozmc3ZGbW/nxRZxCtzfVnGyZb3t4zxo7S6BIoOKNvcMtbVGB3N/vntejvTEryo5nLud7P+amt2dRWfPTXODS5AhYu8V5JQst3kVvMhWQk0qjFa9zqAej2czec0ZnLS19u9vKXBYX1uQW/SljFjFzlnXwe/fJVlLldHVExRA8IaV3SwOKthBKdvtk+dOPY38dNTLFacnIC1mQp04No9CAfpjThUV7fPKgemmAAZrsKTMbrTzYVlFhVEd1P+MgeVuWl56DlHAlRYJNS5vkMc2j8BBgDaEDAtyJBdYwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Qatar',\n    code: '974',\n    iso: 'QA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGN0NFMTgzRTE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGN0NFMTgzRjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3Q0UxODNDMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3Q0UxODNEMTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+iEFoawAAAcBJREFUeNq8Vs0vA0Ecfbs7uy1toyIiIvFxIiTiIOFIxN3VwdUf4eLiRBwcfJYEoU1VNUpCGjS+Qor0UPER0lJNQxUJJYLumm45UEezv8wmM3uYt+/93rxZTlGUR3wVnSN0cIjI8Tn8i16cbO5BEAl4QcB/F6GP6XvBcRxKaipTExx5d9UPoYNJkd8vfLNL8AxOI34ZhZSlBytkTlEyd36IxrAybIV3zKECE53EnvH6uBMLPRbEw1GY8sxqfxUGrP9k/Jp4gaOzD1tTLhBJUg3GnPHKkA1b1nncXkQg6nTgiaBNj18Tz7g+u8Ta2Ax8zmUIhGjD+GzHD9+cB8H9AAUUwfM8E8YZu2bnmFBYXob80qJ0qMiyNsDGvFyYC/KhM2SnUEEjRJsAuQqcYtvmpn2+AEdl5rSSuralGW29HahsqMPH2zvkjyR7xnJShmdgCpuTLtwEw9AbDenjpFWAJO4eMNfVTyVfAKHO1uQ4rY3a4e4ewWPsHgazSdvIjFGZVy12bEy4qLk4Gpsie8YpebetbtyGIvRWEsGqMlxd1ViPpvZWFFdXqK5WkjIzVz/9dHYSol5SfwLU1BLYXBKfAgwAZJi4vg1/oSQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Republic of the Congo',\n    code: '242',\n    iso: 'CG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGOTJFRENBNjE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGOTJFRENBNzE3NzQxMUUyODY3Q0FBOTFCQzlGNjlDRiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY5MkVEQ0E0MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY5MkVEQ0E1MTc3NDExRTI4NjdDQUE5MUJDOUY2OUNGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aVFAGwAAAdJJREFUeNqklttOwkAQhv+2W0CTBuMNwlMIJirXvpByeAopXvl42kRQ8QajjRoVus70gKW03VI22RuW8GW+mfmDhtuLRwAtui7KHI3ugu6bh8GJietjE/iWWMjE9zwJbc+A0apZ89HkSdBHVvhklYa+S/QZekrQD4J64Vscuk/QZg2v4wleho6lo+xZQT302gKjc4J+SfwucqD2BM99B6JRgb6r3l7bhN2t+JX+/tCTlqKXoHOGDu5hMvRAQOyit9chKFf64aVDV3qnmA0cmEdVGHUBuZRbVhzTe0V67S5BP2U+1NcbVBpB+ejlempi3DWz9e6n642gxcEx6ID1KqF7PnTGUNLLUCzX90vfTi+tzLm6Un9luKcNgtY3oWpwAlpYb/8uWJmDdGg+OAbtbwGNpjcPykcoE6lToXAQaujIT6RgkOr50PSKY5Ve+omUBcUqHLins+G9Um82OLEyN7l6dQ78sKfF9KaDE3rtIj0dRdNbTO8meCPw1XoZOhs6W+ldByf02kq9YTgMORzKQYOpjgK/zXoLTK/9oAyHYhW7Mgz8DCj9rlalSptVzMfBnpbVu1Yx9dS1z0yLoO4GlI+hwTgUVOn0P3vrO0H5n477J8AA8FlP8fwgsDwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Reunion',\n    code: '262',\n    iso: 'RE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RjdDRTE4NDMxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjdDRTE4NDIxNzg1MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iOTg3RkEzNzQyMTUxRDFERTcyRTlFRDRFRjVGM0VEQzQiIHN0UmVmOmRvY3VtZW50SUQ9Ijk4N0ZBMzc0MjE1MUQxREU3MkU5RUQ0RUY1RjNFREM0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+w8A3BwAAA3NJREFUeNqUVV2MU0UUPmfu9La9LWv/KIsFQUB0FQk/0aBxNwFMDLAqkZiYrFljoglBFwOa+CZISHzyQQk+aDA+uEB4ImRFRQgQXH9YeABlN0tWYZdtC5GWdtvt7f2ZM87dTQjSgu1J7n2Yc+abc77znRl8ctXedLb07devrluzoPDOe5EvPj/49KZ/no/0xPqEGS25MxAJQUJzpnYQu2tB/csU2PrXWx9c7da4EwncwGkPYKOo0vtwJrBaX4xPAJ/89NqmjuGtWTveYlzj6ErZGDqB9AOLSzFC7O5CAITUQLPCxtiZW8vaBneeya00gtmQVhb/C02SKf4MsPtdcYhY/SCJyhE30kWXd1z+cNdYF/eXovpNqU4F9IxcmMzDZA6FDV6sVxPGGXPROey6JwgMZPfKQE4lkdCLPl9xx9jLG4a3F5wZD4QynBznxogo5yC5CGa1OZUJygwhmtosTY5Jc78th4DHOOiS379EIVkLqziGdTS34olqqnf2lx10TrR3a8+97Us9zhRx1y+JgYNwap/zR1mcj0qLMIGSpEqNN9AYZEjRcCZTmbm6v+vXndtWvdB522vMXgIv7S6yJfbGzdqDQYzqasO0sQb1hMQhd3Xdi4/diXubunDna/73eyg7OiWkZqCV2a6AgG/b+vl1x8Nr7iudMhbXqnbT0KZF0Zj/0VSw/uwpZhY9ore2ulalaWhEECRduk9PhCDh6bIpaAQ0gmwiLS8MWnVlqkw7e0H7e1SGQoTNQEskvZSAQPWT0a8ArFo68gAHhvqCFTtR5sRYY9DqolGxuaSVzPA3jw3o+14//Vlt1I6ze7rm/rxx97NVHyXTthpElTu/NwnqXELTYFWjuvR8pf04BUzML+sd7v09P/jR8jdWRhcrYfxZvLLr4v6L4/0Qm/vD2vDiefqRvZnll8rlVp3XH3JUx6K/EEfmTKz9vrp0AMwA5uOqCBZZOFK43P3TdjCSXqR5EzQdYw97lF8xx1OBFR8/tOeb6+/23eJ1WqISlj6ej1MiXVpz1J4zDsUIupoaGy9CCjSSUhKQ7YWGU4iaWp1mF7OOjLKeLanfFoZ5jRYAHA6FFqftl1L7jyJUxlxi6l4Td9zX0tOY5v+vRqaFAlqBqAK9G2I1WUtgarieOTn51HdQ9Xm4TDT1ygilDIfYqPWvAAMACcVzuqlUzzkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Romania',\n    code: '40',\n    iso: 'RO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGN0NFMTg0NjE3ODUxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDNGODE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY3Q0UxODQ0MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY3Q0UxODQ1MTc4NTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vo6AZQAAADBJREFUeNpiZNCuZ8AN/iybjkf2koMAHlkmBpqBUaNHjR41etToUaNHjaad0QABBgCcdAQtf60IKgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Russia',\n    code: '7',\n    iso: 'RU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozQTJGMDNGQjE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDNGQzE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkYwM0Y5MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkYwM0ZBMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+I9CATwAAAEhJREFUeNpi/P///1MGBgYpIP7MQB/AC8TPWKAMBiSaLpYzMQwQGLWYboCRgeH//9GgHrV41GKqZCdgXhrNTqMWj1pMFQAQYAD5egotBoZoiQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Rwanda',\n    code: '250',\n    iso: 'RW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozQTJGMDNGRjE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozQTJGMDQwMDE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNBMkYwM0ZEMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNBMkYwM0ZFMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2RPnbwAAAbJJREFUeNrEVstKw0AUPZNMm0QN1hZq8QE+FoILdSeCoHt3bty680f6B/6BH6AbN4Lg1iqC4EZRQcH6wNLGvmxeM96OFdzoKmlOuJnkznDPzL3nwjAUS2UAY2QNRAZJpkGTKWWM/rtPwHyABTZNPnN62b3VdnTEOnHrGNQbWDAfkNXquHKn8eAVyJ8ics/miAMiDZtXsZPbx2bmhLYR4s6dwG5lC6etJUUePbGkkExgfegC29lD5LiDtjAxazzRaOHGnULNz1MhIiemNFMtF61bCAof0kZmzBc0wwFMpt+Q0x1axGIgZlIN9944BRfgLMBjZxSDWgfvQQYdaaj5GIhJucLAUWMFBx9rqATD+KRUn7XnsVfbwJNf6IqLzlws1aNVdO88lPIREtiydY08r+H8cw7XVF+pVO02ODw7BllL1VKOO4zj1qzqY9H1kuhURmCAD1gV8dME0dMTpdSUmHQiNb4pug7BXi9navSRIQvRH5Ds4fBRu6z/cvQLOveoDkmApw0/GeJqy4xNXH/3GgSfPliVv3qgX5C83rSSERcSqrGGhMB7Vx472qvPv1BcXwIMAIuEkzMvcwIMAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Saint Helena',\n    code: '290',\n    iso: 'SH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzUxRjY5MzExNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzUxRjY5MzAxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQjhGRTA5QUQ4QjRBNEYyMzI0MkY0NERCMDRFREYzQ0YiIHN0UmVmOmRvY3VtZW50SUQ9IkI4RkUwOUFEOEI0QTRGMjMyNDJGNDREQjA0RURGM0NGIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bql65wAAAzxJREFUeNrsk1tIFGEUx8+3s7dZXWlHV921NFJLlCJMKrx0U2rdxC5GEfWWGERSUPSQRagVvnQheolACtSkMjQfTExDhcpiJUTLLrZe1zX35u6669x2mhldC32RpJfoMAzffPOd3/mfy4d+XC7VGrOeDitLH7zvbXoJoKkr232wsaIp+6Sx4htg1Bqd9GxKoPhQgle3Tl/U4rHYEShhCYbd7tA5W98UJmGnjImxWalfphWb9fjGvs7upEyTDc4lue8fX5uxI/mmI/pY9Yj9wyeRi5aCRkcLH8qjNUZ9IJ8dVRYYQBdvbnzlPrBXVfVYExsVMTkIBkPLd6rqboNjyNb8wsywFIBU9OU44S0RIwVgUUDEZe8Ekhl30WM+4ByOiDAl6aOcJKtGAYVaSUbHUBZrBFCxa8MpCR7ZGTfFKBAwAhhYgBU8QS7zUrRapLtF+lwIqSk8aXzcRqq5jQVblS57qM3i5eT2R43hh/fqUhP7W99DlLaHWDkwOYIUOIMwmOMiTIJfutKXscXjcam0uon29piysniaoea1I9BfyDi+reREem6MH168rrQo1iVGrzmWZ75R6dlj3EP4oKP1eZv5+iesa1IKr7uRoA7jQBoSins9N3hEU50+t8DCLwhNsdPFE8k51bXlOUfiJfD2SU11151+rMtKNJen6DYQXwfMBv3pzLz480dT9+2Ky08YvVf/9YyKJn1yURepQHR779UQQuXCLZ19GKvUYNIRAH+wE4AdTN7eVFFzsc1762PImN0LbECKocF+RxupNQ1Rw5+7a5/1tKMEf5iW+TzQ8n2aCcyiJSwdWGU1ObnsmdVnx+mcgdHMjkfPSWoagSJYENgPEAXA9x0hkAGwHMzwyQE4EcgBZGK7bOIkRIoO7GytASJKsq4R6fAxvD50onVqiKypV1PMFBJOiqoBtokOWHCL9xEC8HmJOxwSQoYAqMQ1F2ySsPAECHna+oYwjZW1mxps026ZqC94ZRBsWjiPwWfx5m+fPMJndRPDjrTI9CjbW9z+zg1AI0Fr8AyCIvhTE1OgccD8Qg3x2Szn/0pgGSbmIfMLhVrIhflBWR4d+5XDbyaBv2b/0f8E+qcAAwB+l0HjpzOhQgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Saint Kitts and Nevis',\n    code: '1-869',\n    iso: 'KN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzUxRjY5MzUxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzUxRjY5MzQxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQ0ExRTQ3OThCOEZFNzE1NzlBNEFEMTBGOTU1MEQ0QkEiIHN0UmVmOmRvY3VtZW50SUQ9IkNBMUU0Nzk4QjhGRTcxNTc5QTRBRDEwRjk1NTBENEJBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xg9gqQAAA/lJREFUeNqcVXtsU1UYP+fe03vX23v73EOnEgWWbUpwEFcSJQooooCEaNDAZkKs8mjCgAjGkMEY+AcdoJskYxAjc8FNIYEoWaTRTEMgmcNkKS5sMnoHbZmk7drdzrbr497jadctc2ug+CX35Nyc3/nle/y+78DV3370D4ggQIFHMAgBoCBOJKm/glxlhbxv0d99re7PjiUhk2RRBoQc4VtBGFYBFQA4V2ICpWRplIN6qmb96GKXeHi91Nk1E4byaS1F0YzC5kBNOAEN8WgUeWOqjStDWwo8vY2evV9EvPEsaDR156FGQTkuQ2eQe+5Z+eQyT+wHp9Ua6JeyYzNfLhmgIRRDyE+zR6q9p+f22t+7/rG1SIyXFhUazWbzLGZ04JTwcGpE4cC46laAffvleNeGgafP976z6N7pTpA/B4mDXTf7Bw0GwzQ4vXA1c8PH1j+jRQ/wlOggoUDnfXX5gnjba25T9926pcHLDhoAhQC2bt1S/EQx2SwxL7Hb7WTDFOU1tLE7F/LSh+pLF1Uoa60gkQAEosTILPrc4l2bFM9u9x5qldOAFK9Op7PZbGTl1Oz3310FwPR6zcjZw7qCdvXVNZpAktKC2GxqBVGKL8IGwszGV6V9C9zuDs+6vdEBH5yUUGqV0lZ3wOYbHh9jnWeucJsNT91dxl/ohQJICGnQf6hpCGIKdnrV5fOT595yPn7DXb8idO7aBN1saSJxaKDqEP21pZA5qv25kY0BxQRkDDBOh44ms4AhhLeDeTAveXTzSDU3dGbXcG0zVFKM1ESXTK8CCa7sTfqrRv6lPr6vXHM7BLUgoQFYyZxO6pqGyug44w8xG1b4G8yu4YuudXuE66IJgBGTyRSJRKLR6DRnMZ1P1X6pry3TSjvZzssqBii6dAFm9AdKytQdLz9vbvxHqzjP5flkpfTNL8TB0PHjDURVDoejqalp8lpKqcu3MydrhNLz2u5NjA9gPkU6ka6ZfYe8CdWR913biu/8ZAu8sZ8KJVKBm80vWCwWIoCWlpYpZ4VSVcMxbhurvfeu+sKfgHgqAAVnSLP0M/rtg0Hlj5urXsG/O8lvZhYYjcaenp6Kiucj0fHHCsrv+/qrDnK2VYaiU/yvrSgKFCNIklrhBw4JuGOT8UR7IJ10gpSnDiorzSXzy9o72uYs1zTXc2v6+b7drBgh5SKeKrmMHajTGSUpkH3E6OndB1V1JfqkTei+QjNAJhVTcptl6QlB4dkdTrS1uBqcqBJetBd274J+APh0QLnzpqgxnkGNuSfp/Z9q9rCC38pdGiIaiGtBBgQf5SlCPM+PjY2p1WpyOxzGS9eyzTv0JR2aa62MBBSNgGWcJ4P/Y/8KMAA88JPiKZPG5QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Saint Lucia',\n    code: '1-758',\n    iso: 'LC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NTFGNjkzODE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NTFGNjkzOTE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc1MUY2OTM2MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc1MUY2OTM3MTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+RRKY5AAAAg9JREFUeNpi5A5cyEAbwMRAM0Cs0UwsTN++/fr29SeQQaQWFmIUMTIw/Pj0Q1FaAMh+9OQDBw/b//9UcvV/JsbfD95OzHGcV+r+5+Hb/yC7qGT092+/xMx12d9d5nh3Ud7e6PuXH9QxmpGR8d/zT+lh1stndk5oLcsIsfj38gtQkApG/waGq4ioFvfrAwf279hzXJHpMbOc7K+//yg1Gui2n68/+/pbMzw9cv/1zw+/GP48OhAZaPnr5SeC7mYiGIEMX/6FmQiuWbKclZGBh5Vh0bwlvjocDH9Y/hEym4DR37/+VHUw+vnw4todu06s5jq/jXfXkeMvLp7QcTH+/vkH+UYzASPwxedQe60tK9bFOTIYBQupuPDn+DHsXLs+xErt/6svTEyMZBr9698/Jmmpb/efmkuvWbiE/f+t3/+v/548l8NZY/O3e0/YFeR//vlLjtGgCHzzUc/QMdLkUkH4MwYmgb9f///98Z/ht0BG4Ksw4+Omxk6/Xn7EE+A4M/pfYJr7IV5ifdHMtpThFdCeVyzi4Nz9h4FLk8FYtLz0t9SRzTJ//+IMFpxG//nLyCbF9+3Vyh3b2f5+c2L4j5yQmZg573/+tJJTJuL3r2/sTNgLFEY85TUT858vn5kZfggxsGBo/sPEwPGOl/f3379swCRKcsn37y8LFxcDA9d7nIH2lxWXuYOjKiADAAQYACDo1+pXfbuqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Saint Pierre and Miquelon',\n    code: '508',\n    iso: 'PM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE1QjFENUMxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE1QjFENUIxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRTZGREUxMUI1NDA0MDcyNDExMDA2MDlERjhFMDQ1RTMiIHN0UmVmOmRvY3VtZW50SUQ9IkU2RkRFMTFCNTQwNDA3MjQxMTAwNjA5REY4RTA0NUUzIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vSLwPQAABrFJREFUeNokUwlQlEcWfv0fczuHM9wMOMMhoKAc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'\n  },\n  {\n    country: 'Saint Vincent and the Grenadines',\n    code: '1-784',\n    iso: 'VC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QkE1QjFENjAxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QkE1QjFENUYxNzg2MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMzVDMjYxQ0FGM0Y5RUZGMzgyRDc3QzgwMjZFRDA0OUMiIHN0UmVmOmRvY3VtZW50SUQ9IjM1QzI2MUNBRjNGOUVGRjM4MkQ3N0M4MDI2RUQwNDlDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/PJycgAAAulJREFUeNqcVU1IlEEYnplvvp9ddRcx/zK33MyfkDJajaA8FNFB7BZBFF0iIYgu1UGNrCCoQ0cJOgR1EsJLUhelOiVaoVmYmGu7LWYqW667334/O9/bfLumtuou+l5mmHfeZ573mfedwUfOPkP/mz/kudnadelMtxrNwQhQRnM49bsDe2+/r/K6Y8uLCcScINO1uwFAoIwISJIslBkaAxH5TgbWOk66foQl8sGy8PJK2umrlwHW+JNGNuCTCrYAiCIySvgEkot8BJmAIlpWFqk2hF46wEGtOBMxBuEfL0rAABxNKE6a5SIyQUsi45m2vGgcnCmQcjTOGwCLTq3vR0FLbz2SmETZpqFTFImUeDLm6R/2PhzZxTPgQPZhSOgarXgzWt7ztZTI5no3kRE6lWggvK1zyOvePvvcX9jzpUJQTEHWn36qeBksyi2Ktg1Wzy26Ns1awDZ4+4A3OJ9X5tIIJh0fvVwOpst3hnZLYsLjjo9P598bqEpyhs2wBjvHE2XzSNZjCcliuKk4gjAWZONocdgwScSkolM/tmN206xTHXBhv/987Vwg5Pa41UfHR15NeF4HSh6fHC7K1UMz7st1Uy21waR6eAvFhzobxpGoPTg8jgTjXF/Nxf59VDQ7Dkwh0Whv+Ja5+GgGnxFzePMXe08PNldOd32oCUdcYQLdn3ddaZjc6VIL8+Kmqog52kaPQSZoXmiGRporQyM/C66/21OSrwOzWt/W+UoWTlUHtKgTMIhbaxlsi27ruBB3qAkqEVMQkMqE33HZdmLAGLbc6LbxrJu8oRv134N/8qYj9NbBSV/5LyMmZw3MDp3g7x8T2hrHZIdamqdf800gRhhkD6RZd2CM9bjkzo3fPzSZIzJZ1rnKmaVYhiZpAvOfQKS2xIoCK1XOHFd9fnvOZEWxlkoZ2y5Kk2E4/TGhAGZatwhYU6NsMYI0VVj5HIA/T7zMBIORVZSp4kBqDBHMPxpYrkKLTwD9FWAAxwI1PaSIg8UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Samoa',\n    code: '685',\n    iso: 'WS',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCQTVCMUQ2MzE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCQTVCMUQ2NDE3ODYxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkJBNUIxRDYxMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkJBNUIxRDYyMTc4NjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+mJryLAAAAXxJREFUeNrskEtLAlEUx8+9M97rjOMMGPaGHvQgWkW0MKI27iJo0ap2QVB9ABH8Rm2jhVAQ1CYisIU7kTLsoYk6ckWdmTs5pCVBMCnt/HEWh/v4nT8HBZeiVSzCFw1T1uTwytRV4qmYKwHxgIDABhCIbFRPHy9HjGpZIOACnBe9DItOEcqYybK67ZPW1xawKjPdYCYwkXw+aCZojkDgFuzjZqstVEKrs4eRzfdM4Sh6krlJx2Jbe9vL8FyCruhYhcFVhY4P+p1kVAwEg7fJ7EtOB4X2rB5W4+fJ+FkCVAne9LnQzMXdg/VahiENTKs3tclBpiDgQEDZCC9e32esSg0GlO68zq6B+oGqrfKqYNLy2OhBZKcxOQF18n1FNUb8HJBg2y7V6Hh6t4Fwx4kNCGk+WmZ14E7fziAQy9gvplRu1JDgSl2V5jF0BMHIMrler/sJET2CY2+P5AiniWIg7DK4mGou5AceAAnyv3xwvxAM/0Zf3Vf31X/iQ4ABAIPdhjTlJ084AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'San Marino',\n    code: '378',\n    iso: 'SM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxMDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMzM1RkUxMTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTBFMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTBGMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pmAcAgAAAlxJREFUeNrUVU1PE1EUPW86hGk7tbVAoaDpByGG1EBMVEyMceHGnQtNXLjTH+BKf4BxZ1g10Z0LY1ITjW6MCwPBqCHBFghpLTRAS0EoQqX0ezrTzniBLm0thtpwkzsvk7n3nbnn3Xse08jQAuPIsy3AzXJokR1HYLXq/xk4PPsWQf+rfwbmD5sgFVJYXFrAejQAoa2CcNgFx+kBGE2dzQXmdWYUtz7CZppEdK2A5K8SBvtHm0v158UZTO9u46Syg+zyF4jZaZwxSgiVJDwY8yJdzBx9xTllA775T7iq+DEfD+K9NAqLWYcriZfgx+8iEBeQv3AbZv2JxoCfTG6Xaa2Q11AwHfGi4uvKBJuYGmceV5zzi48xlr6M9mQFCasD9/AMdsWheQNPtQ79TVVjA7RbTV1i5GX+oS+mq0s5M9DUJMkjgKwiJnbRGUdxKiOjT1TgNpQRyRvh+1ZmWF2n+JAOmkCJqXoF63jYBFb9ixrA9KnSC07OgVttw+aSAfazL/D6h4Tv0SLO9QKzK3ZA3w9YrzHwF6sqLNQDZlxDbUBUa9wynLZ2BEPDkGIenHf/xJAzj0yiG1O7fehyfoDAZihebKhnG2guOn6tBE25Dt7ejTs3hjCSXoPbb4Bn0AVTxyXIOxa8i7yBzHooVqZ6tCMA1hTaiNrAdAsLqSK8cyoyhgx8GyMYZkb0SMDzzU5i5D7F5ajYLcr5+7YMj+b2hs/U8NTL9ChQitlMMkaoCjEiEr1sjxnWqH5n+UPfCzwBWKwHLwJ1vKAdsLIPqjVPMvcHQJX/MJrH5D7+LcAAowvZ8JHN4kgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Sao Tome and Principe',\n    code: '239',\n    iso: 'ST',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxMzM1RkUxNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTEyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTEzMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A/jZ9wAAAoxJREFUeNq8lk1rE1EYhc98mGRSo0UkJSmiUJtFFwri2rUIgtiiuFGwiMtiili02A/caG2wC8WVUPeCf8B/oCBFVKzWhtgmTalpk2Yyk3ZmPJeZ0GASm4WTC2/mfk2e99x77k2k5I3TK6mRakTLSegqS7BldKSoj+eDcThAarQKrKBjcDkdskszr4NIzgZQ6XVQDrPT7oDiEkHLko2nhIuSSgrlMrp0+KpcVaiuqAFLsCGUKxIwc6eKSpqJbJOs+AQWHwJeInyZ8Ml5DUGuwMLDHLRMgAPwBS4tdJ8t8hkRDYsCA7qMo4aK6Ogi8GQd+In24LuMbvGNjN+MA/uYq74hlFthC7mQhQ+zA9hIxoBjHKAPUBWZ/RUCtuPBeoDsN9rjM+sxr2/Hm2M1RqN9bAlyeBdqyMD3uQTy9+IuXPNecuoCrrLCGlCmJcZfAiMpwGB9I1en2mmMpr51CFcID2kVLD1L4NfwCTgHORBsMpn9WRO4chV49RZ48w64eAlIb9U2sI2lbjCA7DA5GVZJcZeuWdkEBs4Bt8/vdV1j+8wFVgr7uLoZ0DIUGHoYx4cXEU9lgFUOmC1S5ZkvMO5eB0JclQq3xNlunWuDq901oEpCTQG9+QPRF4RmXGVNnS25e5bN01OnXCn5j0D0iDffaUOxuKkUQqO6ip5bX4HnOVdpmRFqkbpnllg/n2JfeTKifd47tcT+BRbQsEED8xzPDZbxacyG9r6Xayi12JD/cHPVoH2EPhoyMHGfh/YLj9Gmj1emgGo0TT+hk4NVTD0wEVyTcEjfgaX5+COhUWmC0OnLe9BISYKlwNcin9TliIBOjJsIrBNa7MwfAXV6qLo6NWZGBPTwlv9Ka+WPAAMAQOHt/oOWjtwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Saudi Arabia',\n    code: '966',\n    iso: 'SA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzM1RkUxODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozMEE2MkM3MDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzMzVGRTE2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjEzMzVGRTE3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VDw2aQAAAwhJREFUeNrEVttOE1EUXdNO72ALvQqIQYSIxIA+GCMvPJEYLzH+gN/hZ/jAL2jiB/jkgw+YeEkkgsRE4w0UrLTFdnqbzrTj2jNtANMpwgOc5uScM3PmrL3X2nufKlic/QlgiF3D8bR+9k21PcGe8VjAPTihprq/UgCrxd505h7aaFm771qGM/WoznOl8017v8L9Hu+eb/a3Hh5btMpCgABqUwcaZfg9Ps4b8BpVhAOnEPH64eNaFfCWCbXVhMfUoXBUXAAP9pgHRoJR3Bu7jbA/grWdLyjUS0jzWc2oYDw6iunkFFa2P6CglxBUQ9DNOm6dncPH4g+8+LWC19+eA+HEIT02ahiLnsGNsXlcy8wgrgbxieDJSBLzo3McU1gmqBCr09tUMIYdsjLcfxpR7m1aZk+PvbiZecAx0O1lhbTlawUk6eVkfBJb5SyGQgMo8blFzWPU8XtxHWkaoelFvM2uYSSSQCw4gDfZVfyu5YnQ9eiGu8fUrUFP8vUixPY4NVWocZ36DYfjWBi+iqnUNLZqO8hW8gj7wrgzsYD10iY+k5nxwXOUyzyCxtQrfWoE9y/eRZJePnz3CDOJCVyKn8er7HtkqN3S1jIKZg0+o4y52BV4yMCzjZcwabBXIlpReuTM4mypa/FgWvhJk3gnducqOVtfP5nIlTaQolGbpD5AT0MEqdE7g9RqzIQ0dS5UttFQvG64mjuw5CEtR0Nz8tnfb7Ng5y9ph87nDCJ7n53vlpO3AiZ7mGr2HF3TSnPXWA6TQxko8Pc5oLKWYDEbzihgYpwcLmCyR+Zkwd4L6yiVq6O1jkFG6mhfBnXOmzTIah+oyI86tmhAjMaVzSq+Mrh0Fhi7oh2tZLZbi4WElF5nLkuFMuiZAEmXIJL1H+bvODW/nLiAp+tLeLL6GAgNol1HDxlce7UWD4RG0a1TqxXsats0oNC4EAPRSwY00V/pef9oB3ssh0sQSf+3/nYuBoJZjOpqNedQrAZcL4f/p3ofkAt1nYj2hHfXB7QTvY+1tsbH+ddH+yvAAIKJO5Z5g0J2AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Senegal',\n    code: '221',\n    iso: 'SN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMEE2MkM3MzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozMEE2MkM3NDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwQTYyQzcxMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjMwQTYyQzcyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MP7aXAAAAYNJREFUeNrkVjFLw1AQ/u7loRUMtS6Ck7v+AcGiIrjo4i/wH7j6C1xcBAf/gJM4irvgoiLqIAgOHUpbqCgKWm1pX85L8opFYptAgogH93K8fLkvd7m7PMLWfBXApOgroqQJGnVhyusOF/LQ3gc4CqbyisyDMfWlCjqltqPGnUiciCta09ZAzzVKvK5/9Be2OgjnDgJ8d5oGJlYEmckfI5aEkhNq/OSmQKwIaAlhy9rZEtvIVE6WMeDgnrF/x4Ed7CFZ9LGJtQqb6qzMQccf3grxdWify15H7jlOBsTkp3SEcFEXe9fguMQ4rTJox+BERpB2Mkp12/gLY6NI2CvKYzWJtsLYnlXYXAzdGBOfWMdG0tf8unxiLMwpDEuUVy92WDGFmNSJLXnjEVibIizPEIY04ejGw7OkvzCRLNXJiCXinES5Mk0gv5eajFV5Ae8teT/rpP3nFxm/9/A0bOFlOkDot0fmfyGmND+Gtkce98ejT+jM2LrVfeq3i/Ol338r4PoUYABXBXI3FKW/6wAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Seychelles',\n    code: '248',\n    iso: 'SC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjMwQTYyQzc5MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjMwQTYyQzdBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+1AigIAAABGRJREFUeNqMlUlsW0Ucxr+ZeXa8hjgRJSCo1BQlQFUkoGqkSlGqJBWkjYTUqooEh1QVSBygNBHbtb30wqlCHOglEkUtqBfOSJQzByBpk7jO5nirlySO7Sz283sz/J+XbHbijDSW5Tf2N99vvvnM0HsnCsCLRoMrYMUOuExz/u4EOl7bEmbGdvB6qcBsHPx1J/SJdSM8NovNqXWh+WzMeqzRfAVHGQYH1mwYH51Dx+ks5KK7vJm6axVEK23qZTsy9+OIfDMHI2ugqcMJVSx/h34NuYaighaHnOgbTBgjw1GlYg4oVkfU+sgkURKAW8jY2Gxx4dq0lLpC04kd0arjxoiX7eDtBfnoi3mGLc5kQdS63Ubrgv5fzggR2uzjtEaCTLgElLF3vXYkxGm7undzRvq61jUZ8JQJ7EfbRmjb7SrzS9wMfz3HjOWicL7pLoMwa+loDREH3Ri4GDevD0e4ChOu3U5V2WkJbVHJ6JcBmfwxyrUWjTu6XDUujyZcQYxjefnQQlzgXOZ3IbbQ2gntSUI7uW6ERgntn6viILRHF7YQZ2xq/NaMbOskxLO7EFfRvkRofya03xHa1OFoa3wdluL+wYQ5shtxNbUnSqk1Y2MBY/HaNFe6Ehba0vNGmpwTDaOO40pRsPaC+dvnhHhT8FKKIXdSS4UQuhlA9q+05iC0vBFaS6xQgJFKwcxmIZqbZa2wQcWyalc/3ZpWrZUUKyWhVVP7IGFGKLV6Uj8crSWWz5fFcjkIn0+6zpyRnt5eeAcG9jmupPjCpbj5yXBEKMItLVErtbo0K6kVVmqd9VLLGJSubzvT2tqkq7tbevv64KHp7u5mleNlWm2KC/LXalEYGrRTDuhPNozQjWcltDWptZxZYolE2VlLi+VMeXp6VPPQEOh9Sagy66S63MVq/DYVxYmchlUfRKdNUdcakW/neNEqhLcIrSJX1izqe86s6szb3w/X2bOWiNgvVitcQuyyutgcuRIR0Frp/4pZXWsm7oatfxTueMMDubEFI1n/zNznzm1jPCTT1dwrbbuLj+XNR6MLHB4vK/yTN8JfzSL3eE2zvaoxtbGMrcnMQWcmDhMIp58jmI6r6WQQfpoL6Rj8yyFybHCGlA33fgjC12WyzP1NKvgpnk9FOD2E2iBn77ynms+fVy9+eJnh7VP7EUrrJZlbkf7kEuZXImx2NaqexOfVVGKRLa3FudxYo8zkGEy6MhrdDruLhBedeP9GFtcvhxD7aFJGHwRFC2vFyatXTdfAIPDBReB423bZxIs5Ob3kJ4GoekY7f5pYRHA1xpYySZZfSzDk13cEmigTTVQsrhfo6Fr37Jc1X7qjMp/9ATzMwHzaCfFxD4q972LldBdiTgdmkgFMTP2N+egC/KklBFIhGJkUXa9NajGDUkI3wU7XrYmmzUHbE6Vr1Wiw729/GhhCuv33bIcev3CcRbx2zMTmecD/L9NTz4HNDCW+yCE0S4DBQZ1tJwFG4TiCwEHjfwEGABOHZsLQl4B/AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Sierra Leone',\n    code: '232',\n    iso: 'SL',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzOTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjM2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc3OTE4QjM3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GrndcAAAAE9JREFUeNpilNtq9Z9hAAATwwCBUYtHLaYZYPz///9HIM0HxPTKVoxA/IkFymBAouli+WjiohtgQUpU9Exc/xkZio6NVhKjFo9aTBUAEGAANLMNXBNFuocAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Singapore',\n    code: '65',\n    iso: 'SG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3NzkxOEIzQzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3NzkxOEIzRDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjNBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc3OTE4QjNCMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k5fIFwAAAflJREFUeNrslk1rE1EUhp97Z5Jp0dTEL7S0GEFcKK4CLgouunARQcEK4kKqtTsVi8WFFUS6EDdiUXDvX9CFgkJXirjQoggiKoqSGIuYtpOk6SRzxzMTK/0BlwrSA5d5mYF5zrnnPXdG1fYMloBeHO3TDjEfv0CXh96Vh6AFLVmOA0phKTKyym4itIb6YsZ8LZEeG8U9WiS4fodw5m0CVZl1Hbgx1uA6uYRSaWUWb+oa3s2rmDfvaD16gNq2la57t1D5fsz7T7C01EnAQiRgU6qQOnyQ9PkRwulnNMcnSZ86g9qUJXw4DY1FUieHUH3bE20NTL2BPrA/ke37j1Ebs6TODic9DqbuEs3+JHX6OFrAkV+3AnaXhVo2T896onKZ5vCYtMCg9+6TLQ5ojl6ClIvanLNYcXc34fOXnUwGBzBUcAYKeLcnJYkfeDcu4544gvn23Zq7nStbdk6Ia73wxQxazOQOFVGu9PbJU6jVBVYmdn0kjo9+VVHptA1uoPzewoK8OENdIFWp7uIF3GOHaJ6bIHz9Cr1jN1Gl0gHmZJvbbRtgX9UKxTkRG2RMDEGA+fBZ3JxD5/uIag2bB8fK9s4rM79QFZGNp/nvIzEVMS+e2SiyDY4PgjlX9WScFTdWKxzNP4o18Br4/wPHXyf/z++Iv0rMhPVbgAEAAN6l96444okAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Slovakia',\n    code: '421',\n    iso: 'SK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBMzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBNDE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc3OTE4QjNFMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUEyMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YhjhIwAAApRJREFUeNrclktME0EYgL9l221LW/oAIlWBg4oXUUPkZGLwhIpBIDFBjeFoOPg6GfXqTSPxqDdNDEZJwMDBgB5MTJQLCWoPBhrwwSNAC7TUdvvYcQoESuRiq2icZLL//+/MfjOz/2MUIcQEsF32CFvTnLJPmlYFsp5bAi/gL7V/CyySSURcX5b1wDj6yNiKXdpEIvnnwIHWCwy59zCo2JnuuM/Mg0fL8pC3ipGmtt8CNvW+mVxTYiYr5W6VYv8HEvpXbNv24Wk+gaJphDq7iU0MY3y0M/h+hs+6BZsezR3ceP7FuhYU1DeW0el1yNhyUHatHVvVbkQ6je/mRSauXsdX7ODGnXd0Pw+CV+QOprRwXTMXYHZrGKEg9gOHSIcixEcDoKokp+aw19RiTI1gdpnBJ6OvKJUHWFXWNVUQFQUkYgm0ihI8p+rRXE6UAgVT0zGS/k+kxvxyjCq9Q+42e+4vgze4WpovKTtL+2so6eskNtDFwu0OsFjRLrXLw5d+cLyFb4aUxFxmpfmAs1ZtVQjMqMzu2MuYdRcvi2vp6naiq2Zad56jbvot5fLdcNACtsy83HescKQ/vJYuM98JGTQ1eIkuCgZef5eAWbk7aY+XUHfYRqnPzLMe6VgeZcWeW4sotypPh7PzdCqeoFBT8LW1cGX6IMFXfjAMHEeruVfhZ/7hUyKxNJrNkgdXghcL3RvAqqKwFA1T5HEweuYyZ23NJKQzPU72Uv3kLguz8zjsLtJC5JM/IsqQpyr8U2WS4aOHI1Qm57A0nETIf5zq62FccaO5PZBO5Zu4IqZNzTJhWBx2Jg07Wl9/JkuTcFWgZUbnD90knDZUCoEMX1KestWkLo/W+A/Komn1yuPc4qtP5IcAAwBoBOOwBg9d5gAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Slovenia',\n    code: '386',\n    iso: 'SI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBNzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBODE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyQjE4MUE1MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUE2MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ioEsVAAAAYNJREFUeNpi/P///1MGBgZeBjoDRqDF/xkGADAB8eeBsJgFn+STp78Z1h/4wHDnzi8GULgoKrMw+NkKMSgrMEPdTAEAhvSn/zjA9IZTQOtu/GcQ2f+fQXQ3kP3gf03+OaDMr/+UArzOtlT/DST/MgjpqDBIG6qCnMlgrgYSY6U8qLcd/ok91TExMZw48JfByYuZYdYsGQYONgaGlIx7DHuP/WBg0fvF8I/CNMnIIPr4E9bs9IeHgeHbaYbnV/QY+BXFGf78Bcbq+9cMihonGV7/t2ZgYPtKYeISZcYV+wycb8QYpjScYwju9GT4D1S2u+E8ww82CQYGEVAMMVPoY71n2H0MtBjka/531xkWlfxg4GJnZIjrYmF4zqXFwMD+DayVRhZDPfWHm4Hh7l2gO4BhraQGtPQ7UOwfNfIxnoT9F+Q0oO9UlaCBAGT/YaQ8D4MtZhMnQTk/9UquhS+jB6LEBFYSbAyfBqJ2Agb1gHiYCqlkKFrMOxAWg+rjZwNhOUCAAQDa9c0WhSA2hQAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Solomon Islands',\n    code: '677',\n    iso: 'SB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMkIxODFBQjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMkIxODFBQzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyQjE4MUE5MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyQjE4MUFBMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+3IS9UAAAA4NJREFUeNqslV9sU3UUxz+99+52bVe37i90bMbIDGFCiBjiZDGaDGEwBYXwYGJ8JD7og0+GxBB8kswnX0x88wVdsOqDIWRMFDXTkUzkj2iQZLCwrltHh2u3/r33cn53g6YPdmvnSZrm3tN7Pr9zvt9z6+HI+SmS+SAFG19zLemJJLQHQPOA4+DGZIq6rnpSiSxYci9kQmElV2V42HvWaW/z8fYrj7N7SwOffTfJN+NxMhlLsh5qDA8Htzdy7PUnuD6Z5JPIbSaiSxAw1gXWBJ3MxtIc7mnlxadDPNvdgBVbWkk72DNpureG6BP40ec3kJ7LqOOug2iDrWEQqGFOih379C9e6A7x9W8z5HVteaS2g+XVOX1xmnze5tKtf4mlC1BvqjNVOFsFlCnFNrnPenhteEEz9aA9L/rdl09HHdzLsFm6NGXMNy7fA5GCOyloMDGaaim4MlQC1CHeLkAPPdtGOf7yl7hC2Tkp5JOkzw9ygF6Bnj65k1pT440T44xcS0DY79ZZM1QBLSk/t8kd7e4dP3F8zxn27zsvHCh1iBqvGCoqxTvE4Sqi7shZdrEuRJ3yY1YaFqRsvMO97Nn+C+/3RXj1wDmQkn9ebOHjC20CVmsj+qG6VgVlhe7L9ZZ3RuXSIZHMr/hMknnHHRem7upfTsNe1WHfGfr3jbgdXvmhlcHv24hc8ZNJK3NlLR6T1dghrn3uqXqGLkS5I7DE7eRyQem8M+zj6J4OWacUY9cTzC+JwWq0Ug1nO0s0HDggI/WqDlv5aKSVod8D5HMaG5vyBEIFAUt3gbTFqTe7XLCqN/j5P+SUc9VkF3Ic6n+Swbe6uHF3kb3vjjKvpmNSVsNrP7ZxaqSFyB8BMlmNsAD9ZgFLSW8rjaXbaSn47aVZGutquDyRIqcc3hl0xbSk+6uS/3tqkcivM9yNL0KT5GLtZTX8YjxANiMdNkuHjUVg8c11aHjB8GpBQ3TJLBYIy+pE1UtC9zwy3MZmL9MzAvRJ5Xkxjfyu95mfy2roAk2nBFb6ypQ9lu+g0vqRW/1G0TzqRErueNjVcNfOMT7oH2Jg//B/a1gG+DCK6+TVi3cV9OEeRsPLGu6qTMPVwqh2D1fTcO3gCvewWmARXOUeVgssgmdlpJZe8R6uN4yerWPB9176iiMDZ6Hu/9Nw1f8Q55ZvipZ08ObVFj48t2HNe7jeeCDAAKYZ9xEESrmkAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Somalia',\n    code: '252',\n    iso: 'SO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNzVGOTkxRTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNzVGOTkxRjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM3NUY5OTFDMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM3NUY5OTFEMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+aPgnNwAAAXBJREFUeNrslr9Lw0AUx7+XXBLbJB0ULLi4+QsR3F1UEAUR/CecXRwcxal/gbOL4OCgo0v/AcFFcKpooS0SWmmitqbXxLujYsactHHpg0ceL5d87uX9yJH1UqUGYIZrgGzE5VqnAwOJayZwDf8kY3C6hwjQ68dShZ0ZOIoBkrBHChagmEMYJ1VbITaXHGwvu3huhtIXJzYzVDD/qsiZBIQQ1N8Ytjh0b7UAz2cSmjc1uSat0LQLO2EEk+o43S9ivmihkNOh8W1XSgt48kKcXL/KNbalDTdi8cLWB8NZuYngK5LRW5Sgy2Lp8wKGvKWNprgmbYqbex+3D7/Ttfz4jqu7trynkmOqAvY7fWwsOlibs3FwXsMnj/x4dxo7Ky5emj04ChErgQ2dIGdoOLpsyLyKojq8qPNodZi6WkMrgUVOG+0eQp7X2SlD+oJuXxbVhEGUepqqDg4RtdAfiGijvwyS8U8iM6GDI4+b8dEn+BZgAN1qgUfVZqa9AAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'South Africa',\n    code: '27',\n    iso: 'ZA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDNzVGOTkyMjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDNzVGOTkyMzE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM3NUY5OTIwMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM3NUY5OTIxMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CE4TZgAAA8tJREFUeNqsln9MlHUcx1/Pj/vJ3WEMPBERMrDagkVba4I5BzihtCyZzsoxurVm65fVwgp1/eGMmrLlP7VYFvzjDJS00T8dUUmba9NqqDAwMDpQzBz3CHdwcPS5O9yOudbu4Lt992x3z/O8P6/P+/P5fB+Fuh0+YDlTQQPdROPWXXgeWg8Xu/F5thDovYz5vjwUiwVmZliE5ZQ9rPCWx491womugTEGN65SWlrFiZ1vkyp33DrwDiMNH6CnOTGtyGE2Ij47u1BxQ63MGpKLCyZ0cEgwWavo6GhhyZtP0HSlB8d7B8nvOIc5w03wt24IhUDVFoyttlf8TEvZLxAWijEJQJGX5twL0yGq656h9FgDRmERWV19uHfXEuzpZ3r4TxRdAlWUpIUVT4nub6yXvC/NpPxUAd4rK8EWlD0p4mHwDaCkZ/LlywfZmXM//H4e365tBC71L8R7IxKy32FRnR37FR6uttF6fjVVnQ+IqE1Sb4Cmws3r8M8oZZurObHtNVxR7/dw9Ug9iiRKsZqSE56rNGqKNT4/JD+lLaP8dGEc/ZR4K1TDA/Kfm6ZX62P0Z7uY+apJAnQk6vt84ciymVS8Qr/meRtt5/J5qrNQ6K1x9H/LHmV95bO07XgjWvlJNNmdwreXZ61G4yGVcIqbdacK6bqWDfYJMIvMtOxRH/b05SxZukLqcHLxhG+vY6+rbPeY+P5CLhsvFEk3iZ/6tBgr9IFxZPBImtWEhfX/u2MsILFpYVwiphIZHHEtFBGMeJu4MP8pvLVIo6VBRNwZPP5NAe2+XLAKnVkGiHQZo0OYXHeRkplNODS1GMIq7XsUKl+x0Hkpj/KjhcxMStU6xBFdAvHL9foIxaWb+K7mXWxYkhog84S3PKhx8rC8PDeDqtYCWvvvBovQpI7FKIeknexOmvd+zHOrS/j17A0+a+qSbjKhaUriwpp49G2twoaXLHh78qj4tIDpoNSb04jd4Rfh0RHWbXiSH6rrIk9QW3eGDw+cnmsmc+LEUS8/kmhXCeVJoewTSms85aCkOZXmfUeilL3dBmVPH8XXN4A5fRnWFDPhmXDis3r2ot3vHcpzbvTGeylV6r8plMOUlG3mTM2+OcqfhPJrecqGIztNHg4ne0Ia+nbvGo5fvgdMoTlKedPQH+Kli+b9QpkfofQL5RdCORg9Hq32GOVCTmX9+KCkNuVWrGInAnDtLx5ZW8GPL+wV58xzXrZFhimOldlRymRSe2dx2caN6OQKyqePpnP4xffZXfwYA73jPLrpE3z9871c8LdHbEoa/wowALUrYLIw4iaVAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'South Korea',\n    code: '82',\n    iso: 'KR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1NUZGOTk4QTE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1NUZGOTk4QjE3ODExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI3MkNCRTc1MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI3MkNCRTc2MTc4MTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+kIg3fgAAA81JREFUeNrEVl1IW2cYfvJjMPGvIbhhJZ2tZaWFlqZgKEOHGtGZqtALcVR703mhRGk7dTBEhsz/UmVsYOl2IXOghYpFWmnNxYyKOkMXfy4EZTil/katTZqaH0/efefYZbgYPN5sL7wJ3/ne873f87x/R0JEywBOMnXiv5EopisS5tjxfhEkbrcbYWFhkMlkxzrZ7/fD6/UiPDw8lIlTGmpnfHwcRUVFsFqt8Hg8op3ytlNTUygsLITZbA5tyCOmQyQ/P5+0Wi3l5ORQY2Mjra2t0VGys7NDra2tlJmZSXFxcVRWVhbK1HEo1c3Nzejp6YFer8fExAQUCgVGRkYOXpjj2A8gkR8MQ1paGra2tpCcnCxQnZiYCJPJdDTVPE1dXV1Qq9VYWVmBUqlEW1tbYP/tyG+Yz72JmUQ90yTMffY5nL/+cymGGIwlcOxiQ0NDwnpsbCyI6SDHKpUKeXl5iIyMFOJsMBiQlJQk7G3c/xGTKVex8fQXeBb/hGdpCZsvHmEqPQWr334n2Oh0OgHlwMAAEhISUFBQgJiYGHEx9vl81NfXR4wiYhkqPNt8YaFhZm6VxJJNc55eqs/R7+qPaTEmgRYRTaNsb7PnaeCM8vJy6u7uZhHhxMf437LLdOJGKaK7HoA0F+AnDuF+DvFeJ2ZUsXgrV+LimhXSDCPizc/EJL9TLsZqgenjPzjUs3+77x3CaN/p16dScU+bwgImx3VZPO7bJoEtO6CJPfJMqRjHWq8fP39wGVUaA6I4D+Tkx+2PDLh39hogU/Apjt7TmXjwoY4V8htR9S4KcZRCiuQzGjycuYrn5/TgSIrlKNZl3TsA52XOWUm92sDrTxj6k2dFOQ6JmM/KioqKwPrW9UvAOweWSIPl6DiGjLV2v2/fqYt1ttdvkHojNWBfVVWF3t5e8Z1rYWGBmpqaiJUUsdKilpaWwN5XP1kIahMh/i5B9w3hClPtl4QTpWT63hyw6+joIFZClJubS/X19TQ/Px+U1UGIt7e30dnZCalUisrKSvT392N6enq/o33xKfqe3cEV4yXI1SrITqhwMeMCHj+5jR/KMgSb2dlZzM3Noa6uDg6HA+3t7VhfXw8CfGg5VVdXw2azobi4GA0NDUL3Gh4ePvCiy+3j2UKkUnHgeXp6Oux2O2pra8GQClOqpqYmqJxCDgl+OPB0ZWVlEXuRVldXRQ0JnlrmXAhTSUlJyCER0rHFYiGj0UiDg4O0u7tLYoXNcBodHaXs7Gyh+x1rOv0tDAEiIiKEj4HjyN7eHlwu1+E9+j3Vkv/r0+cvAQYAGzcZMFujiqgAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Spain',\n    code: '34',\n    iso: 'ES',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNUU3QzUwNTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNUU3QzUwNjE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTAzMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTA0MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hN0M3QAAAeBJREFUeNrElk2L00AYx3+TTCw1adndLlS2KLv4Ug+CeBCk4s1v4cWLn8WLNz+B38GbXrysKOxBVFwRXRXStbiktcFmW5IZn5qCwgYRUpqBITPPPOT/vP5n1K5/LgS2ZMasZjRk9vViwV/flYA7VDR0+rMabH1qLasEWM0eO+N/5Ve7FqXztU0hzdQycGPt7ZjiIzs3S+YGRFENK/vW5hQvkoVZnJUJNcMC6Tz66zCdOTx/EDA4qpElE9rNjN49Qz0Q5CPRccsAF40AwvfimGeoZSkfXkoAOgHtbo1RGBEJbmdb9I6XDSyF/v30NpOPdYb9dzSCLa7dvs+ZXsynw0fo7CsdPSgV6pO9NM/dDPzxBeyry7wRz/eabQ5HG0y/XWXy+Qr+8LzkoVyedSGwmBMLIGdnXBcj9t9anr1+yCX3AJ8uyXHjT/HZZQHPfyQ5NBcNU0+RSLPdaod44QGD8Q/8uzs4616uZ8t43CyQ1mG01hfPXHo34UW3ixvVudF6wm7rC9YRezdFLylBINlTdZJAxBPl5iFXvpIeFg8dIRI3xY7lMFUYI3tVgkD27nSKq07lLJFZB+2kv2WpcXFVHmNjy3G8Tgb6P9TcpXO19nxTySVR3X28ePI0Vvz0iX8JMADE1p16B3U5CwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Sri Lanka',\n    code: '94',\n    iso: 'LK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNUU3QzUwOTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNUU3QzUwQTE3ODcxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTA3MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTA4MTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ynHuxQAABGdJREFUeNqklttvVFUUxn/7XOYO03Zm2g6XDhbE1ghEMURRY2IUwpuX8OSbiW8++KwvmhhN/A+M0USJygOJMSYEH1CUBGICUgpUCW3ppNDaMlPauZ3OmXNxndML470tO1mz55yz91r7W+tba23lX+Qmm+jGwMXnn4cmYovURbaIGCL/tva/RqBnEZ0pZpV7mfrPU4lEsWFi6p7oU8TwOKxqmCvKXZGkyFa4caoXa84kXWjguWpNB1BqaS7fTJHbVaHv2bmG0YxjvXc+nzg51gEpgeUbxFWLKTVCh+/JLtlRFRmE+Xic4lAnrbrByQ/2EDUdlLYGy37gMIP9r0xQvR0j81TdMnR5GYk7YlQk6YaLUspBU8vuXJlj4DU10n0WDzxdYuJsNkSiGR5aoES12ZFH31Ph+2CNXdfJdNd4/LUi107k8Wwlx1hRrvwlkReaalOkWP2/Kb/I8FfbufRpgXiXjWPp6KaEx1ehcutuBDPhrlp3bJ1krokZd8M1nx09yJY98zyRHQ9psvYhng8U12ejaEKAAG2mv8b4uRzJTptHXy0yO7KZTdss+p+7w9T5TkZ/6EaLeHIwA6eiY2puiGRdhv1lopgJJ3yIJCUkgvjhw1PsPjRDZneNymQ8nH872Ut+34Kscbn67RY04UK4Ty2FwmCDwxP0yYyN72jEuiwyO2vMDKWpzMQY/zGLbypGTnXSf6BEz2CF6eGOv2XWukfIN08T9EKegFi+xi1hezLbpFaKcv74TloNnR0HS3QN1IkKcZ2W+pOODSH2Q+755PcssFgxufRlHy+8ew2z02Hg0DRPvjGGmZNYZmVtE26ezoiL2ljKfbjatTVSwvJI2uGhI9MMvj6NKvn3/Bjk/oKY6obOvkaYXu0ptzFXiwK3qVO+kWLb3rs8//4IqipG55eYT0oq47RkagKalsnomZ6QhO3FRtsoYmUEiqAlB2jNGDTGIpLoYqhscP2LXqG+YlJcXLkSoy75HeT7fZMr3Cik8gXB5KUuPnnpGc59tIvaTJSv33yM428doFqNM/TNdhYnTAoHyzhywPa6bqyXzcFPEN9ousXETznshrS1hkbhSImqFP6JoSyFQhnDcNj38iTd+ytcOLEDT9LOXWa2WrdhQRgYciSVUlEvZHTLMshJni78muC61OFE0iYtlWvo8wKxtE3xYpbyWIp03mKhFMf29DANjdUm0CZ+e6lqm635CL2DC+x9e5Lv3nkkRBHvsMXFMc58OIAhzaajx+L3q2nGz+ZW3RRNtsg+WOXFj3/hyrGt1OaiGI58aAoKKpElRkpbrAptvfbuFKRGAykCGobU6prU6lIphW556PPmUsyFbJ58n7uVXPXOyrBrBsUrOS4f245Tl8JjSOFxh6l/X0wlRmuR1YtAQnkcpYK5AlVKLJvlHFsVo6e7aZQjgrR1r2X+b4z8sOjMyUWgZ6BC/+E7DeVfkKvPZrn6ROSe4f21I7Rxv7l89clvhB3LewI9llx9bjP7hwADADpQzQBjYpxJAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Sudan',\n    code: '249',\n    iso: 'SD',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjc2Q0MxMjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjc2Q0MxMzE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkY1RTdDNTBCMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkY1RTdDNTBDMTc4NzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+dsEThQAAAfVJREFUeNq8lT9oE1Ecxz/v3ZmkMae2xdbuiqRiqaugKDo5WFGQOiiimy5aR6dOOrhYHRx0qQoVaQOCbgpO/oHatTrVhCYNtIlJbWJJ7p6/C7aiVhfv5Qf3jrt33Of9vt/f7z118sTe+TvPE15XQzHbGaABZbAeihu7zc6sw71MB0cWXGY9n28uOJbhDgM910q9QXx8oEFnVXMsu6mVcSVuF64lZ1jUrYcrp2sMD9XwBbinpPFlzihb4LVxRQhlzdP9qxy6sMKbHT6DZYdYk9YCovd4JF2Vu7f+JpS3O4BVuPUiydXpBPMUKLLc+tweOAzhkpIVxJsMv1bm/rZTfrK7y2QrBWUi8t39qwGh9HWHiX1l9bF/znl8/rpJk1LReryxFiK7I0MPMy8nVf+lXfrhh2fqx8x/X/rf6xJdfR/60tAMOHdziMNjZyguL1rM+I+OF1caUKpXpd2MJY9/BxY/QSzJ3ZFxLh84a7G41toq3MJ0haMHj5tHFx+Y3giLa2NwIMDNMpWSje1V0WzJav/2zKjJfVlQgQksgUPo9oT4KYBMHvO+rKaYcKPeuX7+MCwYR2qtrwPmvsJUDgp1a4eE+4u0W2PwVlplMmv9PHbXpZU+5clnmF6iHeGKtB65mkgrWebrtCtc3i3lyeQ8jKGd8V2AAQDj9qv7QrTRKwAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Suriname',\n    code: '597',\n    iso: 'SR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNjc2Q0MxNjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNjc2Q0MxNzE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2NzZDQzE0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM2NzZDQzE1MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZGHpRwAAAa9JREFUeNrsVbtKA1EQPXf3buIa17xMNCqKaGyECJZW9v6An2BroSD+g5W1v2KhKNjYGBAMPglJCslmY9TNPsYxJGClNyAK6oXDDrNz98zcmbNXYD1H+IGl4YfW3yMWDlGdnwlG8E2cOsOWFnWMnkMxXcZj1x5i9D+euixOr/S2KW8PnzVExt1OAu3yADSzr8N6S5ukd18W7xwfE/JIEIc9I4rZtTtoEcLl7jRMuOwlfhsqk0s9kfg8jM+CSMDMufAdCaoMIrnqQh8KYO5aiGYMGGkP7UpEsQRAqqYYMKFRaCK/X4SIcWUhf10Qls6OQa7A7fYcni5ikHHvC+XEHHLYh32UwvXGPIKWhJgIIcYIoafjZjOP+kEauuUrVdufjnWCYbVRO52AfZYCsuwbAxrnSVQPJ2HEPG6c+njLwG4qB3swkJotIblYw9VyFuGLhpm9KkYWSmgULRgtT51YZpLKchLc5+gUcLNTwMNJptMDsZWFkQsQKSWgcztU5STI8Rw2LLU0OTeHu/PEGO1qt8b/HZOHLc7whWrBTeET2WzEOzL9vvuhIf7v419P/CrAALDtiSyIepCqAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Svalbard and Jan Mayen',\n    code: '47',\n    iso: 'SJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzY3NkNDMUIxNzg4MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzY3NkNDMUExNzg4MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iMTZFRUEwNDBGQTBGQUFDMTU0NTE1NkMxNzg3NzIyQzUiIHN0UmVmOmRvY3VtZW50SUQ9IjE2RUVBMDQwRkEwRkFBQzE1NDUxNTZDMTc4NzcyMkM1Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Ec+VdgAAAaJJREFUeNrslLtKA0EUhs+Z2c3mIhiLmASFFIKiKSRBIYVg8A1E7CzsLW18Dgt9Bi+FaCUoahNvoCQIAQsbxYhoTLy7M7vHWVHB9bYpBIuc8p/Dd5jz/zN4leyGj0VCQPW66XBrqvA4lh0Hg8/uTQ8b55epAR6LAufgrRj8WdXRrtLQstyaZaF8EfFNQQQi1flF8w9o8/TUrZnCfrxptCVy7VVRqZDSvClz2/KeEC2yu+LWbBuECeFEsyiCJUFgXN5BRyq2n4OA4dzAI3pJS7hzjUh+xtcLy8s70NgAGlucW6/0p+1E0tkVkUc0QmjomyOChiCLhNWO6awK90812wj34ttDwySOaGv0JOBBANWGxsnV4uebIGPspLSWy8/PbANnoyN9vT1d1BKzVUI8D0C6PftkIznuhVsXNg4GsxOg8838ZKYzAeVj8PkAPS/koj3jnmaa8roSPS+W9BBwXaFPtCAcFUptaV80Tu+J/BWtB/1u+3TOpTKAE0nHTPVanCWgEQjxYKCGXJNhuNGMgRLRYb5JBAxVp9Nc/1T/IfpZgAEASgSdGXymLpUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Swaziland',\n    code: '268',\n    iso: 'SZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlENTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlENjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM2NzZDQzFDMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OUQ0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+wwOMbAAAA4hJREFUeNrslV1sFGUUhp/52Znu7uy6u0DLFlYMaREDgaiRBFAJhlATa2JSNMQLuVBDYiTGK1PU6IWJF6a3XuAP0Sv/wdAmuoEKSpoULanahtaK2Cpt12Jpmf2bnd0Zz+5WS0wM5YpEnck788038533nPOd94yyqm3M5wYcKjfo+O8RK/4UV+Qeua5VhmBeMC6wBI2CBoG3ZAu28vnNoWsSV+2pisJqxSdr5+nLQzkZZ/vdW3F+ucDM6XNorhhJikcNBn7lmh7Y+vyE9k/JoFrulYWgUoJuinxg3clAYYBnH3mKra++QlEIM6e+Y+iFg1zo7yEqbmqywpdTk7GDLXddEJaZRYd00/Kv5kKRd15OQUlU8EOQkCCaFJVnztt8pie444HnuXXsLL9nZmpLGgKwZtcmQTfjH3/CyT0dxCNzGBGT3yYd1ux9lOLEz+T6+tAta5H4T0LfV9BsX7aqQLFJJd+is6zRI2woPJbOMdKyjv0PdWC5WexoKx8dfYuH90zRefAlfhgdxdd0Nu28n/v6j3Fi34MYsQrLnn6ZYGobdL0oVoWjLAEZfm3v6lVdloEqpJuLXLotjHdvgOaNLqq49cTJEv2XYV08Tsi1Gfz2EMNDbxMOBjhytIfh4WFC4TCFrM3syCCpLe3c88YRKjGTVGuO+UP7uHiuH2u7iZFw8QrKopxU3ydYzHJ8w2662t8k7XQQ+qaMOqpRytRroFwuUXDKLF+5ivUb1uKVy1iSOtM00XW9Bk2rf2s4TVhDOWYff42RcIyu547xzl0HJD4Xs+JepWOJTJeo7dM645fX4p73mBuQjHyvczgSZKN8MqmqKMEgAVWjkHewIhE6OztJJpNkpqdxPY9QayvTX33JqV3b8H4V46KXS2diZCYbmRhshikPNVSvKeVTy6rJyfAruFLCZ5o3s372J5Y7c+Q0gxUio4SQHsjn+cJ1F+tQ5k709rJzx46/5i6m0xxva5P6BTMalUL1MEp5vk7eTsyxxe4YWcOq6sVWPiRSI/bk0RDxJMhJR2mQq1mTQ1VON8m7lYJuSdXrIpCp2ixs2b2X9989zGqnRO+T+5lIv0fVbEBEVZWOVxtX5CknKwNiNyQp9uoNpGdFeEkNpLp7KYmyIJk6K9n5UQQ8bLu035KkJSf7OXOFaNRACZlLaiCKP36dLVP5G2YWvIovdJultsz//8f/euI/BBgABhdR5PJe/UIAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Sweden',\n    code: '46',\n    iso: 'SE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlEOTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlEQTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyQzY1OUQ3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OUQ4MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+cif6DQAAADdJREFUeNpi5A7oZMANvhSUQxg8E/ApwwqYGGgGRo0eNRo/YPx/YDRAUAJkNKOPGj1qNCkAIMAAQwkJrW14Lx4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Switzerland',\n    code: '41',\n    iso: 'CH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MkM2NTlERDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MkM2NTlERTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgyQzY1OURCMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgyQzY1OURDMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hqToNQAAAfxJREFUeNq0Vb1uE0EQnp87/4iE8w+BCIxFAWVegD5lJCoKXiRdel6CDiFKKKHnBWiQoECRCVbC2Tmc4LP3ZpdZO44jkvPZBFan0+7c7jd733wzg5/aISwz8MLcLXUigOWGM3buJaB/BM0IJjMHc+hSy0EYgLjrQSPaJONmdP/Vc44aapCkd7i3K3FC6wG4RehYwDWhdMfhw3uPPnbObZ+3WubLN94sgV0ETQtAPRX61h9zIsfx1OwnTrzxfMNqhBDYn2OXKtEgJ0BxH2x29slmEvfVCDgCASwDRSHY5aEzy40Iy2t6S+oPw7u3gXjmlcNWG+iQ61X17Ma/3HBw5d0vcY1eZ+a7tF+/WN956tIUJAMOOaprSCcydJL0QQwwY6V68u7t/pNnwR3CMv+h96tvrZHnWpMqN0CfS5rhWmN+vrGRJxOC/zaCHDV7Jdj0tJCQrHeEuJKurcXK2jSMMgnjg/cfuHZrIr4fX7cfm4PiMOYoJCDpJS5NvPgG6ikFKzOvYjr7pjuyg+SvxGeBbpYgmlADI27WL4pPl/a0yxtlH26NYU5O5teQ6QENs1EHPGXDFyudIHujbliY6EXlyQFW0Y2HgzcvKWp6j0msSzUWVm0sbgXKhCZR56yGKkFhiyEkkOvXa4UgCjbdrLtoSSrGXaHL+DxesYH9FmAAtnngpsgiSsEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Syria',\n    code: '963',\n    iso: 'SY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5MDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRjMyNzg5MTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODhFMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODhGMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+bS4JXwAAAKdJREFUeNpiOSeo9p9hAAATwwCBUYtHLaYZYPz///8nIM2LSwEsrzESaSCR6j/j9PE/KL396WWGzU8uoIhRQz0DyMf/cYCdz2/8F5kT+19gVtT/jU+v/CcESFD/iQWfo5Q5eBje/vjE8P/3dwYFFg6CwUyKerxx/ODLG4Y3v74C4+0/gwArJ4Mqrzhew0hQ/5lg4qIR+MyIlBDpm51GLR61eNhZDBBgAHqosVFFWSaxAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Taiwan',\n    code: '886',\n    iso: 'TW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5NDE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpDRjMyNzg5NTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODkyMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODkzMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+yLbMqgAAAZxJREFUeNrsVstKAlEY/maawNtgmQtvRC0ENy7Etbhz68KH6SV8gV5CFy7b5EJxUZCIuBBMvJTS4G2svMyl32nCaValhhB+8HH+c85wvv92hsMA110APqIIDQxR/jShEFndPiKquu0ADwFdXNE4wy/BE5843cB6lGG3c1DVOTyeEwjCBIpyjOlUMjixNXju+3wV7RzRqBvBoBudjohE4hy1Wh/5/CoxNkPU28EkPEMg4EIk4kMqdYlw2IVyeYBslkO7vUCjIdA3ll0Lq1rEoZALyeQFYjGvthqPe8FShuv1EQkP9LpvD9YsLEmKRiNkWcVyqe6yxsaTWK2xGo0xcrkWisU+NRhQKPSQyTTRbI5pX9K7e+c1tqDVGqFS6WE+l5BOP8Dvd6Ba7VOqv+q7s+aywyxeul+gdPcIj9eJm9sXSvXKP6chWgfxTb8FGwpbMTRdKAZLUdaOfK4PqZUYbdVGoqoe7TsWsGK0VfSMAPvE8BP5EVRyhCWXTskFZjNxkTvDK/YBFnvCQfgg/P+EOf3Jw6+fPn8OTetDgAEAPv6K9CaVVcEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tajikistan',\n    code: '992',\n    iso: 'TJ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpDRjMyNzg5ODE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc0RTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkNGMzI3ODk2MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkNGMzI3ODk3MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YTHlPgAAAVFJREFUeNrklT9OwzAUxr8mdpM2bVJ1QELqUsRAB3qALhyAuRyEAzBwCa7AwAh34AKILkgUKEJi6J8AberY5jWJmHHV4oEnPSn/7N+X58/PpRHvzWAhGGXdBtiBpbAGZqkY2gEHxyep2ZASpYbDatm1Sj+KR9psFq21WkexBAGh4CJc649XYCOpy+QB4vMR5do+tJIQiye4vAk/6G4PPB/fEkzA4RGUmOTuZA0oGWdlrzZ723G14wbglRb8sIvZ6ArT0SX8qItydY/eVYwbyK8iXbxBiim88DC7D1t9MlRuD+bvQsyfKV8yYRsFlxxOIEmsBEk8QPx6s1ooKnUEr94hU6f0TXl75kq/hngfnGExucvW1YsOsNM5B6u2/2Y7/YQutrZpA7m4P5WmDcTlDSqrm3NJt1yOCwUGsxxdG47YVMtsBW0b3P94LFLGNsDfAgwA/Id16/aLV8UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tanzania',\n    code: '255',\n    iso: 'TZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQUIyQzc1MTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc1MjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzRGMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzUwMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+A+PQqgAAAytJREFUeNqsll1IU2EYx/9nHnVTpjMoQSuiNGeaXWmo0BddqFdFF12YQSVFVgpiObWbAlMhP/NO7SItIsOvUOhLQoouYxemiaVSGvtK3YebW/r2HOdsS8/RaQ8ctou9589vv+d5zuF296ZNAoiiy4ItVAAYbEwG/Xww1HI7Bo7osX3ejII8Kxqe2b1/qqRril/+Aq9Pv4qjS8YxjLmCACeHyv1GFCcZMNlpxp6rDkzoFtY6puT/C6VDjniifHXcgJ0uIypzbChpc0melW2WMoAox38HQW8PQkWMCZ+zxhHc/xMx8eZ1QjlcP835HyxQ2hmHMbsC8YFO/Mj4Dk30BCpyTNhxyoav+kXRsxGhHLRNDA/aIzcevOSSQscESkcgKolyMHMc8jdTiDtoRmmbU5oyA/g1wrA3Ox0JXR3g/etYX5cV5+ZQ+tgpeVal4PC+kSHhogLVWg2KXpTQDQOlgz2UgkvmkqEq1oRbSXrouszYd8WObxJ/q1D5WUB9C8NMWDri2msxYkwGQvQAPyMe7E2pXqbc5TKh6rwVmlbpjo0I4TBQz5CYq0CtthiF3QIljVvYKED9AcavDvbM5TjNJXPKUEGUmkN6mLrNiCXKUZ005TVy2fiQwapKRfzzOgwbUlYohUBP8WJzqVbY8faEAVHksjzbhttPpClVRPmRXKovyHFfW4qbPRq6Ie9D6V28h5LzcWkklwboOmYRm+dYh5JDQRZDXTO5DE8nylqiTF6T0ifY22UcuXx9jFwuCC5t5FK6Y8PlWOrYxEtycqlBYU+Zm1I56sZh4r3LTxDlopdLA7mMuWyXXARC3cgEGlqA2fA0qInyi4hL0eADtH1eCi6dJtzLtqJsHZfbaPt8aCCXS3NZgqKe4lUdu6GFxBajzVOd08qjG3CZn8lQ30yUEelI7a3BkJ+UXmWRleeaEH1mTjI0nLbPIC2C+j45qg13oHr0DkMzKW7KAIu/oStjaxZ/Fv+lnFERZV+N6Fz6WRbRh4QyhMenJoGSXBruIqK1H8PTKe6O3STlv3NsWSZeefU5ezIIT5s5OCJTaC6JUn8YCN0ypferj+WPAAMAfeh+JFKb/jQAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Thailand',\n    code: '66',\n    iso: 'TH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFQUIyQzc1NTE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFQUIyQzc1NjE3ODgxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkVBQjJDNzUzMTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkVBQjJDNzU0MTc4ODExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MpuROAAAADdJREFUeNpivMcrykAbwMRAMzA0jWb8////aIAgBwiDSu1ogIwaPZpliAYs9/nERgOEPkYDBBgAYAkIxbRv61QAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Togo',\n    code: '228',\n    iso: 'TG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQkUyNkYyMDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQkUyNkYyMTE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCRTI2RjFFMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJCRTI2RjFGMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DvPYywAAAaZJREFUeNrslM9LG0EUxz+zP2ISsxitmlTxIghCKVSx0EKP1pZAWuiltwQvKir6H3jw0D+iB/8DLwXx4KmHXnppEaSFEEwhAaFhS9JCks1mt7MrLPEmOPGUL7yZebxhvvO+8+aJ8/RKDbDoh++DEJGbcP1wXijM3tx3BxjSZiIvIJOkvUYTLZVCmMb1JQYATdrfG8k6XUafL0viJHS96D59AijLGKGbMssGbbeESZa5ow9cvt3mz9UXkizgWQ/wPRd/45Na4u6/OtaLZ2Rf76LFk8QX53l4uEf6cg3nW5X68Sm6YSmXWsqo0alVSCw9Ymq/GAbS73OM5/K0K+XwnQVCPbExOo5TqvLj1SpO9SoK/nySp/n1M/rIJN4giP2eKw/ukHm3Jd9bp1zYpFP6RfZgR0Z1TOEQ0z31xRVAj1t4rRbll+vYFye0zi5IPn1MLDVDgl5Y1uLjG2XE4nxspRk0kKCyXdvGxyU2kaVr/5brHubENPGOc91AirPqMm43En3udDi6djBmorUm5VYN4X9nMK3pNsU1JL4PGCq/yFDqIXE//gswALMxeaDVbAFMAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tokelau',\n    code: '690',\n    iso: 'TK',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkJFMjZGMjUxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MkJFMjZGMjQxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iRTFENzgyRDE4MTQzRDBERDc2RTIzOEJBMjNFMThGQkEiIHN0UmVmOmRvY3VtZW50SUQ9IkUxRDc4MkQxODE0M0QwREQ3NkUyMzhCQTIzRTE4RkJBIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+xugOwgAAAy9JREFUeNrsVFtIVFEUXfvMjNY0zaMEa8zINLEHViCTX2EQFGSYElHRk6h+il4/fQS9IAjsJ0IoKqLCCOyNFQ5o9uNPDyYwKxWVCjPLfF1nRmfOaZ87auPY66e/9sdcmLvPWvustfYlIXZBl5ByEBgAJgshAIU/lJLSBjiAwc3r6nPTvp24kNdnQAg52iFiDymDOTneYydLbDbNodTvQbnfAyQXrWioq7h99ab/VZO7z3AJEY3vs5rzGsBQMBT53D7Ah4CgUlai8bNrRiUnAROX+hqPH3pWsKIVLrTcdV57kAP0ARTfLZQMz5ufnpWd0db6vqzsvtNlP3p0TWqqw9QnvqSUViVT3A7j4umHtfcrCla2ohnohv95OpMBkYTbCYX+kuJFqwvnA2HAEwpHntY2G/1hIstYESYDzo2FgXc15Tv2BfAVeEP6VgKd3XbAQpQonFUIz6lTfn4jaAqIDCNc8+Q1YBfCYgrCoHxoShIZl85Ubdpdjy4gwIgETc3oykLyp56w1iRlRGqZFBQnxCmEIwZqisAx8OTntl4/+zgzvwtvgVAMNHYZDe1NYZWHlCKiMd5or4Rg05A2w1O0ZoktSSkVGcF1Aq5DO+rqHpVnLujSww7G4eqhFZu3bHEH0G9OiQTomPehGV7n1i15E5JsSkWl5NikuO2hO+dvlZ6r0XFv0npinKAserqvx7fgCzApIVE0sjJ6SCAqyCpVMg+73Pf26tmq6Qt70cDmC+33T0sqZKPy8pzCg8VAj4hrE6McsV+p3IDtyJ5qf2XF9IxeBCyQOvq/XCAGaMOqbY0Fi98AKYAcD8368rDeubM/1d64dbK0TiehhWCVJiv9ejlJGxvEvSv+ae52llEp+UMQrQSSs2YOnNj/YsOBl/rvLpNe4G9rCEgFOql4/dq71bxBQV56q5S8SJwwmjb1Y2d35PBOX8+XCcKitPvDtgjWSSeL4wUdchCNvCIzgOYjAm+24Z3KaUnj5eRAU37u2r3bG7yucEeH9UO7Qw4fIhNn9Dh/PXgxhjfO5DDbNDuPQFHSlGoIHk8wY1aoszfpQnkmN+3CvymBf1b/oRPquwADAFZsVbvbw0XNAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tonga',\n    code: '676',\n    iso: 'TO',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCNzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdCODE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJCRTI2RjI2MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0I2MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hRrzKAAAAQ9JREFUeNpi/Pn0KTMvLwMM/Pn06e/372yCgoxsbHDBx52dN1pbuRhIA0xsUlJAo+HoYV3dbi2t3+/eIQsysbP/ZyAZsPz9/BniaqDzf7548fXq1X+/f7/bvZv/yxdubW1kt5NsNJx1r7DwwurV4gwMQHQuO5uRgcH5zh1OZWUqGC3g6qry8eOfixe/vXwpaWLCLizMwsfHQAFggrMkU1NNd+7k0tB4wsCgPn267o4drKKilBjNgsZX6u3lPXeO18QEWZBNQuIfGUY/7ukBJgA4n11GRlBE5OnEiX+/foWIMDIxfdi7l510oxm3MzAQTFisDAwcDAykOpyFyIzwj5JopDoYNXrU6FGjSQIAAQYAmalRzsgP/4UAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Trinidad and Tobago',\n    code: '1-868',\n    iso: 'TT',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCQjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdCQzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgzQjlEN0I5MTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0JBMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+K4UpOgAAA9dJREFUeNqslX9M1HUYx193YMovAe8uajKwgXCA8cO4TCejBUUGo2mDwmprLSFD0yBmtWajVWoTSjR0qeuPiiVmw5FsAbnGUFJAwQkcIqUEDPHu8E4PSO7u2+cOYavvlQI9f7+fez1397yej2JCkizrc1/j6MHD/LO0UVHUNzSweNBIc1wCdiQWqMOQ7BPMtRTDb26TNHt2sumD9/niw49lgUCNml8u6YmVvGlbspRRywDeqhgkx9zgyq6yXfSnZ7Ov+CM+P1IhC4xcNxAXqKa6v5t4cz+qKB03jR0oUIqxFbMH+wVEcqXmKD2PJLMlO4fKM6fdBjNjEzhUU01k51lCnnyWmyN6sNkFXDk7sHNwX1U0w+cauBAURtYyHc3Ga3gt9JOFN6Rn8k7pbkJrq4jOe4tblss4xscE22MWYEkS/5cNH3UM1uE+Wnw1JBrH0ZstPKSNlDXsKizi5c35qA6UovvkM8ZGr2KzjKDw8Jwh+E45N9VLHYldDNIUEUrIiZNc7tLzWMoTsqZv9pWTlJbG/He3srq6jtsTQ/xpGBDweTMHT8Hnqxfj6RnEqYwU7GVf0lT/M8+9+oqssbG2lqiEeIYyUlnV2oGHkG3M0HPPcNlmSHYb8/wXscArhF+35GF6422+P/wV20o+lTV3t7UTHhBAW/gDJFqM+KgexGoQG6/0vOvGu11JyWFH6e2N78JwLu4vYWDti+wsKKLk269lWavZTIK/ihNXu4g1XHHpdsvYKT5E8Z/wf3fB4QBPD/wCtfxWVYE+egUF61/ieFur23jGw/HsqfwOrdBtibgL07oplTMEu766JKaW8BO6mbrOckETRmZ4LM2mYXz8/WXxrc/n8J7QLfjHIyzbWDip2+ioW93ubv8d3byduhn6afYNJPGPEXpv3CAsOkoW3yF0yxa3f1H5blaU7GdsrA+b2STT7Z7PzqRuS3GIlqa4SIJqTqLv6GRlaoos63xwkp5O476C11l9rIYJ2zVuGwb/tvEzuneTugW7dGtMT0EqLed0XT05G/Pkuv1US3hMNIPr1rBS/7u47U7dLk3DZ3xop3TzcupWmI8pv4iK8gMU7JC/bL2dXWhVKlo0Pugs1/HVBE/rpjgXGCHN7sqLmSdsrgUKSc0ktO44B8Ujkivuubv6ofUMa5c/Ss/yJIbON84B7HrNFS5frUKd+2NXEdF+iqrzLQKgcxvfe6ySTeuy6Hsma47gKb746aziaPj4BxPf10u7zUxyhBaz0STLbi7eTtn2YhfYwv9QzqUZN/SKm+2B7mIbfRo/nkp+nG69XpZ9IXcDfwkwAKswgUQLQuTdAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Tunisia',\n    code: '216',\n    iso: 'TN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4M0I5RDdCRjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4M0I5RDdDMDE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgzQjlEN0JEMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgzQjlEN0JFMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2pqf5gAAAmNJREFUeNrkVktrE1EU/u7MNBk6mTws+IgiqRUpdFXUjaAiXYkbFyoSFSxiddMGsRUFsfgoYlcipYhIMAURQXDnT1BXSt3YlmJQ21iU5tHbvOfhmZtZuLKJjXHhgXOHy9w53znfPY9h39CxCCBMytEa0UlTjIBX3E0rhUv4R6I0/gkjrcLCqthJ0Gj1kNp/C9ghpwIDOQGteMPCCaOcIkibDAVo7yU167ZW1zEbRQGqHT6BcDqHTaVF0gVs/vIV2tEz4p0tWJCaCWxQHKsI3r6H0KvnqL6fxvKePuT6B2EtfUfo5RRC4/fpTEGw0iRgohMZaMdOwXf9CrKnzyPVdwBSZBu0qzEwvw47k4U2EoN28qyIvJYH6wauCjP62E1UXr9F+uljdNy6i9CLBMzZeTDVC4vXEk0b6BcGbZTXD2whD0XdCmVXF/ITkyJ/fbFBmDPzSEejWIpshzmXFGfb9u6GHOgkYN6MiKlMmEud6WasxGAXy7ArTln9wqzzZKw5dyzBB6O4ADP5Ge0XB0TqFB4+gtLbgw2JJ9jycRZyV6R2Ke+mYWY/Eb6vGRG3idbAR+/Ae+gggkeO48fIJeTODcGzfx8kXQcL+MXJQjwhGGBQ17QqD6P9mlv5v/HOg9KHN5CDGxF4MA61pxfF+DMYM3OQd0SgdO8kFuLIjY1CprbPaF1DKnUOCaeB5EWd6tELCExNkss1sqzlDPjlG+CJCYJTCdRfT/fiDUwnJ4oS1ekKuSFDCXYSpxKMTJLorVLLdADVelsm/4OxKAkHLLdknESq3WlDQ4L/n/OYuxG38teH/xRgALiVytS9zUFxAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Turkey',\n    code: '90',\n    iso: 'TR',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMDRBRjkyRTE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMDRBRjkyRjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIwNEFGOTJDMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIwNEFGOTJEMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ZWWjjQAAAsJJREFUeNrEVktoE1EUPW/eTGaaZPpJ0w9N60K6ENxVRIhIUdz4wSJYEFy40EXpzoILcSWoCxFddFVc6KKr4qKC4kJt6aoqCOIHoehCbGsNrZq8NMnMvJnxZtKSVmuJNaRvGN68Tzj33HvuvWFfwm1zADroFajNMOmdV1c+sGauCbiCbRrqpqeMAbYDz8kGS0WNAHoI8P3/Bt6YscIB14VcXoB0lsDNOLSubvi8tAcpS3eqCswU+NYyHGsR4YPHkHj3AYnMLNreP0fL+H00DA6Rn1T42XTJI1UDJjbSSSN25RpaJx5C270L2ZG7SPUeQebqDTBNg967n2aDDMzDl1Zg7L8ORumUKSuawcktIHqiHy0PxoKd1OHjyDx7BC04VeDRo8V3kIHEVmHw3BxkOgWuhsH1Jgq/rARXrBOX79iBC8yB86XTkTsQBGqE4oCmBqJSyL2+KEBaKYT29qC+bxD5sXHw1mYUnk6A1UUqCoGyHjgHXt8BbU9PsLYmp0oXVkBLl3x4VhZaezcaBi6g4fJFtL+agptaJF/kKo77BsFh5d9ukjZMUYidUU47KbcuLkZxcjNzsF+/Cdb6gSSxKArOKzOhWTFM2PMz+HH7OsStYRLeUfDOBJlcV3GObygus/8M4mOjwc635CGI6UkSF6dTlQyxoDVRafdoHdLheZR6S19JXBESV2PF4uJDWvRSkdzqDoeB/NsXUM0Y9OQ+RM+dhaqb8D7NQ+3sQuTkKbD6RsiZj/DyZLMtwetiYLyoe69ST9u/MS6S5vALggqXQLTvNJqGb4J3JeBlBOzplyg8foLle6Pw0j/BIuZWy6f4E3i1ZDoFql7fSQQqtLadUOIxyNnPlLPk1lAjuTlMBN2tFq6/AK9pEn7Bgu8WW7VPzjDBDKMaTUJs3p0IgFE3Ymhet1eNsa39WKy4upZ/fcQvAQYAj5ICkAs+H68AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Turkmenistan',\n    code: '993',\n    iso: 'TM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCMDRBRjkzMjE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCMDRBRjkzMzE3ODkxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkIwNEFGOTMwMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkIwNEFGOTMxMTc4OTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+rBlHvAAAAuFJREFUeNqklEtIVFEYx79zzr137rzfvsFMExEqaVQyULLc9bKEWlU7DRfhql3bdm1atQqCqF27AqEQkRIsSMkHPlAZx5nRcZyZq6P3dc7pTthrEcw4H4dzdr/zPz++7yAYvg5WybYr6cTjjzvp6rN+1wad24rVuod6ahRmA0rB0EEQASEADoCguMJHp8jyy2pFQ5urv2esJaR0HwbzRFMIYI4QqgxXE11DpmnthWswLgYtHJ2IM+Z1Cusz+eg6Pd0beaBFx5mqglMCndZ4fPW+4Pa+EhCl+c111XoHQkWn1om3iSprm63vY4PZg+rReFZLCn4Osre+si6eSVNG15MbkYaW2119kEmVkpqD4DBspjOzGogfTvkXaWUHMTCSRKnWFxQl6dvyLKzM2Tt7m040F5yU4Fpi5pr81eXKD+Q8F/ji1cBsLuA7lHRl5/PidDSdyqUS+GTLw5v3LSGASSmpC7ot4QCmpRFhho7eIopcMzZ3kgOX+0cu3Xg7Nf7y3RsIVZWC1jGuV7vm92ZG/Qd15vkV4C27qtsHFAERKEZxJTP06tn89y8QCAMhwFjxHQJYJVkM82Bup3inkHdS6Si7IJjUnLSgVlXUFHqjCO7frilPOiY0WIlAU6Rqos5YTUviAQHCgf8cE4ersAqSeIkjQzF49WaMgjEaTSuNWVvYYVKJASt29v4vxEA0oLWJDC2RuE+J7KJUu2FYaAplo0XuSAifZOfrPgkEMpsirXuafIDydjg2/RcaczmHluy28VbZaxhxv1gxxURrMuy87NQ6Vk7RWx/S8tONLY+vXXe7z+Ty3kA5rvHv5mOamdWg487g8L2GsGsxs08QHJ/7T/Ntzxjha92hJxcn/fTc83bVXqMljELzlYvWiadOcvLp7Iu7UnX7nm8kVJXkjJaT+s9/je12Gl3IzHiROxaDRx53wpSbC39KuakFlt21xbfD9jBWF8YEIbmy1kgEs5zUPwQYADj4QuUGyU1HAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Turks and Caicos Islands',\n    code: '1-649',\n    iso: 'TC',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MkFDQjQzOTYxNzhBMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjA0QUY5MzYxNzg5MTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNTI1QjE1RURFM0E2MkU5MzlCRDM2MzZFMjczNThGQkQiIHN0UmVmOmRvY3VtZW50SUQ9IjUyNUIxNUVERTNBNjJFOTM5QkQzNjM2RTI3MzU4RkJEIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+vPd/igAAA8RJREFUeNrsVFtMXFUU3efcN/NkykNmYmSoCrYROgG0TUVNY1qtVavYppoyWrVNbAI24COpiT9qNY3BH/RPawxNCVg7pNJIEUzmo9rXWKYYZLQ1zAwiXIZ5z9zX3OMdsE2NMTZ8GnfOxz7ZO+usvbL2QdEPD7se8HyTrurs/u7yoB94x5GD657/9qOx5tYnh3BqNlm1ihyozrzeVpNd3WDZ2Ac3Hbjl8JU99/V4vv96+NnK/Qe2A2dfmBbh58n0TCwl5lryVwfuJ6/s9hyJ3VHXGSKQI6AR0P/hkGtJ3oBG3o6+Kwl2h1t62bnI7nh4pnT1/MDpsp1bxEM99MZ76xOT8Hjr8FX94/dOJn6JXApEMpkCx1FEJ7KMCFAA5BpLhJBRIghwXpKQcU23PmL+MZRC1mhaU36bdddUSOlsdC5ZbuOtAhMrc8kLSUcudctaRxb4mmDTvMxzlIKAsjgo2iqqGRNW7ZZKncIo+bsej0sIgSwbDUDP2KtTSIpk1bVb17tBtiXmCjIpDPpwwz321oeU46OyuXS81ClmY1CkhIEUZJlYyk3+T4N1OJOyi0rJQmjU5iyPz3DNm7xNci62PAXdct6Zd2/qeefBWg8Hw6M9E9StlcLmwYGzzZtH2rr2dHRVBMaCR8c7glwoZWLUAI9VqYCoknQZYeDM+9b1Z3KrusKfzcsCCPvmWDuj5NCSSgi/9WJTtMP2XPRU/5bONU+fbH/VLwYmhDobm5h9wdXubOju/QHv2nbn1DOFd5mLqqxJRX2BKCbFIkLFhBqq5mnWdDsLTrDeJmg5WMYtsnaTVO9rX34+Zz63aActDUgaGc9A3HPxJwoE62zwXNtL5z/Y/sSbj9W7SsM2nEgaZAFSoiXNLcLevVmfq9erNW6zNa5RLiMiJfRl3CL0/u7RcNgEwFJ0nhU4IPpx/3Q/3oDOxnmKoJIqTSXjvqGdvgKgKp4zC0jXEFZV7ULAWds86ftVbPcLx3brGx6FC91mA5Fjkaws+ToSNl6heR4zNCZGAGJonsMZlqaNlOg6RRGed3BcOcdqYHjWcBxl8Mr0D94FYB0YMWD0U6eTAGV9J+425sH4TzMaXY1F8jR1fRBYytBfVwsVjXrjNT85VVGiu9bVToSnFe9T/NBXuz456mDZJEJY0wpGL4YVBU0biotvvO2KzLWNfVF/acp78FAlxgsURd3IZl9RIJ75G9F/CYSJpuiqZuUFs5RPMkyOLkpaLEnS0sos98mSujL6COJyPm4AaWrxXNcTVizITf18/0P/F6D/EGAAAySvSKv5fokAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Tuvalu',\n    code: '688',\n    iso: 'TV',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUNCNDM5OTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUNCNDM5QTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0Mzk3MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0Mzk4MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uL136QAABDBJREFUeNrslHtMW1Ucx++5jz4ube/tg3ZreYXwHEwGgSEEQomasQQyMpUEZqIYJlsGRmNwRmO2mCyZic5kajTRGJxmzoxNFo1xcWMP2SQuk+LKuk1hFFg7aEvfvbf3dTwEXSLDhH/8z99fJ/fmfu73fL/fc8Afb33gaCj9eok5NHR7ZngMM5m/6C/Z8eXRH57u7RgKYsm0lZUHcoTellwpv2CPX0jFEzRJYGsNDhRe1qRlDVpryRRx1F0eujzxUinV1+QwP7rJJdM1Jqzu+qVr1c6LIXzAFDjWkddQX/Bm0NbxXcCkitmtGZIE10TzihZg2GtlB+rMo6PBZrKzq2pBZ/ycE164eefFHQ3d3fXzQyO35n01WbrxvZnZGIs1OwfdqTunz7ZoMb3NmhIU8E8ixAAFxJjELPAbcmivQzsXE1iAQcBtbtJwfDgueXkAo3GLBhdlZUmrYxMxDYWHLDa4EHIQYqZVi7Hs7p6+RQOr51MPHJAh4eccBJBrTaPFhptXgk4fl6XG08gQcsr5RNgbSmD4psYyU3BBl4yGOCwweMLQtdNaV8L8PBkQgMuWw/r8tE0PKZIQhQd6E5LOpr7fWTz4vb+9ynhtZ8lXN65smZKLNASnQJysnLTVtrW9/mRxjj4EL00c8Rsq8g1bTh3/raX1zNaG3T2y3u3ynPP2R7N+EQ3tAmdSSbz8F1qQNQYq0lpwGseUE3PPumLVQcHKqMIrGyLe6+n90B4pvjDy9v5v2o/NDp8NbGOitTdG3abirmeG3/92ktAyz1mlXeKczuWeKdhIZGiArKygkbq4xPzkf8wTK18SLPdS2RJUoSQUDIcQJw4PPP/rubE3kuxnhlzcTOVVG3OL2BhNe0qK5vKMiejSj7f8rqoKq7OsMCPlAWQKJ9VAEhR1RDSh9Chcus/ZRUWNA8jJGehnhypebrBcPL+wHTQfOalYzIzEb6QBSZGYJM1GpagpUx8O5ulxTEXJCvTdi0RETG0zW7kULslpqNISnF0z5+OzOZkmcRH1QUfGkdiYwBwo35+QDIc9B8Guj8483FDUW4CtPahqi7yt3XFyX+U7n070HZ/tZlXhqMgeLHu1MXvklbGPr4drGSpipJaIR1o7H/7+37grL5FkCZLTscKpeJECCajgIqRUuMintePhrRKkaGK5nWuj10ZikJfppKRD6cdE42LC5klsLjW4363Zo8djg3f3Xg01aYkUKjUAy8cVXycX+YAE5tB3662XkaeNmecHH3+qzX5qJpnvTzvQETerAxs0Poi68fee160agkDatt0+vK/yyHSo6Pd4qQzJ+UTudLLwgm/b7UQZQ0VX2Uiu1w2w3IGrQWd8nPFyed5U/ieefhUpZKoXU6gkQIJwdUDrRaOhySRqArrS0NqiXlx5iPJU4cKKY6vvWOw/m//Rq+ZPAQYAm+jfAfBELj0AAAAASUVORK5CYII='\n  },\n  {\n    country: 'U.S. Virgin Islands',\n    code: '1-340',\n    iso: 'VI',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REM0MjcxOTcxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REM0MjcxOTYxNzhCMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iNjE4QUQ1Njc1ODU2QTk1QjU5NTgzQTRGRDNBMTc2RDAiIHN0UmVmOmRvY3VtZW50SUQ9IjYxOEFENTY3NTg1NkE5NUI1OTU4M0E0RkQzQTE3NkQwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+uuR1EwAABFVJREFUeNrMVWtMHFUUvrOP2R1mHzP7Ynd5LYFCYBVKwSImWBvTYIGYCkbTGu0fk0agUdtqiI2KWmOqxhgfbdPWRGhII0nRUjV9YNtAK0HAtVhWaCndJ8s+YHeHnZ3d2Xk4VAQaQ2lMTPySm5xz5ztfvrn3zBmI53nw30D0r6ruxw0vWknn1qIn2Tsc/l7EpWeSpXxm8igX6ZNoNsvxTSieL73bQjJBOexfQuFvdEV7cfN2aLFo2VmCBbHgME1eTYYGFdl79KaKRWmBmqAitKsTCnW6UkoU36rSlkvQKllalgK3wGIomSACrvOF8hE+sCeu247CwluKKJpLzHuS5DgVuUIG+lnqsgIGSQrIMl4X3EBL15hKsU77gYSjTaYC4QBQIsCUA4K+NBG2Ke/hHwUC6XoJ1RwBbiRinMZwDPC/2882qBAPhiXGJgAqBTIUxGmJ1nranFsrglZIL+LmZ1Oel6EkIJJYaUmEocD0NHChNp0+pp6pvuW3oBChL37FzzUl3Hut6nYsHVCE6NoEYtKTDKs2FfWmZVQsnoQgPeYPnHJ79xcXXiGZ4QjUwP2sIT7xes7DaSB/I+RwNuXuKAKEDTUB0mEFmoBKGyAG9I89n3np8PcgcO7aKDDIACWrx0uOzcqNI56bDbkWKSxduAeVDH771sx4nPrU6ztNRHLX1Xw0uRWxHI7GMmfsvIY/Y4FHAJ1Pzq1T6gJSDiY8GUCCVBr7ATsybgOyWPYlrOuH9B5ca+z0OZ4bd4tFf3dIFoY980DBQeeMmANfWM2Hu1vf7zpIP9vxakWH21aXmne1V7rMpjoGC8aGXICMiwzaFFyGFB+bHAjFoeIzhuOHgpm7FY543JAuVxXguEgiXv5kmnXqE7dnCDpVkiaG1dlADr66uMtFZ5fV31CUfw6v36yi5owaVIcgegTNhTG9eJIva1Favp4s7HqPQnni127fdIJNaeUSaKHdoGXpR1UIkMIaTC3E9RuezkvPYlDmZN/HEiSzpLSFVvQ6Y93xuD7KiBKcNJiAb0Mfpqn59MKdIrWFdQwL51qTZdYosbFw1B6e5VhG0BG3tbWxPGB4Vp6i6nBFvloph+XuKddl58BvsevkXEEOsU/F90qqm+YnrFjAyXgj0UeeyHgxEOs/ZNA82OwpjSTc9i1VT+aYBbNsMp7PM5UaXAoLnc/zHMczwlrEQjBkH8reWWhoAc1vAk9f5uzU/tD84HfttT1P7eioXd97cR/Dh9jBbeQFpPV4zXV/iL8bf2lBq00+rz/ERkf7hl6DC95ofKjR3qOJ0OEwhcoRgKVIiWHX2ewj3159txX7pXHbKQBk/1SA7j1UQ0lwoKt1Y96Wx9V/TNl2V1WD+TnguiGmc05sCJaDGPRWifEdq3KV2bcWWIaeDvmEYNz2gfMnMHkB93sHhPSF3j5w9OQ5r3e1wjWluZWJzzscjU7f2eV4khh1TJE0vVol9H/7y9wX/hRgAAzpo5Xw0k2XAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Uganda',\n    code: '256',\n    iso: 'UG',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyQUNCNDM5RDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyQUNCNDM5RTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0MzlCMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0MzlDMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+TD5l0QAAAL5JREFUeNpiYBgFKIDx/39aGc1EO1cPTaNZbilz4lfx/9P3P6zsqnMOLTi0UEFL31nR/kaUCcu3L4wCnJS6mpeHQW7uIjYvs+t/BMT1bZht1SXmLOIVoEaAfNFS4PUMO3v99tnLJ/nYQelJ2D3wi7YydULtPxikFJUqcjHdCjH7/+Uj1SJk/fqNQKN37d43ceKU/zdP71i6hKgsQ1zG4umfsFpYiF9RQe7lT6YQbwOGn69Gc+OQyo0jLEAAAgwAGc1CiUqK1KwAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Ukraine',\n    code: '380',\n    iso: 'UA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYxODE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYxOTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjJBQ0I0MzlGMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjJBQ0I0M0EwMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+LuVcRwAAACtJREFUeNpitCo9wkAbwMRAMzBq9KjRw9Foxp93xUYDZNToUaMHg9EAAQYArtQDhtrhiMcAAAAASUVORK5CYII='\n  },\n  {\n    country: 'United Arab Emirates',\n    code: '971',\n    iso: 'AE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYxQzE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYxRDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjFBMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyMTE0RjFCMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VISheQAAAGRJREFUeNpiPCeo9p+BCGDUeYuBmoCJYYDAqMWjFtMMsBCr8H/c/98M7AzMQCYjfX38/QsjVD0jNTDRFv/592eEJS5mZuaBSVyM/LygMv0ftRIX8RYzMrKOFiCjFo9ajA8ABBgAlQMOS8Um6UkAAAAASUVORK5CYII='\n  },\n  {\n    country: 'United Kingdom',\n    code: '44',\n    iso: 'GB',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBMjExNEYyMDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBMjExNEYyMTE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjFFMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkEyMTE0RjFGMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EXnauAAABW1JREFUeNrEVm1QVGUUfu7dXZBYvuRj1yATNT5FxCClTNLUFNBJrfxRZjOKkVLqGA2okGGDhA44ToqT1pigA9qAhkho4kiCqRhgCKwBg5IiLCDs8rEid0/vvVfWGD/K/nR27u7Ofc85z/Oe9znnXi52S4Eh49sy9DS1AE6OgJsdYDYDhOFWr8fi+Ej8kByBuoDX0FOtA6dUwVrrignNlxG1vQT7Yg8B492Gx3HsUvBAmxHoNEAdFoyYqDAoUzeF2322djbS0k9h53el6NXdAEY6Aa6PIfBvTQTkGaBeBOxmgCFYFz0Dy5z0GJe7FbzxdAlc1CokJ4SjoSoRsQkLoXawAXTNLKhHZss9JaAY085idbdgN9EbcQfWo2JTIJLOpoCbOw0VR8+BvzUrDFe8X4Th5Blo7K2RmjQfjZWJiE9aBHtnW5lAe69IH9wTCMhrDLCD+epuwiHIFwmHGGCcH5LPpYCfHYrKY2VwPJyHoNYGoKXwNAlvRVItK2qVTzAZi0toyNqNAxT7eT6px2xkBQ+nsI+OSPdrJ4TRJWipXPkc/e4xWbq3OKGI+USSOmwPxX1fQ01nLhB9+AHVs7y/uXpSR3auJa+JXYB/Gi1LKaXiXTlUExRKvzDHinGB1L430+LYqjfS8k8yacmmEyQMCg8BCwN3KSqthN5dtZ+u7s4iYekS+kPMM8qL2nPyLHkq6jto6apDBJuPCVOXHSSvyH0UnVVPOrbYf7Gc6uYtpLqIt6kzt4AeZdV+IrCGyhUeVOkeRGbpw6zpGvVGR1PtjHl0p/DnYTFX20y08ouT5D13D730/kHiSNo2s/4+GE1m2DmpLec2qO8Ap1KxtlGAFwWj4iEYTagJjcTdaw1SOyldRsL31+Ow0joDBna+Ls6WeBIEUL9J+t9nuge1rTVgYyNromb8VBqSI+MNQSBwCgXTCSe3khhMw3vK3Nsnt9p9VfG2z7Af5q9UyqoW/QeFYZ2oUDA/jsdQfyp7G5ufukWVjg7si5dzMJB7f7Y8RO6fjMf/ZEqbMR4PGpGxFszDmXPi9JGalKTyihuTSi08KLXKYxT+3uTc0NSCnJNYHM+OjruPIflYxMUSm7qMsGJCkhZUSnDW1g8YiGAsl8BEUsvEZRoSlysTV1k+E5eLRMZsloFEwrza1hJ+19gHazsrca/yjhfFF+B2UycCfLWIWfkqArQjLM791XW4uXUbnNlIdYpbC3j6QGEjKYXxNMsCEzU1ij0YrKyGnV33ybPQ7z8gbg2jN3wKvb8f0nOv43xeKVw1avB5KbkYYerFmzPHW0CNpRdRHTwDTQG+eL6tAb0+gVifcRkrvipmIjdLupIQWekUolJZ0dZ8XYaYuBx0G+X2cZg1BXYhITCeKcWlCf4whM7E67fK4f6CB37MY3OyubXH0uTGkjK6Mmka1bBUg/PfoJajJyg9V0djlxxmx7GQQpdnP3ZkLogvZD7zyNk7kRKTC6mzX7Dk7TpeRJWeE6VpZn7vHbp+oph4Dzdb9F24jOrJ03F9+svwfXYE3PILsSc6A1Myu7Bu0Q405rNBCi3cNXaPValGfKBgDDpuG5C04TDGTtyML7efgmGA4BAxB4GNVXA5Voiqs9Uwhc8ELwI2TQ2G32hbaAqKsGvFboRkGRATsQ03fjoPeLkC7k6S+J7Uq/IaO3M3e8B7NLraepAQmw3PgM1gFUD3gBmOC+Zi0o2r0OQXQemjscKd3HxkWPkjPfMSGrLT2FhTyYBSrqd8ExAJsOknvclo7NHZasCWjUew+8AFrF3xCtasmQ2HyDlQ7lr9jXFnVjkac1IZIJO6l9t/A3wUAbpPQGuPjpZuqQI79p7D6qhp+EuAAQB9e+n65ZcRTgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'United States',\n    code: '1',\n    iso: 'US',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERTc5MkI3RjE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERTc5MkI4MDE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkEyMTE0RjIyMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRFNzkyQjdFMTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+60cYSwAAAyhJREFUeNrElN1PU3cYxz/tOQUBD/aNymtbUAq2IOiUWXmZA40Iy2BzcW53y7JlyZLtZuE/8NaY7Gbe7WJbdJnTDOdQCbLKrERUotgCSodQ7AsFpK28yKT7rfsL2gv7JCcn+eV3zpPv5/l+H9X2xp65SqtJGfr1Fg3vNPD02SIhfwRniwP3pdvsOVxPaCHGs7+DOA/VJs8crXXEs3P48OfTfMIcU+SRaqlMzm8SNut2VuefIxvyydZIxFbWyX35iviLNZRiPZJaxdLyCkoiQUyc6cwFTPvC9FRkcbJMy7JaTrmxHIuvxaZm5xW7+Jl3NkKRaRt5OVlMjvuoqa9gwr9AgS4PvTYP78hjdtVVEAw9J+Kdxv7Td+hL8tGTeslGg8Jeexk3/riLs62O+cU441NBDjbZGbg+SlNbPYvRF9zzzHCoycFA/yhvCtRqnZbr5a1YEjGm5S2po1ZXfRHVaCTlWLODq24v1eWFGPVbuXH5Dh3vORm88xhziR5zoZ5rl9y0dx/ggS/EzGSQs5Ua3s39h7CUlbri0mKdUGzmijBXqzBXYH4Z931fsmlf7zBvd+wjIigMDI/TcbyRvt+GOSgUZ62uU3S2h8IdRgrTQK1S2T6PyhpZ+aB9LxcF2hpbCUUF27hy4S+Of/wWfUMeykuNVIin9/xNuj9qYWR8juknIc5szNC1voA/DdSypayAhlor57/vp/NEC7OBRfpveek+0cwvP/7JsfedhEWcLg8+pOtkMxfOuTjc5WSrSc+S6ymSQYtGyk5dsVT9/4zbhZmu3Z5IztggXOwSZjvSuZ+hUR9mEan/KAz+PkJb5z7GngSYdXu46T9Ho3EL6ZSKnZ9Fax0W5aFrDNuB6mROA6El7BYTnns+bPt3srK2gV+QcIjIPRLzrxL3ZkLLfB0c40udRCAd1EfFNioxaSG+Sl2NmchSnCKjwh6HBWlzk/rd1uTyMOTn8MbuctRiieyqLKbKbqXs4gSvQmFephOnRCIRFW+F11yyp/3TtD/eSKjYTM4rjcZh110yUZlDPfnVqcwovkppRhRnDrX/2x+UjKDuJXcuE4r/FWAAjBMttNdoYOEAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Uruguay',\n    code: '598',\n    iso: 'UY',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpERTc5MkI4NzE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpERTc5MkI4ODE3OEExMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkRFNzkyQjg1MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkRFNzkyQjg2MTc4QTExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+foYgAAAXJJREFUeNrsls9KAlEUxn93nCadUbISM03BWraofbRq07JV79GL5KZdqx6h1wjaBBkGQVCNWmo1M47jn7xdw4L2ji7qg3M5Bw5897sf53KElPIJyKpwmQ4SKmyhiJ1xgec6CE2jPxB0uwGWGSUet0Jh178TvxNwU74kqnuqEjTqt+SKu6zmN0nEzXCIh0NJq+XQ9yr41RM8547l1DrNh4CXxhs7u3uqS0OI0sSItdHheH1atQsM54ymfU3SUortMv3aKaZu0+tp4Sg25g26gUf98YpCPoKlfDVNQbV6z4IcMJCqR/VJeTRZxSMIITFiabr+B+22j+/6JJJ5Ws0HXpvP4SienxtlGaKZQ4bOOXajghVbwUgekCrsk8umx5crTZY4onQXN7Z5X87xVltHT/sMpWSgrVEoboUyTr/mOOi0CYLO1xwjA3Q9wuJSJgxed0QsmQE0ZgT1psd/TPG/x3/C458PZIpw9fHKk5jy6uN+CjAArpeUjQlCP/MAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Uzbekistan',\n    code: '998',\n    iso: 'UZ',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwNDE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0NjFFMjIwNTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjAyMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjAzMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5O2LbgAAAeRJREFUeNrkkz1rFEEYx3/7fhd3c+EE0XAE0UZrG/E7JGhjZWHnZ0jhd7ARsbS2sRGLFIrfQBBBMIJwigkhyb14+zI7Oz4zFwSxWpHbwgdmZ/YZZn7z/z8zHk9ffgUyAh8mP6Afs33lEvvzgg8HJxAGuGgMF84lTKuaNcktak0WhZxWCqUNeLSKUNqmG81yRsOMvdu3GC9Kdl+/czC3odJLcC+h0g3DJEIbw7AXMVM1ioa2ZAueYUxGqXixfZNrGynXn+2BKEPGiLIt6a2y8aKgEPCJzJWi8rhQ7gB4LeVK+O5rcJbeOL/O97yE45mY3xdo7cBpFBD5HoM4JJGS2D4OPDZEeWChFt4yAnbu7YpLCUXFkWxw9+om87UeH8dHrA9SPIFMKu0U1jKfi+W1OJuLcqt2Ib3D2gO0aCG5WvoUxzx+8563k5w7ly/SDDIOrN1WdRKDrikCuWi2pmGEqRVTyeuqdLm2docPDz/LKrRdWDcNn17t8yX0eZD2hanFYp9K8tZqJWrjs3/bF1q7Gx78RY09M5+cuue0rDS/au728n5L/8vwjDFyk0hZcVjw9Ezx/wPuyOqF+fNyrSDCJ4/um1VDl+/l+VYnVoejdLRytQ7sN3QSPnQHzjqxWtq3LuA/BRgAxkzb8HD3VjsAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Vanuatu',\n    code: '678',\n    iso: 'VU',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwODE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0NjFFMjIwOTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjA2MTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjA3MTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+q4FzLAAAA2xJREFUeNq0lX9o1HUYx1/f7/2au7vdbdMLl2KzmT+oTUaQVjAhFbYKQ6SRqF3gwLKLCkKNsKyhYv/4h2RETlAQRAZO/+gHVlrLAn/NBvkjHJOam7Rzeafb/fw+Pd+7TpT+kDu3B54P932+3++9n+f9vJ/na1RRMbDTNd3/ckUVaRH6rQRZBBODiTRj2Uqk6wDMpZptZTUs9QY1AUsTSCo8msDEmLl/A/GrZ6GmNcpLiV4WRC/w89gtHnd4mW56cuAyEcCVDdDZBUe3wvkfwdk8TMvYeZ6LXqI3Oco8RzlTTTeWwo9nAmZWj3e3QNVs6FbgX3ZDTzcMNg2x6PY5mqOX6UsnqHf6CJmucUvgTgsTGVj/AZQ9osCnoXcfHDsCF54cYkG8h5XDVxjMpHnC4aPacOYEKOMBbJuvzKByioPw2xB4DEauwZ+H4esjFt/O+4vG2DnWRPuIWRbzNYGgJmCr312C2zMTU/eHl3loW11GygmZm8KSV+M5Wc1WBj7bAc8+pVo4AeHNkOp3E6GGSDDEZKV/TKySqo8tbHDK4HdBeeVFjzxT75Tfjgblp70VBUHnvGEu8sMhRK4hX3ypsYAdd4uPgDjwiVmk5yreGin3T/LAJ7vHaGly030mTU9ngNqWfxiJ3VtL3QzY8T48vwQOfgMDN3QSStg1Tvs48FWSjo98LF6U5ftTaT58bRKWyj2V/v8LN0ZUiAmt1Q+zVCFTkrqFHKUJzO6xNM5xSvt75bJrk1ckHpK9W7z3UD1rBnK4A0n3I8f2II868lRDUN1ftN8RVyGLoROVnLycZXlbLHc9tRp2bYflzTrjOueRCJyJKlFNM6FVea9wQTJb/K6+G9il/2eYJqmUhc3e56rmcCv88Tu8tV7nuk8fb1SZr6lVngMQVc5HtR+mxg2j+B4XLJ2xT4udusnWrYa+i7DiBejq1XC9An6qPieoqab05s08mI2XldLEVdgkH29QKsMQV6W2rYL9JzVYOw3atcIG5fyWVnc1/t8LD/bZzAFv1k218U3dVMPwzuvQcVyD0x7WTGbmAe19WgAcp8+0cf1XYi4P/u3tOp+dGqkOwVoFfPohFY0Ff4+qpqXoHt4XeFMrsu2g/vJOhjfqYGEoP0BDtycE8C5VBwZYV+dncU2+b9e1woz1wD28n/0rwAB0+lOwpXHd2QAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Vatican',\n    code: '379',\n    iso: 'VA',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MUZDNzdDNzcxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MUZDNzdDNzYxNzdDMTFFMjg2N0NBQTkxQkM5RjY5Q0YiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iODY0MDczNUVBM0I5QTUyOTc2RUZFMTAzNDJBQjczRUMiIHN0UmVmOmRvY3VtZW50SUQ9Ijg2NDA3MzVFQTNCOUE1Mjk3NkVGRTEwMzQyQUI3M0VDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+oPgNXQAAAghJREFUeNrkVL9v00AUvvNvO44dbFNBkjYllIWUASbEQAeQEBszjP0D+B9g4p9ghY2VlQEhIdQGRwyIItFUSUOSJnbqn3dnH05IUISEVEdCDLzh3d17T989fXrfg0n/HjizQev12YsZ8NfsP4GmMKN8es7ZhxTCFIIULOIQAoxRduPyQs8R4NSlCfFOByhyOUEq6hWG5X/G4cznhqY06wsmJIzjKHCP0Ml77B8yohlbNwtaVZJlVjiXJJTj8kO7w/bgqIkRUo2yLMaR84mMba5Q5tXK9xC4E5SmqXVhc2N9MzfX7R77rjn8aH9wRrZAfdI1nINt9/hqyhjIt6Ovz5RvjxTn+SqEAMgyUh2yZpCWhrjcr103as2yekAg1hhHO+9I2IdsNC3Mq8ZsQlAKEAIFCcSj/darx5/3WmL1wa2HT6q1dQgmAMgk4Vkmf9coCMPhWxq2sDai3omR4iJ/3yV32oPjfjwCHtZ1zTLXdL2UGzoJulHvTeJ/mRwOQrLlmk/rOyWR7w77nV6HUgBPXZZn8SrQTLHOrt0lndCdXAzINVkkPOdlw6YSL85oUouXNkzLklfhOhMMXDzD8dh++aK3t29uXbmxu6tY5mzw59n8klloMjNBUS7f3qk0tkVNE9XCb5Xcaqtn1hplBMFqNH6plNLlf1eFXtb9n1L51xNd3lT/aF//EGAA9B/iH5xEuF4AAAAASUVORK5CYII='\n  },\n  {\n    country: 'Venezuela',\n    code: '58',\n    iso: 'VE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0NjFFMjIwQzE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3ODRDOUJGQTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQ2MUUyMjBBMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQ2MUUyMjBCMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+suiZXgAAATpJREFUeNpi/H5RnIE2gImBZmDUaPoZzcigsJdGRrMQ8hUjw/ufDO9/+VTov33x/cfPv/LKfBvaLzDwsjAIcjAw/AdCEl0t+IGBhZHh02+Gm+9rpzt8/vHnz+9/v379+/HrrxA/2++//2XEOCsT9jGoCjAIsDG85iPFaOF3DF9+yyrxOZuLs7Iyffz2Z9X0KwyinCBPPP8WmqktxMf648ffo+ff3LnxgeGXOCkBwsLE8OkXz/c/Ho5SmblH3j/5yqDEx/AP7HkV/tVzr3MIsM2f5XDl9GuGDz8ZuEgKEOYX5rZSif6KWVUn/v3/z8DDxvD/P7Imhm9/GX7+ndRuvnbv04M7f5PiambBd//57rMIMIuI//vwi4EZQxnrXwZe5kdsQm/+fWZgeEvvxMd4XkR7NKOPGo0bAAQYAF2fdeRLtEqSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Vietnam',\n    code: '84',\n    iso: 'VN',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3ODRDOUJGRDE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3ODRDOUJGRTE3OEIxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjc4NEM5QkZCMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjc4NEM5QkZDMTc4QjExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+MKjEOwAAAg1JREFUeNrMVTtrFVEQnvPae3fvPryPRLmInQn2WkhMIYggGEHs0gqC2FhraSE2grW9VgF/hZWPQmMqCZFAQhTxZu8jZ3fPjLPXRiSsm5iAU83Oznz7zTdzzop37Tk4HpNwbFYXWkjATKAVojYZXTPPTYSZRXbyHSkbdHSsBWRj2b1lZ5YtO/x4dNAlXUgu5+2rVgBB8S+C8BcLKHZLHOZYkGh2XDDnZIj+aTfa1Ebgr1c6phIDa7OmDKRPyaXcn3deH7m2s5TJHkJI7GggDvpnkRNki8geiDWK4ocIL9j+wzGMIVvXqoO4JZlp/97k5LL1zjhIcPtJkL4xzH3aXT3Wokmc/uVpsH47IgPeYianrWBWFngLOYS4cTfaeNxiTO7vIGNEkAE1Ytx65b+f76YvmqLLIRAK2BmueBzcfOmbCFWL9hW6ckOwVCtoF+lA735gj9QsqlPITrpm0m+6lThhgPBwy8drloq4k8/csBDT6K0ZvTYQY++ajXpFMdxX4dp7nRcyvpJ5F+3gub96Pfl4M/n+LDDn7Yklm7m/nJ0qaG5WAbUX851H4eqdhIGkorX7yfaDqL2QG4mUVx7hiku1hA5JJ5R+MiZwKiglwj2wIxWdy3EoioHgwR7meuIyHInJV+nxxJi/mwYb0NRu77NSAQkNFXLr6jGyCOV6wW8QVKr4Z/A//RUcwn4KMAD6MNV+pBmzeAAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Wallis and Futuna',\n    code: '681',\n    iso: 'WF',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAxJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MzU5MkY0Q0MxNzhDMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MzU5MkY0Q0IxNzhDMTFFMkE3MTQ5QzRBQkZDRDc3NjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0iQTQyMEE3MkQyMkZFM0NBMzRDNzNGM0VCOTZCQjUzQ0UiIHN0UmVmOmRvY3VtZW50SUQ9IkE0MjBBNzJEMjJGRTNDQTM0QzczRjNFQjk2QkI1M0NFIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+5wahWgAAAsdJREFUeNrEVUtrE1EUPudOMpOkNcmExsRgGyr1USRYUOrKFFTQhXWl0YUoLizWhdS0ttBCpdWuqhY3RRFUFBSh+heUdm9pKbopupPYR5o0j2YmmXu8k1RR6bSlULwMw33M+e53vvudO9jcPDo7m+zrOxaPR3lRS504TTNfjKZDmE5KuQIxhK02BtvWbLSpz/7hTuVng4Rsmg7ZAtcr9O12KBWpUCBuAK4mRPkciCERYAWLSMjEGLpcwJg5bwUt+1VXFmyqRwxKYoMaP9u9y3B7MLUMRpEkBRr2wlyCUwkJyzCEaMdAEObnQOwqK1boOB1tNTj3uBXV6+Ai+Pt3k2MRWWqRGGifZ5Thh96uWzQ/DwYvS4MU3Jkde1+IXZL21IEiowVvpPoQSGwlo2czmsgY/TUk2SRuGGKxvl6KthSGH1S9eeluPfM7ZmVqZunwEbmny/71m/FxglTv2g5ZdNQs2n15X5CFw1gXBmcVygp3OKFk8MQP952+Hc8ep8+2pl+8qgRkxicWmiJKb7d36B5mMlzXLbUun/Va6YgUdN1IJKpjMZ5Mpa9eJr9qqw1nWqKu2z2+wUERZiwvmydpDW3ZSNhA00THfb0NQsH8xSs8n3PeH1E7O8QkL+ogSeuZbwND06p5WeNByiYFkhSJ/L2ytWoUrpJMgOyH8fS+BsfII+fYu+ypkxXd0WYDzrfCGjlJiFRbm5+cTh1vccY71Y6bZhWOjgrd0eV0x84xRTas0W3rCA2hUP7125W2a9X9/Z6BgUq9e9rbWZUzd+E85Z5DIGBytyK30BixwAaQHaXpKezt9g3dFSpzXjIvDiYxwKWnT7QbcXn/ATD0XxfA5qFR2EMn4nC0GZJJphXIhKCKyhQI8E+TmNfA5bAsdEvosrfNdzJJxeIf95zocBS28/lEGQOnLZmvQkdVLW3G6f/8CrYR+qcAAwC0wiFWD6ebGgAAAABJRU5ErkJggg=='\n  },\n  {\n    country: 'Western Sahara',\n    code: '212',\n    iso: 'EH',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNTkyRjRDRjE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNTkyRjREMDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM1OTJGNENEMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM1OTJGNENFMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+f+9yRAAAAhJJREFUeNrElEFIlEEYht8Z/zWyRNiU2EoQIqJdyUjEkxcDD1qEBHaIwFMRRGQH9RIR1LFA8Fi0bODFi4fyWLGnCJMWkgo2aFeWbNEOq8uu/us/vaNjsLm7/cbu3wfPDDMM837zzseHMUDhf5DjMEvavBZ+wyFDvpLzHgpLyXGB+MgUeQhvQutuiX4nCTJKXpBWL4R11JE8mSc95DW5WEvhBmB1ZyFMAp9IPQlrB6RUDFQbWSoby1ifJLeVEpnBQQdra07FgonHFSIR98VVzgr9cpssMbuFmRn53u+XmelpYYwpIheNio/d3cLu6hJIpUqe+RP5t7/Qz9ynk7BtxIaG8KWvD3Y6XXQmMT6OAwMDyCWTeNfRgfTEBJx83l1xuanCTZ1AKgUUCsXJZbPYHwyisLyMnysrWE8kIHy+iveJOYD9A41lD5B1Mx9/9Bgtd0Z2nVl9OYtvw8NoC4dRHzgCq6UZda3H/k3YMf98mDSdPqcOTj1XCAVE2ZtefQDi7H/XLrly0Cq1qY08RAJkMiTw+b5/81koYFW8qffMNi5DRFnaDWahzD+eIBvkbj/wRDfwG6rqDeS3sGNaZ5C8bQJuXQFiZ7lIm5Ymqyts7VjbTI6Sp6eAm1eZiN5Y3Gvt70FYi7abR12/AET6zWLRVFeNQmRp9Xzj9itjndz5URtrdwk/OAl17zKLSpfxEjyLXwIMABpOQfz9h5ChAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Yemen',\n    code: '967',\n    iso: 'YE',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNTkyRjREMzE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNTkyRjRENDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjM1OTJGNEQxMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjM1OTJGNEQyMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ACJHhgAAAE1JREFUeNpifK+t+59hAAATwwCBUYtHLaYZYPz///9HIM0HxPTKVoxA/IkFymBAouli+WjiohtgQUpU9Exc/xnpaOFoyTVq8TC3GCDAAFQ1DF5mtiLSAAAAAElFTkSuQmCC'\n  },\n  {\n    country: 'Zambia',\n    code: '260',\n    iso: 'ZM',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAIAAAAVyRqTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTY2NjI2QzE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MTY2NjI2RDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNjY2MjZBMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgxNjY2MjZCMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+b9h8+AAAAXJJREFUeNrslLtKA0EUhr+ZzW7MbYkmMQoqVhZWilrb+Q4i2PgGPoCVlbVoY20r+AQigoKFlWDnhaAYMCYm0d3s7oyzwScYsBEPpzicA9/8/GdmxOQeFiE0sUMgySa4GgWRxFOI4TR00iKDVSQOhZCy4j5H5EGMH9F3CYa8fEAttkV3XGotDhrgc1CimmehzX6JCcFSl/V3jnK2aH/AY4U9wc4rh02KRaI6Kw3q79QLXPmc1RB2Xkvjr+TFZWTA8gfzfTZiyh+cCk5nufYpCFvVWpAIKgmhx8UUlyHVWx7GOZ7B7LQUpSu1RJsbEjnp0kyRj6gKTuZo5Sgq4oBEEtipNpKfS2yfZzdust1R/Rqrrebnkznkjc1Vdte4b/FliTbpMd/MLN5lGVNvStH5TLsw2WJaMx3RE0gbN0gNbeeMqapdVs++0uJnFBqeQ0emKfm1+Ef/o/8i2v57Gjj0PN139ZfUYgSRpP04Q2/44vvwLcAAr1qGyCgX8xUAAAAASUVORK5CYII='\n  },\n  {\n    country: 'Zimbabwe',\n    code: '263',\n    iso: 'ZW',\n    flag: 'data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAB4AAAAUCAYAAACaq43EAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4MTY2NjI3MDE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4MTY2NjI3MTE3OEMxMUUyQTcxNDlDNEFCRkNENzc2NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjgxNjY2MjZFMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjgxNjY2MjZGMTc4QzExRTJBNzE0OUM0QUJGQ0Q3NzY2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+WOc8GAAAAtBJREFUeNq0lmtIk1EYx/+7b7pJ2LxfKv1QqZVBEERfEsKCyi5ghqldmEk1urAuUBGYSRCChMrQkqAsM8IuokVRUeAFBmVhsVa6OWeba7rNy9bedzudN9KK+ra9f3jOC88D7++c55zzPEfQ2NBkO3xLo5LnAzmZcvjGAAjBuwSEyvCkH2U1xfiwcAC5eSK4RqUIBrkov2Av/aoCowQ7daXo9N1ESRngD8gwNUEjIp7Bs47a6mtwWzU4UU4QvYg6LPzA/wFzau924JV+PTQF75G1gzqmqUU49X+Bpz1vIXZFQ2a2YiAnD/pLB5Dtb0TFMhqMkWEyEIJYEGGwj7EjOJiLQAeBVTeGFY6vYOMTcf7cdbir9uMIQkifp4aZJRAREjlwiA6M8SRC1ssY0gJy0UZk9DykETHajGZ0bivA9o/vsCVVCchk4YOD7nHvtzM6lffuY4jzY5BS6YJEIoK92gnv/QVQSGVIqzwKY3E59BoN/M1XkaoUQiSXh0cmLOud6nxAPsVnEstmEGYwmcz0JRH/SAKx6UCMq5PITPdrMiv90+cEsXFcrsMzLtXcD1lqjrYUMv1SSkx31GS4PZ74ekEmnGdJiPxWi+ENgTohbLB4buXUFEvT4DTYwEg89PqEYDUBCUnZP2/RMLX6Q1qMNdThVBS92rGKsDI9B2bNk2BeuKFcIoGSxNEt8CDoFiImvQhdQ3a0FG7FJkMfipIpNUoRuVPNWkfhHzFBvmoxnQ3tEhIp4BHjYs0jWC5ocRAuZCnn4wvLFTLCT+XiZB4H6uprkWg5Bl0GdagV8DDBiFXP/4I7uj7jWWspCtf1YE0JdQS4veC5VjdfuQdL/y6crmDoYeOW/qs/C/gC03HPcS1u2+uwdx/XkaTwOgV/HD8eHgKm3iGUVO1GX2w3cjYAEw4FmAC/LxFB6402W0VTmcq/1oeVy2X4bheCCAn41g8BBgCi8X7r2R04cwAAAABJRU5ErkJggg=='\n  }\n];\n\nexport default FlagsList;\n","import classNames from 'classnames';\nimport React, {\n  ChangeEvent,\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent as ReactMouseEvent,\n  ReactNode,\n  Ref,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\n\nimport { Dropdown, DropdownElement, DropdownOption, DropdownOptionProps, DropdownSection } from '@/components/dropdown';\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\n\nimport { CountryPhoneProps } from './country-phone.model';\nimport './input-phone.css';\nimport { IconItem, IconSet } from '@/components/shared/icon-set/icon-set';\n\nimport FlagsList from './resources/config';\n\nconst separateCountryByCode = (list: CountryPhoneProps[]): CountryPhoneProps[] =>\n  list.flatMap((country: CountryPhoneProps) => {\n    const codes = country.code.split(', ').map((c) => c);\n    return codes.map((singleCode) => ({\n      ...country,\n      code: singleCode\n    }));\n  });\n\nconst flagsListByCode = separateCountryByCode(FlagsList);\n\nexport const PhoneCountryCodes = flagsListByCode.map((l) => l.code);\nexport type PhoneCountryCode = (typeof PhoneCountryCodes)[number];\nexport const PhoneCountryISOs = flagsListByCode.map((l) => l.iso);\nexport type PhoneCountryISO = (typeof PhoneCountryISOs)[number];\n\nexport interface InputPhoneElement extends HTMLInputElement {\n  iso: PhoneCountryISO;\n  code: PhoneCountryCode;\n}\n\nexport interface InputPhoneProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Define de initial country selected using the country ISO. Will override defaultCode prop.\n   */\n  defaultISO?: PhoneCountryISO;\n  /**\n   *  Define de initial country selected using the country phone code (without +). Will be overridden by defaultISO prop.\n   */\n  defaultCode?: PhoneCountryCode;\n  /**\n   * Alternative text that labels the list of country flag options of the dropdown list.\n   */\n  dropdownAriaLabel?: string;\n  /**\n   * Enable the search bar to filter items.\n   */\n  searchable?: BooleanProp;\n  /**\n   * Placeholder text for input search bar.\n   */\n  searchInputPlaceholder?: string;\n  /**\n   * Accessible text for the input search bar.\n   */\n  searchInputAriaLabel?: string;\n  /**\n   *  Text to show when filtering presents no results.\n   */\n  searchNoResultsText?: string;\n  /**\n   *  Number of visible items to display in the DropdownList. Remaining items will be accessible via scroll bar.\n   */\n  visibleCount?: number;\n  /**\n   *  Callback to run whenever the input value changes.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n  /**\n   *  Callback to run whenever the country dropdown value changes.\n   */\n  onCountryChange?: (country: CountryPhoneProps) => void;\n  /**\n   *  allow you to say what is the acronym to Direct Dialing In, the default is DDI\n   */\n  acronymForDirectDialing?: string;\n  /**\n   *  Use the given custom countries list instead of the default one (must be in the correct format).\n   */\n  customCountriesList?: CountryPhoneProps[];\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputPhone: FC<InputPhoneProps> = ({\n  ref = null,\n  label,\n  defaultISO,\n  defaultCode,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  errorFeedbackText,\n  darkMode,\n  className = '',\n  searchInputAriaLabel,\n  searchInputPlaceholder,\n  searchNoResultsText,\n  visibleCount,\n  required = true,\n  searchable,\n  dropdownAriaLabel,\n  acronymForDirectDialing = 'DDI',\n  customCountriesList,\n  hasHelperText,\n  helperText,\n  onChange,\n  onCountryChange,\n\n  ...props\n}) => {\n  const internalCountriesList = useMemo(() => {\n    return customCountriesList ? separateCountryByCode(customCountriesList) : flagsListByCode;\n  }, [customCountriesList]);\n\n  const computeCountry = useCallback(() => {\n    let result: CountryPhoneProps = internalCountriesList[0];\n\n    const searchForProp = defaultISO ?? defaultCode;\n\n    if (searchForProp) {\n      result =\n        internalCountriesList.find((country) => {\n          if (defaultISO) {\n            return country.iso.toLocaleLowerCase() === defaultISO.toLocaleLowerCase() && (!defaultCode || country.code === defaultCode);\n          } else {\n            return country.code === defaultCode;\n          }\n        }) ?? result;\n    }\n\n    return result;\n  }, [defaultISO, defaultCode, internalCountriesList]);\n\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const inputRef = useRef<HTMLInputElement>(null);\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const dropdownRef = useRef<DropdownElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const [currentCountry, setCurrentCountry] = useState<CountryPhoneProps>(computeCountry);\n\n  //  Necessary to override the default initial value and currentCountry in case of initial code or iso values changed\n  useEffect(() => {\n    setCurrentCountry(computeCountry());\n  }, [defaultISO, defaultCode, internalCountriesList, computeCountry]);\n\n  useExpandedRef<InputPhoneElement>(ref as Ref<InputPhoneElement>, inputRef, {\n    iso: currentCountry.iso,\n    code: currentCountry.code\n  } as InputPhoneElement);\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    if (wrapperRef.current?.contains(document.activeElement)) {\n      inputRef.current?.focus();\n    }\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n    dropdownRef.current?.first();\n  };\n\n  const onDropdownChange = (options: DropdownOptionProps[]) => {\n    if (!options.length) return;\n\n    const [selectedISO, selectedCode] = options[0].value.split('|');\n\n    const selectedCountry = internalCountriesList.find((f) => f.iso === selectedISO && f.code === selectedCode);\n\n    if (selectedCountry) {\n      setCurrentCountry(selectedCountry);\n      onCountryChange?.(selectedCountry);\n    }\n  };\n\n  const handleInputKeydownCapture = (evt: KeyboardEvent<HTMLInputElement>) => {\n    const keysWhitelist = [\n      'Enter',\n      'NumpadEnter',\n      'Tab',\n      'ArrowUp',\n      'ArrowDown',\n      'ArrowLeft',\n      'ArrowRight',\n      'Backspace',\n      'Delete',\n      'Home',\n      'End',\n      'KeyC',\n      'KeyV',\n      'KeyX',\n      'KeyA'\n    ];\n\n    if (keysWhitelist.indexOf(evt.code) >= 0) {\n      return;\n    }\n\n    const isNumeric = /\\d/.test(evt.key);\n\n    if (!isNumeric) {\n      evt.preventDefault();\n      evt.stopPropagation();\n    }\n  };\n\n  const handleInputChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    const { value } = evt.currentTarget;\n\n    setHasValue(value.length > 0);\n\n    onChange?.(evt);\n  };\n\n  const toggleVisibility = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const handleDropdownControlKeydown = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (propsClone.disabled || propsClone.readOnly) {\n      return;\n    }\n\n    const code = evt.code;\n\n    if (code === 'Escape' && dropdownRef.current?.visibility) {\n      dropdownRef.current.hide();\n    }\n\n    if (code === 'Enter' || code === 'Space' || code === 'NumpadEnter') {\n      toggleVisibility();\n    }\n  };\n\n  const handleDropdownControlClick = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (propsClone.disabled || propsClone.readOnly) {\n      return;\n    }\n\n    if (typeof evt.detail === 'number' && evt.detail === 0) {\n      //  EVENT DETAIL IS THE NUMBER OF CLICKS. KEYBOARD DOES NOT ADD A CLICK COUNTER.\n      //  KEYBOARD IS HANDLED ON KEYDOWN\n      return;\n    }\n\n    toggleVisibility();\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (!dropdownRef.current?.visibility) {\n        return;\n      }\n\n      if (!wrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  const wrapperClassNames = classNames('agora-input-phone', className, darkModeClass);\n\n  const inputWrapperClassNames = classNames('input-phone-wrapper', darkModeClass, {\n    'has-value': hasValue,\n    'disabled': propsClone.disabled,\n    'readonly': propsClone.readOnly,\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const labelClasses = classNames('input-phone-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-phone-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-phone-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n      {/* Label */}\n      {label && !stringToBoolean(hideLabel) && (\n        <label htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      )}\n\n      {/* Input wrapper */}\n      <div className={inputWrapperClassNames}>\n        <button\n          type=\"button\"\n          className=\"country-dropdown-control\"\n          ref={buttonRef}\n          tabIndex={propsClone.disabled || propsClone.readOnly ? -1 : 0}\n          onClick={handleDropdownControlClick}\n          onKeyDown={handleDropdownControlKeydown}\n          role=\"combobox\"\n          aria-controls={`${propsClone.id}-dropdown-container`}\n          aria-expanded={isDropdownVisible}\n          aria-haspopup=\"listbox\"\n          aria-required={isRequired}\n          aria-label={`${acronymForDirectDialing} ${currentCountry?.country} +${currentCountry?.code}`}\n          disabled={propsClone.disabled}\n        >\n          <img className=\"shadow-center-lower mr-8\" src={`${currentCountry.flag}`} alt={currentCountry.country} width={36} aria-hidden />\n          <IconSet state={isDropdownVisible ? 'active' : 'default'} className={`icon-container ${isDropdownVisible ? 'icon-active' : ''}`}>\n            <IconItem aria-hidden state=\"default\" name=\"agora-solid-arrow-down\" />\n            <IconItem aria-hidden state=\"active\" name=\"agora-solid-arrow-down\" />\n          </IconSet>\n        </button>\n\n        <div className=\"input-text-wrapper\">\n          <div className=\"country-code\" id={`input-phone-${propsClone.id}-country-code`}>\n            <span>(+{currentCountry?.code})</span>\n            <span className=\"sr-only\" aria-live=\"polite\">{`${currentCountry?.country}`}</span>\n          </div>\n\n          <input\n            {...propsClone}\n            ref={inputRef}\n            type=\"tel\"\n            id={propsClone.id}\n            className=\"input-text\"\n            disabled={propsClone.disabled}\n            readOnly={propsClone.readOnly}\n            required={isRequired}\n            aria-invalid={stringToBoolean(hasError)}\n            aria-busy={stringToBoolean(hasFeedback) && feedbackState === 'loading'}\n            aria-disabled={stringToBoolean(propsClone.disabled)}\n            aria-required={isRequired}\n            aria-describedby={[`input-phone-${propsClone.id}-country-code`, inputAriaDescribedBy].filter(Boolean).join(' ')}\n            onChange={handleInputChange}\n            onKeyDownCapture={handleInputKeydownCapture}\n          />\n        </div>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            onHide={onHide}\n            onShow={onShow}\n            onChange={onDropdownChange}\n            type=\"text\"\n            searchable={searchable}\n            searchAriaLabel={searchInputAriaLabel}\n            searchPlaceholder={searchInputPlaceholder}\n            noSearchResults={searchNoResultsText}\n            optionsVisible={visibleCount}\n            aria-label={dropdownAriaLabel}\n            hideSectionNames\n            darkMode={darkMode}\n          >\n            <DropdownSection label=\"phones\" name={`input-phone-${propsClone.id}-countries-dropdown-section`}>\n              {internalCountriesList.map((country, index) => {\n                const optionKey = `input-phone-${propsClone.id}-countries-dropdown-section-${country.iso}-${country.code}-${index}`;\n                const isSelected = country.code === currentCountry.code;\n\n                return (\n                  <DropdownOption\n                    key={optionKey}\n                    value={`${country.iso}|${country.code}`}\n                    selected={isSelected}\n                    hasIcon\n                    icon={country.flag}\n                    disabled={isSelected}\n                  >{`(+${country.code}) ${country.country}`}</DropdownOption>\n                );\n              })}\n            </DropdownSection>\n          </Dropdown>\n        </div>\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-phone-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-phone-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputPhone };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, MouseEvent, ReactNode, Ref, useEffect, useId, useRef, useState } from 'react';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean, useExpandedRef } from '@/utils';\n\nimport './input-range.css';\n\nexport type RangeType = 'single' | 'double';\n\nexport interface InputRangeProps extends Omit<ComponentProps<'input'>, 'value' | 'onChange'> {\n  /**\n   *  Input label text.\n   */\n  label?: string;\n  /**\n   *  Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  The type of the range (single or double).\n   */\n  type?: RangeType;\n  /**\n   *  Disables the input range.\n   */\n  disabled?: boolean;\n  /**\n   *  The value or values for the input range. It can be a number array with 1 or 2 positions according tp the type specified.\n   */\n  value?: number[];\n  /**\n   *  The minimum value to accept for this input. It does not allow the insertion of values lower than this minimum value.\n   *  If a value is specified for min isn't a valid number, the input has no minimum value.\n   *  This value must be less than or equal to the value of the **max** attribute.\n   */\n  min: number | string;\n  /**\n   *  The maximum value to accept for this input. It does not allow the insertion of values greater than this max value.\n   *  If the value of the max attribute isn't a number, then the element has no maximum value.\n   *  This value must be greater than or equal to the value of the **min** attribute.\n   */\n  max: number | string;\n  /**\n   *  Custom onChange event handler for double range type.\n   *  Will be called with an array of values.\n   */\n  onChange?: (values: number[]) => void;\n  /**\n   *  Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   *  Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   *  Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   *  Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   *  Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n}\n\nexport interface InputRangeElement extends HTMLDivElement {\n  sliders: HTMLInputElement[];\n}\n\nconst InputRange: FC<InputRangeProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  type = 'single',\n  disabled,\n\n  value = [0, 0],\n\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  hasHelperText,\n  helperText,\n\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const { onChange } = propsClone;\n\n  const [currentVal, setCurrentVal] = useState<number[]>([value[0], value[1]]);\n\n  const prevPropValue = useRef<number[]>(value);\n\n  const containerRef = useRef<HTMLDivElement>(null);\n\n  const innerRefs1 = useRef<HTMLInputElement>(null);\n  const innerRefs2 = useRef<HTMLInputElement>(null);\n\n  useExpandedRef<InputRangeElement>(ref as Ref<InputRangeElement>, containerRef, {\n    sliders: type === 'single' ? [innerRefs1.current] : [innerRefs1.current, innerRefs2.current]\n  } as InputRangeElement);\n\n  useEffect(() => {\n    if (prevPropValue.current[0] !== value[0] || prevPropValue.current[1] !== value[1]) {\n      const values = [...value];\n\n      if (type === 'single') {\n        values[1] = Number(propsClone.max);\n      }\n\n      setCurrentVal(values);\n\n      prevPropValue.current = values;\n    }\n  }, [value, type, propsClone.max]);\n\n  const handleRangeChange = (values: number[]): void => {\n    const [firstValue, secondValue] = values;\n\n    if (type === 'single') {\n      setCurrentVal(values);\n    }\n\n    if (type === 'double') {\n      if (firstValue > secondValue || secondValue < firstValue || firstValue === secondValue) {\n        return;\n      }\n      setCurrentVal(values);\n    }\n\n    onChange?.(values);\n  };\n\n  const handleMouseUp = () => {\n    innerRefs1.current?.classList.remove('z-[2]');\n    innerRefs2.current?.classList.remove('z-[2]');\n  };\n\n  const handleMouseDown = (evt: MouseEvent<HTMLInputElement>) => {\n    handleMouseUp();\n\n    const target = evt.target as HTMLInputElement;\n    target.classList.add('z-[2]');\n  };\n\n  const containerClassNames = classNames('agora-input-range', {\n    'has-label': !stringToBoolean(hideLabel),\n    'has-error': stringToBoolean(hasError)\n  });\n\n  const [currentBgVal, setCurrentBgVal] = useState<string>('#FFFFFF');\n\n  useEffect(() => {\n    const primaryColor = getComputedStyle(document.documentElement).getPropertyValue('--color-primary-600');\n    const secondaryColor = getComputedStyle(document.documentElement).getPropertyValue('--color-neutral-200');\n    const min = Number(propsClone.min);\n    const max = Number(propsClone.max);\n\n    if (type === 'single' && !disabled) {\n      let percent = ((currentVal[0] - min) / (max - min)) * 100;\n      percent = Math.min(percent, 100); // Round to 100% if the value is greater than the maximum\n      setCurrentBgVal(`linear-gradient(to right, ${primaryColor} ${percent}%, ${secondaryColor} ${percent}%, ${secondaryColor}  100%)`);\n      return;\n    }\n\n    if (type === 'double' && !disabled) {\n      let percent0 = ((currentVal[0] - min) / (max - min)) * 100;\n      let percent1 = ((currentVal[1] - min) / (max - min)) * 100;\n      percent0 = Math.min(percent0, 100); // Round to 100% if the value is greater than the maximum\n      percent1 = Math.min(percent1, 100); // Round to 100% if the value is greater than the maximum\n\n      setCurrentBgVal(\n        `linear-gradient(to right, ${secondaryColor} ${percent0}%, ${primaryColor} ${percent0}%, ${primaryColor} ${percent1}%, ${secondaryColor} ${percent1}%)`\n      );\n      return;\n    }\n\n    setCurrentBgVal(secondaryColor);\n  }, [currentVal, disabled, type, propsClone.min, propsClone.max]);\n\n  const RangeStyle = {\n    background: currentBgVal\n  };\n\n  const RailClassName = classNames('rail absolute w-full h-[4px] left-[0px] z-[0]');\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-range-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-range-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div className={containerClassNames} ref={containerRef}>\n      <label hidden={stringToBoolean(hideLabel)} htmlFor={`${propsClone.id}-0`} className=\"input-range-label\">\n        {label}\n      </label>\n\n      <div className=\"rail-container\">\n        <div className={RailClassName} style={RangeStyle} />\n        <input\n          {...props}\n          className=\"inner-input-range\"\n          type=\"range\"\n          id={`${propsClone.id}-0`}\n          disabled={disabled}\n          onChange={(event) => handleRangeChange([Number(event.target.value), currentVal[1]])}\n          value={currentVal[0]}\n          ref={innerRefs1}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          onMouseDown={handleMouseDown}\n          onMouseUp={handleMouseUp}\n        />\n\n        <input\n          {...props}\n          className=\"inner-input-range\"\n          hidden={type === 'single'}\n          type=\"range\"\n          id={`${propsClone.id}-1`}\n          disabled={disabled}\n          onChange={(event) => handleRangeChange([currentVal[0], Number(event.target.value)])}\n          value={currentVal[1]}\n          ref={innerRefs2}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          onMouseDown={handleMouseDown}\n          onMouseUp={handleMouseUp}\n        />\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-range-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          className=\"mt-0\"\n          feedbackStateLabel={feedbackStateLabel}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-range-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          className=\"mt-0\"\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputRange };\n","import { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\nimport './input-search.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { callbackWith } from '@/components/input-date/input-date';\n\nexport interface InputSearchProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n}\n\nconst InputSearch: FC<InputSearchProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  errorFeedbackText,\n  darkMode,\n  feedbackText,\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  hasIcon,\n  icon,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-search-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': !!propsClone.disabled,\n        'has-error': stringToBoolean(hasError),\n\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // search input component classes\n      inputClasses: classNames(\n        'agora-input-search',\n        'bg-transparent',\n        {\n          'has-leading-icon': hasIcon, // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-search-label', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-search-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-search-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Search input wrapper */}\n      <div className=\"input-wrapper flex relative items-center rounded-4 bg-white z-[1]\">\n        <input\n          {...propsClone}\n          type=\"search\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n          onKeyDown={callbackWith(setIconState, 'active')}\n          onKeyUp={callbackWith(setIconState, 'default')}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && (\n          <div className={leadingIconWrapperClasses}>\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden className=\"leading-icon-hover\" state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n\n        <div className=\"search-icon bg-transparent\">\n          <IconSet state={currentIconState}>\n            <IconItem state=\"default\" name=\"agora-line-search\" aria-hidden className=\"icon-search-default\" />\n            <IconItem state=\"hover\" name=\"agora-solid-search\" aria-hidden className=\"icon-search-hover\" />\n          </IconSet>\n        </div>\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-search-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-search-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputSearch };\n","import { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentProps,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  ReactNode,\n  Ref,\n  useCallback,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useLayoutEffect,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\n\nimport { Dropdown, DropdownElement, DropdownOptionProps, DropdownSectionProps, DropdownType } from '@/components/dropdown';\nimport { Pill } from '@/components/pill';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { callbackWith } from '../input-date/input-date';\nimport './input-select.css';\n\nexport interface InputSelectRef {\n  /**\n   * Array containing the selected options in the dropdown.\n   */\n  selectedOptions: DropdownOptionProps[];\n  /**\n   * Reset the selection state within the component.\n   */\n  clearSelectedOptions: () => void;\n}\n\nconst getEnabledItemsCount = (children: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]) => {\n  let count = 0;\n\n  Children.forEach(children, (sectionChild) => {\n    if (isValidElement<DropdownSectionProps>(sectionChild)) {\n      Children.forEach(sectionChild.props.children, (optionChild) => {\n        if (isValidElement<DropdownOptionProps>(optionChild)) {\n          count = optionChild.props.disabled ? count : count + 1;\n        }\n      });\n    }\n  });\n\n  return count;\n};\n\nconst getEnabledOptions = (children: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]) => {\n  const options = [] as DropdownOptionProps[];\n\n  Children.forEach(children, (sectionChild) => {\n    if (isValidElement<DropdownSectionProps>(sectionChild)) {\n      Children.forEach(sectionChild.props.children, (optionChild) => {\n        if (isValidElement<DropdownOptionProps>(optionChild) && !optionChild.props.disabled) {\n          options.push(optionChild.props);\n        }\n      });\n    }\n  });\n\n  return options;\n};\n\nconst getSelectedData = (children: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[]) => {\n  const newSelectedData = [] as DropdownOptionProps[];\n\n  Children.forEach(children, (sectionChild) => {\n    if (isValidElement<DropdownSectionProps>(sectionChild)) {\n      Children.forEach(sectionChild.props.children, (optionChild) => {\n        if (isValidElement<DropdownOptionProps>(optionChild)) {\n          if (optionChild.props.selected) {\n            newSelectedData.push(optionChild.props);\n          }\n        }\n      });\n    }\n  });\n\n  return newSelectedData;\n};\n\nexport interface InputSelectProps extends Omit<ComponentProps<'select'>, 'options' | 'onChange' | 'ref'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Input placeholder.\n   */\n  placeholder?: string;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Pill label to be draw if specified.\n   */\n  pillLabel?: ReactNode;\n  /**\n   * Alternative text for the dropdown that will be rendered.\n   */\n  dropdownAriaLabel?: string;\n  /**\n   *  Number of visible items to display in the DropdownList. Remaining items will be accessible via scroll bar.\n   */\n  visibleCount?: number;\n  /**\n   *  Toggles visibility on section names. It also removes the name from accessibility tree.\n   */\n  hideSectionNames?: BooleanProp;\n  /**\n   *   Event triggered whenever selected value or values changes.\n   */\n  onChange?: (options: DropdownOptionProps[]) => void;\n  /**\n   *  Select All item text to be rendered.\n   */\n  selectAllLabel?: string;\n  /**\n   *  Enable the search bar to filter items.\n   */\n  searchable?: BooleanProp;\n  /**\n   *  Placeholder text for input search bar.\n   */\n  searchInputPlaceholder?: string;\n  /**\n   *  Accessible text for the input search bar.\n   */\n  searchInputAriaLabel?: string;\n  /**\n   *  Event triggered whenever the input search value changes.\n   */\n  onSearchInputChange?: (value: string) => void;\n  /**\n   *  Text to show when filtering presents no results.\n   */\n  searchNoResultsText?: string;\n  /**\n   * Text placed as Select all options item\n   */\n  allSelectedLabel?: string;\n  /**\n   * Initial template structure for multiple items selections text output\n   */\n  pluralSelectedPlaceholder?: string;\n  /**\n   * Type of options to render\n   */\n  type?: DropdownType;\n  /**\n   * Section list of dropdown options to render.\n   */\n  children?: ReactElement<DropdownSectionProps> | ReactElement<DropdownSectionProps>[];\n  /**\n   * React ref object to the Input Select.\n   */\n  ref?: Ref<InputSelectRef>;\n  /**\n   * Defines helper text.\n   */\n  helperText?: string;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputSelect: FC<InputSelectProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  placeholder = '',\n  pluralSelectedPlaceholder = '',\n  visibleCount = 4,\n  hideSectionNames,\n  hasIcon,\n  icon,\n  pillLabel,\n  hasFeedback,\n  feedbackText,\n  feedbackState,\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  errorFeedbackText,\n  darkMode,\n  hasError,\n  required = true,\n  onChange,\n  searchable,\n  selectAllLabel,\n  allSelectedLabel = '',\n  searchInputPlaceholder,\n  searchInputAriaLabel,\n  searchNoResultsText,\n  children = [],\n  onSearchInputChange,\n  type = 'text',\n  dropdownAriaLabel,\n  hasHelperText,\n  helperText,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const normalizedGeneratedId = generatedId.replaceAll(':', '');\n\n  const propsClone = { ...props };\n\n  propsClone.id = String(propsClone.id ?? normalizedGeneratedId).replaceAll(':', '');\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const controlWrapperRef = useRef<HTMLDivElement>(null);\n\n  const controlRef = useRef<HTMLButtonElement>(null);\n\n  const dropdownRef = useRef<DropdownElement>(null);\n\n  //  INITIALIZE SELECTED VALUES\n  const [selectedData, setSelectedData] = useState<DropdownOptionProps[]>([]);\n\n  const isRequired = props.disabled ? false : required;\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled ? iconState : 'default';\n\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n\n  const resetSelection = useCallback(() => {\n    setSelectedData([]);\n    onChangeRef.current?.([]);\n  }, []);\n\n  useImperativeHandle(ref, () => {\n    return {\n      selectedOptions: selectedData,\n      clearSelectedOptions: resetSelection\n    } as InputSelectRef & HTMLSelectElement;\n  }, [selectedData, resetSelection]);\n\n  const mainWrapperClasses = classNames(\n    'agora-input-select',\n    { dark: stringToBoolean(darkMode) },\n    {\n      'disabled': stringToBoolean(propsClone.disabled),\n      'has-value': selectedData.length > 0,\n      'has-error': stringToBoolean(hasError),\n      'has-feedback': stringToBoolean(hasFeedback),\n      ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n    }\n  );\n\n  const controlClasses = classNames('agora-input-select-control', {\n    'is-overlay-open': isDropdownVisible,\n    'has-leading-icon': hasIcon // allowing only solid family icon\n  });\n\n  useEffect(() => {\n    const selection = getSelectedData(children);\n    setSelectedData(selection);\n  }, [children]);\n\n  useLayoutEffect(() => {\n    if (isDropdownVisible) dropdownRef.current?.first();\n  }, [isDropdownVisible]);\n\n  const enabledItemsCount = getEnabledItemsCount(children);\n\n  const stringOutputMemo = useMemo(() => {\n    const allItemsSelected = selectedData.length === enabledItemsCount;\n\n    //  Nothing selected\n    if (selectedData.length < 1) {\n      return placeholder;\n    }\n\n    //  Exactly one option selected\n    if (selectedData.length === 1) {\n      return selectedData[0].children?.toString() ?? '';\n    }\n\n    //  More than one option selected but not all selected\n    if (!allItemsSelected) {\n      return `${selectedData.length} ${pluralSelectedPlaceholder}`;\n    }\n\n    //  All options selected\n    return allSelectedLabel;\n  }, [placeholder, pluralSelectedPlaceholder, allSelectedLabel, selectedData, enabledItemsCount]);\n\n  const onClickLabel = () => {\n    if (!propsClone.disabled) {\n      controlRef.current?.focus();\n    }\n  };\n\n  const onHide = () => {\n    setIsDropdownVisible(false);\n    controlRef.current?.focus();\n  };\n\n  const onShow = () => {\n    setIsDropdownVisible(true);\n  };\n\n  const onDropDownChange = (values: DropdownOptionProps[]) => {\n    setSelectedData(values);\n    onChange?.(values);\n  };\n\n  const toggleDropdown = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n  };\n\n  const onDropDownClickHandler = () => {\n    toggleDropdown();\n  };\n\n  const onDropdownControlKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n    if (propsClone.disabled) return;\n\n    if (code === 'Enter' || code === 'NumpadEnter' || code === 'Space') {\n      evt.preventDefault();\n      toggleDropdown();\n    }\n\n    if ((code === 'ArrowDown' || code === 'ArrowUp') && !isDropdownVisible) {\n      evt.preventDefault();\n\n      const enabledOptions = getEnabledOptions(children);\n      if (enabledOptions.length === 0) return;\n\n      const currentIndex = enabledOptions.findIndex((opt) => selectedData[0] && opt.value === selectedData[0].value);\n\n      let nextIndex: number;\n\n      if (code === 'ArrowDown') {\n        nextIndex = currentIndex < enabledOptions.length - 1 ? currentIndex + 1 : currentIndex;\n      } else {\n        nextIndex = currentIndex > 0 ? currentIndex - 1 : 0;\n      }\n\n      if (nextIndex !== currentIndex || selectedData.length === 0) {\n        const nextOption = enabledOptions[nextIndex >= 0 ? nextIndex : 0];\n        setSelectedData([nextOption]);\n        onChange?.([nextOption]);\n      }\n    }\n\n    setIconState('active');\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (dropdownRef.current?.visibility && !controlWrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const labelClasses = classNames('agora-input-select-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-select-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-select-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div className={mainWrapperClasses} hidden={!!propsClone.hidden}>\n      <div className=\"agora-input-select-control-wrapper\" ref={controlWrapperRef}></div>\n      <div className=\"agora-input-select-control-wrapper\" ref={controlWrapperRef}>\n        {!stringToBoolean(hideLabel) && (\n          <span id={`agora-input-select-${propsClone.id}-control-label`} className={labelClasses} onClickCapture={onClickLabel}>\n            {label}\n          </span>\n        )}\n\n        <button\n          ref={controlRef}\n          type=\"button\"\n          id={`agora-input-select-${propsClone.id}-control`}\n          aria-labelledby={!stringToBoolean(hideLabel) ? `agora-input-select-${propsClone.id}-control-label` : undefined}\n          name={propsClone.name}\n          role=\"combobox\"\n          aria-invalid={stringToBoolean(hasError)}\n          aria-disabled={stringToBoolean(propsClone.disabled)}\n          aria-expanded={isDropdownVisible}\n          aria-controls={propsClone.id}\n          aria-required={isRequired}\n          aria-label={\n            stringToBoolean(hideLabel)\n              ? (propsClone['aria-label'] ?? label ?? dropdownAriaLabel ?? 'Select an option')\n              : propsClone['aria-label']\n          }\n          aria-describedby={inputAriaDescribedBy}\n          className={controlClasses}\n          tabIndex={propsClone.disabled ? -1 : 0}\n          onClick={onDropDownClickHandler}\n          onKeyDown={onDropdownControlKeyDownHandler}\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n          onKeyUp={callbackWith(setIconState, 'default')}\n        >\n          <div className=\"content\">\n            {hasIcon && (\n              <div className=\"input-icon input-leading-icon\">\n                <IconSet state={currentIconState}>\n                  <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name={icon ?? 'no-icon'} />\n                  <IconItem aria-hidden className=\"leading-icon-hover\" state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n                  <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name={icon ?? 'no-icon'} />\n                </IconSet>\n              </div>\n            )}\n\n            <span className=\"selected-text\">{stringOutputMemo}</span>\n\n            {pillLabel && (\n              <Pill size=\"large\" appearance=\"outline\" variant=\"neutral\" darkMode={darkMode}>\n                {pillLabel}\n              </Pill>\n            )}\n          </div>\n\n          <div className=\"indicator\">\n            <IconSet state={isDropdownVisible ? 'active' : 'default'}>\n              <IconItem aria-hidden className=\"leading-icon-default\" state=\"default\" name=\"agora-solid-arrow-down\" />\n              <IconItem aria-hidden className=\"leading-icon-active\" state=\"active\" name=\"agora-solid-arrow-up\" />\n            </IconSet>\n          </div>\n        </button>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            id={propsClone.id}\n            aria-label={dropdownAriaLabel}\n            type={type}\n            selectAllLabel={selectAllLabel}\n            optionsVisible={visibleCount}\n            hideSectionNames={hideSectionNames}\n            searchable={searchable}\n            searchAriaLabel={searchInputAriaLabel}\n            searchPlaceholder={searchInputPlaceholder}\n            noSearchResults={searchNoResultsText}\n            onSearchChange={onSearchInputChange}\n            onChange={onDropDownChange}\n            onHide={onHide}\n            onShow={onShow}\n            darkMode={darkMode}\n          >\n            {children}\n          </Dropdown>\n        </div>\n        {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n      </div>\n\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-select-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-select-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputSelect };\n","import classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-text.css';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\nimport { callbackWith } from '../input-date/input-date';\n\nexport interface InputTextProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Error feedback text displayed below input.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Indicates the feedback state of feedback text. This param will change the left feedback icon and dye it.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n}\n\nconst InputText: FC<InputTextProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  errorFeedbackText,\n  darkMode,\n  feedbackText,\n  hasIcon,\n  icon,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLInputElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange?.(evt);\n  };\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames(\n        'agora-input-text-wrapper',\n        { dark: stringToBoolean(darkMode) },\n        {\n          'flex flex-col': !propsClone.hidden,\n          'input-disabled': !!propsClone.disabled,\n\n          'has-error': stringToBoolean(hasError),\n          'has-feedback': stringToBoolean(hasFeedback),\n          ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n        }\n      ),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames(\n        'input-label-wrapper flex items-end',\n\n        {\n          'mb-8': label && !stringToBoolean(hideLabel),\n          'justify-end': !label || stringToBoolean(hideLabel),\n          'justify-between': label && !stringToBoolean(hideLabel)\n        }\n      ),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-text',\n        {\n          'has-leading-icon': hasIcon, // allowing only solid family icon\n          'has-value': hasValue\n        },\n        className\n      ),\n      leadingIconWrapperClasses: classNames('input-leading-icon')\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses, leadingIconWrapperClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-text-label', { dark: stringToBoolean(darkMode) });\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-text-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-text-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <div hidden={!!propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div\n        role=\"presentation\"\n        className=\"input-wrapper flex relative items-center\"\n        onMouseEnter={callbackWith(setIconState, 'hover')}\n        onMouseLeave={callbackWith(setIconState, 'default')}\n        onKeyDown={callbackWith(setIconState, 'active')}\n        onKeyUp={callbackWith(setIconState, 'default')}\n      >\n        <input\n          {...propsClone}\n          type=\"text\"\n          className={inputClasses}\n          disabled={!!propsClone.disabled}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-busy={stringToBoolean(hasFeedback) && feedbackState === 'loading'}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          ref={ref}\n          required={isRequired}\n          onChange={handleChangeEvent}\n        />\n\n        {/* Input Leading Icon [only solid family icon] */}\n        {hasIcon && (\n          <div className={leadingIconWrapperClasses}>\n            <IconSet state={currentIconState}>\n              <IconItem aria-hidden state=\"default\" name={icon ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n              <IconItem aria-hidden state=\"active\" name={icon ?? 'no-icon'} />\n            </IconSet>\n          </div>\n        )}\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedback */}\n      {stringToBoolean(hasFeedback) && feedbackText && (\n        <Feedback\n          id={`input-text-${propsClone.id}-feedback`}\n          feedbackState={feedbackState}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n\n      {/* Error Feedback */}\n      {stringToBoolean(hasError) && errorFeedbackText && (\n        <Feedback\n          id={`input-text-${propsClone.id}-error-feedback`}\n          feedbackState=\"danger\"\n          feedbackText={errorFeedbackText}\n          feedbackStateLabel={errorFeedbackStateLabel}\n          darkMode={stringToBoolean(darkMode)}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { InputText };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useId, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport './input-textarea.css';\n\nexport interface InputTextAreaProps extends ComponentProps<'textarea'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Decides if display/hide label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Highlight the input indicating some error\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines if the char counter on right corner should or should not be visible.\n   */\n  showCharCounter?: BooleanProp;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n}\n\nconst InputTextArea: FC<InputTextAreaProps> = ({\n  ref = null,\n  label,\n  hideLabel,\n  hasError,\n  hasFeedback,\n  showCharCounter,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  darkMode,\n  hasHelperText,\n  helperText,\n  className,\n  required = true,\n  onChange: onChangeFromProps,\n  value: valueFromProps,\n  defaultValue,\n  ...props\n}) => {\n  // Controlled and Uncontrolled management\n  const isControlled = typeof valueFromProps != 'undefined';\n  const hasDefaultValue = typeof defaultValue != 'undefined';\n\n  const [internalValue, setInternalValue] = useState(hasDefaultValue ? defaultValue : '');\n\n  const value = isControlled ? valueFromProps : internalValue;\n\n  // Overrides onChange\n  const onChange = (e: ChangeEvent<HTMLTextAreaElement>) => {\n    // When the user types, calls onChangeFromProps if it exists.\n    // Do this even if there is no value from props (and the component is uncontrolled.)\n    if (onChangeFromProps) {\n      onChangeFromProps(e);\n    }\n\n    // If the component is uncontrolled, updates the internal value.\n    if (!isControlled) {\n      setInternalValue(e.target.value);\n    }\n  };\n\n  const generatedId = useId();\n\n  const propsClone = { ...props, value };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  propsClone.rows = Math.max(propsClone.rows ?? 0, 3);\n\n  const [hasValue, setHasValue] = useState<boolean>(propsClone.value ? propsClone.value.toString().length > 0 : false);\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  /**\n   * Local onChange event handler.\n   */\n  const handleChangeEvent = (evt: ChangeEvent<HTMLTextAreaElement>) => {\n    setHasValue(evt.currentTarget.value.length > 0);\n    onChange(evt);\n  };\n\n  const darkModeClass = stringToBoolean(darkMode) ? 'dark' : '';\n\n  /**\n   * Builds main Classes for whole component\n   */\n  const inputClassBuilder = () => {\n    return {\n      // main wrapper class\n      inputWrapperClasses: classNames('agora-input-textarea-wrapper', darkModeClass, {\n        'flex flex-col': !propsClone.hidden,\n        'input-disabled': propsClone.disabled,\n        'has-error': stringToBoolean(hasError),\n        'has-feedback': stringToBoolean(hasFeedback),\n        ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n      }),\n      // classes for above input sections [label and hint icon]\n      labelSectionClasses: classNames('input-label-wrapper', 'flex', 'items-end', {\n        'mb-8': label && !stringToBoolean(hideLabel),\n        'justify-end': !label || stringToBoolean(hideLabel),\n        'justify-between': label && !stringToBoolean(hideLabel)\n      }),\n      // text input component classes\n      inputClasses: classNames(\n        'agora-input-textarea',\n        {\n          'has-value': hasValue\n        },\n        className\n      )\n    };\n  };\n\n  const { inputWrapperClasses, labelSectionClasses, inputClasses } = inputClassBuilder();\n\n  const labelClasses = classNames('input-textarea-label', darkModeClass);\n\n  const charCounterClasses = classNames('char-counter', darkModeClass);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-textarea-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-textarea-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  return (\n    <div hidden={propsClone.hidden} className={inputWrapperClasses}>\n      {/* Label & Hint Text Wrapper */}\n      <div className={labelSectionClasses}>\n        <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className={labelClasses}>\n          {label}\n        </label>\n      </div>\n\n      {/* Text input wrapper */}\n      <div className=\"input-wrapper flex relative items-center\">\n        <textarea\n          {...propsClone}\n          className={inputClasses}\n          aria-invalid={stringToBoolean(hasError)}\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          aria-describedby={inputAriaDescribedBy}\n          required={isRequired}\n          ref={ref}\n          onChange={handleChangeEvent}\n          value={value}\n        />\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n      {/* Feedbacks && CharCounter */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError) || stringToBoolean(showCharCounter)) && (\n        <div className=\"flex justify-between\">\n          <div>\n            {/* Feedback */}\n            {stringToBoolean(hasFeedback) && feedbackText && (\n              <Feedback\n                id={`input-textarea-${propsClone.id}-feedback`}\n                feedbackState={feedbackState}\n                feedbackText={feedbackText}\n                feedbackStateLabel={feedbackStateLabel}\n                darkMode={stringToBoolean(darkMode)}\n              />\n            )}\n\n            {/* Error Feedback */}\n            {stringToBoolean(hasError) && errorFeedbackText && (\n              <Feedback\n                id={`input-textarea-${propsClone.id}-error-feedback`}\n                feedbackState=\"danger\"\n                feedbackText={errorFeedbackText}\n                feedbackStateLabel={errorFeedbackStateLabel}\n                darkMode={stringToBoolean(darkMode)}\n              />\n            )}\n          </div>\n\n          {/* CharCounter */}\n          {stringToBoolean(showCharCounter) && (\n            <div className={charCounterClasses}>\n              <span>{`${value?.toString()?.length ?? 0}`}</span>\n              {propsClone.maxLength && <span>{` / ${propsClone.maxLength}`}</span>}\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport { InputTextArea };\n","import { TimeFormat, TimePeriod } from '@/models';\n\nexport const FULL_TIME_TEXT_REGEX_WITH_PERIOD = /^(\\d{2}):(\\d{2})\\s(AM|PM)$/;\nexport const FULL_TIME_TEXT_REGEX_WITHOUT_PERIOD = /^(\\d{2}):(\\d{2})$/;\n\nexport const DEFAULT_PLACEHOLDER = {\n  HOUR: 'hh',\n  MINUTE: 'mm',\n  PERIOD: 'aa'\n};\n\nexport const timePeriod = {\n  am: 'am',\n  pm: 'pm'\n};\n\nexport const startTime = {\n  minute: '00',\n  period: timePeriod.am\n};\n\nexport const formatHour = (hour: number | string, minHour: number, maxHour: number) => {\n  let numericValue = parseInt(hour as string, 10);\n\n  if (isNaN(numericValue)) {\n    numericValue = minHour;\n  } else if (numericValue < minHour) {\n    numericValue = minHour;\n  } else if (numericValue > maxHour) {\n    numericValue = maxHour;\n  }\n\n  return numericValue.toString().padStart(2, '0');\n};\n\nexport const formatMinute = (minute: number | string, minMinute: number, maxMinute: number) => {\n  let numericValue = parseInt(minute as string, 10);\n\n  if (isNaN(numericValue)) {\n    numericValue = minMinute;\n  } else if (numericValue < minMinute) {\n    numericValue = minMinute;\n  } else if (numericValue > maxMinute) {\n    numericValue = maxMinute;\n  }\n\n  return numericValue.toString().padStart(2, '0');\n};\n\nexport const formatFullTime = (\n  hasPeriod: boolean,\n  selectedHour: number | string,\n  selectedMinute: number | string,\n  selectedPeriod: TimePeriod\n) => `${selectedHour}:${selectedMinute}${hasPeriod ? ` ${selectedPeriod?.toUpperCase()}` : ''}`;\n\nexport const parseFullTime = (hasPeriod: boolean, fullTimeText: string, hourFormat: TimeFormat) => {\n  let hour = hourFormat === '12' ? '12' : '00';\n  let minute = startTime.minute;\n  let period = startTime.period;\n\n  const match = hasPeriod ? FULL_TIME_TEXT_REGEX_WITH_PERIOD.exec(fullTimeText) : FULL_TIME_TEXT_REGEX_WITHOUT_PERIOD.exec(fullTimeText);\n\n  if (match) {\n    hour = match[1];\n    minute = match[2];\n    period = match[3];\n  }\n\n  return {\n    selectedHour: parseInt(hour, 10).toString().padStart(2, '0'),\n    selectedMinute: parseInt(minute, 10).toString().padStart(2, '0'),\n    selectedPeriod: period?.toLowerCase() as TimePeriod\n  };\n};\n\nexport const isTimeTextValid = (\n  hasPeriod: boolean,\n  timeText: string | number | undefined,\n  minHour: number,\n  maxHour: number,\n  minMinute: number,\n  maxMinute: number\n): boolean => {\n  if (typeof timeText !== 'string') {\n    return false;\n  }\n\n  if (timeText === '') {\n    return true;\n  }\n\n  const match = hasPeriod ? FULL_TIME_TEXT_REGEX_WITH_PERIOD.exec(timeText) : FULL_TIME_TEXT_REGEX_WITHOUT_PERIOD.exec(timeText);\n\n  if (!match) {\n    return false;\n  }\n\n  const hour = parseInt(match[1], 10);\n  const minute = parseInt(match[2], 10);\n\n  return hour >= minHour && hour <= maxHour && minute >= minMinute && minute <= maxMinute;\n};\n","import React, { createContext, Dispatch, FC, ReactNode, SetStateAction, useContext, useMemo, useState } from 'react';\nimport { TimeFormat, TimePeriod } from '@/models';\nimport { startTime } from '../utils/format-time';\n\nexport interface Labels {\n  cancelLabel: string;\n  cancelAriaLabel?: string;\n  okLabel: string;\n  okAriaLabel?: string;\n  timepickerMessageLabel?: string;\n  timepickerMessageAriaLabel?: string;\n}\n\ninterface TimePickerStateContextInitialValuesType {\n  selectedFormat: TimeFormat;\n  selectedTime: string;\n  MIN_HOUR: number;\n  MAX_HOUR: number;\n  MIN_MINUTE: number;\n  MAX_MINUTE: number;\n  cancel: (selectedTime: string) => void;\n  labels: Labels;\n}\n\ninterface TimePickerStateContextType extends TimePickerStateContextInitialValuesType {\n  selectedHour: string;\n  setSelectedHour: Dispatch<SetStateAction<string>>;\n\n  selectedMinute: string;\n  setSelectedMinute: Dispatch<SetStateAction<string>>;\n\n  selectedPeriod: TimePeriod;\n  setSelectedPeriod: Dispatch<SetStateAction<TimePeriod>>;\n\n  setSelectedTime: Dispatch<SetStateAction<string>>;\n}\n\nexport const TimeInputContext = createContext<TimePickerStateContextType | undefined>(undefined);\n\nexport interface TimePickerStateProviderProps {\n  children: ReactNode;\n  initialValues: TimePickerStateContextInitialValuesType;\n}\n\nexport const TimeInputContextProvider: FC<TimePickerStateProviderProps> = ({ initialValues, children }) => {\n  const [selectedHour, setSelectedHour] = useState(initialValues.selectedFormat === '12' ? '12' : '00');\n  const [selectedMinute, setSelectedMinute] = useState(startTime.minute);\n  const [selectedPeriod, setSelectedPeriod] = useState<TimePeriod>(startTime.period as TimePeriod);\n  const [selectedTime, setSelectedTime] = useState(initialValues.selectedTime);\n\n  const providerValue = useMemo(\n    () => ({\n      ...initialValues,\n      selectedHour,\n      setSelectedHour,\n      selectedMinute,\n      setSelectedMinute,\n      selectedPeriod,\n      setSelectedPeriod,\n      selectedTime,\n      setSelectedTime\n    }),\n    [initialValues, selectedHour, selectedMinute, selectedPeriod, selectedTime]\n  );\n\n  return <TimeInputContext value={providerValue}>{children}</TimeInputContext>;\n};\n\nexport const useTimeInputContext = () => {\n  const context = useContext(TimeInputContext);\n  if (!context) {\n    throw new Error('useTimeInputContext must be used within a TimeInputContextProvider');\n  }\n  return context;\n};\n","import React, { ChangeEvent, ComponentProps, FC, FocusEvent, KeyboardEvent, useEffect, useImperativeHandle, useRef } from 'react';\nimport classNames from 'classnames';\nimport './time-text.css';\n\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { asyncTrigger, createSyntheticEvent } from '@/utils';\nimport { DEFAULT_PLACEHOLDER, isTimeTextValid, timePeriod } from '../utils/format-time';\n\nexport interface TimeTextProps extends ComponentProps<'input'> {\n  setInputTextValue: (selectedTime: string) => void;\n  hourInputPlaceholder?: string;\n  minuteInputPlaceholder?: string;\n  periodInputPlaceholder?: string;\n}\n\nconst TimeText: FC<TimeTextProps> = ({\n  ref = null,\n  setInputTextValue,\n  className,\n  hourInputPlaceholder,\n  minuteInputPlaceholder,\n  periodInputPlaceholder,\n  ...props\n}) => {\n  const timeCtx = useTimeInputContext();\n\n  const inputRef = useRef<HTMLInputElement | null>(null);\n\n  const hasPeriod = timeCtx.selectedFormat === '12';\n\n  useImperativeHandle(ref, () => {\n    return inputRef.current as HTMLInputElement;\n  }, []);\n\n  // Necessary to avoid conflict on range selection between mouse and keyboard focus\n  useEffect(() => {\n    const handleMouseDown = () => ((window as Window & { __mouseDown?: boolean }).__mouseDown = true);\n    const handleMouseUp = () => ((window as Window & { __mouseDown?: boolean }).__mouseDown = false);\n\n    window.addEventListener('mousedown', handleMouseDown);\n    window.addEventListener('mouseup', handleMouseUp);\n    return () => {\n      window.removeEventListener('mousedown', handleMouseDown);\n      window.removeEventListener('mouseup', handleMouseUp);\n    };\n  }, []);\n\n  const inputClassNames = classNames('agora-time-input', className);\n\n  const parsePlaceholder = (input: string | undefined, defaultValue: string): string => {\n    if (input) {\n      if (input.length === 1) {\n        // Duplicates the character\n        return input.repeat(2);\n      } else if (input.length > 2) {\n        // Uses only the first 2 characters\n        return input.slice(0, 2);\n      }\n      return input;\n    } else {\n      // Uses the default value otherwise\n      return defaultValue;\n    }\n  };\n\n  const hourPlaceholder = parsePlaceholder(hourInputPlaceholder, DEFAULT_PLACEHOLDER.HOUR);\n  const minutePlaceholder = parsePlaceholder(minuteInputPlaceholder, DEFAULT_PLACEHOLDER.MINUTE);\n  const periodPlaceholder = parsePlaceholder(periodInputPlaceholder, DEFAULT_PLACEHOLDER.PERIOD);\n\n  const fullInputPlaceholder = `${hourPlaceholder}:${minutePlaceholder}${hasPeriod ? ` ${periodPlaceholder}` : ''}`;\n\n  const validateInputTimeText = ({ acceptPlaceholder = false, emptyValueOnError = false }) => {\n    const targetValue = inputRef.current?.value ?? '';\n\n    const isTextValid = () => {\n      let isValid = isTimeTextValid(hasPeriod, targetValue, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE);\n\n      // Accepts the placeholder as a valid value to allow typing on an empty input value\n      if (acceptPlaceholder) {\n        const isHourWithPlaceholder = targetValue.slice(0, 2) === hourPlaceholder;\n        const isMinuteWithPlaceholder = targetValue.slice(3, 5) === minutePlaceholder;\n        const isPeriodWithPlaceholder = hasPeriod ? targetValue.slice(6, 8) === periodPlaceholder : true;\n\n        isValid = isValid || isHourWithPlaceholder || isMinuteWithPlaceholder || isPeriodWithPlaceholder;\n      }\n\n      return isValid;\n    };\n\n    if (isTextValid()) {\n      setInputTextValue(targetValue);\n      timeCtx.setSelectedTime(targetValue);\n    } else if (inputRef.current && emptyValueOnError) {\n      inputRef.current.value = '';\n    }\n\n    if (inputRef.current) {\n      const newChangeEvt = createSyntheticEvent<HTMLInputElement>(inputRef.current, 'change');\n      asyncTrigger(() => props.onChange?.(newChangeEvt as ChangeEvent<HTMLInputElement>));\n    }\n  };\n\n  const handleBlur = () => {\n    if (!props.readOnly) {\n      validateInputTimeText({});\n    }\n  };\n\n  const handleClick = (evt: React.MouseEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      const clickPos = input.selectionStart as number;\n\n      if (clickPos <= 2) {\n        input.setSelectionRange(0, 2);\n      } else if (clickPos >= 3 && clickPos <= 5) {\n        input.setSelectionRange(3, 5);\n      } else if (clickPos >= 6) {\n        input.setSelectionRange(6, 8);\n      }\n    }\n  };\n\n  const handleFocus = (evt: FocusEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      const isMouseFocus =\n        (evt as FocusEvent<HTMLInputElement> & { sourceCapabilities?: { firesTouchEvents?: boolean } })?.sourceCapabilities\n          ?.firesTouchEvents === false || (window as Window & { __mouseDown?: boolean }).__mouseDown;\n\n      if (!input.value) {\n        input.value = fullInputPlaceholder;\n      }\n\n      if (!isMouseFocus) {\n        input.setSelectionRange(0, 2);\n      }\n    }\n  };\n\n  const handleSlot = (\n    values: { input: HTMLInputElement; start: number; end: number; placeholder: string; minValue: number; maxValue: number; key: string },\n    evt: KeyboardEvent<HTMLInputElement>,\n    periodValues?: { am: string; pm: string }\n  ): void => {\n    const { input, start, end, placeholder, minValue, maxValue, key } = values;\n\n    const updateSlot = (slotStart: number, slotEnd: number, value: string) => {\n      input.value = `${input.value.slice(0, slotStart)}${value}${input.value.slice(slotEnd)}`;\n      input.setSelectionRange(slotStart, slotEnd);\n    };\n\n    const updateSlotValue = (newValue: string): void => {\n      updateSlot(\n        start,\n        end,\n        Math.min(Math.max(parseInt(newValue), minValue), maxValue)\n          .toString()\n          .padStart(2, '0')\n      );\n    };\n\n    const handleArrowUpDown = (isArrowUp: boolean): void => {\n      const currentValue = parseInt(input.value.slice(start, end)) || 0;\n      const newValue = isArrowUp\n        ? (() => {\n            if (currentValue >= maxValue) {\n              return minValue;\n            } else {\n              return currentValue + 1;\n            }\n          })()\n        : (() => {\n            if (currentValue <= minValue) {\n              return maxValue;\n            } else {\n              return currentValue - 1;\n            }\n          })();\n\n      updateSlotValue(newValue.toString());\n    };\n\n    const handleNumberInput = (): void => {\n      const currentValue = input.value.slice(start, end);\n      const newValue =\n        currentValue === '00' || !currentValue.startsWith('0') || currentValue === placeholder ? `0${key}` : currentValue.charAt(1) + key;\n\n      updateSlotValue(newValue);\n\n      const parsedNewValue = parseInt(newValue);\n      const isValueTwoDigit = parsedNewValue >= 10;\n      const isSecondDigitGreaterThanMaxValue = parsedNewValue * 10 >= maxValue;\n      if (isValueTwoDigit || isSecondDigitGreaterThanMaxValue) {\n        // Change to next slot\n        input.setSelectionRange(end + 1, end + 3);\n      }\n    };\n\n    const handlePeriodInput = (): void => {\n      if (!hasPeriod) return;\n\n      const isModifierKeyPressed = evt.ctrlKey || evt.altKey || evt.shiftKey;\n\n      if ((key === 'a' || key === 'A') && !isModifierKeyPressed) {\n        evt.preventDefault();\n        updateSlot(start, end, periodValues!.am.toUpperCase());\n      } else if ((key === 'p' || key === 'P') && !isModifierKeyPressed) {\n        evt.preventDefault();\n        updateSlot(start, end, periodValues!.pm.toUpperCase());\n      }\n    };\n\n    if (key === 'Backspace') {\n      evt.preventDefault();\n      updateSlot(start, end, placeholder);\n    } else if (/\\d/.test(key)) {\n      evt.preventDefault();\n      // Prevents number input in period field\n      if (periodValues) return;\n      handleNumberInput();\n    } else if (key === 'ArrowUp' || key === 'ArrowDown') {\n      evt.preventDefault();\n      if (periodValues) {\n        const currentValue = input.value.slice(6, 8).toUpperCase();\n        updateSlot(6, 8, currentValue === periodValues.am.toUpperCase() ? periodValues.pm.toUpperCase() : periodValues.am.toUpperCase());\n        return;\n      }\n      handleArrowUpDown(key === 'ArrowUp');\n    } else if (key === 'ArrowLeft') {\n      // Moves to the previous slot\n      input.setSelectionRange(start - 3, start - 1);\n    } else if (key === 'ArrowRight') {\n      // Moves to the next slot\n      input.setSelectionRange(end + 1, end + 3);\n    } else if (hasPeriod && periodValues) {\n      handlePeriodInput();\n    }\n  };\n\n  const handleTab = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (selectionStart >= 6) {\n      // If in period section and press \"Tab\", go to the next element\n      evt.preventDefault();\n      input.blur();\n      const nextElement = inputRef.current?.nextElementSibling;\n      if (nextElement && nextElement instanceof HTMLElement) nextElement.focus();\n    } else if (selectionStart < 3) {\n      // From hours section to minutes section\n      evt.preventDefault();\n      input.setSelectionRange(3, 5);\n    } else if (selectionStart >= 3 && selectionStart < 6) {\n      // From minutes section to period section\n      evt.preventDefault();\n      input.setSelectionRange(6, 8);\n    }\n  };\n\n  const handleShiftTab = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (selectionStart < 3) {\n      // If in hours section and press \"Shift+Tab\", go to the previous element\n      evt.preventDefault();\n      input.blur();\n      const prevElement = inputRef.current?.previousElementSibling;\n      if (prevElement && prevElement instanceof HTMLElement) prevElement.focus();\n    } else if (selectionStart >= 3 && selectionStart < 6) {\n      // Shift+Tab from minutes section to hours section\n      evt.preventDefault();\n      input.setSelectionRange(0, 2);\n    } else if (selectionStart >= 6) {\n      // Shift+Tab from period to minutes section\n      evt.preventDefault();\n      input.setSelectionRange(3, 5);\n    }\n  };\n\n  const handleTabNavigation = (evt: KeyboardEvent<HTMLInputElement>, input: HTMLInputElement, selectionStart: number) => {\n    if (evt.shiftKey && evt.key === 'Tab') {\n      handleShiftTab(evt, input, selectionStart);\n    }\n    if (!evt.shiftKey && evt.key === 'Tab') {\n      handleTab(evt, input, selectionStart);\n    }\n  };\n\n  const handleTimeSelection = (\n    selectionStart: number,\n    selectionEnd: number,\n    handleHourSlot: () => void,\n    handleMinuteSlot: () => void,\n    handlePeriodSlot: () => void\n  ) => {\n    if (selectionStart < 3 && selectionEnd <= 2) {\n      handleHourSlot();\n    } else if (selectionStart >= 3 && selectionEnd <= 5) {\n      handleMinuteSlot();\n    } else if (selectionStart >= 6 && selectionEnd <= 8) {\n      handlePeriodSlot();\n    } else {\n      handleHourSlot();\n    }\n  };\n\n  const handleKeyDown = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (!props.readOnly) {\n      const input = evt.target as HTMLInputElement;\n      const selectionStart = input.selectionStart as number;\n      const selectionEnd = input.selectionEnd as number;\n      const key = evt.key;\n\n      const handleHourSlot = (): void => {\n        handleSlot(\n          { input, start: 0, end: 2, placeholder: hourPlaceholder, minValue: timeCtx.MIN_HOUR, maxValue: timeCtx.MAX_HOUR, key },\n          evt\n        );\n      };\n\n      const handleMinuteSlot = (): void => {\n        handleSlot(\n          { input, start: 3, end: 5, placeholder: minutePlaceholder, minValue: timeCtx.MIN_MINUTE, maxValue: timeCtx.MAX_MINUTE, key },\n          evt\n        );\n      };\n\n      const handlePeriodSlot = (): void => {\n        handleSlot({ input, start: 6, end: 8, placeholder: periodPlaceholder, minValue: 0, maxValue: 0, key }, evt, {\n          am: timePeriod.am.toUpperCase(),\n          pm: timePeriod.pm.toUpperCase()\n        });\n      };\n\n      handleTimeSelection(selectionStart, selectionEnd, handleHourSlot, handleMinuteSlot, handlePeriodSlot);\n\n      handleTabNavigation(evt, input, selectionStart);\n\n      if (evt.ctrlKey && key === 'a') {\n        evt.preventDefault();\n        input.select();\n      }\n\n      if (evt.ctrlKey && key === 'c') {\n        evt.preventDefault();\n        const selectedText = input.value.substring(selectionStart, selectionEnd);\n        void navigator.clipboard.writeText(selectedText);\n      }\n\n      evt.preventDefault();\n\n      validateInputTimeText({ acceptPlaceholder: true });\n    }\n  };\n\n  return (\n    <input\n      {...props}\n      className={inputClassNames}\n      ref={inputRef}\n      type=\"text\"\n      placeholder={fullInputPlaceholder}\n      onBlur={handleBlur}\n      onClick={handleClick}\n      onFocus={handleFocus}\n      onKeyDown={handleKeyDown}\n    />\n  );\n};\n\nexport { TimeText };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, KeyboardEvent, MouseEvent, useId, useState } from 'react';\nimport './toggle.css';\nimport { IconItem, IconSet, IconSetState } from '../shared/icon-set/icon-set';\n\n/**\n * The available toggle button appearances. Defines the button layout shape,\n */\nexport type ToggleAppearance = 'button' | 'icon';\n/**\n * The available variants of the toggle button. This variants will define the background and border color of the button.\n */\nexport type ToggleVariant = 'primary' | 'neutral';\n\nexport interface ToggleProps extends ComponentProps<'input'> {\n  /**\n   * Defines if the toggle takes the container full width.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Defines if the toggle renders in dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * The button appearance. Define the button Shape.\n   */\n  appearance?: ToggleAppearance;\n  /**\n   * The variant of the button. This variants will define the background and border color of the given Button.\n   */\n  variant?: ToggleVariant;\n  /**\n   * Data attributes.\n   * Allow when implemented interface add data-* attribute.\n   */\n  [dataAttribute: `data-${string}`]: string;\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines if children content it is to be rendered.\n   */\n  iconOnly?: BooleanProp;\n  /**\n   * Defines the name of the leading icon to use.\n   */\n  leadingIcon?: string;\n  /**\n   * Defines the name of the leading icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  leadingIconHover?: string;\n  /**\n   * Defines the name of the trailing icon to use.\n   */\n  trailingIcon?: string;\n  /**\n   * Defines the name of the trailing icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  trailingIconHover?: string;\n}\n\nconst Toggle: FC<ToggleProps> = ({\n  ref = null,\n  appearance = 'button',\n  variant = 'primary',\n  fullWidth = false,\n  darkMode = 'false',\n  className = '',\n  children,\n  onChange: onChangeFromProps,\n  checked: checkedFromProps,\n  defaultChecked,\n  disabled,\n  hasIcon,\n  iconOnly,\n  leadingIcon,\n  leadingIconHover,\n  trailingIcon,\n  trailingIconHover,\n  ...props\n}) => {\n  const generatedId = useId();\n  const isControlled = typeof checkedFromProps !== 'undefined';\n  const hasDefaultChecked = typeof defaultChecked !== 'undefined';\n  const [internalChecked, setInternalChecked] = useState(hasDefaultChecked ? defaultChecked : false);\n  const checked = isControlled ? checkedFromProps : internalChecked;\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const onChange = (e: ChangeEvent<HTMLInputElement>) => {\n    if (onChangeFromProps) {\n      onChangeFromProps(e);\n    }\n\n    if (!isControlled) {\n      setInternalChecked(e.target.checked);\n    }\n  };\n\n  const toggleButtonClassName = classNames(\n    'agora-toggle',\n    `agora-toggle-${appearance}`,\n    `agora-toggle-${appearance}-${variant}`,\n    { active: activeState == 'active' },\n    { checked },\n    { disabled },\n    { 'full-width': stringToBoolean(fullWidth) },\n    { 'dark-mode': stringToBoolean(darkMode) },\n    { 'has-icon': stringToBoolean(hasIcon) },\n    { 'icon-only': stringToBoolean(iconOnly) },\n    className\n  );\n\n  const onClickHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    setActiveState(isTouchDevice ? 'default' : 'hover');\n    props.onClick?.(evt);\n  };\n\n  const onMouseUpHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onMouseDownHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n    props.onMouseDown?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLInputElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (evt.code === 'Space' || evt.code === 'Enter') {\n      evt.preventDefault();\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLInputElement>) => {\n    if (evt.code === 'Space' || evt.code === 'Enter') {\n      setActiveState('default');\n\n      const fakeEvent = {\n        ...evt,\n        target: evt.currentTarget\n      } as unknown as ChangeEvent<HTMLInputElement>;\n\n      if (!isControlled) {\n        setInternalChecked((prev) => !prev);\n      }\n\n      onChange(fakeEvent);\n    }\n\n    props.onKeyUp?.(evt);\n  };\n  return (\n    <div className={toggleButtonClassName}>\n      <input\n        {...props}\n        onClick={onClickHandler}\n        onMouseUp={onMouseUpHandler}\n        onMouseDown={onMouseDownHandler}\n        onMouseEnter={onMouseEnterHandler}\n        onMouseLeave={onMouseLeaveHandler}\n        onKeyUp={onKeyUpHandler}\n        onKeyDown={onKeyDownHandler}\n        aria-labelledby={generatedId}\n        ref={ref}\n        type=\"checkbox\"\n        onChange={onChange}\n        checked={checked}\n        disabled={disabled}\n      />\n      {stringToBoolean(hasIcon) && (leadingIcon || leadingIconHover) && (\n        <IconSet className=\"icon-wrapper leading\" state={activeState}>\n          <IconItem className=\"leading-icon-default\" state=\"default\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-hover\" state=\"hover\" name={leadingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"leading-icon-active\" state=\"active\" name={leadingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n\n      <div className=\"children-content\" id={generatedId}>\n        {children}\n      </div>\n\n      {stringToBoolean(hasIcon) && (trailingIcon || trailingIconHover) && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem className=\"trailing-icon-default\" state=\"default\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-hover\" state=\"hover\" name={trailingIconHover ?? 'no-icon'} aria-hidden />\n          <IconItem className=\"trailing-icon-active\" state=\"active\" name={trailingIcon ?? 'no-icon'} aria-hidden />\n        </IconSet>\n      )}\n    </div>\n  );\n};\n\nexport { Toggle };\n","import React, { FC, useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { stringToBoolean } from '@/utils';\nimport { formatHour, formatMinute, timePeriod } from '../utils/format-time';\n\nimport { Icon } from '@/components/icon';\nimport { TimePeriod } from '@/models/time-period-type';\nimport { Toggle } from '@/components/toggle';\nimport { ToggleGroup } from '@/components/toggle-group';\n\nexport const DialogBody: FC = () => {\n  const timeCtx = useTimeInputContext();\n\n  const { width } = useWindowSize();\n  const { mdScreen } = useBreakpointScreenValues();\n\n  const isMobile = width < mdScreen;\n\n  const hourInputRef = useRef<HTMLInputElement>(null);\n\n  useEffect(() => {\n    hourInputRef.current?.focus();\n  }, []);\n\n  const handleHourUp = () => {\n    timeCtx.setSelectedHour((prevValue) =>\n      parseInt(prevValue) >= timeCtx.MAX_HOUR\n        ? formatHour(timeCtx.MIN_HOUR, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR)\n        : formatHour(parseInt(prevValue) + 1, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR)\n    );\n  };\n\n  const handleHourDown = () => {\n    timeCtx.setSelectedHour((prevValue) =>\n      parseInt(prevValue) <= timeCtx.MIN_HOUR\n        ? formatHour(timeCtx.MAX_HOUR, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR)\n        : formatHour(parseInt(prevValue) - 1, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR)\n    );\n  };\n\n  const handleMinuteUp = () => {\n    timeCtx.setSelectedMinute((prevValue) =>\n      parseInt(prevValue) >= timeCtx.MAX_MINUTE\n        ? formatMinute(timeCtx.MIN_MINUTE, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE)\n        : formatMinute(parseInt(prevValue) + 1, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE)\n    );\n  };\n\n  const handleMinuteDown = () => {\n    timeCtx.setSelectedMinute((prevValue) =>\n      parseInt(prevValue) <= timeCtx.MIN_MINUTE\n        ? formatMinute(timeCtx.MAX_MINUTE, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE)\n        : formatMinute(parseInt(prevValue) - 1, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE)\n    );\n  };\n\n  const handleHourInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const { value } = e.target;\n    const formattedHour = formatHour(value, timeCtx.MIN_HOUR, timeCtx.MAX_HOUR);\n\n    timeCtx.setSelectedHour(formattedHour);\n  };\n\n  const handleHourFocus = (e: React.FocusEvent<HTMLInputElement>) => e.target.select();\n\n  const handleHourKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'ArrowUp') {\n      e.preventDefault();\n      handleHourUp();\n    }\n    if (e.key === 'ArrowDown') {\n      e.preventDefault();\n      handleHourDown();\n    }\n  };\n\n  const handleMinuteInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n    const { value } = e.target;\n    const formattedMinute = formatMinute(value, timeCtx.MIN_MINUTE, timeCtx.MAX_MINUTE);\n\n    timeCtx.setSelectedMinute(formattedMinute);\n  };\n\n  const handleMinuteFocus = (e: React.FocusEvent<HTMLInputElement>) => e.target.select();\n\n  const handleMinuteKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'ArrowUp') {\n      e.preventDefault();\n      handleMinuteUp();\n    }\n    if (e.key === 'ArrowDown') {\n      e.preventDefault();\n      handleMinuteDown();\n    }\n  };\n\n  const handleSelectedPeriod = (value: string[]) => {\n    timeCtx.setSelectedPeriod(() => value[0] as TimePeriod);\n  };\n\n  const timeWithPeriodContainerClassName = classNames('time-with-period-container', {\n    'time-with-period-container--mobile': isMobile\n  });\n\n  const inputNumberClasses = classNames('input-number', { 'input-number-large': stringToBoolean(timeCtx.selectedFormat === '24') });\n\n  const orientation = isMobile ? 'horizontal' : 'vertical';\n\n  return (\n    <div className=\"p-32\">\n      <div className={timeWithPeriodContainerClassName}>\n        <div className=\"time-inputs-container\">\n          <div className=\"input-number-container\">\n            <input\n              ref={hourInputRef}\n              className={inputNumberClasses}\n              type=\"number\"\n              min={timeCtx.MIN_HOUR}\n              max={timeCtx.MAX_HOUR}\n              value={timeCtx.selectedHour}\n              onChange={handleHourInputChange}\n              onFocus={handleHourFocus}\n              onKeyDown={handleHourKeyDown}\n            />\n            <div className=\"input-number-arrows-container\">\n              <div className=\"input-number-arrow\" onClick={handleHourUp} aria-hidden>\n                <Icon name=\"agora-solid-arrow-up\" />\n              </div>\n              <div className=\"input-number-arrow\" onClick={handleHourDown} aria-hidden>\n                <Icon name=\"agora-solid-arrow-down\" />\n              </div>\n            </div>\n          </div>\n\n          <div className=\"time-separator-text\">:</div>\n\n          <div className=\"input-number-container\">\n            <input\n              className={inputNumberClasses}\n              type=\"number\"\n              min={timeCtx.MIN_MINUTE}\n              max={timeCtx.MAX_MINUTE}\n              value={timeCtx.selectedMinute}\n              onChange={handleMinuteInputChange}\n              onFocus={handleMinuteFocus}\n              onKeyDown={handleMinuteKeyDown}\n            />\n            <div className=\"input-number-arrows-container\">\n              <div className=\"input-number-arrow\" onClick={handleMinuteUp} aria-hidden>\n                <Icon name=\"agora-solid-arrow-up\" />\n              </div>\n              <div className=\"input-number-arrow\" onClick={handleMinuteDown} aria-hidden>\n                <Icon name=\"agora-solid-arrow-down\" />\n              </div>\n            </div>\n          </div>\n        </div>\n\n        {timeCtx.selectedFormat === '12' && (\n          <ToggleGroup\n            key={orientation}\n            value={timeCtx.selectedPeriod}\n            multiple={false}\n            onChange={handleSelectedPeriod}\n            className=\"time-period-buttons\"\n            orientation={orientation}\n          >\n            <Toggle value={timePeriod.am}>{timePeriod.am.toUpperCase()}</Toggle>\n            <Toggle value={timePeriod.pm}>{timePeriod.pm.toUpperCase()}</Toggle>\n          </ToggleGroup>\n        )}\n      </div>\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { useTimeInputContext } from '../contexts/time-input-state.context';\nimport { formatFullTime } from '../utils/format-time';\n\nimport { Button } from '@/components/button';\n\nexport interface TimePickerDropdownFooterProps {\n  setInputTextValue: (selectedTime: string) => void;\n}\n\nexport const DialogFooter: FC<TimePickerDropdownFooterProps> = ({ setInputTextValue }) => {\n  const timeCtx = useTimeInputContext();\n\n  const hasPeriod = timeCtx.selectedFormat === '12';\n\n  const onCancelPressed = () => {\n    timeCtx.cancel(timeCtx.selectedTime);\n  };\n\n  // Store the selected time in text format and display it on the input text\n  const onOkPressed = () => {\n    const selectedTimeText = formatFullTime(hasPeriod, timeCtx.selectedHour, timeCtx.selectedMinute, timeCtx.selectedPeriod);\n    setInputTextValue(selectedTimeText);\n    timeCtx.setSelectedTime(selectedTimeText);\n    timeCtx.cancel(selectedTimeText);\n  };\n\n  const labels = timeCtx.labels;\n\n  const additionalCancelProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.cancelLabel}, ${labels.cancelAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalCancelProps['aria-label'];\n  }\n\n  const additionalOkProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.okLabel}, ${labels.okAriaLabel}`\n  };\n  if (!labels.okAriaLabel) {\n    delete additionalOkProps['aria-label'];\n  }\n\n  return (\n    <div className=\"flex justify-between items-center py-8\">\n      <Button appearance=\"link\" variant=\"neutral\" onClick={onCancelPressed} {...additionalCancelProps}>\n        {labels.cancelLabel}\n      </Button>\n      <Button appearance=\"link\" onClick={onOkPressed} {...additionalOkProps}>\n        {labels.okLabel}\n      </Button>\n    </div>\n  );\n};\n","import React, { FC, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Labels, useTimeInputContext } from './contexts/time-input-state.context';\nimport { BooleanProp, TimePeriod } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport { parseFullTime, startTime } from './utils/format-time';\n\nimport { DialogBody } from './time-picker-dropdown-body/time-picker-dropdown-body';\nimport { DialogFooter } from './time-picker-dropdown-footer/time-picker-dropdown-footer';\n\nimport { Icon } from '@/components/icon';\n\nexport interface TimePickerDropdownProps {\n  className?: string;\n  setInputTextValue: (selectedTime: string) => void;\n  onChange: (selectedTime: string) => void;\n  onCancel: (selectedTime: string) => void;\n  hasTimepickerMessage?: BooleanProp;\n  textCurrentValue: string;\n  labels: Labels;\n}\n\nexport const TimePickerDropdown: FC<TimePickerDropdownProps> = ({\n  setInputTextValue,\n  onChange,\n  labels,\n  hasTimepickerMessage,\n  textCurrentValue,\n  className\n}) => {\n  const timeCtx = useTimeInputContext();\n  const { selectedTime, selectedFormat, setSelectedHour, setSelectedMinute, setSelectedPeriod } = timeCtx;\n\n  const [isReady, setIsReady] = useState(false);\n\n  const hasPeriod = selectedFormat === '12';\n\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n  const textCurrentValueRef = useRef(textCurrentValue);\n  textCurrentValueRef.current = textCurrentValue;\n\n  const wrapperClassNames = classNames(\n    className,\n    'absolute left-0 top-[68px] shadow-bottom-high bg-white p-16 border-2 border-[var(--color-neutral-200)] rounded-4 z-dropdown'\n  );\n\n  const datePickerDropdownContainerRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    // Opens the timepicker with the current selected time on its inputs and marks the component to be ready to render only after that\n    if (selectedTime) {\n      // Opens the timepicker with the current time if the input text is empty\n      if (!textCurrentValueRef.current) {\n        setSelectedHour(selectedFormat === '12' ? '12' : '00');\n        setSelectedMinute(startTime.minute);\n        setSelectedPeriod(hasPeriod ? (startTime.period as TimePeriod) : undefined);\n      } else {\n        const { selectedHour, selectedMinute, selectedPeriod } = parseFullTime(hasPeriod, selectedTime, selectedFormat);\n        setSelectedHour(selectedHour);\n        setSelectedMinute(selectedMinute);\n        setSelectedPeriod(hasPeriod ? selectedPeriod : undefined);\n      }\n\n      asyncTrigger(() => onChangeRef.current(selectedTime));\n      setIsReady(true);\n    }\n  }, [hasPeriod, selectedTime, setSelectedHour, setSelectedMinute, setSelectedPeriod, selectedFormat]);\n\n  // Does not render the component until the input values are set\n  if (!isReady && selectedTime) {\n    return null;\n  }\n\n  const additionalTimepickerMessageProps: { 'aria-label'?: string } = {\n    'aria-label': `${labels.timepickerMessageLabel}, ${labels.timepickerMessageAriaLabel}`\n  };\n  if (!labels.cancelAriaLabel) {\n    delete additionalTimepickerMessageProps['aria-label'];\n  }\n\n  return (\n    <div ref={datePickerDropdownContainerRef} className={wrapperClassNames}>\n      <DialogBody />\n      <div className=\"border-1 border-[var(--color-neutral-300)]\" />\n      <div className=\"px-32\">\n        <DialogFooter setInputTextValue={setInputTextValue} />\n      </div>\n      {stringToBoolean(hasTimepickerMessage) && (\n        <div className=\"timepicker-message\" {...additionalTimepickerMessageProps}>\n          <Icon name=\"agora-solid-alert-circle\" className=\"timepicker-message__icon\" alt={labels.timepickerMessageAriaLabel} />\n          <div className=\"timepicker-message__text\">{labels.timepickerMessageLabel}</div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, {\n  ChangeEvent,\n  ComponentProps,\n  FC,\n  ReactNode,\n  useCallback,\n  useEffect,\n  useId,\n  useImperativeHandle,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport classNames from 'classnames';\nimport './input-time.css';\nimport { TimeInputContextProvider } from './contexts/time-input-state.context';\n\nimport { BooleanProp, FeedbackState, TimeFormat } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport { DEFAULT_PLACEHOLDER } from './utils/format-time';\n\nimport { TimeText } from './time-text/time-text';\nimport { TimePickerDropdown } from './time-picker-dropdown';\n\nimport { Feedback } from '@/components/shared/feedback';\nimport { HelperText } from '@/components/shared/helper-text';\nimport { IconItem, IconSet, IconSetState } from '@/components/shared/icon-set/icon-set';\n\nimport { callbackWith } from '@/components/input-date/input-date';\n\nexport interface InputTimeProps extends ComponentProps<'input'> {\n  /**\n   * Defines the time format that will be used.\n   */\n  format?: TimeFormat;\n  /**\n   * The flag to set if the label and feedback text is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Error feedback text displayed below input.\n   */\n  errorFeedbackText?: ReactNode;\n  /**\n   * Show or hide the leading icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Name of the icon leading icon to be displayed.\n   */\n  icon?: string;\n  /**\n   * The placeholder to apply in the input minute part\n   */\n  minuteInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input hour part\n   */\n  hourInputPlaceholder?: string;\n  /**\n   * The placeholder to apply in the input hour part\n   */\n  periodInputPlaceholder?: string;\n  /**\n   * Accessible text to apply to the trailing clock icon.\n   */\n  clockIconAriaLabel: string;\n  /**\n   * Label for the timepicker cancel button.\n   */\n  cancelLabel: string;\n  /**\n   * Accessible text for the timepicker cancel button.\n   */\n  cancelAriaLabel?: string;\n  /**\n   * Label for the timepicker ok button.\n   */\n  okLabel: string;\n  /**\n   * Accessible text for the timepicker ok button.\n   */\n  okAriaLabel?: string;\n  /**\n   * Show or hide the timepicker footer message.\n   */\n  hasTimepickerMessage?: BooleanProp;\n  /**\n   * Label for the timepicker footer message.\n   */\n  timepickerMessageLabel?: string;\n  /**\n   * Accessible text for the timepicker footer message.\n   */\n  timepickerMessageAriaLabel?: string;\n  /**\n   * Defines helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Accessible label for screen readers, prepended to errorFeedbackText.\n   */\n  errorFeedbackStateLabel?: string;\n}\n\nconst InputTime: FC<InputTimeProps> = ({\n  ref = null,\n  className,\n  format = '12',\n  darkMode,\n  label,\n  hideLabel,\n  required = true,\n  hasError,\n  hasFeedback,\n  feedbackText,\n  feedbackState = 'info',\n  errorFeedbackText,\n  feedbackStateLabel,\n  errorFeedbackStateLabel,\n  icon,\n  hasIcon,\n  minuteInputPlaceholder = DEFAULT_PLACEHOLDER.MINUTE,\n  hourInputPlaceholder = DEFAULT_PLACEHOLDER.HOUR,\n  periodInputPlaceholder = DEFAULT_PLACEHOLDER.PERIOD,\n  clockIconAriaLabel,\n  cancelLabel,\n  cancelAriaLabel,\n  okLabel,\n  okAriaLabel,\n  value,\n  defaultValue,\n  onChange,\n  hasTimepickerMessage = false,\n  timepickerMessageLabel,\n  timepickerMessageAriaLabel,\n  hasHelperText,\n  helperText,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  useImperativeHandle(ref, () => {\n    return innerInputRef.current as HTMLInputElement;\n  }, []);\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const [currentValue, setCurrentValue] = useState<string>(value?.toString() ?? defaultValue?.toString() ?? '');\n\n  const lastValueTriggered = useRef<string>('empty');\n  const [trigger, setTrigger] = useState(+new Date());\n\n  const [overlayVisible, setOverlayVisible] = useState(false);\n\n  const showOverlay = () => {\n    if (!props.readOnly) {\n      setOverlayVisible(true);\n    }\n  };\n\n  const hideOverlay = () => {\n    setOverlayVisible(false);\n  };\n\n  const toggleOverlay = () => {\n    if (overlayVisible) {\n      hideOverlay();\n    } else {\n      showOverlay();\n    }\n  };\n\n  const handleOnDismiss = () => {\n    hideOverlay();\n  };\n\n  const handleOnDismissRef = useRef(handleOnDismiss);\n  handleOnDismissRef.current = handleOnDismiss;\n  const onChangeRef = useRef(onChange);\n  onChangeRef.current = onChange;\n\n  const triggerOnChange = useCallback((last: string) => {\n    if (last !== lastValueTriggered.current) {\n      lastValueTriggered.current = last;\n      setTrigger(+new Date());\n    }\n  }, []);\n\n  const handleTimePickerCancel = useCallback(\n    (selectedTime: string) => {\n      setCurrentValue(selectedTime);\n      triggerOnChange(selectedTime);\n      handleOnDismissRef.current();\n    },\n    [triggerOnChange]\n  );\n\n  //  HANDLE CLICK OUTSIDE DIALOG\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (!overlayVisible) {\n        return;\n      }\n\n      const clickedOnInputElement = event.target && (event.target as HTMLElement).closest('.agora-time-input');\n\n      if (!wrapperRef.current?.contains(event.target as HTMLDivElement) || clickedOnInputElement) {\n        handleOnDismissRef.current();\n      }\n    };\n\n    document.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document.removeEventListener('click', handleClickOutside);\n    };\n  }, [overlayVisible]);\n\n  //  HANDLE ESCAPE\n  useEffect(() => {\n    const keydownHandler = (evt: KeyboardEvent) => {\n      if (evt.key === 'Escape') {\n        evt.preventDefault();\n        handleOnDismissRef.current();\n      }\n    };\n\n    const wrapper = wrapperRef.current;\n    wrapper?.addEventListener('keydown', keydownHandler);\n\n    return () => {\n      wrapper?.removeEventListener('keydown', keydownHandler);\n    };\n  }, []);\n\n  useEffect(() => {\n    if (defaultValue) {\n      return;\n    }\n\n    setCurrentValue(value?.toString() ?? '');\n    triggerOnChange(value?.toString() ?? '');\n  }, [value, defaultValue, triggerOnChange]);\n\n  const onOverlayChangeHandler = (selectedTime: string) => {\n    triggerOnChange(selectedTime);\n  };\n\n  const onInputTimeChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentValue(evt.target.value);\n    triggerOnChange(evt.target.value);\n  };\n\n  useEffect(() => {\n    if (innerInputRef.current) {\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChangeRef.current?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n  }, [trigger]);\n\n  const firstRender = useRef(true);\n  useEffect(() => {\n    if (!overlayVisible && innerInputRef.current) {\n      if (firstRender.current) {\n        firstRender.current = false;\n        return;\n      }\n      innerInputRef.current.focus();\n      innerInputRef.current.setSelectionRange(0, 2);\n    }\n  }, [overlayVisible]);\n\n  const dropdownTimePickerLabels = useMemo(\n    () => ({\n      cancelLabel,\n      cancelAriaLabel,\n      okLabel,\n      okAriaLabel,\n      timepickerMessageLabel,\n      timepickerMessageAriaLabel\n    }),\n    [cancelLabel, cancelAriaLabel, okLabel, okAriaLabel, timepickerMessageLabel, timepickerMessageAriaLabel]\n  );\n\n  const wrapperClassNames = classNames('agora-time-picker', className, {\n    'dark-mode': stringToBoolean(darkMode),\n    'has-value': currentValue.length > 0,\n    'disabled': stringToBoolean(propsClone.disabled),\n    'read-only': stringToBoolean(propsClone.readOnly),\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const timeCtxInitialValues = useMemo(() => {\n    return {\n      selectedFormat: format,\n      selectedTime: defaultValue?.toString() ?? value?.toString() ?? '',\n      MIN_HOUR: format === '12' ? 1 : 0,\n      MAX_HOUR: format === '12' ? 12 : 23,\n      MIN_MINUTE: 0,\n      MAX_MINUTE: 59,\n      cancel: handleTimePickerCancel,\n      labels: dropdownTimePickerLabels\n    };\n  }, [format, value, defaultValue, handleTimePickerCancel, dropdownTimePickerLabels]);\n\n  let inputAriaDescribedBy: string | undefined;\n  if (stringToBoolean(hasFeedback) && feedbackText) {\n    inputAriaDescribedBy = `input-time-${propsClone.id}-feedback`;\n  } else if (stringToBoolean(hasError) && errorFeedbackText) {\n    inputAriaDescribedBy = `input-time-${propsClone.id}-error-feedback`;\n  } else {\n    inputAriaDescribedBy = undefined;\n  }\n\n  const [iconState, setIconState] = useState<IconSetState>('default');\n  const currentIconState = !props.disabled && !props.readOnly ? iconState : 'default';\n\n  return (\n    <TimeInputContextProvider initialValues={timeCtxInitialValues}>\n      <div hidden={!!propsClone.hidden} className={wrapperClassNames} ref={wrapperRef}>\n        {/* Label */}\n        <label\n          hidden={!!stringToBoolean(hideLabel)}\n          htmlFor={propsClone.id}\n          className=\"input-time-label\"\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n        >\n          {label}\n        </label>\n\n        {/* Input wrapper */}\n        <div\n          role=\"presentation\"\n          className=\"input-wrapper-text\"\n          onKeyDown={callbackWith(setIconState, 'active')}\n          onKeyUp={callbackWith(setIconState, 'default')}\n          onMouseEnter={callbackWith(setIconState, 'hover')}\n          onMouseLeave={callbackWith(setIconState, 'default')}\n        >\n          {/* Input Leading Icon  */}\n          {stringToBoolean(hasIcon) && (\n            <div className=\"input-leading-icon\">\n              <IconSet state={currentIconState}>\n                <IconItem aria-hidden state=\"default\" name={icon ?? 'no-icon'} />\n                <IconItem aria-hidden state=\"hover\" name={icon?.replace('line', 'solid') ?? 'no-icon'} />\n                <IconItem aria-hidden state=\"active\" name={icon ?? 'no-icon'} />\n              </IconSet>\n            </div>\n          )}\n\n          <TimeText\n            className=\"input-text\"\n            ref={innerInputRef}\n            id={propsClone.id}\n            minuteInputPlaceholder={minuteInputPlaceholder}\n            hourInputPlaceholder={hourInputPlaceholder}\n            periodInputPlaceholder={periodInputPlaceholder}\n            value={currentValue}\n            setInputTextValue={setCurrentValue}\n            onChange={onInputTimeChange}\n            disabled={propsClone.disabled}\n            readOnly={propsClone.readOnly}\n            required={isRequired}\n            aria-describedby={inputAriaDescribedBy}\n          />\n\n          {/* Input Trailing Icon  */}\n          <button\n            type=\"button\"\n            disabled={!!propsClone.disabled || !!propsClone.readOnly}\n            onClick={toggleOverlay}\n            className=\"input-trailing-icon\"\n            aria-label={clockIconAriaLabel}\n          >\n            <IconSet state={currentIconState}>\n              <IconItem state=\"default\" name=\"agora-line-clock\" aria-hidden className=\"icon-clock-default\" />\n              <IconItem state=\"hover\" name=\"agora-solid-clock\" aria-hidden className=\"icon-clock-hover\" />\n              <IconItem state=\"active\" name=\"agora-line-clock\" aria-hidden className=\"icon-clock-default\" />\n            </IconSet>\n          </button>\n\n          {overlayVisible && (\n            <TimePickerDropdown\n              className=\"time-picker-dropdown\"\n              labels={dropdownTimePickerLabels}\n              onChange={onOverlayChangeHandler}\n              onCancel={handleTimePickerCancel}\n              hasTimepickerMessage={hasTimepickerMessage}\n              setInputTextValue={setCurrentValue}\n              textCurrentValue={currentValue}\n            />\n          )}\n        </div>\n        {/* HelperText */}\n        {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} />}\n\n        {/* Feedback */}\n        {stringToBoolean(hasFeedback) && feedbackText && (\n          <Feedback\n            id={`input-time-${propsClone.id}-feedback`}\n            feedbackState={feedbackState}\n            feedbackStateLabel={feedbackStateLabel}\n            feedbackText={feedbackText}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        )}\n\n        {/* Error Feedback */}\n        {stringToBoolean(hasError) && errorFeedbackText && (\n          <Feedback\n            id={`input-time-${propsClone.id}-error-feedback`}\n            feedbackState=\"danger\"\n            feedbackText={errorFeedbackText}\n            feedbackStateLabel={errorFeedbackStateLabel}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        )}\n      </div>\n    </TimeInputContextProvider>\n  );\n};\n\nexport { InputTime };\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport './loader-dialog.css';\n\nexport interface LoaderDialogProps extends Omit<ComponentPropsWithoutRef<'div'>, 'title'> {\n  /**\n   * The title of the loader.\n   */\n  title?: ReactNode;\n  /**\n   * The subtitle of the loader.\n   */\n  subtitle?: ReactNode;\n}\nexport const LoaderDialog: FC<LoaderDialogProps> = ({ title, subtitle, ...props }) => {\n  const loaderClass = classNames('agora-loader-dialog');\n\n  return (\n    <div {...props} className=\"bg-[var(--color-backdrop)] absolute z-dialog w-full h-full flex flex-col justify-center items-center\">\n      <div className=\"flex flex-col gap-[64px] justify-center items-center w-full\">\n        {(title || subtitle) && (\n          <div className=\"flex w-full flex-col gap-8 justify-center items-center text-center xs:px-32 md:px-64 xl:px-0\">\n            {title && (\n              <div className=\"xl:text-2xl-semibold md:text-2xl-semibold  xs:text-l-semibold text-white xl:line-clamp-1 md:line-clamp-1 xs:line-clamp-2\">\n                {title}\n              </div>\n            )}\n            {subtitle && (\n              <div className=\"xl:text-2xl-light md:text-2xl-light xs:text-m-light text-white xl:line-clamp-1 md:line-clamp-1 xs:line-clamp-2\">\n                {subtitle}\n              </div>\n            )}\n          </div>\n        )}\n        <div className={loaderClass} role=\"status\">\n          <span className=\"!absolute !-m-px !h-px !w-px !overflow-hidden !whitespace-nowrap !border-0 !p-0 ![clip:rect(0,0,0,0)]\"></span>\n        </div>\n      </div>\n    </div>\n  );\n};\n","import { createContext, useContext } from 'react';\nimport { LoaderDialogProps } from './loader-dialog';\n\nimport { DialogElement } from '@/components/dialog';\n\nexport interface LoaderDialogContextProps {\n  current: DialogElement;\n  visibility?: boolean;\n  showLoader: (props: LoaderDialogProps) => void;\n  hideLoader: () => void;\n}\n\nconst LoaderDialogContext = createContext<LoaderDialogContextProps>({} as LoaderDialogContextProps);\n\nconst useLoaderDialogContext = (): LoaderDialogContextProps => {\n  const context = useContext(LoaderDialogContext);\n  return context;\n};\n\nexport { LoaderDialogContext, useLoaderDialogContext };\n","import React, { FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { LoaderDialogContext, LoaderDialogContextProps } from './loader-dialog-context';\nimport { LoaderDialog, LoaderDialogProps } from './loader-dialog';\n\nexport interface LoaderDialogProviderProps {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nconst LoaderDialogProvider: FC<LoaderDialogProviderProps> = ({ children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n  const loaderRef = useRef<HTMLDivElement>(null);\n\n  const [dialogProps, setDialogProps] = useState<LoaderDialogProps>();\n  const [ariaLiveMessage, setAriaLiveMessage] = useState('');\n\n  const showLoader = useCallback((currentDialogProps: LoaderDialogProps) => {\n    if (currentDialogProps['aria-label']) {\n      setAriaLiveMessage(currentDialogProps['aria-label']);\n    } else if (currentDialogProps['aria-labelledby']) {\n      const ids = currentDialogProps['aria-labelledby'].split(' ');\n      const val = ids\n        .map((id) => loaderRef.current?.querySelector<HTMLElement>(`#${id}`)?.innerText ?? '')\n        .filter(Boolean)\n        .join(' ');\n\n      setAriaLiveMessage(val);\n    } else {\n      const getText = (value: unknown) => {\n        if (typeof value === 'string' || typeof value === 'number') return value.toString();\n        return '';\n      };\n      setAriaLiveMessage(`${getText(currentDialogProps.title)} ${getText(currentDialogProps.subtitle)}`);\n    }\n\n    setDialogProps(currentDialogProps);\n    dialogRef.current?.show();\n  }, []);\n\n  const hideLoader = useCallback((): void => {\n    setAriaLiveMessage('');\n    dialogRef.current?.hide();\n  }, []);\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        showLoader,\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        hideLoader\n      }) as LoaderDialogContextProps,\n    [showLoader, hideLoader]\n  );\n\n  return (\n    <LoaderDialogContext value={contextValue}>\n      <div aria-live=\"assertive\" className=\"sr-only\">\n        {ariaLiveMessage}\n      </div>\n      <Dialog ref={dialogRef} fullScreen dismissOnBackdropClick={false} dismissOnEscape={false} aria-busy=\"true\">\n        {!!dialogProps && (\n          <div className=\"loader-wrapper\" ref={loaderRef}>\n            <LoaderDialog {...dialogProps} />\n          </div>\n        )}\n      </Dialog>\n      {children}\n    </LoaderDialogContext>\n  );\n};\n\nexport { LoaderDialogProvider };\n","import { DialogElement } from '@/components/dialog';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { ModalConfiguration } from './modal-config.model';\n\nexport interface ModalContextProps {\n  /**\n   * The visible modal element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a modal is visible or not.\n   */\n  isVisible: () => boolean;\n  /**\n   * Shows a new modal with the configurations provided.\n   */\n  show: (children: ReactNode, config: ModalConfiguration) => void;\n  /**\n   * Hides the visible modal.\n   */\n  hide: () => void;\n}\n\nconst ModalContext = createContext<ModalContextProps>({} as ModalContextProps);\n\nconst useModalContext = (): ModalContextProps => {\n  return useContext(ModalContext);\n};\n\nexport { ModalContext, useModalContext };\n","import React, { ComponentProps, FC, ReactNode } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\nimport { useModalContext } from './modal-context';\n\nimport { ModalConfiguration } from './modal-config.model';\nimport './modal-dialog.css';\n\nexport interface ModalDialogProps extends Omit<ComponentProps<'div'>, 'title'> {\n  /**\n   *  Modal configurations\n   */\n  configurations: ModalConfiguration;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nconst ModalDialog: FC<ModalDialogProps> = ({ configurations, children }) => {\n  const { hide } = useModalContext();\n\n  const containerClassNames = classNames('agora-modal-dialog-container', configurations.className, {\n    'dark-mode': stringToBoolean(configurations.darkMode ?? true)\n  });\n\n  const handleClose = () => {\n    const { onBeforeClose, onAfterClose } = configurations;\n\n    if (onBeforeClose) {\n      onBeforeClose();\n    }\n\n    hide();\n\n    if (onAfterClose) {\n      onAfterClose();\n    }\n  };\n\n  return (\n    <div className={containerClassNames}>\n      <div className=\"agora-modal-dialog\">\n        <div className=\"agora-modal-dialog-header\">\n          <Button\n            className=\"mt-16 mr-24\"\n            onClick={handleClose}\n            appearance=\"link\"\n            variant=\"neutral\"\n            darkMode={stringToBoolean(configurations.darkMode ?? true)}\n            hasIcon\n            trailingIcon=\"agora-line-x\"\n            trailingIconHover=\"agora-solid-x\"\n          >\n            {configurations.closeButtonLabel}\n          </Button>\n        </div>\n        <div className=\"agora-modal-dialog-body\">\n          <div className=\"agora-modal-dialog-body-content\">{children}</div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { ModalDialog };\n","import { Dialog, DialogElement } from '@/components/dialog';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport React, { FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\nimport { ModalConfiguration } from './modal-config.model';\nimport { ModalContext, ModalContextProps } from './modal-context';\nimport { ModalDialog } from './modal-dialog';\n\nexport interface ModalProviderProps {\n  /**\n   * Allows the dialog to be closed by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n}\n\nconst ModalProvider: FC<ModalProviderProps> = ({ dismissOnEscape = true, children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n  const [dialogConfig, setDialogConfig] = useState<ModalConfiguration>();\n\n  const show = useCallback((currentDialogChildren: ReactNode, config: ModalConfiguration) => {\n    setDialogChildren(currentDialogChildren);\n\n    setDialogConfig(config);\n\n    asyncTrigger(() => dialogRef.current?.show());\n  }, []);\n\n  const hide = useCallback((): void => {\n    dialogRef.current?.hide();\n  }, []);\n\n  const contextValue = useMemo(() => {\n    return {\n      current: dialogRef.current,\n      isVisible: () => !!dialogRef.current?.visible,\n      show,\n      hide\n    } as ModalContextProps;\n  }, [show, hide]);\n\n  return (\n    <ModalContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen\n        dismissOnBackdropClick={false}\n        dismissOnEscape={stringToBoolean(dismissOnEscape)}\n        aria-label={dialogConfig?.['aria-label']}\n        onShow={dialogConfig?.onShow}\n        onHide={dialogConfig?.onHide}\n      >\n        {!!dialogConfig && <ModalDialog configurations={dialogConfig}>{dialogChildren}</ModalDialog>}\n      </Dialog>\n      {children}\n    </ModalContext>\n  );\n};\n\nexport { ModalProvider };\n","import React, { cloneElement, FC, ReactElement, ReactNode } from 'react';\nimport { BooleanProp } from '@/models';\nimport { TabBodyProps } from '../tabs';\n\ntype ReactNodeOrFC = ReactNode | FC<{ darkMode?: BooleanProp }>;\n\nexport type PanelData = {\n  text: string;\n  withIcon?: boolean;\n  leadingIcon?: string;\n  content: ReactNodeOrFC;\n  leadingIconHover?: string;\n};\n\nexport type ButtonsHeaderData = {\n  withIcon: boolean;\n  leadingIcon: string;\n  leadingIconHover: string;\n  child: ReactElement<TabBodyProps>;\n};\n\nexport interface PanelSwitcherProps {\n  /**\n   * Collection of PanelData to be displayed by panel.\n   */\n  data: PanelData[];\n  /**\n   * Defines the label of the modal close button.\n   */\n  modalCloseButtonLabel: string;\n  /**\n   * The flag to set if the footer is in dark mode or light mode.\n   */\n  darkMode?: boolean;\n}\n\nexport const convertContentToNode = (content: ReactNodeOrFC, darkMode?: boolean): ReactNode => {\n  if (typeof content === 'function') {\n    const ContentComponent = content as FC<{ darkMode?: BooleanProp }>;\n    return <ContentComponent darkMode={darkMode} />;\n  }\n\n  return cloneElement(content as ReactElement, { darkMode } as Record<string, unknown>);\n};\n\nexport const handleIcons = (hasIcon: boolean, icon: string, leadingIcon: boolean) => {\n  if (!hasIcon) {\n    return undefined;\n  }\n\n  const backUpIcon = leadingIcon ? 'no-icon-line' : 'no-icon';\n\n  return icon !== '' ? icon : backUpIcon;\n};\n","import { TabBodyProps } from '@/components/tabs';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, useId, useState } from 'react';\nimport './panel-switcher-desktop.css';\nimport { Button } from '@/components/button';\nimport { ButtonsHeaderData } from '@/components/panel-switcher';\nimport { handleIcons } from '../helper';\n\nexport interface PanelSwitcherDesktopProps extends ComponentProps<'div'> {\n  buttonListRef: React.RefObject<HTMLDivElement | null>;\n  panelRef: React.RefObject<HTMLDivElement | null>;\n  activeButton: number;\n  activateButton: (index: number) => void;\n  buttonsHeaderData: Array<ButtonsHeaderData>;\n  buttonsBodyData: Array<ReactElement<TabBodyProps>>;\n  darkMode?: boolean;\n}\n\nexport const PanelSwitcherDesktop: FC<PanelSwitcherDesktopProps> = ({\n  buttonListRef,\n  panelRef,\n  activeButton,\n  activateButton,\n  buttonsHeaderData,\n  buttonsBodyData,\n  darkMode\n}) => {\n  const generatedId = useId();\n  const [isPressed, setIsPressed] = useState<boolean[]>(new Array(buttonsHeaderData.length).fill(false));\n\n  const panelSwitcherWrapperClassName = classNames('panel-switcher-wrapper desktop flex-1');\n  const panelSwitcherTabsListClassNames = classNames('panel-button-group desktop');\n\n  const selectedButton = Math.max(activeButton, 0);\n\n  const focusTab = (index: number) => {\n    const buttons = buttonListRef.current?.querySelectorAll('button');\n    if (buttons && buttons[index]) {\n      buttons[index].focus();\n    }\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent, index: number) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        event.preventDefault();\n        setIsPressed((prev) => {\n          const newState = [...prev];\n          newState[index] = true;\n          return newState;\n        });\n        break;\n      case 'ArrowUp':\n        focusTab((index - 1 + buttonsHeaderData.length) % buttonsHeaderData.length);\n        event.preventDefault();\n        break;\n      case 'ArrowDown':\n        focusTab((index + 1) % buttonsHeaderData.length);\n        event.preventDefault();\n        break;\n      case 'Tab':\n        if (!event.shiftKey) {\n          event.preventDefault();\n          panelRef.current?.focus();\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  const handleKeyUp = (event: React.KeyboardEvent, index: number) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        activateButton(index);\n        setIsPressed((prev) => {\n          const newState = [...prev];\n          newState[index] = false;\n          return newState;\n        });\n        break;\n    }\n  };\n\n  const handleMouseDown = (index: number) => {\n    setIsPressed((prev) => {\n      const newState = [...prev];\n      newState[index] = true;\n      return newState;\n    });\n  };\n\n  const handleMouseUp = (index: number) => {\n    activateButton(index);\n\n    setIsPressed((prev) => {\n      const newState = [...prev];\n      newState[index] = false;\n      return newState;\n    });\n  };\n\n  return (\n    <div className={panelSwitcherWrapperClassName}>\n      <div className=\"container mx-auto grid xl:grid-cols-12 gap-x-32\">\n        <div className=\"xl:col-span-4\">\n          <div ref={buttonListRef} role=\"listbox\" className={panelSwitcherTabsListClassNames}>\n            {buttonsHeaderData.map((buttonsHeader: ButtonsHeaderData, index) => {\n              const isActive = selectedButton === index;\n              const key = `panel-button-${generatedId}-${index}`;\n\n              const hasIcon = buttonsHeader.withIcon;\n              const leadingIcon = buttonsHeader.leadingIcon;\n              const leadingIconHover = buttonsHeader.leadingIconHover;\n\n              const panelButtonClassNames = classNames('panel-button', {\n                'is-active': isActive,\n                'panel-button-darkMode': darkMode\n              });\n\n              return (\n                <Button\n                  id={key}\n                  key={key}\n                  role=\"option\"\n                  darkMode={darkMode}\n                  className={panelButtonClassNames}\n                  appearance=\"link\"\n                  variant=\"primary\"\n                  hasIcon={true}\n                  leadingIcon={handleIcons(hasIcon, leadingIcon, true)}\n                  leadingIconHover={handleIcons(hasIcon, leadingIconHover, false)}\n                  trailingIcon={isPressed[index] ? 'agora-solid-arrow-right-circle' : 'agora-line-arrow-right-circle'}\n                  trailingIconHover=\"agora-solid-arrow-right-circle\"\n                  tabIndex={isActive ? 0 : -1}\n                  onClick={() => {\n                    activateButton(index);\n                  }}\n                  onKeyDown={(evt) => handleKeyDown(evt, index)}\n                  onKeyUp={(evt) => handleKeyUp(evt, index)}\n                  onMouseDown={() => handleMouseDown(index)}\n                  onMouseUp={() => handleMouseUp(index)}\n                  aria-selected={isActive}\n                >\n                  {buttonsHeader?.child?.props?.children}\n                </Button>\n              );\n            })}\n          </div>\n        </div>\n        <div className=\"xl:col-span-7 xl:col-start-6 w-full\">\n          {buttonsBodyData[selectedButton] && (\n            <div\n              className=\"panel-content\"\n              role=\"region\"\n              ref={panelRef}\n              {...(stringToBoolean(buttonsBodyData[selectedButton].props.focusableContent) ? { tabIndex: 0 } : { tabIndex: -1 })}\n              aria-labelledby={`agora-panel-${generatedId}-${selectedButton}`}\n            >\n              {buttonsBodyData[selectedButton].props.children}\n            </div>\n          )}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, KeyboardEvent, ReactElement, RefObject, useEffect, useId, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@/components/button';\nimport { ModalConfiguration, ModalProvider, useModalContext } from '@/components/modal-dialog';\nimport { TabBodyProps } from '@/components/tabs';\nimport './panel-switcher-mobile.css';\nimport { ButtonsHeaderData } from '@/components/panel-switcher';\nimport { handleIcons } from '../helper';\n\nexport interface PanelSwitcherMobileProps {\n  modalCloseButtonLabel: string;\n  buttonListRef: RefObject<HTMLDivElement | null>;\n  buttonsHeaderData: Array<ButtonsHeaderData>;\n  buttonsBodyData: Array<ReactElement<TabBodyProps>>;\n  activeButton?: number;\n  darkMode?: boolean;\n}\n\nexport const ModalContent: FC<{ content: React.ReactNode }> = ({ content }) => {\n  return <div>{content}</div>;\n};\n\nexport const PanelSwitcherMobileInternal: FC<PanelSwitcherMobileProps> = ({\n  modalCloseButtonLabel,\n  buttonListRef,\n  buttonsHeaderData,\n  buttonsBodyData,\n  activeButton,\n  darkMode\n}) => {\n  const generatedId = useId();\n  const { show } = useModalContext();\n  const buttonsRef = useRef<(HTMLButtonElement | null)[]>([]);\n  const [isPressed, setIsPressed] = useState<boolean[]>(new Array(buttonsHeaderData.length).fill(false));\n  const [focusedButton, setFocusedButton] = useState<number | undefined>(activeButton);\n\n  const panelSwitcherMobileClassName = classNames('panel-switcher-mobile');\n  const panelButtonListClassNames = classNames('panel-button-list mobile');\n\n  const openModalHandler = (index: number) => {\n    const buttonRef = buttonsRef.current[index];\n    const content = buttonsBodyData[index].props.children;\n    const modalConfig: ModalConfiguration = {\n      closeButtonLabel: `${modalCloseButtonLabel}`,\n      darkMode,\n      onHide: () => {\n        buttonRef?.focus();\n      }\n    };\n    show(<ModalContent content={content} />, modalConfig);\n  };\n\n  useEffect(() => {\n    if (focusedButton !== undefined && buttonsRef.current[focusedButton]) {\n      buttonsRef.current[focusedButton]?.focus();\n    }\n  }, [focusedButton]);\n\n  const handleKeyDown = (evt: KeyboardEvent, index?: number) => {\n    const currentFocus = document.activeElement;\n    const isFocusOnPanelButtons = buttonsRef.current.includes(currentFocus as HTMLButtonElement);\n\n    if ((evt.code === 'ArrowUp' || evt.code === 'ArrowDown') && isFocusOnPanelButtons) {\n      evt.preventDefault();\n\n      setFocusedButton((prevBtn) => {\n        const currentButton = prevBtn ?? 0;\n        const totalButtons = buttonsHeaderData.length;\n\n        if (evt.code === 'ArrowUp') {\n          return (currentButton - 1 + totalButtons) % totalButtons;\n        } else if (evt.code === 'ArrowDown') {\n          return (currentButton + 1) % totalButtons;\n        }\n      });\n    }\n\n    if (evt.code === 'Tab') {\n      const isKey = evt.code === 'Tab';\n\n      if (isKey && isFocusOnPanelButtons) {\n        if (evt.shiftKey) {\n          buttonsRef.current[0]?.focus();\n        } else {\n          buttonsRef.current[buttonsRef.current.length - 1]?.focus();\n        }\n      }\n    }\n\n    if ((evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') && isFocusOnPanelButtons) {\n      setIsPressed((prev) => {\n        const newPressedState = [...prev];\n        if (index !== undefined) newPressedState[index] = true;\n        return newPressedState;\n      });\n    }\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent, index: number) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      evt.preventDefault();\n      setIsPressed((prev) => {\n        const newPressedState = [...prev];\n        newPressedState[index] = false;\n        return newPressedState;\n      });\n    }\n  };\n\n  const handleMouseDown = (index: number) => {\n    setIsPressed((prev) => {\n      const newPressedState = [...prev];\n      newPressedState[index] = true;\n      return newPressedState;\n    });\n  };\n\n  const handleMouseUp = (index: number) => {\n    openModalHandler(index);\n\n    setIsPressed((prev) => {\n      const newPressedState = [...prev];\n      newPressedState[index] = false;\n      return newPressedState;\n    });\n  };\n\n  return (\n    <div className={panelSwitcherMobileClassName}>\n      <div ref={buttonListRef} className={panelButtonListClassNames}>\n        {buttonsHeaderData.map((buttonsHeader: ButtonsHeaderData, index) => {\n          const key = `panel-button-${generatedId}-${index}`;\n\n          const hasIcon = buttonsHeader.withIcon;\n          const leadingIcon = buttonsHeader.leadingIcon;\n          const leadingIconHover = buttonsHeader.leadingIconHover;\n\n          const panelButtonClassNames = classNames('panel-button', {\n            'panel-button-darkMode': darkMode\n          });\n\n          return (\n            <Button\n              ref={(el) => {\n                buttonsRef.current[index] = el;\n              }}\n              key={key}\n              id={key}\n              className={panelButtonClassNames}\n              appearance=\"link\"\n              variant=\"primary\"\n              hasIcon={true}\n              leadingIcon={handleIcons(hasIcon, leadingIcon, true)}\n              leadingIconHover={handleIcons(hasIcon, leadingIconHover, false)}\n              trailingIcon={isPressed[index] ? 'agora-solid-plus-circle' : 'agora-line-plus-circle'}\n              trailingIconHover=\"agora-solid-plus-circle\"\n              onClick={() => openModalHandler(index)}\n              onKeyDown={(evt) => handleKeyDown(evt, index)}\n              onKeyUp={(evt) => handleKeyUp(evt, index)}\n              role=\"option\"\n              darkMode={darkMode}\n              onMouseDown={() => handleMouseDown(index)}\n              onMouseUp={() => handleMouseUp(index)}\n            >\n              {buttonsHeader?.child?.props?.children}\n            </Button>\n          );\n        })}\n      </div>\n    </div>\n  );\n};\n\nexport const PanelSwitcherMobile: FC<PanelSwitcherMobileProps> = (props) => {\n  return (\n    <ModalProvider>\n      <PanelSwitcherMobileInternal {...props} />\n    </ModalProvider>\n  );\n};\n","import React, { Children, FC, isValidElement, ReactElement, useEffect, useRef, useState } from 'react';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { TabBodyProps, TabProps } from '../tabs';\nimport { PanelSwitcherDesktop } from './desktop/panel-switcher-desktop';\nimport { PanelSwitcherMobile } from './mobile/panel-switcher-mobile';\nimport { ButtonsHeaderData, PanelData } from '@/components/panel-switcher';\n\nexport interface PanelSwitcherContainerProps {\n  /**\n   * Collection of PanelData to be displayed by panel.\n   */\n  data: PanelData[];\n  /**\n   * Collection of the content displayed by triggering a panel button.\n   */\n  children: ReactElement<TabProps> | Array<ReactElement<TabProps>>;\n  /**\n   * Defines the label of the modal close button.\n   */\n  modalCloseButtonLabel: string;\n  /**\n   * The flag to set if the footer is in dark mode or light mode.\n   */\n  darkMode?: boolean;\n}\n\nexport const PanelSwitcherContainer: FC<PanelSwitcherContainerProps> = ({ data, children, modalCloseButtonLabel, darkMode }) => {\n  const panelRef = useRef<HTMLDivElement | null>(null);\n  const buttonListRef = useRef<HTMLDivElement | null>(null);\n\n  const [activeButton, setActiveButton] = useState(0);\n  const [buttonsHeaderData, setButtonsHeaderData] = useState<Array<ButtonsHeaderData>>([]);\n  const [buttonsBodyData, setButtonsBodyData] = useState<Array<ReactElement<TabBodyProps>>>([]);\n\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isMobileOrTablet = width < xlScreen;\n\n  const activateButton = (index: number) => {\n    setActiveButton(index);\n  };\n\n  useEffect(() => {\n    const parsedChildren = Children.toArray(children) as ReactElement<TabProps>[];\n    const header: Array<ButtonsHeaderData> = [];\n    const body: Array<ReactElement<TabBodyProps>> = [];\n\n    parsedChildren.forEach((element, index) => {\n      if (Array.isArray(element.props.children)) {\n        const [headerChild, bodyChild] = element.props.children;\n\n        if (headerChild && isValidElement(headerChild)) {\n          header.push({\n            child: headerChild,\n            withIcon: data?.[index]?.withIcon ?? false,\n            leadingIcon: data?.[index]?.leadingIcon ?? '',\n            leadingIconHover: data?.[index]?.leadingIconHover ?? ''\n          });\n        }\n\n        if (bodyChild && isValidElement(bodyChild)) {\n          body.push(bodyChild as ReactElement<TabBodyProps>);\n        }\n      }\n    });\n\n    setButtonsHeaderData(header);\n    setButtonsBodyData(body);\n  }, [children, data]);\n\n  return (\n    <>\n      {!isMobileOrTablet ? (\n        <PanelSwitcherDesktop\n          panelRef={panelRef}\n          darkMode={darkMode}\n          activeButton={activeButton}\n          buttonListRef={buttonListRef}\n          activateButton={activateButton}\n          buttonsBodyData={buttonsBodyData}\n          buttonsHeaderData={buttonsHeaderData}\n        />\n      ) : (\n        <PanelSwitcherMobile\n          darkMode={darkMode}\n          activeButton={activeButton}\n          buttonListRef={buttonListRef}\n          buttonsBodyData={buttonsBodyData}\n          buttonsHeaderData={buttonsHeaderData}\n          modalCloseButtonLabel={modalCloseButtonLabel}\n        />\n      )}\n    </>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport { BooleanProp } from '@/models';\n\nexport interface TabBodyProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab body content.\n   */\n  children?: ReactNode;\n  /**\n   * Flag that sets the tab index of the tab body container accordingly to the following accessibility rule: When the tab panel does not contain any focusable elements or the first element with content is not focusable, the tabpanel should set tabindex=\"0\" to include it in the tab sequence of the page.\n   */\n  focusableContent?: BooleanProp;\n}\n\nexport const TabBody: FC<TabBodyProps> = (props: TabBodyProps) => <div {...props} />;\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\n\nexport interface TabHeaderProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab header content.\n   */\n  children?: ReactNode;\n}\n\nexport const TabHeader: FC<TabHeaderProps> = (props: TabHeaderProps) => <div {...props} />;\n","import React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport { BooleanProp } from '@/models';\nimport { TabBodyProps } from './tab-body';\nimport { TabHeaderProps } from './tab-header';\n\nexport interface TabProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Tab content structure that contains a header and a body.\n   */\n  children?: Array<ReactElement<TabHeaderProps> | ReactElement<TabBodyProps>>;\n  /**\n   * Set tab as the active tab.\n   */\n  active?: BooleanProp;\n}\n\nexport const Tab: FC<TabProps> = (props: TabProps) => <div {...props} />;\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, RefObject, useId } from 'react';\nimport { TabBodyProps } from '../tab-body';\nimport { TabHeaderProps } from '../tab-header';\nimport { TabCurrentType } from '../tabs';\nimport './tabs-desktop.css';\n\nexport interface TabsDesktopProps extends ComponentPropsWithoutRef<'div'> {\n  fullWidth: BooleanProp;\n  vertically?: BooleanProp;\n  tabListRef: RefObject<HTMLDivElement | null>;\n  tabPanelRef: RefObject<HTMLDivElement | null>;\n  activeTab: number;\n  activateTab: (index: number) => void;\n  currentType: TabCurrentType;\n  tabPanelClassName: string;\n  tabsHeaderData: Array<ReactElement<TabHeaderProps>>;\n  tabsBodyData: Array<ReactElement<TabBodyProps>>;\n  isDesktop: boolean;\n}\n\nexport const TabsDesktop: FC<TabsDesktopProps> = ({\n  fullWidth,\n  className,\n  vertically,\n  tabListRef,\n  tabPanelRef,\n  activeTab,\n  activateTab,\n  currentType,\n  tabPanelClassName,\n  tabsHeaderData,\n  tabsBodyData,\n  isDesktop\n}) => {\n  const generatedId = useId();\n\n  const tabsClassName = classNames(\n    'agora-tabs desktop',\n    { 'full-width': stringToBoolean(fullWidth), 'vertically': stringToBoolean(vertically) },\n    className\n  );\n\n  const tabListClassNames = classNames('tab-list desktop');\n\n  //  DESKTOP MUST ALWAYS KEEP A TAB OPEN\n  const desktopActiveTab = Math.max(activeTab, 0);\n\n  return (\n    <div hidden={!isDesktop} className={tabsClassName}>\n      <div ref={tabListRef} role=\"tablist\" className={tabListClassNames}>\n        {Children.map(tabsHeaderData, (child: ReactElement<TabHeaderProps>, index) => {\n          const isActive = desktopActiveTab === index;\n\n          const key = `agora-tab-${generatedId}-${index}`;\n          const tabListItemClassNames = classNames('tab-list-item', {\n            'items-start': vertically,\n            'items-center': !vertically && stringToBoolean(fullWidth),\n            'active': isActive,\n            'current-neutral': currentType === 'neutral',\n            'current-primary': currentType === 'primary',\n            'current-secondary': currentType === 'secondary'\n          });\n\n          return (\n            <button\n              id={key}\n              key={key}\n              role=\"tab\"\n              tabIndex={isActive ? 0 : -1}\n              onClick={(evt) => {\n                evt.currentTarget.blur();\n                activateTab(index);\n              }}\n              aria-selected={isActive}\n              className={tabListItemClassNames}\n            >\n              {child.props.children}\n            </button>\n          );\n        })}\n      </div>\n\n      {tabsBodyData[desktopActiveTab] && (\n        <div role=\"tabpanel\" className={tabPanelClassName} aria-labelledby={`agora-tab-${generatedId}-${desktopActiveTab}`}>\n          <div\n            className=\"tab-panel-content\"\n            ref={tabPanelRef}\n            {...(stringToBoolean(tabsBodyData[desktopActiveTab].props.focusableContent) ? { tabIndex: 0 } : { tabIndex: -1 })}\n          >\n            {tabsBodyData[desktopActiveTab].props.children}\n          </div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, RefObject, useId } from 'react';\nimport { TabBodyProps } from '../tab-body';\nimport { TabHeaderProps } from '../tab-header';\nimport { TabCurrentType } from '../tabs';\nimport './tabs-mobile.css';\n\nimport { Accordion } from '@/components/accordion';\nimport { AccordionGroup } from '@/components/accordion-group';\n\ninterface TabsMobileProps extends ComponentPropsWithoutRef<'div'> {\n  fullWidth: BooleanProp;\n  tabListRef: RefObject<HTMLDivElement | null>;\n  activeTab: number;\n  activateTab: (index: number) => void;\n  currentType: TabCurrentType;\n  tabsHeaderData: Array<ReactElement<TabHeaderProps>>;\n  tabsBodyData: Array<ReactElement<TabBodyProps>>;\n  isTabletOrMobile: boolean;\n}\n\nexport const TabsMobile: FC<TabsMobileProps> = ({\n  fullWidth,\n  className,\n  tabListRef,\n  activeTab,\n  activateTab,\n  currentType,\n  tabsHeaderData,\n  tabsBodyData,\n  isTabletOrMobile\n}) => {\n  const generatedId = useId();\n\n  const tabsClassName = classNames('agora-tabs mobile', { 'full-width': stringToBoolean(fullWidth) }, className);\n\n  const tabListClassNames = classNames('tab-list mobile');\n\n  return (\n    <div hidden={!isTabletOrMobile} className={tabsClassName}>\n      <div ref={tabListRef} className={tabListClassNames}>\n        <AccordionGroup>\n          {Children.map(tabsHeaderData, (child: ReactElement<TabHeaderProps>, index) => {\n            const isActive = activeTab === index;\n            const key = `agora-tab-${generatedId}-${index}`;\n            const tabListItemClassNames = classNames('tab-list-item mobile', {\n              'active': isActive,\n              'current-neutral': currentType === 'neutral',\n              'current-primary': currentType === 'primary',\n              'current-secondary': currentType === 'secondary'\n            });\n\n            return (\n              <Accordion\n                id={key}\n                key={key}\n                onExpanded={() => {\n                  activateTab(index);\n                }}\n                onCollapsed={() => {\n                  activateTab(-1);\n                }}\n                className={tabListItemClassNames}\n                headingTitle={child.props.children}\n                expanded={isActive}\n              >\n                {tabsBodyData[index].props.children}\n              </Accordion>\n            );\n          })}\n        </AccordionGroup>\n      </div>\n    </div>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  Children,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  KeyboardEvent,\n  ReactElement,\n  useCallback,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\nimport { TabProps } from './tab';\nimport { TabBodyProps } from './tab-body';\nimport { TabHeaderProps } from './tab-header';\n\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { TabsDesktop } from './desktop/tabs-desktop';\nimport { TabsMobile } from './mobile/tabs-mobile';\n\nexport type TabCurrentType = 'neutral' | 'primary' | 'secondary';\n\nexport interface TabsProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Collection of tabs.\n   */\n  children: ReactElement<TabProps> | Array<ReactElement<TabProps>>;\n  /**\n   * Defines if tab headers should be rendered as full width tabs.\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Automatic activation.\n   */\n  automaticActivation?: BooleanProp;\n  /**\n   * Tab vertical orientation\n   */\n  vertically?: BooleanProp;\n  /**\n   * Tab current style type\n   */\n  currentType?: TabCurrentType;\n  /**\n   * Tab activation event.\n   */\n  onTabActivation?: (index: number) => void;\n}\n\nexport const Tabs: FC<TabsProps> = ({\n  children,\n  automaticActivation = true,\n  fullWidth = false,\n  className = '',\n  vertically,\n  onTabActivation,\n  currentType = 'neutral',\n  ...props\n}) => {\n  const tabPanelRef = useRef<HTMLDivElement | null>(null);\n\n  const desktopTabListRef = useRef<HTMLDivElement | null>(null);\n  const mobileTabListRef = useRef<HTMLDivElement | null>(null);\n\n  const [activeTab, setActiveTab] = useState(0);\n  const [focusedTab, setFocusedTab] = useState(0);\n  const [tabsHeaderData, setTabsHeaderData] = useState<Array<ReactElement<TabHeaderProps>>>([]);\n  const [tabsBodyData, setTabsBodyData] = useState<Array<ReactElement<TabBodyProps>>>([]);\n\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isTabletOrMobile = width < xlScreen;\n  const isDesktop = width >= xlScreen;\n\n  const activateTab = useCallback(\n    (index: number) => {\n      setActiveTab(index);\n      onTabActivation?.(index);\n    },\n    [onTabActivation]\n  );\n\n  useEffect(() => {\n    const header: Array<ReactElement<TabHeaderProps>> = [];\n    const body: Array<ReactElement<TabBodyProps>> = [];\n\n    const parsedChildren = Children.toArray(children) as ReactElement<TabProps>[];\n\n    Children.forEach(parsedChildren, (element: ReactElement<TabProps>, index) => {\n      if (!isValidElement(element)) {\n        return;\n      }\n\n      if (stringToBoolean(element.props.active)) {\n        activateTab(index);\n      }\n\n      header.push(element.props?.children?.[0] as ReactElement<TabHeaderProps>);\n      body.push(element.props?.children?.[1] as ReactElement<TabBodyProps>);\n    });\n\n    setTabsHeaderData(header);\n    setTabsBodyData(body);\n  }, [children, activateTab]);\n\n  const navigationArrowRight = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (!stringToBoolean(vertically) && !isTabletOrMobile) {\n      if (focusedTab === currentTabList.length - 1) {\n        currentTabList[0].focus();\n        newFocusedTab = 0;\n      } else {\n        newFocusedTab = focusedTab + 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationArrowLeft = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (!stringToBoolean(vertically) && !isTabletOrMobile) {\n      if (focusedTab === 0) {\n        currentTabList[currentTabList.length - 1].focus();\n        newFocusedTab = currentTabList.length - 1;\n      } else {\n        newFocusedTab = focusedTab - 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationArrowDown = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (stringToBoolean(vertically) || isTabletOrMobile) {\n      if (focusedTab === currentTabList.length - 1) {\n        currentTabList[0].focus();\n        newFocusedTab = 0;\n      } else {\n        newFocusedTab = focusedTab + 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationArrowUp = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    let newFocusedTab = focusedTab;\n    if (stringToBoolean(vertically) || isTabletOrMobile) {\n      if (focusedTab === 0) {\n        currentTabList[currentTabList.length - 1].focus();\n        newFocusedTab = currentTabList.length - 1;\n      } else {\n        newFocusedTab = focusedTab - 1;\n        currentTabList[newFocusedTab].focus();\n      }\n\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationHome = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    const newFocusedTab = 0;\n\n    if (currentTabList[newFocusedTab]) {\n      currentTabList[newFocusedTab].focus();\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const navigationEnd = (currentTabList: HTMLButtonElement[]) => {\n    const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n    if (!isOnTabList) {\n      return;\n    }\n\n    const newFocusedTab = currentTabList.length - 1;\n\n    if (currentTabList[newFocusedTab]) {\n      currentTabList[newFocusedTab].focus();\n      setFocusedTab(newFocusedTab);\n      if (stringToBoolean(automaticActivation)) {\n        activateTab(newFocusedTab);\n      }\n    }\n  };\n\n  const handleTabListItemKeyDown = (evt: KeyboardEvent<HTMLDivElement>) => {\n    const eventTargetTag = (evt.target as HTMLElement).tagName;\n    const eventTargetParentRole = (evt.target as HTMLElement).parentElement?.role;\n\n    if (isTabletOrMobile) {\n      return;\n    }\n\n    const tabs = Array.from(desktopTabListRef.current?.querySelectorAll('.tab-list-item') ?? []).map((o) => o as HTMLButtonElement);\n    if (tabs.length == 0) {\n      return;\n    }\n\n    if (evt.code === 'Tab') {\n      const isOnTabList = document.activeElement?.classList.contains('tab-list-item');\n      if (isOnTabList && !evt.shiftKey) {\n        evt.preventDefault();\n        tabPanelRef.current?.focus();\n        return;\n      }\n\n      const isOnTabPanel = tabPanelRef.current === document.activeElement;\n      if (isOnTabPanel && evt.shiftKey) {\n        evt.preventDefault();\n\n        if (tabs[activeTab]) {\n          tabs[activeTab].focus();\n        }\n        return;\n      }\n\n      return;\n    }\n\n    switch (evt.code) {\n      case 'Home':\n        navigationHome(tabs);\n        break;\n\n      case 'End':\n        navigationEnd(tabs);\n        break;\n\n      case 'ArrowRight':\n        navigationArrowRight(tabs);\n        break;\n\n      case 'ArrowLeft':\n        navigationArrowLeft(tabs);\n        break;\n\n      case 'ArrowDown':\n        navigationArrowDown(tabs);\n        break;\n\n      case 'ArrowUp':\n        navigationArrowUp(tabs);\n        break;\n\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n        if (eventTargetTag === 'BUTTON' && eventTargetParentRole === 'tablist') {\n          evt.preventDefault();\n          activateTab(focusedTab);\n          break;\n        }\n        break;\n      default:\n        break;\n    }\n  };\n\n  const tabPanelClassName = classNames('tab-panel', {\n    'current-neutral': currentType === 'neutral',\n    'current-primary': currentType === 'primary',\n    'current-secondary': currentType === 'secondary'\n  });\n\n  return (\n    <div {...props} role=\"none\" onKeyDown={handleTabListItemKeyDown}>\n      <TabsDesktop\n        isDesktop={isDesktop}\n        className={className}\n        fullWidth={fullWidth}\n        vertically={vertically}\n        tabListRef={desktopTabListRef}\n        tabPanelRef={tabPanelRef}\n        activeTab={activeTab}\n        activateTab={activateTab}\n        currentType={currentType}\n        tabPanelClassName={tabPanelClassName}\n        tabsHeaderData={tabsHeaderData}\n        tabsBodyData={tabsBodyData}\n      />\n\n      <TabsMobile\n        isTabletOrMobile={isTabletOrMobile}\n        className={className}\n        fullWidth={fullWidth}\n        tabListRef={mobileTabListRef}\n        activeTab={activeTab}\n        activateTab={activateTab}\n        currentType={currentType}\n        tabsHeaderData={tabsHeaderData}\n        tabsBodyData={tabsBodyData}\n      />\n    </div>\n  );\n};\n","import React, { FC } from 'react';\nimport { PanelSwitcherContainer } from './panel-switcher-container';\nimport { Tab, TabBody, TabHeader } from '../tabs';\nimport { convertContentToNode, PanelSwitcherProps } from './helper';\n\nexport const PanelSwitcher: FC<PanelSwitcherProps> = ({ data, darkMode = false, ...props }) => (\n  <div className=\"agora-panel-switcher\">\n    <PanelSwitcherContainer data={data} darkMode={darkMode} {...props}>\n      {data?.map((panel, index) => {\n        const key = `key-${index}`;\n        const contentNode = convertContentToNode(panel.content, darkMode);\n\n        return (\n          <Tab key={key}>\n            <TabHeader>{panel.text}</TabHeader>\n            <TabBody>{contentNode}</TabBody>\n          </Tab>\n        );\n      })}\n    </PanelSwitcherContainer>\n  </div>\n);\n","import { createContext, ReactNode, useContext } from 'react';\nimport { DialogElement } from '../dialog';\nimport { PopupConfiguration } from './popup-config.model';\n\nexport interface PopupContextProps {\n  /**\n   * The visible dialog element. If not visible the value is null.\n   */\n  current: DialogElement | null;\n  /**\n   * Tells if a dialog is visible or not.\n   */\n  visibility?: boolean;\n  /**\n   * Shows a new popup with the configurations provided.\n   */\n  show: (content: ReactNode, config: PopupConfiguration) => void;\n  /**\n   * Hides the visible popup.\n   */\n  hide: () => void;\n}\n\nconst PopupContext = createContext<PopupContextProps>({} as PopupContextProps);\n\nconst usePopupContext = (): PopupContextProps => {\n  return useContext(PopupContext);\n};\n\nexport { PopupContext, usePopupContext };\n","import { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, ReactNode, useEffect, useRef, useState } from 'react';\nimport { PopupConfiguration } from './popup-config.model';\nimport { usePopupContext } from './popup-context';\nimport './popup-dialog.css';\nimport { useWindowSize } from '@/hooks';\n\nexport interface PopupDialogProps {\n  /**\n   *  Popup configurations\n   */\n  configurations: PopupConfiguration;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n}\n\nexport const PopupDialog: FC<PopupDialogProps> = ({ configurations, children }) => {\n  const { height, width } = useWindowSize();\n\n  const popupContainerRef = useRef<HTMLDivElement>(null);\n  const popupHeaderRef = useRef<HTMLDivElement>(null);\n\n  const [containerMaxHeight, setContainerMaxHeight] = useState('');\n  const [maxHeight, setMaxHeight] = useState('');\n\n  const { hide } = usePopupContext();\n\n  const dialogClassNames = classNames('agora-popup-dialog max-h-full rounded-16 p-32', `agora-popup-dialog-${configurations.dimensions}`, {\n    'dark-mode': stringToBoolean(configurations.darkMode)\n  });\n\n  const titleClassNames = classNames('title mt-8 w-full line-clamp-6 text-xl-bold');\n\n  useEffect(() => {\n    const containerElem = popupContainerRef.current;\n    const headerElem = popupHeaderRef.current;\n\n    if (containerElem && headerElem) {\n      let margins = 64 * 2;\n\n      if (width >= 768) {\n        margins = 128 * 2;\n      }\n\n      const containerHeight = height - margins;\n      const { height: headerHeight } = (headerElem as HTMLElement).getBoundingClientRect();\n\n      setContainerMaxHeight(`${containerHeight}px`);\n      setMaxHeight(`${containerHeight - headerHeight - 16 - 64}px`);\n    }\n  }, [children, width, height]);\n\n  return (\n    <div className=\"absolute z-dialog max-h-full flex justify-center my-64 mx-32 md:my-128 md:mx-64\">\n      <div ref={popupContainerRef} className={dialogClassNames} style={{ maxHeight: containerMaxHeight ?? 'none' }}>\n        <div ref={popupHeaderRef} className=\"agora-popup-dialog-header flex flex-row items-start gap-24 mb-16\">\n          <div className={titleClassNames}>{configurations.title}</div>\n          <Button\n            onClick={hide}\n            appearance=\"link\"\n            variant=\"neutral\"\n            iconOnly\n            hasIcon\n            trailingIcon=\"agora-line-x\"\n            trailingIconHover=\"agora-solid-x\"\n            aria-label={configurations.closeAriaLabel}\n            darkMode={configurations.darkMode}\n          ></Button>\n        </div>\n        <div style={{ maxHeight: maxHeight ?? 'none' }} className={`agora-popup-dialog-body overflow-y-auto`}>\n          {children}\n        </div>\n      </div>\n    </div>\n  );\n};\n","import React, { FC, ReactNode, useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { BooleanProp } from '@/models/boolean-type';\nimport { stringToBoolean } from '@/utils';\nimport { PopupConfiguration } from './popup-config.model';\nimport { PopupContext, PopupContextProps } from './popup-context';\nimport { PopupDialog } from './popup-dialog';\n\nexport interface PopupProviderProps {\n  /**\n   * If not a fullscreen dialog, allows the user to dismiss the dialog by clicking in the backdrop\n   */\n  dismissOnBackdropClick?: BooleanProp;\n  /**\n   * Allows the dialog to be closed by pressing Escape key.\n   */\n  dismissOnEscape?: BooleanProp;\n  /**\n   * Children content.\n   */\n  children: ReactNode;\n}\n\nconst PopupProvider: FC<PopupProviderProps> = ({ dismissOnBackdropClick = true, dismissOnEscape = true, children }) => {\n  const dialogRef = useRef<DialogElement>(null);\n\n  const [dialogChildren, setDialogChildren] = useState<ReactNode>();\n  const [dialogConfigs, setDialogConfigs] = useState<PopupConfiguration>();\n\n  const show = useCallback(\n    (currentDialogChildren: ReactNode, currentDialogConfigs: PopupConfiguration) => {\n      setDialogChildren(currentDialogChildren);\n      setDialogConfigs(currentDialogConfigs);\n      dialogRef.current?.show();\n    },\n    [setDialogChildren, setDialogConfigs]\n  );\n\n  const hide = useCallback((): void => {\n    dialogRef.current?.hide();\n  }, []);\n\n  const contextValue = useMemo(\n    () =>\n      ({\n        current: dialogRef.current,\n        visibility: !!dialogRef.current?.visible,\n        show,\n        hide\n      }) as PopupContextProps,\n    [show, hide]\n  );\n\n  return (\n    <PopupContext value={contextValue}>\n      <Dialog\n        ref={dialogRef}\n        fullScreen={false}\n        dismissOnBackdropClick={stringToBoolean(dismissOnBackdropClick)}\n        dismissOnEscape={stringToBoolean(dismissOnEscape)}\n        aria-label={dialogConfigs?.['aria-label']}\n      >\n        {!!dialogConfigs && <PopupDialog configurations={dialogConfigs}>{dialogChildren}</PopupDialog>}\n      </Dialog>\n      {children}\n    </PopupContext>\n  );\n};\n\nexport { PopupProvider };\n","import React, { ComponentProps, FC, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport './progress-bar.css';\n\nexport interface ProgressBarProps extends ComponentProps<'div'> {\n  /**\n   * The current value of the progress.\n   */\n  value?: number;\n  /**\n   * The maximum value of the progress.\n   */\n  max?: number;\n  /**\n   * The label text to display.\n   */\n  label?: string;\n  /**\n   * Whether to hide the label or not.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Whether to hide the percentage value or not.\n   */\n  hidePercentageValue?: BooleanProp;\n  /**\n   * Whether the progress is current/active or not.\n   */\n  current?: BooleanProp;\n  /**\n   * Whether the progress has error or not.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Whether the progress bar is the first or not.\n   */\n  isFirst?: boolean;\n  /**\n   * Whether the progress bar is the last or not.\n   */\n  isLast?: boolean;\n  /**\n   * Whether the progress bass is in the middle or not.\n   */\n  isMiddle?: boolean;\n  /**\n   * The flag to set if the progress bar is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const ProgressBar: FC<ProgressBarProps> = ({\n  value = 0,\n  max = 0,\n  className,\n  label,\n  hideLabel,\n  hidePercentageValue,\n  current,\n  hasError,\n  isFirst,\n  isLast,\n  isMiddle,\n  darkMode = false,\n  ...props\n}) => {\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const progressPercentage = max !== 0 ? ((value / max) * 100).toFixed(0) : 0;\n\n  const classes = classNames('agora-progress-bar', className, {\n    'progress-error': stringToBoolean(hasError),\n    'progress-complete': value > 0 && value === max,\n    'progress-empty': value === 0,\n    'progress-progress': stringToBoolean(current) && value < max,\n    'progress-hold': !stringToBoolean(current) && value < max,\n    'progress-bar-border-left': isFirst,\n    'progress-bar-border-right': isLast,\n    'progress-bar-border-horizontal': !isFirst && !isLast && !isMiddle,\n    'dark-mode': darkMode\n  });\n\n  const labelsClasses = classNames('agora-progress-bar progress-bar-labels', {\n    'dark-mode': darkMode\n  });\n\n  const percentageClasses = classNames(labelsClasses, {\n    'sr-only': stringToBoolean(hidePercentageValue),\n    'not-sr-only': !stringToBoolean(hidePercentageValue)\n  });\n\n  return (\n    <div className={classes} {...props}>\n      {!stringToBoolean(hideLabel) && (\n        <label htmlFor={propsClone.id} className={labelsClasses}>\n          {label}\n        </label>\n      )}\n      <progress\n        id={propsClone.id}\n        className=\"progress-bar\"\n        value={value}\n        max={max}\n        aria-valuetext={`${value}/${max}`}\n        aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n      />\n      <p className={percentageClasses} role=\"status\">\n        {progressPercentage}%\n      </p>\n    </div>\n  );\n};\n","import React, { Children, cloneElement, FC, Fragment, HtmlHTMLAttributes, isValidElement, ReactElement, useMemo } from 'react';\n\nimport classNames from 'classnames';\n\nimport { ProgressBarProps } from '@/components/progress-bar';\n\nimport './progress-bar-group.css';\nimport { BooleanProp } from '@/models';\n\nexport interface ProgressBarGroupProps extends HtmlHTMLAttributes<HTMLDivElement> {\n  /**\n   * The label text to display.\n   */\n  label?: string;\n  /**\n   * Whether to hide the label or not.\n   */\n  hideLabel?: boolean;\n  /**\n   * List of progress components to use as children of the group.\n   */\n  children?: ReactElement<ProgressBarProps> | Array<ReactElement<ProgressBarProps>>;\n  /**\n   * Whether to hide the percentage value or not.\n   */\n  hidePercentageValues?: boolean;\n  /**\n   * Whether to display the progress bars in a sequential order or not.\n   */\n  sequential?: boolean;\n  /**\n   * The flag to set if the progress bar group is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const ProgressBarGroup: FC<ProgressBarGroupProps> = ({\n  label,\n  hideLabel,\n  hidePercentageValues,\n  children,\n  sequential,\n  darkMode = false,\n  ...props\n}): ReactElement => {\n  const progressBars = Children.toArray(children);\n\n  const activeCurrent = useMemo(() => {\n    let foundCurrent = false;\n    let currentCount = 0;\n\n    progressBars.forEach((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        if (p.props.current) {\n          currentCount += 1;\n          foundCurrent = true;\n        }\n      }\n    });\n\n    if (!foundCurrent) {\n      return 0;\n    }\n\n    if (foundCurrent && currentCount === 1) {\n      return progressBars.findIndex((p) => isValidElement<ProgressBarProps>(p) && p.props.current);\n    }\n\n    const firstNotCompletedIndex = progressBars.findIndex((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        const validatedValue = Math.max(0, Math.min(p.props.value ?? 0, p.props.max ?? 0));\n\n        return validatedValue < (p.props.max ?? 0);\n      }\n\n      return false;\n    });\n\n    return firstNotCompletedIndex < 0 ? progressBars.length - 1 : firstNotCompletedIndex;\n  }, [progressBars]);\n\n  const sumMaxValues = useMemo(() => {\n    let currentCount = 0;\n\n    progressBars.forEach((p) => {\n      if (isValidElement<ProgressBarProps>(p)) {\n        currentCount += p.props.max ?? 0;\n      }\n    });\n\n    return currentCount;\n  }, [progressBars]);\n\n  // function to render progress bars\n  const renderProgressBars = (child: ReactElement<ProgressBarProps>, index: number) => {\n    const isCurrent = index === activeCurrent;\n    let currentVal = child.props.value ?? 0;\n\n    if (sequential) {\n      currentVal = activeCurrent < index ? 0 : currentVal;\n    }\n    const isFirst = index === 0;\n    const isLast = index === progressBars.length - 1;\n    const isSingle = progressBars.length === 1;\n    const isMiddle = !isFirst && !isLast && !isSingle;\n\n    return cloneElement<ProgressBarProps>(child, {\n      'current': isCurrent,\n      'value': currentVal,\n      'aria-hidden': true,\n      isFirst,\n      isLast,\n      isMiddle,\n      darkMode\n    });\n  };\n\n  // function to be used to calculate the progress value\n  const getProgressValue = () => {\n    let value = 0;\n    Children.forEach(children, (child, index) => {\n      if (isValidElement<ProgressBarProps>(child)) {\n        if (child.props.value !== undefined && child.props.max !== undefined) {\n          if (!sequential || index <= activeCurrent) {\n            value += Math.min(child.props.value, child.props.max);\n          }\n        }\n      }\n    });\n    return Math.round((value / sumMaxValues) * 100);\n  };\n\n  const labelsClasses = classNames('agora-progress-bar progress-bar-labels', {\n    'dark-mode': darkMode\n  });\n\n  const percentageClasses = classNames(labelsClasses, {\n    'sr-only': hidePercentageValues,\n    'not-sr-only': !hidePercentageValues\n  });\n\n  const progressValue = getProgressValue();\n\n  return (\n    <div {...props}>\n      {!hideLabel && (\n        <div aria-hidden className={labelsClasses}>\n          {label}\n        </div>\n      )}\n      <div\n        className=\"progress-bar-group\"\n        role=\"progressbar\"\n        aria-valuenow={progressValue}\n        aria-valuetext={`${progressValue}%`}\n        aria-valuemax={100}\n        aria-label={label}\n      >\n        {Children.map(children, (child, index) =>\n          isValidElement<ProgressBarProps>(child) ? (\n            <Fragment key={child.props.id ?? index}>{renderProgressBars(child, index)}</Fragment>\n          ) : null\n        )}\n      </div>\n      {!hidePercentageValues && (\n        <div className={percentageClasses} role=\"status\">\n          {progressValue}%\n        </div>\n      )}\n    </div>\n  );\n};\n","import React, { ComponentProps, FC, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nimport { HelperText } from '@/components/shared/helper-text';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport './radio.css';\n\nexport interface RadioButtonProps extends ComponentProps<'input'> {\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Sets the input in a error state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below input.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Child elements to render as custom label.\n   */\n  children?: ReactNode;\n  /**\n   * The flag to set if the radio button is in dark mode or light mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n  /**\n   * Show or hide the helper text.\n   */\n  hasHelperText?: BooleanProp;\n  /**\n   * Helper text displayed below checkbox.\n   */\n  helperText?: ReactNode;\n}\n\nconst RadioButton: FC<RadioButtonProps> = ({\n  ref = null,\n  label,\n  hasError,\n  hideLabel,\n  required = true,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  feedbackStateLabel,\n  darkMode,\n  hasHelperText,\n  helperText,\n  children,\n  className = '',\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = props.disabled || props.readOnly ? false : required;\n\n  const inputWrapper = classNames(\n    'agora-radio-button',\n    {\n      disabled: props.disabled,\n      error: stringToBoolean(hasError),\n      dark: stringToBoolean(darkMode)\n    },\n    className\n  );\n\n  return (\n    <>\n      <div hidden={propsClone.hidden} className={inputWrapper}>\n        <input\n          {...propsClone}\n          aria-describedby={hasFeedbackText ? `radio-${propsClone.id}-feedback` : (propsClone['aria-describedby'] ?? undefined)}\n          className=\"inner-input\"\n          type=\"radio\"\n          aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n          ref={ref}\n          required={isRequired}\n          tabIndex={propsClone.disabled ? -1 : 0}\n          disabled={propsClone.disabled}\n        />\n\n        <div className=\"radio-wrapper\">\n          <div className=\"mark-wrapper\">\n            <span className=\"mark\" />\n          </div>\n          {!hideLabel && (\n            <label className=\"label-wrapper\" htmlFor={propsClone.id}>\n              <span className=\"label\">{children ?? label}</span>\n            </label>\n          )}\n        </div>\n      </div>\n      {/* HelperText */}\n      {stringToBoolean(hasHelperText) && <HelperText helperText={helperText} darkMode={darkMode} className=\"!mt-0 ml-[52px]\" />}\n\n      {/* Feedback */}\n      {hasFeedbackText && (\n        <div className=\"agora-radio-button-feedback px-8\">\n          <Feedback\n            id={`radio-${propsClone.id}-feedback`}\n            feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n            feedbackText={feedbackText}\n            feedbackStateLabel={feedbackStateLabel}\n            darkMode={stringToBoolean(darkMode)}\n          />\n        </div>\n      )}\n    </>\n  );\n};\n\nexport { RadioButton };\n","import { Checkbox, CheckboxProps } from '@/components/checkbox';\nimport { InputSelectProps } from '@/components/input-select';\nimport { RadioButton, RadioButtonProps } from '@/components/radio';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, isValidElement, ReactElement } from 'react';\nimport './quiz-option.css';\n\nexport interface QuizOptionProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactElement<RadioButtonProps | CheckboxProps | InputSelectProps>;\n}\n\nexport const QuizOption: FC<QuizOptionProps> = ({ children, className = '', ...props }) => {\n  let isChildrenSelected = false;\n\n  if (isValidElement<RadioButtonProps>(children) && (children as ReactElement).type === RadioButton) {\n    isChildrenSelected = !!children.props.checked;\n  }\n\n  if (isValidElement<CheckboxProps>(children) && (children as ReactElement).type === Checkbox) {\n    isChildrenSelected = !!children.props.checked;\n  }\n\n  //  There is no need to check for input select because there is no need to style it (check figma).\n\n  const QuizOptionsClassName = classNames(className, 'agora-quiz-option', {\n    selected: isChildrenSelected\n  });\n\n  return (\n    <div className={QuizOptionsClassName} {...props}>\n      {children}\n    </div>\n  );\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport { QuizOptionProps } from '@/components/quiz/quiz-option';\n\nexport interface QuizOptionsProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children: ReactElement<QuizOptionProps> | Array<ReactElement<QuizOptionProps>>;\n}\n\nexport const QuizOptions: FC<QuizOptionsProps> = ({ ...props }) => {\n  return <div {...props}>{props.children}</div>;\n};\n","import React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Button } from '@/components/button';\nimport './quiz-item-summary.css';\n\nexport interface QuizItemSummaryProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * The dark mode boolean.\n   */\n  darkMode?: BooleanProp;\n  /**\n   *  Navigation link. It can be a native anchor or any other type of link (example: NextJS link, ReactRouter Link, etc...).\n   */\n  backLink?: ReactNode;\n}\n\nexport const QuizItemSummary: FC<QuizItemSummaryProps> = ({ children, darkMode = false, backLink, className = '', ...props }) => {\n  const QuizItemSummaryClassName = classNames(className, 'agora-quiz-item-summary flex gap-x-32 justify-between items-center flex-wrap');\n\n  return (\n    <div className={QuizItemSummaryClassName} {...props}>\n      <div>{children}</div>\n      <Button\n        hasIcon\n        leadingIcon=\"agora-line-arrow-left-anchor\"\n        leadingIconHover=\"agora-solid-arrow-left-anchor\"\n        variant=\"primary\"\n        appearance=\"link\"\n        darkMode={stringToBoolean(darkMode)}\n      >\n        {backLink}\n      </Button>\n    </div>\n  );\n};\n","import React, { ChangeEvent, Children, cloneElement, FC, HtmlHTMLAttributes, isValidElement, ReactElement, ReactNode, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport { RadioButtonProps } from '@/components/radio';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport interface RadioButtonGroupProps extends Omit<HtmlHTMLAttributes<HTMLFieldSetElement>, 'onChange'> {\n  /**\n   * Group legend.\n   */\n  legend?: ReactNode;\n  /**\n   * Group helper text.\n   */\n  helperText?: ReactNode;\n  /**\n   * Group name\n   */\n  name?: string;\n  /**\n   * Sets the radio button in a error state. This also affects the feedback state.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Feedback text displayed below radio-button.\n   */\n  feedbackText?: ReactNode;\n\n  /**\n   *  List of radio button components to use as children of the group.\n   */\n  children?: ReactElement<RadioButtonProps> | Array<ReactElement<RadioButtonProps>>;\n  /**\n   *  Event triggered whenever any of the radio buttons changes is own state.\n   */\n  onChange?: (evt: ChangeEvent<HTMLInputElement>) => void;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n}\nconst RadioButtonGroup: FC<RadioButtonGroupProps> = ({\n  className,\n  legend,\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  feedbackStateLabel,\n  onChange,\n  helperText,\n  children,\n  name,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const hasFeedbackText = (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText;\n\n  const innerOnChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    onChange?.(evt);\n  };\n\n  const containerClasses = classNames('agora-radio-button-group', className);\n\n  const mappedRadioButtons = Children.map(children, (child) => {\n    if (!isValidElement<RadioButtonProps>(child)) {\n      return null;\n    }\n\n    return cloneElement<RadioButtonProps>(child, {\n      'onChange': innerOnChange,\n      'name': name ?? generatedId,\n      'hasError': stringToBoolean(hasError),\n      'hasFeedback': stringToBoolean(hasFeedback),\n      'aria-describedby': hasFeedbackText ? `radio-group-${generatedId}-feedback` : undefined\n    } as RadioButtonProps);\n  });\n\n  return (\n    <div className={containerClasses}>\n      <fieldset {...props}>\n        <div className=\"flex flex-col gap-8\">\n          {legend && <legend className=\"block text-[var(--color-primary-900)] text-m-medium\">{legend}</legend>}\n\n          {helperText && <span className=\"block text-s-regular text-[var(--color-neutral-700)]\">{helperText}</span>}\n\n          {mappedRadioButtons}\n        </div>\n      </fieldset>\n\n      {/* Feedback */}\n      {hasFeedbackText && (\n        <Feedback\n          id={`radio-group-${generatedId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n        />\n      )}\n    </div>\n  );\n};\n\nexport { RadioButtonGroup };\n","import { SVGIconProps } from '@/models';\nimport { ComponentType, lazy, LazyExoticComponent } from 'react';\n\nexport const scribblesList: Record<string, LazyExoticComponent<ComponentType<SVGIconProps>>> = {\n  // Wave\n  'agora-wave-left-l': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-left-l')),\n  'agora-wave-right-l': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-right-l')),\n  'agora-wave-right-m': lazy<ComponentType<SVGIconProps>>(() => import('./wave/wave-right-m')),\n\n  // Detail\n  'agora-detail-fluid': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-fluid')),\n  'agora-detail-talk': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-talk')),\n  'agora-detail-chat': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-chat')),\n  'agora-detail-movement': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-movement')),\n  'agora-detail-attention': lazy<ComponentType<SVGIconProps>>(() => import('./detail/detail-attention')),\n\n  // Arrow\n  'agora-arrow-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-right')),\n  'agora-arrow-curve-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-curve-right')),\n  'agora-arrow-down-left': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-down-left')),\n  'agora-arrow-loop': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-loop')),\n  'agora-arrow-down-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-down-right')),\n  'agora-arrow-up-right': lazy<ComponentType<SVGIconProps>>(() => import('./arrow/arrow-up-right')),\n\n  // Bold\n  'agora-bold-arrow': lazy<ComponentType<SVGIconProps>>(() => import('./bold/bold-arrow')),\n  'agora-bold-line': lazy<ComponentType<SVGIconProps>>(() => import('./bold/bold-line')),\n\n  // Line\n  'agora-line-straight': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-straight')),\n  'agora-line-zig-zag': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-zig-zag')),\n  'agora-line-zig': lazy<ComponentType<SVGIconProps>>(() => import('./line/line-zig')),\n\n  // Circle\n  'agora-circle-right-l': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-right-l')),\n  'agora-circle-left-l': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-left-l')),\n  'agora-circle-right-xxl': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-right-xxl')),\n  'agora-circle-left-xxl': lazy<ComponentType<SVGIconProps>>(() => import('./circle/circle-left-xxl'))\n};\n\nexport const allScribbles = Object.keys(scribblesList);\n\nexport type ScribblesName = (typeof allScribbles)[number];\n\nexport const isBundledScribbles = (name: string) => {\n  return !!allScribbles.find((i) => i === name);\n};\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, ComponentType, FC, HTMLProps, LazyExoticComponent, Suspense, SVGProps } from 'react';\nimport { BooleanProp, SVGIconProps } from '@/models';\nimport { isBundledScribbles, scribblesList, ScribblesName } from './assets';\nimport './scribbles.css';\nimport { stringToBoolean } from '@/utils';\n\nconst scribblesCache: Record<ScribblesName, LazyExoticComponent<ComponentType<SVGIconProps>>> = {};\n\nconst loadScribbles = (name: ScribblesName): LazyExoticComponent<ComponentType<SVGIconProps>> => {\n  const cachedScribbles = scribblesCache[name];\n\n  if (cachedScribbles) {\n    return cachedScribbles;\n  }\n\n  const lazyScribble = scribblesList[name];\n\n  scribblesCache[name] = lazyScribble;\n\n  return lazyScribble;\n};\n\ntype SuperScribblesProps = SVGProps<SVGSVGElement> & HTMLProps<HTMLImageElement>;\n\nexport interface ScribblesProps extends SuperScribblesProps {\n  /**\n   * Scribbles name to be used.\n   */\n  name: ScribblesName;\n  /**\n   * Dark mode\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Callback to run when scribble is loaded.\n   */\n  onScribblesLoad?: () => void;\n\n  /**\n   * Callback to run when scribble fails to load.\n   */\n  onScribblesError?: () => void;\n}\n\nexport const Scribbles: FC<ScribblesProps> = ({ name, darkMode, onScribblesLoad, onScribblesError, ...props }) => {\n  const classes = classNames('agora-scribbles', props.className, name, {\n    'dark-mode': stringToBoolean(darkMode)\n  });\n\n  const onLoad = () => {\n    onScribblesLoad?.();\n  };\n\n  const onError = () => {\n    onScribblesError?.();\n  };\n\n  //  CHECK IF HAS NAME AND IF EXISTS ON BUNDLE\n  const isScribbles = name !== '' && isBundledScribbles(name);\n  if (!isScribbles) {\n    onError();\n    return;\n  }\n\n  //  LOAD IT\n  const LazyScribble = loadScribbles(name);\n\n  const fullProps = {\n    ...props,\n    className: classes,\n    title: props.title ?? props.alt\n  } as ComponentPropsWithoutRef<'svg'>;\n\n  onLoad();\n\n  return (\n    LazyScribble && (\n      <Suspense>\n        <LazyScribble {...fullProps} />\n      </Suspense>\n    )\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\nimport { BooleanProp } from '@/models';\nimport classNames from 'classnames';\nimport { Button } from '@/components/button';\nimport { stringToBoolean } from '@/utils';\n\nexport interface SearchPageProps extends ComponentProps<'div'> {\n  /**\n   * Current page.\n   */\n  current?: BooleanProp;\n\n  /**\n   * Page number.\n   */\n  pageNumber?: number;\n}\n\nconst SearchPage: FC<SearchPageProps> = ({ ref = null, className, current, pageNumber, ...props }) => {\n  const containerClasses = classNames('search-page', className, {\n    current: stringToBoolean(current)\n  });\n\n  return (\n    <div {...props} ref={ref}>\n      <Button\n        className={containerClasses}\n        appearance=\"link\"\n        aria-label={pageNumber?.toString()}\n        {...(stringToBoolean(current) ? { 'aria-current': 'page' } : {})}\n      >\n        {pageNumber}\n      </Button>\n    </div>\n  );\n};\n\nexport { SearchPage };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC } from 'react';\n\nexport interface SearchPaginationNumberOverlayProps extends ComponentProps<'div'> {\n  /**\n   * Dots value.\n   */\n  value?: string;\n}\n\nconst SearchPaginationNumberOverlay: FC<SearchPaginationNumberOverlayProps> = ({ ref = null, className, value, ...props }) => {\n  const classes = classNames('nav-number-overlay', className);\n\n  return (\n    <div {...props} ref={ref} className={classes}>\n      {value}\n    </div>\n  );\n};\n\nexport { SearchPaginationNumberOverlay };\n","import { Button } from '@/components/button';\nimport { useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { cloneElement, ComponentProps, FC, useEffect, useMemo, useState } from 'react';\nimport { SearchPage, SearchPageProps } from './search-page';\nimport { SearchPaginationNumberOverlay } from './search-pagination-number-overlay';\nimport './search-pagination.css';\n\nexport interface SearchPaginationProps extends Omit<ComponentProps<'nav'>, 'onChange'> {\n  /**\n   * Define the total number of pages.\n   */\n  totalPages?: number;\n\n  /**\n   * The flag to hide previous page button.\n   */\n  hidePreviousPageButton?: BooleanProp;\n\n  /**\n   * The flag to hide next page button.\n   */\n  hideNextPageButton?: BooleanProp;\n\n  /**\n   * Define the number of visible page buttons at the beginning and end.\n   */\n  boundaryCount?: number;\n\n  /**\n   * Define the number of visible page buttons before and after the current page.\n   */\n  siblingCount?: number;\n\n  /**\n   * Search Pagination navigation alternative text.\n   */\n  label: string;\n\n  /**\n   * Next page button alternative text.\n   */\n  nextPageAriaLabel: string;\n\n  /**\n   * Previous page button alternative text.\n   */\n  previousPageAriaLabel: string;\n\n  /**\n   * Defines which page is currently active.\n   */\n  activePage?: number;\n\n  /**\n   *  Event triggered whenever any of the search pages changes is current state.\n   */\n  onChange?: (page: number) => void;\n}\n\nconst SearchPagination: FC<SearchPaginationProps> = ({\n  ref = null,\n  totalPages = 0,\n  className: _className,\n  hidePreviousPageButton,\n  hideNextPageButton,\n  boundaryCount = 0,\n  siblingCount = 0,\n  label,\n  nextPageAriaLabel,\n  previousPageAriaLabel,\n  activePage = 1,\n  onChange,\n  ...props\n}) => {\n  const { width } = useWindowSize();\n  const [activePageInternal, setActivePageInternal] = useState(activePage - 1);\n  const navArrowsClasses = classNames('nav-arrows');\n\n  // Mobile screen limitations\n  if (width < 360) {\n    boundaryCount = 1;\n    siblingCount = 0;\n  }\n\n  useEffect(() => {\n    setActivePageInternal(activePage - 1);\n  }, [activePage]);\n\n  useEffect(() => {\n    asyncTrigger(() => onChange?.(activePageInternal + 1));\n  }, [activePageInternal, onChange]);\n\n  const prev = () => {\n    if (activePageInternal > 0) {\n      setActivePageInternal((prevPage) => prevPage - 1);\n    }\n  };\n\n  const next = () => {\n    if (activePageInternal < totalPages - 1) {\n      setActivePageInternal((prevPage) => prevPage + 1);\n    }\n  };\n\n  const pages = useMemo(() => {\n    return Array.from({ length: totalPages }, (_, index) => {\n      return <SearchPage key={index} pageNumber={index + 1} />;\n    });\n  }, [totalPages]);\n\n  const showAllPagesContent = useMemo(() => {\n    return pages?.map((page, page_index) => {\n      return cloneElement<SearchPageProps>(page, {\n        ...page.props,\n        onClick: () => setActivePageInternal(page_index),\n        current: stringToBoolean(activePageInternal === page_index)\n      } as SearchPageProps);\n    });\n  }, [pages, activePageInternal]);\n\n  const paginationContent = useMemo(() => {\n    // Calculate left and right sibling index and make sure they are within range index 0 and totalPages\n    const leftSiblingIndex = Math.max(activePageInternal - siblingCount, 0);\n    const rightSiblingIndex = Math.min(activePageInternal + siblingCount, totalPages);\n\n    // Get visible pagination numbers\n    const leftRange = pages.slice(0, boundaryCount);\n    const middleRange = pages.slice(leftSiblingIndex, rightSiblingIndex + 1);\n    const rightRange = pages.slice(totalPages - boundaryCount, totalPages);\n    const visiblePages = [...new Set([...leftRange, ...middleRange, ...rightRange])];\n\n    // Preview pagination dots if necessary\n    const shouldShowLeftDots = leftSiblingIndex > boundaryCount;\n    const shouldShowRightDots = rightSiblingIndex < totalPages - (boundaryCount + 1);\n\n    return pages?.map((page, page_index) => {\n      if (visiblePages.some((item) => page == item)) {\n        return cloneElement<SearchPageProps>(page, {\n          ...page.props,\n          onClick: () => setActivePageInternal(page_index),\n          current: stringToBoolean(activePageInternal === page_index)\n        } as SearchPageProps);\n      }\n\n      if (shouldShowLeftDots && page_index == boundaryCount) {\n        return <SearchPaginationNumberOverlay key=\"left-dots\" value=\"...\" />;\n      }\n\n      if (shouldShowRightDots && page_index == totalPages - boundaryCount - 1) {\n        return <SearchPaginationNumberOverlay key=\"right-dots\" value=\"...\" />;\n      }\n    });\n  }, [totalPages, boundaryCount, siblingCount, pages, activePageInternal]);\n\n  return (\n    <nav {...props} aria-label={label} className=\"agora-search-pagination\" ref={ref}>\n      <Button\n        onClick={prev}\n        appearance=\"link\"\n        hasIcon=\"true\"\n        iconOnly=\"true\"\n        leadingIcon=\"agora-solid-chevron-left\"\n        leadingIconHover=\"agora-solid-chevron-left\"\n        disabled={activePageInternal === 0}\n        className={`${navArrowsClasses} ${stringToBoolean(hidePreviousPageButton) ? 'hide-arrow' : 'show-arrow'}`}\n        aria-label={previousPageAriaLabel}\n      ></Button>\n      <div className=\"nav-pages\">{boundaryCount === 0 && siblingCount === 0 ? showAllPagesContent : paginationContent}</div>\n      <Button\n        onClick={next}\n        appearance=\"link\"\n        hasIcon=\"true\"\n        iconOnly=\"true\"\n        trailingIcon=\"agora-solid-chevron-right\"\n        trailingIconHover=\"agora-solid-chevron-right\"\n        disabled={activePageInternal === totalPages - 1}\n        className={`${navArrowsClasses} ${stringToBoolean(hideNextPageButton) ? 'hide-arrow' : 'show-arrow'}`}\n        aria-label={nextPageAriaLabel}\n      ></Button>\n    </nav>\n  );\n};\n\nexport { SearchPagination };\n","import { RefObject } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\n// Function to, when sidebar navigation, expand all items until level of current item.\nexport const openOnCurrentItem = (sidebarRef: RefObject<HTMLUListElement>, flat: BooleanProp) => {\n  const agoraSidebar: HTMLUListElement | null = sidebarRef.current as unknown as HTMLUListElement;\n  const treeItems = agoraSidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLAnchorElement[];\n  const currentTreeItem = [...treeItems].find((e) => e.ariaCurrent === 'page');\n\n  if (stringToBoolean(flat)) {\n    currentTreeItem?.parentElement?.classList?.add('agora-sidebar-anchor-item-current');\n  } else {\n    let initialPrevItem;\n    if (currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling?.classList.contains('agora-sidebar-button-item')) {\n      currentTreeItem?.parentElement?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling as HTMLElement;\n    } else {\n      currentTreeItem?.closest('.agora-link-wrapper')?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n    }\n    let elements: HTMLElement[] = [...[initialPrevItem]];\n    while (initialPrevItem) {\n      if (\n        (initialPrevItem as HTMLElement)\n          ?.closest('.agora-sidebar-content-item')\n          ?.previousElementSibling?.classList.contains('agora-sidebar-button-item')\n      ) {\n        initialPrevItem = (initialPrevItem as HTMLElement)?.closest('.agora-sidebar-content-item')?.previousElementSibling;\n      } else {\n        initialPrevItem = (initialPrevItem as HTMLElement)\n          ?.closest('.agora-sidebar-content-item')\n          ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n      }\n\n      if (initialPrevItem) {\n        elements = [...elements, initialPrevItem as HTMLElement];\n      }\n    }\n    elements = elements.reverse();\n\n    elements.forEach((el: HTMLElement) => {\n      if (el?.classList.contains('agora-sidebar-button-item') && !stringToBoolean(el?.ariaExpanded ?? '')) {\n        el.setAttribute('data-custom-triggered-click', 'true');\n        el.click();\n      } else if (!stringToBoolean(el?.ariaExpanded ?? '')) {\n        (el?.querySelector('.icon-wrapper') as HTMLElement)?.click();\n      }\n    });\n  }\n};\n","import { Button } from '@/components/button';\nimport { Dialog, DialogElement } from '@/components/dialog';\nimport { SidebarProps } from '@/components/sidebar';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, RefObject, useRef } from 'react';\nimport { openOnCurrentItem } from '../utils/openOnCurrentItem';\nimport './sidebar-item-navigation-mobile.css';\n\nexport const SidebarItemNavigationMobile: FC<SidebarProps & { sidebarRef: RefObject<HTMLUListElement> }> = ({\n  children,\n  darkMode,\n  flat,\n  sidebarMenuLabel,\n  backButtonLabel,\n  sidebarRef\n}) => {\n  const refDialog = useRef<DialogElement>(null);\n  const backButtonHandler = () => {\n    refDialog.current?.hide();\n  };\n  const openButtonHandler = () => {\n    refDialog.current?.show();\n    if (sidebarRef.current) {\n      // Assertion of tabIndex with/without defined aria-current\n      const treeItems = (sidebarRef.current as HTMLElement).querySelectorAll('[role=\"treeitem\"]');\n      const hasAriaCurrent = !!(sidebarRef.current as HTMLElement).querySelectorAll('[aria-current=\"page\"]');\n      treeItems?.forEach((itemTree, idx) => {\n        if (itemTree.hasAttribute('aria-current') && hasAriaCurrent) {\n          itemTree.setAttribute('tabIndex', '0');\n        } else if (!hasAriaCurrent && idx === 0) {\n          itemTree.setAttribute('tabIndex', '0');\n        } else {\n          itemTree.setAttribute('tabIndex', '-1');\n        }\n      });\n      openOnCurrentItem(sidebarRef, flat ?? 'false');\n    }\n  };\n\n  const sidebarNavigationMobileClassName = classNames(\n    'agora-sidebar-navigation-mobile grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12',\n    {\n      darkMode: stringToBoolean(darkMode)\n    }\n  );\n\n  const sidebarItemNavigationMobileMenuClassName = classNames('agora-snm-menu', { darkMode: stringToBoolean(darkMode) });\n\n  const sidebarItemNavigationMobileBackButtonClassName = classNames('agora-snm-back mb-16', { darkMode: stringToBoolean(darkMode) });\n\n  const sidebarItemNavigationMobileDialogClassName = classNames('z-dialog absolute w-full h-full container', {\n    'bg-white': !stringToBoolean(darkMode),\n    'bg-[var(--color-primary-900)]': stringToBoolean(darkMode)\n  });\n\n  return (\n    <div className={sidebarNavigationMobileClassName}>\n      <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\">\n        <Button\n          className={sidebarItemNavigationMobileMenuClassName}\n          appearance=\"link\"\n          variant=\"primary\"\n          fullWidth\n          hasIcon\n          leadingIcon=\"agora-line-layers-menu\"\n          leadingIconHover=\"agora-solid-layers-menu\"\n          onClick={openButtonHandler}\n        >\n          {sidebarMenuLabel}\n        </Button>\n        <Dialog ref={refDialog} className=\"container\">\n          <div className={sidebarItemNavigationMobileDialogClassName}>\n            <div className=\"grid gap-x-32 xs:grid-cols-4 md:grid-cols-8 xl:grid-cols-12 h-full content-start\">\n              <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12\">\n                <Button\n                  appearance=\"link\"\n                  variant=\"neutral\"\n                  hasIcon\n                  leadingIcon=\"agora-line-arrow-left-anchor\"\n                  leadingIconHover=\"agora-solid-arrow-left-anchor\"\n                  onClick={backButtonHandler}\n                  className={sidebarItemNavigationMobileBackButtonClassName}\n                >\n                  {backButtonLabel}\n                </Button>\n              </div>\n              <div className=\"xs:col-span-4 md:col-span-8 xl:col-span-12 overflow-auto\">{children}</div>\n            </div>\n          </div>\n        </Dialog>\n      </div>\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, {\n  Children,\n  cloneElement,\n  ComponentPropsWithoutRef,\n  FC,\n  isValidElement,\n  ReactElement,\n  ReactNode,\n  RefObject,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { SidebarVariantType } from './models/sidebar-variant.type';\nimport { SidebarItemProps } from './sidebar-item';\nimport { SidebarItemNavigationMobile } from './sidebar-item-navigation-mobile/sidebar-item-navigation-mobile';\nimport './sidebar.css';\nimport { openOnCurrentItem } from './utils/openOnCurrentItem';\n\nexport interface SidebarProps extends ComponentPropsWithoutRef<'ul'> {\n  /**\n   * Whether the sidebar is for filtering data or for navigation\n   */\n  variant: SidebarVariantType;\n\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n\n  /**\n   * All item tree open. Non-collapsible.\n   */\n  flat?: BooleanProp;\n\n  /**\n   * Sidebar children content\n   */\n  children: ReactElement<SidebarItemProps> | Array<ReactElement<SidebarItemProps>>;\n\n  /**\n   * Sidebar mobile button menu label\n   */\n  sidebarMenuLabel?: ReactNode;\n\n  /**\n   *  Back button label\n   */\n  backButtonLabel?: ReactNode;\n}\n\nexport const Sidebar: FC<SidebarProps> = ({\n  className,\n  children,\n  flat = 'false',\n  variant,\n  darkMode,\n  sidebarMenuLabel,\n  backButtonLabel,\n  ...props\n}) => {\n  let newSidebarItem: ReactElement | Array<ReactElement | undefined> | undefined;\n  let listSidebarItem: Array<ReactElement<SidebarItemProps>> = [];\n  const generateId = useId();\n  const sidebarRef = useRef<HTMLUListElement>(null);\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n  const isMobileAndTablet = width < xlScreen;\n  const [trailingFilter, setTrailingFilter] = useState(false);\n  const [leadingFilter, setLeadingFilter] = useState(false);\n\n  const sidebarClassName = classNames('agora-sidebar', { darkMode: stringToBoolean(darkMode) }, className);\n\n  if (children) {\n    if (!Array.isArray(children)) {\n      [children].forEach((child) => listSidebarItem.push(child));\n    } else {\n      listSidebarItem = children;\n    }\n  }\n\n  if (stringToBoolean(flat)) {\n    newSidebarItem = listSidebarItem?.map((data, index) => {\n      const key = `li-${index}-${generateId}`;\n      return cloneElement(data, {\n        flat: stringToBoolean(flat),\n        variant: variant,\n        key,\n        darkMode: stringToBoolean(darkMode),\n        className: `${trailingFilter ? 'trailed' : ''} ${leadingFilter ? 'leaded' : ''}`\n      });\n    });\n  } else {\n    newSidebarItem = listSidebarItem?.map((data, index) => {\n      const key = `li-${index}-${generateId}`;\n      return cloneElement(data, {\n        variant: variant,\n        key,\n        darkMode: stringToBoolean(darkMode),\n        className: `${trailingFilter ? 'trailed' : ''} ${leadingFilter ? 'leaded' : ''}`\n      });\n    });\n  }\n\n  useEffect(() => {\n    if (variant === 'navigation' && !isMobileAndTablet) {\n      if (sidebarRef.current) {\n        // Assertion of tabIndex with/without defined aria-current\n        const treeItems = sidebarRef.current.querySelectorAll('[role=\"treeitem\"]');\n        const hasAriaCurrent = !!sidebarRef.current.querySelectorAll('[aria-current=\"page\"]');\n        treeItems?.forEach((itemTree, idx) => {\n          if (itemTree.hasAttribute('aria-current') && hasAriaCurrent) {\n            itemTree.setAttribute('tabIndex', '0');\n          } else if (!hasAriaCurrent && idx === 0) {\n            itemTree.setAttribute('tabIndex', '0');\n          } else {\n            itemTree.setAttribute('tabIndex', '-1');\n          }\n        });\n      }\n\n      openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n\n      const loadHandler = () => {\n        openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n      };\n\n      //When leave focus of sidebar, if current are collapsed and not visible, expand all item until level of current item\n      const bodyFocusHandler = (event: Event) => {\n        if (sidebarRef.current) {\n          if (sidebarRef.current?.contains(event.target as HTMLElement)) {\n            sidebarRef.current?.parentElement?.classList.add('focus');\n          } else {\n            sidebarRef.current?.parentElement?.classList.remove('focus');\n            openOnCurrentItem(sidebarRef as RefObject<HTMLUListElement>, flat);\n          }\n        }\n      };\n\n      document.addEventListener('load', loadHandler);\n      document.addEventListener('focusin', bodyFocusHandler);\n      document.addEventListener('mousedown', bodyFocusHandler);\n\n      return () => {\n        document.removeEventListener('load', loadHandler);\n        document.removeEventListener('focusin', bodyFocusHandler);\n        document.removeEventListener('mousedown', bodyFocusHandler);\n      };\n    }\n\n    if (variant === 'filter') {\n      const checkLeading: boolean[] = [];\n      const checkTrailing: boolean[] = [];\n      if (sidebarRef.current) {\n        const parsedChildren = Children.toArray(children);\n        Children.forEach(parsedChildren, (element) => {\n          if (!isValidElement(element)) {\n            return;\n          }\n          const itemProps = element.props as SidebarItemProps;\n          const foundedLeadingIcon = [itemProps.item].some((a) => !!a.collapsedIconLeading);\n          checkLeading.push(foundedLeadingIcon);\n          const foundedTrailingIcon = [itemProps.item].some((a) => !!a.collapsedIconTrailing);\n          checkTrailing.push(foundedTrailingIcon);\n        });\n\n        if (checkLeading.every((l) => l === false)) {\n          setLeadingFilter(false);\n        } else if (checkLeading.every((l) => l === true)) {\n          setLeadingFilter(false);\n        } else if (checkLeading.some((k) => k)) {\n          setLeadingFilter(true);\n        }\n\n        if (checkTrailing.every((t) => t === false)) {\n          setTrailingFilter(false);\n        } else if (checkTrailing.every((t) => t === true)) {\n          setTrailingFilter(false);\n        } else if (checkTrailing.some((j) => j)) {\n          setTrailingFilter(true);\n        }\n      }\n    }\n  }, [variant, isMobileAndTablet, flat, children]);\n\n  return (\n    <>\n      {(!isMobileAndTablet || variant === 'filter') && (\n        <ul ref={sidebarRef} className={sidebarClassName} {...props} {...(variant === 'navigation' ? { role: 'tree' } : undefined)}>\n          {newSidebarItem}\n        </ul>\n      )}\n      {variant === 'navigation' && isMobileAndTablet && (\n        <SidebarItemNavigationMobile\n          {...props}\n          darkMode={darkMode}\n          variant={variant}\n          sidebarMenuLabel={sidebarMenuLabel}\n          backButtonLabel={backButtonLabel}\n          sidebarRef={sidebarRef as RefObject<HTMLUListElement>}\n        >\n          <ul ref={sidebarRef} className={sidebarClassName} {...props} {...(variant === 'navigation' ? { role: 'tree' } : undefined)}>\n            {newSidebarItem}\n          </ul>\n        </SidebarItemNavigationMobile>\n      )}\n    </>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { ButtonItemProps, LinkItemProps } from '../models';\n\nexport const setIconsExpandCollapsed = (item: ButtonItemProps | LinkItemProps, ariaExpanded: BooleanProp) => {\n  return {\n    leadingIcon: stringToBoolean(ariaExpanded) ? item.collapsedIconLeading : item.expandedIconLeading,\n    leadingIconHover: stringToBoolean(ariaExpanded) ? item.collapsedIconHoverLeading : item.expandedIconHoverLeading,\n    trailingIcon: stringToBoolean(ariaExpanded) ? item.collapsedIconTrailing : item.expandedIconTrailing,\n    trailingIconHover: stringToBoolean(ariaExpanded) ? item.collapsedIconHoverTrailing : item.expandedIconHoverTrailing\n  };\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport const setInitialSidebarItem = (\n  flat: BooleanProp,\n  sidebarItemChildren: HTMLDivElement | HTMLUListElement | null,\n  open: BooleanProp,\n  ariaExpanded: BooleanProp\n): BooleanProp => {\n  if (!sidebarItemChildren) {\n    return stringToBoolean(open);\n  }\n\n  if (stringToBoolean(flat)) {\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return true;\n  } else if (stringToBoolean(open) && stringToBoolean(ariaExpanded)) {\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return stringToBoolean(open);\n  } else if (!stringToBoolean(open)) {\n    sidebarItemChildren.style.maxHeight = '';\n    return stringToBoolean(open);\n  }\n  return stringToBoolean(open);\n};\n","import { stringToBoolean } from '@/utils';\n\nexport const toggleSidebarItem = (sidebarItem: HTMLAnchorElement | HTMLButtonElement) => {\n  if (!sidebarItem.ariaExpanded) {\n    return false;\n  }\n  const sidebarItemExpanded = stringToBoolean(sidebarItem.ariaExpanded);\n  sidebarItem.setAttribute('aria-expanded', (!sidebarItemExpanded).toString());\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { SidebarVariantType } from '../models/sidebar-variant.type';\n\nexport const toggleSidebarItemChildren = (\n  variant: SidebarVariantType,\n  sidebarItemChildren: HTMLDivElement | HTMLUListElement | null\n): BooleanProp => {\n  if (!sidebarItemChildren) {\n    return false;\n  }\n  //If sidebar item children is collapsed then expand it.\n  if (sidebarItemChildren.classList.contains('collapsed')) {\n    sidebarItemChildren.classList.remove('collapsed');\n    sidebarItemChildren.style.maxHeight = '100vh';\n    return true;\n  }\n  // If sidebar item children is expanded then collapse it.\n  else {\n    sidebarItemChildren.classList.add('collapsed');\n    sidebarItemChildren.style.maxHeight = '';\n    if (variant === 'navigation') {\n      const sidebarItemChildrenTreeItem = sidebarItemChildren.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLElement[];\n      const sidebarItemChildrenTreeItemReversed = [...sidebarItemChildrenTreeItem].reverse();\n      // Collapse or expande recursively\n      sidebarItemChildrenTreeItemReversed.forEach((itemTree) => {\n        if (!itemTree.ariaExpanded) {\n          return false;\n        }\n        //Check if is possible to expand and if is a button or a link, to click on icon to expand/collapse.\n        if (stringToBoolean(itemTree.ariaExpanded)) {\n          if (itemTree.classList.contains('agora-sidebar-button-item')) {\n            itemTree.setAttribute('data-custom-triggered-click', 'true');\n            itemTree.click();\n          } else {\n            (itemTree.querySelector('.icon-wrapper') as HTMLElement)?.click();\n          }\n        }\n      });\n    }\n    return false;\n  }\n};\n","import { Button } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { FC, MouseEvent, Ref, useEffect, useId, useImperativeHandle, useRef, useState } from 'react';\nimport { ButtonItemProps, SidebarItemRef } from '../models';\nimport { SidebarItemProps } from '../sidebar-item';\nimport { setIconsExpandCollapsed } from '../utils/setIconsExpandCollapsed';\nimport { setInitialSidebarItem } from '../utils/setInitialSidebarItem';\nimport { toggleSidebarItem } from '../utils/toggleSidebarItem';\nimport { toggleSidebarItemChildren } from '../utils/toggleSidebarItemChildren';\nimport { Pill } from '@/components/pill';\n\nconst SidebarItemFilter: FC<SidebarItemProps> = ({\n  ref = null,\n  children,\n  item,\n  hasPill,\n  pillValue,\n  pillAriaLabel,\n  darkMode,\n  open = false,\n  flat = false\n}) => {\n  const generateId = useId();\n  const buttonItemRef = useRef<HTMLButtonElement>(null);\n  const contentItemRef = useRef<HTMLDivElement>(null);\n\n  const [ariaExpanded, setAriaExpanded] = useState<BooleanProp>(stringToBoolean(open));\n  const ariaExpandedRef = useRef(ariaExpanded);\n  ariaExpandedRef.current = ariaExpanded;\n\n  const buttonItemClassName = classNames('agora-sidebar-btn-item-filter');\n  const contentItemClassName = classNames('agora-sidebar-content-item', {\n    collapsed: !ariaExpanded && !stringToBoolean(flat)\n  });\n\n  const toggleItemContent = () => {\n    setAriaExpanded(toggleSidebarItemChildren('filter', contentItemRef.current));\n  };\n\n  const toggleItemExpand = () => {\n    if (buttonItemRef.current) {\n      toggleSidebarItem(buttonItemRef.current);\n      toggleItemContent();\n    }\n  };\n\n  const onMouseClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    toggleItemExpand();\n    (item as ButtonItemProps).onClick?.(evt);\n  };\n\n  useEffect(() => {\n    setAriaExpanded(setInitialSidebarItem(flat, contentItemRef.current, open, ariaExpandedRef.current));\n  }, [flat, open]);\n\n  useEffect(() => {\n    const shouldBeOpen = stringToBoolean(open);\n\n    setAriaExpanded((prev) => {\n      if (shouldBeOpen !== prev && buttonItemRef.current && contentItemRef.current) {\n        toggleSidebarItem(buttonItemRef.current);\n        return toggleSidebarItemChildren('filter', contentItemRef.current);\n      }\n\n      return prev;\n    });\n  }, [open]);\n\n  useEffect(() => {\n    if ((contentItemRef.current as HTMLElement).classList.contains('collapsed')) {\n      const initialElementsTabindex = [\n        ...(contentItemRef.current as HTMLElement).querySelectorAll(\n          'a:not([tabindex=\"-1\"]), button:not([tabindex=\"-1\"]), input:not([tabindex=\"-1\"]), textarea:not([tabindex=\"-1\"]), select:not([tabindex=\"-1\"]), details:not([tabindex=\"-1\"]), [tabindex]:not([tabindex=\"-1\"])'\n        )\n      ];\n      initialElementsTabindex.forEach((el) => {\n        (el as HTMLElement).tabIndex = -1;\n      });\n    } else {\n      const initialElementsTabindex = [\n        ...(contentItemRef.current as HTMLElement).querySelectorAll(\n          'a:not([tabindex=\"0\"]), button:not([tabindex=\"0\"]), input:not([tabindex=\"0\"]), textarea:not([tabindex=\"0\"]), select:not([tabindex=\"0\"]), details:not([tabindex=\"0\"]), [tabindex]:not([tabindex=\"0\"])'\n        )\n      ];\n      initialElementsTabindex.forEach((el) => {\n        (el as HTMLElement).tabIndex = 0;\n      });\n    }\n  }, [ariaExpanded]);\n\n  const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n  const newItem = { ...item };\n  delete newItem.children;\n  delete newItem.collapsedIconLeading;\n  delete newItem.collapsedIconHoverLeading;\n  delete newItem.expandedIconLeading;\n  delete newItem.expandedIconHoverLeading;\n  delete newItem.collapsedIconTrailing;\n  delete newItem.collapsedIconHoverTrailing;\n  delete newItem.expandedIconTrailing;\n  delete newItem.expandedIconHoverTrailing;\n\n  useImperativeHandle(\n    ref as Ref<SidebarItemRef>,\n    () => {\n      return {\n        current: buttonItemRef.current,\n        isExpanded: ariaExpanded\n      } as SidebarItemRef;\n    },\n    [ariaExpanded]\n  );\n\n  return (\n    <>\n      <div className=\"container-button\">\n        {!stringToBoolean(flat) && (\n          <Button\n            appearance={'link'}\n            variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n            className={buttonItemClassName}\n            fullWidth\n            {...icons}\n            {...(newItem as ButtonItemProps)}\n            darkMode={darkMode}\n            aria-expanded={ariaExpanded}\n            aria-controls={`aria-controls-sidebar-${generateId}-id`}\n            onClick={onMouseClickHandler}\n            ref={buttonItemRef}\n            aria-describedby={`pill-${generateId}`}\n          >\n            <span>{item.children}</span>\n\n            {hasPill && (\n              <div className=\"flex items-center justify-center\">\n                <Pill\n                  id={`pill-${generateId}`}\n                  className={`ml-16 ${ariaExpanded ? 'bg-white' : ''} pill-size`}\n                  variant=\"neutral\"\n                  appearance=\"outline\"\n                  aria-label={pillAriaLabel}\n                  darkMode={darkMode}\n                >\n                  {pillValue}\n                </Pill>\n              </div>\n            )}\n          </Button>\n        )}\n      </div>\n\n      {stringToBoolean(flat) && (\n        <div className=\"agora-sidebar-flat-item\">\n          <span>{item.children}</span>\n          {hasPill && (\n            <div className=\"flex items-center justify-center\">\n              <Pill\n                id={`pill-${generateId}`}\n                className={`ml-16 ${ariaExpanded ? 'bg-white' : ''} pill-size`}\n                variant=\"neutral\"\n                appearance=\"outline\"\n                aria-label={pillAriaLabel}\n                darkMode={darkMode}\n              >\n                {pillValue}\n              </Pill>\n            </div>\n          )}\n        </div>\n      )}\n\n      <div className={contentItemClassName} id={`aria-controls-sidebar-${generateId}-id`} ref={contentItemRef}>\n        {children}\n      </div>\n    </>\n  );\n};\nexport { SidebarItemFilter };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport const getParentTreeItem = (itemTree: HTMLElement, expand: BooleanProp) => {\n  if (itemTree.closest('.agora-sidebar-item')?.parentElement?.classList.contains('.agora-sidebar') && !expand) {\n    return itemTree;\n  }\n  const nodeContent: HTMLElement | null = itemTree.closest('.agora-sidebar-content-item') as HTMLElement;\n  const node: HTMLElement | null = nodeContent?.previousSibling as HTMLElement;\n  if (node && nodeContent) {\n    if (nodeContent.classList.contains('collapsed')) {\n      return false;\n    }\n    if (stringToBoolean(expand)) {\n      nodeContent.classList.remove('collapsed');\n      nodeContent.style.maxHeight = '100vh';\n    }\n\n    return node.querySelector('[role=\"treeitem\"]') ?? node;\n  }\n  if (itemTree.closest('.agora-sidebar') && !stringToBoolean(expand)) {\n    return itemTree;\n  }\n  return false;\n};\n","import { KeyboardEvent, MouseEvent } from 'react';\nimport { getParentTreeItem } from './getParentTreeItem';\n\nexport const toggleParentItemExpand = (itemTree: HTMLElement) => {\n  let parentNode = getParentTreeItem(itemTree, true);\n  while (parentNode) {\n    parentNode.setAttribute('aria-expanded', 'true');\n    parentNode = getParentTreeItem(parentNode as HTMLElement, true);\n  }\n};\n\nexport const navigationSidebarItemHandler = (\n  evt:\n    | MouseEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>\n    | KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>\n) => {\n  const sidebar: HTMLUListElement | null = evt.currentTarget.closest('.agora-sidebar');\n  const treeItems = sidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as HTMLAnchorElement[];\n  treeItems?.forEach((itemTree: HTMLAnchorElement) => {\n    if (itemTree?.href === (evt.currentTarget as HTMLAnchorElement).href && itemTree.parentElement) {\n      itemTree.closest('.agora-link-wrapper')?.classList.add('agora-sidebar-anchor-item-current');\n      itemTree.setAttribute('aria-current', 'page');\n      toggleParentItemExpand(itemTree);\n      itemTree.setAttribute('tabIndex', '0');\n    } else if (itemTree.parentElement) {\n      itemTree.closest('.agora-link-wrapper')?.classList.remove('agora-sidebar-anchor-item-current');\n      itemTree.removeAttribute('aria-current');\n      itemTree.setAttribute('tabIndex', '-1');\n    }\n  });\n};\n","import { stringToBoolean } from '@/utils';\nimport { TreeItemsType } from './treeItemsType';\n\nexport const toggleExpandAllSiblingItems = (itemTree: TreeItemsType) => {\n  const contentParent = itemTree.closest('.agora-sidebar-content-item') ?? itemTree.closest('.agora-sidebar');\n  const directChildrenItems = [\n    ...(contentParent?.querySelectorAll('&>.agora-sidebar-item>*>[role=\"treeitem\"]') as unknown as HTMLAnchorElement[]),\n    ...(contentParent?.querySelectorAll('&>*>[role=\"treeitem\"]') as unknown as HTMLButtonElement[])\n  ];\n  directChildrenItems.forEach((adsItem) => {\n    if (adsItem.ariaExpanded === undefined || adsItem.ariaExpanded === null) {\n      return;\n    }\n    if (!stringToBoolean(adsItem.ariaExpanded) && (adsItem as HTMLAnchorElement).href) {\n      (adsItem.querySelector('.icon-wrapper') as HTMLElement)?.click();\n    } else if (!stringToBoolean(adsItem.ariaExpanded)) {\n      (adsItem as HTMLButtonElement)?.setAttribute('data-custom-triggered-click', 'true');\n      (adsItem as HTMLButtonElement)?.click();\n    }\n  });\n};\n","import { KeyboardEvent } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { getParentTreeItem } from './getParentTreeItem';\nimport { navigationSidebarItemHandler } from './navigationSidebarItemHandler';\nimport { toggleExpandAllSiblingItems } from './toggleExpandAllSiblingItems';\nimport { TreeItemsArray, TreeItemsType } from './treeItemsType';\n\nexport const navigationEnterSpace = (event: KeyboardEvent<TreeItemsType>) => {\n  if (event.currentTarget.classList.contains('agora-sidebar-button-item')) {\n    return;\n  }\n  navigationSidebarItemHandler(event);\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const getAllVisibleItems = (treeItems: TreeItemsArray) => {\n  const allVisibleItems = [];\n  for (const item of treeItems) {\n    const parentNode = getParentTreeItem(item, false);\n    if (parentNode) {\n      allVisibleItems.push(item);\n    }\n  }\n  return allVisibleItems;\n};\n\nexport const navigationUp = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  let prevItem;\n\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  for (const visibleItem of allVisibleItems) {\n    if (visibleItem === event.currentTarget) {\n      break;\n    }\n    prevItem = visibleItem;\n  }\n\n  if (prevItem) {\n    prevItem.focus();\n  } else {\n    allVisibleItems[allVisibleItems.length - 1].focus();\n  }\n\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nconst navigateAndFocusUntilCurrent = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  let nextItem;\n\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  for (let i = allVisibleItems.length - 1; i >= 0; i--) {\n    if (allVisibleItems[i] === event.currentTarget) {\n      break;\n    }\n    nextItem = allVisibleItems[i];\n  }\n  if (nextItem) {\n    nextItem.focus();\n  } else {\n    allVisibleItems[0].focus();\n  }\n};\n\nexport const navigationDown = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  navigateAndFocusUntilCurrent(event, treeItems);\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const navigationRight = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  navigateAndFocusUntilCurrent(event, treeItems);\n};\n\nexport const navigationLeft = (event: KeyboardEvent<TreeItemsType>) => {\n  const prevItem = event.currentTarget?.closest('.agora-sidebar-content-item')?.previousElementSibling;\n  if (prevItem?.classList.contains('agora-sidebar-button-item')) {\n    (prevItem as unknown as HTMLButtonElement)?.focus();\n  } else {\n    (prevItem?.querySelector('[role=\"treeitem\"]') as unknown as HTMLAnchorElement)?.focus();\n  }\n};\n\nexport const navigationTab = (treeItems: TreeItemsArray) => {\n  const currentTreeItem = [...treeItems].find((e) => e.ariaCurrent === 'page');\n  if (currentTreeItem?.closest('.agora-sidebar-content-item')?.classList.contains('collapsed')) {\n    let initialPrevItem;\n    if (currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling?.classList.contains('agora-sidebar-button-item')) {\n      currentTreeItem?.parentElement?.classList.add('agora-sidebar-anchor-item-current');\n      initialPrevItem = currentTreeItem?.closest('.agora-sidebar-content-item')?.previousElementSibling as HTMLElement;\n    } else {\n      initialPrevItem = currentTreeItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n    }\n    let elements: HTMLElement[] = [...[initialPrevItem]];\n    while (initialPrevItem) {\n      initialPrevItem = initialPrevItem\n        ?.closest('.agora-sidebar-content-item')\n        ?.previousElementSibling?.querySelector('[role=\"treeitem\"]') as HTMLElement;\n      if (initialPrevItem) {\n        elements = [...elements, initialPrevItem];\n      }\n    }\n    elements = elements.reverse();\n\n    elements.forEach((el: HTMLElement) => {\n      if (!el?.ariaExpanded) {\n        return;\n      }\n      if (el.classList.contains('agora-sidebar-button-item') && !stringToBoolean(el.ariaExpanded)) {\n        el.setAttribute('data-custom-triggered-click', 'true');\n        el.click();\n      } else if (!stringToBoolean(el.ariaExpanded)) {\n        (el.querySelector('.icon-wrapper') as HTMLElement)?.click();\n      }\n    });\n  }\n};\n\nexport const setFocusByFirstCharacter = (itemTree: TreeItemsType, treeItems: TreeItemsArray, char: string) => {\n  const allVisibleItems = getAllVisibleItems(treeItems);\n\n  char = char.toLowerCase();\n\n  allVisibleItems.forEach((ti: HTMLAnchorElement | HTMLButtonElement | HTMLDivElement) => {\n    if (char === ti.textContent?.trim()[0].toLocaleLowerCase()) {\n      ti.focus();\n    }\n  });\n\n  let i,\n    ti,\n    index = -1;\n  const start = allVisibleItems.indexOf(itemTree) + 1 >= allVisibleItems.length ? 0 : allVisibleItems.indexOf(itemTree) + 1;\n\n  for (i = start; i < allVisibleItems.length; i++) {\n    ti = allVisibleItems[i];\n    if (char === ti.textContent?.trim()[0].toLowerCase()) {\n      index = i;\n      break;\n    }\n  }\n\n  if (index === -1) {\n    for (i = 0; i < start; i++) {\n      ti = allVisibleItems[i];\n      if (char === ti.textContent?.trim()[0].toLowerCase()) {\n        index = i;\n        break;\n      }\n    }\n  }\n\n  if (index > -1) {\n    allVisibleItems[index].focus();\n  }\n};\n\nexport const defaultPrintableCharacters = (event: KeyboardEvent<TreeItemsType>, flat: BooleanProp, treeItems: TreeItemsArray) => {\n  if (event.key == '*' && !stringToBoolean(flat)) {\n    toggleExpandAllSiblingItems(event.currentTarget);\n    event.stopPropagation();\n    event.preventDefault();\n  } else {\n    setFocusByFirstCharacter(event.currentTarget, treeItems, event.key);\n  }\n};\n\nexport const navigationHome = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  if (treeItems) {\n    treeItems[0].focus();\n  }\n  event.stopPropagation();\n  event.preventDefault();\n};\n\nexport const navigationEnd = (event: KeyboardEvent<TreeItemsType>, treeItems: TreeItemsArray) => {\n  if (treeItems) {\n    const allVisibleItems = getAllVisibleItems(treeItems);\n    allVisibleItems[allVisibleItems.length - 1].focus();\n  }\n  event.stopPropagation();\n  event.preventDefault();\n};\n","import { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, {\n  cloneElement,\n  FC,\n  HTMLProps,\n  KeyboardEvent,\n  MouseEvent,\n  PropsWithChildren,\n  ReactElement,\n  ReactNode,\n  useEffect,\n  useId,\n  useRef,\n  useState\n} from 'react';\nimport { SidebarItemProps } from '../sidebar-item';\nimport {\n  defaultPrintableCharacters,\n  navigationDown,\n  navigationEnd,\n  navigationEnterSpace,\n  navigationHome,\n  navigationLeft,\n  navigationRight,\n  navigationTab,\n  navigationUp\n} from '../utils/keyboardSidebarItemHandlers';\nimport { navigationSidebarItemHandler } from '../utils/navigationSidebarItemHandler';\nimport { setIconsExpandCollapsed } from '../utils/setIconsExpandCollapsed';\nimport { setInitialSidebarItem } from '../utils/setInitialSidebarItem';\nimport { toggleSidebarItem } from '../utils/toggleSidebarItem';\nimport { toggleSidebarItemChildren } from '../utils/toggleSidebarItemChildren';\n\nexport const SidebarItemNavigation: FC<SidebarItemProps> = ({ children, variant, item, open = false, flat = false, darkMode }) => {\n  const generateId = useId();\n\n  let newSidebarItem: ReactElement | Array<ReactElement | undefined> | undefined;\n  let newSidebarItemChildren: ReactElement | Array<ReactElement | undefined> | undefined;\n  let listInnerSidebarItem: ReactElement<PropsWithChildren>[] = [];\n  let listSidebarItemChildren: ReactElement<SidebarItemProps>[] = [];\n\n  const [ariaExpanded, setAriaExpanded] = useState<BooleanProp>(stringToBoolean(open));\n  const ariaExpandedRef = useRef(ariaExpanded);\n  ariaExpandedRef.current = ariaExpanded;\n  const [showIconHover, setShowIconHover] = useState<boolean>(false);\n\n  const contentItemClassName = classNames('agora-sidebar-content-item', {\n    collapsed: !stringToBoolean(open) && !stringToBoolean(flat)\n  });\n\n  const anchorItemRef = useRef<HTMLAnchorElement>(null);\n  const buttonItemRef = useRef<HTMLButtonElement>(null);\n  const contentItemRef = useRef<HTMLUListElement>(null);\n\n  const toggleItemContent = () => {\n    setAriaExpanded(toggleSidebarItemChildren('navigation', contentItemRef.current));\n  };\n\n  const toggleItemExpand = () => {\n    if (anchorItemRef.current) {\n      toggleSidebarItem(anchorItemRef.current);\n      toggleItemContent();\n    }\n    if (buttonItemRef.current) {\n      toggleSidebarItem(buttonItemRef.current);\n      toggleItemContent();\n    }\n  };\n\n  const handleAnchorClick = (evt: MouseEvent<HTMLAnchorElement>, data: HTMLProps<HTMLAnchorElement>) => {\n    navigationSidebarItemHandler(evt);\n    data.onClick?.(evt);\n  };\n\n  const handleOnKeyUp = (event: KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>) => {\n    if (event.altKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n    const agoraSidebar: HTMLUListElement | null = event.currentTarget.closest('.agora-sidebar');\n    const treeItems = agoraSidebar?.querySelectorAll('[role=\"treeitem\"]') as unknown as\n      | HTMLAnchorElement[]\n      | HTMLButtonElement[]\n      | HTMLDivElement[];\n    const isPrintableCharacter = (str: string) => {\n      return str.length === 1 && RegExp(/\\S/).exec(str);\n    };\n\n    const handleRightArrow = () => {\n      if (event.currentTarget.getAttribute('aria-expanded') === 'true' && !stringToBoolean(flat)) {\n        navigationRight(event, treeItems);\n      } else if (!stringToBoolean(flat)) {\n        toggleItemExpand();\n      }\n      event.stopPropagation();\n      event.preventDefault();\n    };\n\n    const handleLeftArrow = () => {\n      if (event.currentTarget.getAttribute('aria-expanded') === 'true' && !stringToBoolean(flat)) {\n        toggleItemExpand();\n      } else if (!stringToBoolean(flat)) {\n        navigationLeft(event);\n      }\n      event.stopPropagation();\n      event.preventDefault();\n    };\n\n    if (event.shiftKey) {\n      if (event.code == 'SPACE' || event.code == 'RETURN') {\n        event.stopPropagation();\n      } else if (isPrintableCharacter(event.key)) {\n        defaultPrintableCharacters(event, flat, treeItems);\n      }\n    } else {\n      switch (event.code) {\n        case 'Enter':\n        case 'NumpadEnter':\n        case 'Space':\n          navigationEnterSpace(event);\n          break;\n\n        case 'Up':\n        case 'ArrowUp': {\n          navigationUp(event, treeItems);\n          break;\n        }\n\n        case 'Down':\n        case 'ArrowDown': {\n          navigationDown(event, treeItems);\n          break;\n        }\n\n        case 'Right':\n        case 'ArrowRight':\n          handleRightArrow();\n          break;\n\n        case 'Left':\n        case 'ArrowLeft':\n          handleLeftArrow();\n          break;\n\n        case 'Home':\n          navigationHome(event, treeItems);\n          break;\n\n        case 'End': {\n          navigationEnd(event, treeItems);\n          break;\n        }\n        case 'Tab': {\n          navigationTab(treeItems);\n          break;\n        }\n\n        default:\n          if (isPrintableCharacter(event.key)) {\n            defaultPrintableCharacters(event, flat, treeItems);\n          }\n          break;\n      }\n    }\n  };\n  const handleOnKeyDown = (event: KeyboardEvent<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>) => {\n    switch (event.code) {\n      case 'Enter':\n      case 'NumpadEnter':\n      case 'Space':\n      case 'Up':\n      case 'ArrowUp':\n      case 'Down':\n      case 'ArrowDown':\n      case 'Right':\n      case 'ArrowRight':\n      case 'Left':\n      case 'ArrowLeft':\n      case 'Home':\n      case 'End':\n        event.stopPropagation();\n        event.preventDefault();\n\n        break;\n    }\n  };\n\n  const handleClickIcon = (event: MouseEvent<HTMLElement | HTMLButtonElement>, data?: HTMLProps<HTMLElement | HTMLButtonElement>) => {\n    event.preventDefault();\n    event.stopPropagation();\n    toggleItemExpand();\n    data?.onClick?.(event);\n  };\n\n  const handleMouseEnterIcon = (event: MouseEvent) => {\n    event.preventDefault();\n    event.stopPropagation();\n    setShowIconHover(true);\n  };\n\n  const handleMouseLeaveIcon = (event: MouseEvent) => {\n    event.preventDefault();\n    event.stopPropagation();\n    setShowIconHover(false);\n  };\n\n  const handleMouseDown = (event: MouseEvent<HTMLElement | HTMLButtonElement>, data?: HTMLProps<HTMLElement | HTMLButtonElement>) => {\n    event.preventDefault();\n    data?.onMouseDown?.(event);\n  };\n\n  if (children) {\n    if (!Array.isArray(children)) {\n      [children].forEach((child) => listSidebarItemChildren.push(child as ReactElement<SidebarItemProps>));\n    } else {\n      listSidebarItemChildren = children as ReactElement<SidebarItemProps>[];\n    }\n  }\n  if (item.children) {\n    if (!Array.isArray(item.children)) {\n      [item.children].forEach((child) => listInnerSidebarItem.push(child as ReactElement<PropsWithChildren>));\n    } else {\n      listInnerSidebarItem = item.children as ReactElement<PropsWithChildren>[];\n    }\n  }\n\n  // Used to wrap on LinkWrapper if has link\n  let isLinkedSidebarItem = false;\n  const getFinalFlat = (elements: ReactElement[], childData: ReactElement, key: string) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      if (e === 0) {\n        final = cloneElement(elements[0], {\n          children: childData,\n          key\n        } as HTMLProps<ReactElement>);\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e], { children: final, key } as HTMLProps<ReactElement>);\n        }\n      }\n    }\n    return final;\n  };\n  const getFlatNotDirectAnchor = (data: ReactElement, ariaOwns: string, key: string) => {\n    // Not a direct anchor\n    let childData: ReactElement | null = data;\n    let elements: ReactElement[] = [];\n\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          // Children has href\n          isLinkedSidebarItem = true;\n          childData = cloneElement(childData, {\n            'role': 'treeitem',\n            'aria-expanded': ariaExpanded,\n            'aria-owns': ariaOwns,\n            key,\n            'className':\n              'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n            'ref': anchorItemRef\n          } as HTMLProps<ReactElement>);\n\n          elements = elements.reverse();\n          const final = getFinalFlat(elements, childData, key);\n\n          childData = null;\n          return final;\n        } else {\n          // This childData not has href, search next children\n          elements = [...elements, childData];\n          childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n        }\n      } else {\n        childData = null;\n      }\n    }\n\n    // Not href found\n    return cloneElement(data, {\n      key,\n      className:\n        'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full'\n    } as HTMLProps<ReactElement>);\n  };\n\n  const getFlatSidebarItem = () => {\n    return listInnerSidebarItem?.map((data, index) => {\n      const key = `item-${index}-${generateId}`;\n      const ariaOwns = `treeitem-${generateId}`;\n      if (!(data.props as HTMLProps<ReactElement>).href) {\n        return getFlatNotDirectAnchor(data, ariaOwns, key);\n      } else {\n        // Direct anchor\n        isLinkedSidebarItem = true;\n        return cloneElement(data, {\n          'onClick': (event: MouseEvent<HTMLAnchorElement>) => handleAnchorClick(event, data.props as HTMLProps<HTMLAnchorElement>),\n          'onKeyUp': handleOnKeyUp,\n          'onKeyDown': handleOnKeyDown,\n          'onMouseDown': (event: MouseEvent<HTMLAnchorElement>) => handleMouseDown(event, data.props as HTMLProps<HTMLAnchorElement>),\n          'role': 'treeitem',\n          'aria-expanded': ariaExpanded,\n          'aria-owns': ariaOwns,\n          'children': <span className=\"children-wrapper\">{(data.props as HTMLProps<HTMLElement>).children}</span>,\n          key,\n          'className':\n            'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n          'ref': anchorItemRef\n        } as HTMLProps<HTMLAnchorElement>);\n      }\n    });\n  };\n\n  const anchorIconWrapper = (\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    },\n    data: ReactElement<PropsWithChildren>\n  ) => {\n    return (\n      <>\n        {(icons.leadingIcon || icons.leadingIconHover) && (\n          <span className=\"icon-wrapper mr-8 justify-start\" role=\"none\" onClick={handleClickIcon}>\n            {icons.leadingIcon && (\n              <Icon name={icons.leadingIcon} dimensions=\"m\" aria-hidden {...(showIconHover ? { style: { display: 'none' } } : '')} />\n            )}\n\n            {icons.leadingIconHover && (\n              <Icon name={icons.leadingIconHover} dimensions=\"m\" aria-hidden {...(showIconHover ? '' : { style: { display: 'none' } })} />\n            )}\n          </span>\n        )}\n        <span\n          className={`data-children-wrapper ${icons.leadingIcon || icons.leadingIconHover ? '' : 'pl-[44px]'} ${icons.trailingIcon || icons.trailingIconHover ? '' : 'pr-[44px]'}`}\n        >\n          {[data.props.children].map((e) => {\n            return e as ReactNode;\n          })}\n        </span>\n        {(icons.trailingIcon || icons.trailingIconHover) && (\n          <span className=\"icon-wrapper ml-auto justify-end\" role=\"none\" onClick={handleClickIcon}>\n            {icons.trailingIcon && (\n              <Icon name={icons.trailingIcon} dimensions=\"m\" aria-hidden {...(showIconHover ? { style: { display: 'none' } } : '')} />\n            )}\n            {icons.trailingIconHover && (\n              <Icon name={icons.trailingIconHover} dimensions=\"m\" aria-hidden {...(showIconHover ? '' : { style: { display: 'none' } })} />\n            )}\n          </span>\n        )}\n      </>\n    );\n  };\n\n  const cloneAnchorElement = (data: ReactElement, ariaOwns: string, key: string, dataChildren: ReactElement) => {\n    return cloneElement(data, {\n      'onClick': (event: MouseEvent<HTMLAnchorElement>) => handleAnchorClick(event, data.props as HTMLProps<HTMLAnchorElement>),\n      'onKeyUp': handleOnKeyUp,\n      'onKeyDown': handleOnKeyDown,\n      'onMouseDown': (event: MouseEvent<HTMLAnchorElement>) => handleMouseDown(event, data.props as HTMLProps<HTMLAnchorElement>),\n      'onMouseEnter': handleMouseEnterIcon,\n      'onMouseLeave': handleMouseLeaveIcon,\n      'role': 'treeitem',\n      'aria-expanded': ariaExpanded,\n      'aria-owns': ariaOwns,\n      key,\n      'children': dataChildren,\n      'className':\n        'agora-anchor agora-sidebar-anchor-item inline-flex [&>*]:inline-flex items-center !justify-start [&>.children-wrapper]:w-full',\n      'ref': anchorItemRef\n    } as HTMLProps<HTMLAnchorElement>);\n  };\n\n  const getFinal = (\n    elements: ReactElement<PropsWithChildren>[],\n    key: string,\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    },\n    ariaOwns: string\n  ) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      const insideLoopElements = elements;\n      const dataChildren = anchorIconWrapper(icons, insideLoopElements[0]);\n      if (e === 0) {\n        final = cloneAnchorElement(insideLoopElements[0], ariaOwns, key, dataChildren);\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e], { children: final, key } as HTMLProps<ReactElement>);\n        }\n      }\n    }\n    return final;\n  };\n\n  const getNotDirectAnchor = (\n    data: ReactElement<PropsWithChildren>,\n    ariaOwns: string,\n    key: string,\n    icons: {\n      leadingIcon: string | undefined;\n      leadingIconHover: string | undefined;\n      trailingIcon: string | undefined;\n      trailingIconHover: string | undefined;\n    }\n  ) => {\n    // Not a direct anchor\n    let childData: ReactElement<PropsWithChildren> | null = data;\n    let elements: ReactElement<PropsWithChildren>[] = [];\n\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          // Children has href\n          isLinkedSidebarItem = true;\n          elements = [...elements, childData];\n          elements = elements.reverse();\n\n          childData = null;\n          const final = getFinal(elements, key, icons, ariaOwns);\n\n          return final;\n        } else {\n          // This childData not has href, search next children\n          elements = [...elements, childData];\n          if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n            childData = null;\n          } else {\n            childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement<PropsWithChildren>;\n          }\n        }\n      } else {\n        childData = null;\n      }\n    }\n    if (isLinkedSidebarItem) {\n      const dataChildren = anchorIconWrapper(icons, data);\n      return cloneAnchorElement(data, ariaOwns, key, dataChildren);\n    } else {\n      return cloneElement(data, { key });\n    }\n  };\n\n  const getSidebarItem = () => {\n    return listInnerSidebarItem?.map((data, index) => {\n      const key = `item-${index}-${generateId}`;\n      const ariaOwns = `treeitem-${generateId}`;\n      const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n      if (!(data.props as HTMLProps<ReactElement>).href) {\n        return getNotDirectAnchor(data, ariaOwns, key, icons);\n      } else {\n        isLinkedSidebarItem = true;\n        const dataChildren = anchorIconWrapper(icons, data);\n        return cloneAnchorElement(data, ariaOwns, key, dataChildren);\n      }\n    });\n  };\n\n  const getSidebarItemChildren = () => {\n    return listSidebarItemChildren?.map((data: ReactElement<SidebarItemProps>, index: number) => {\n      const key = `li-${index}-${generateId}`;\n      if (data.props.item) {\n        return cloneElement(data, { flat: `${flat}`, variant: variant, darkMode: stringToBoolean(darkMode), key });\n      } else {\n        return (\n          <li key={key} role=\"none\" className=\"agora-sidebar-item\">\n            {cloneElement(data)}\n          </li>\n        );\n      }\n    });\n  };\n\n  //Flat\n  if (stringToBoolean(flat)) {\n    newSidebarItem = getFlatSidebarItem();\n    newSidebarItemChildren = getSidebarItemChildren();\n  } else {\n    //Not Flat\n    newSidebarItem = getSidebarItem();\n    newSidebarItemChildren = getSidebarItemChildren();\n  }\n\n  useEffect(() => {\n    setAriaExpanded(setInitialSidebarItem(flat, contentItemRef.current, open, ariaExpandedRef.current));\n  }, [flat, open]);\n\n  const icons = setIconsExpandCollapsed(item, ariaExpanded);\n\n  const agoraSidebarButtonItemClassName = classNames('agora-sidebar-button-item', {\n    '!pl-[42px]': icons.leadingIcon === undefined,\n    '!pr-[42px]': icons.trailingIcon === undefined\n  });\n\n  return (\n    <>\n      {isLinkedSidebarItem && newSidebarItem.length > 0 && (\n        <LinkWrapper\n          variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n          appearance=\"link\"\n          fullWidth\n          className=\"min-h-[60px] min-w-[60px] px-16\"\n          darkMode={stringToBoolean(darkMode)}\n        >\n          {newSidebarItem}\n        </LinkWrapper>\n      )}\n      {!isLinkedSidebarItem && newSidebarItem.length > 0 && !stringToBoolean(flat) && (\n        <Button\n          role=\"treeitem\"\n          appearance=\"link\"\n          variant={stringToBoolean(darkMode) ? 'neutral' : 'primary'}\n          className={agoraSidebarButtonItemClassName}\n          fullWidth\n          {...(stringToBoolean(flat) ? undefined : { hasIcon: true })}\n          {...icons}\n          aria-expanded={ariaExpanded}\n          aria-owns={`treeitem-${generateId}`}\n          onClick={(event: MouseEvent<HTMLButtonElement>) => handleClickIcon(event, item as HTMLProps<HTMLButtonElement>)}\n          onKeyUp={handleOnKeyUp}\n          onKeyDown={handleOnKeyDown}\n          ref={buttonItemRef}\n          darkMode={stringToBoolean(darkMode)}\n        >\n          {newSidebarItem}\n        </Button>\n      )}\n      {!isLinkedSidebarItem && stringToBoolean(flat) && item.children && (\n        <div\n          role=\"treeitem\"\n          aria-selected={undefined}\n          tabIndex={-1}\n          className=\"p-16 sidebar-item-non-interactive\"\n          aria-expanded={ariaExpanded}\n          aria-owns={`treeitem-${generateId}`}\n          onKeyUp={handleOnKeyUp}\n          onKeyDown={handleOnKeyDown}\n          onMouseDown={handleMouseDown}\n        >\n          {item.children}\n        </div>\n      )}\n\n      {newSidebarItemChildren && (\n        <ul\n          ref={contentItemRef}\n          className={contentItemClassName}\n          id={`treeitem-${generateId}`}\n          role=\"group\"\n          aria-label={item['aria-label']}\n        >\n          {newSidebarItemChildren}\n        </ul>\n      )}\n    </>\n  );\n};\n","import React, { ComponentProps, FC } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { ButtonItemProps, LinkItemProps } from './models';\nimport { SidebarVariantType } from './models/sidebar-variant.type';\nimport { SidebarItemFilter } from './sidebar-filter/sidebar-item-filter';\nimport './sidebar-item.css';\nimport { SidebarItemNavigation } from './sidebar-navigation/sidebar-item-navigation';\n\nexport interface SidebarItemProps extends ComponentProps<'li'> {\n  /**\n   * Item of sidebar\n   */\n  item: ButtonItemProps | LinkItemProps;\n  /**\n   * Open on beginning\n   */\n  open?: BooleanProp;\n  /**\n   * All item tree open. Non-collapsible.\n   */\n  flat?: BooleanProp;\n  /**\n   * Whether the sidebar item is on filter sidebar or navigation sidebar\n   */\n  variant?: SidebarVariantType;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Show or hide the pill\n   */\n  hasPill?: boolean;\n  /**\n   * Sets the pill value\n   */\n  pillValue?: number;\n  /**\n   * Sets the pill aria-label\n   */\n  pillAriaLabel?: string;\n}\nconst SidebarItem: FC<SidebarItemProps> = ({ ref = null, className, variant, item, darkMode, ...props }) => {\n  const sidebarItemClassName = classNames('agora-sidebar-item', className);\n\n  return (\n    <li className={sidebarItemClassName} {...(variant === 'navigation' ? { role: 'none' } : undefined)}>\n      {variant === 'filter' && <SidebarItemFilter {...props} darkMode={darkMode} item={item} ref={ref} />}\n      {variant === 'navigation' && (\n        <SidebarItemNavigation {...props} darkMode={darkMode} {...(variant ? { variant: variant } : undefined)} item={item} />\n      )}\n    </li>\n  );\n};\n\nexport { SidebarItem };\n","import { Button } from '@/components/button';\nimport { LinkWrapper } from '@/components/link-wrapper';\nimport React, {\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  Fragment,\n  HTMLAttributes,\n  HTMLProps,\n  KeyboardEvent,\n  ReactElement,\n  RefObject,\n  useCallback,\n  useEffect,\n  useRef,\n  useState\n} from 'react';\nimport { MultipleLinksProps } from './skip-navigation';\nexport interface SkipNavigationMultipleProps extends ComponentProps<'div'> {\n  className: string | undefined;\n  containerSkipNavRef: RefObject<HTMLDivElement>;\n  multipleLinks: MultipleLinksProps;\n}\n\nexport const SkipNavigationMultiple: FC<SkipNavigationMultipleProps> = ({ className, containerSkipNavRef, multipleLinks, ...props }) => {\n  const skipOptionsRef = useRef<HTMLDivElement>(null);\n\n  const [ariaExpand, setAriaExpand] = useState(false);\n\n  const handleClick = () => {\n    skipOptionsRef.current?.classList.add('hidden');\n    containerSkipNavRef.current?.classList.remove('show');\n    setAriaExpand(false);\n  };\n\n  const handleFocus = (evt: FocusEvent<HTMLDivElement>) => {\n    containerSkipNavRef.current?.classList.add('show');\n    props.onFocus?.(evt);\n  };\n\n  const handleBlur = (evt: FocusEvent<HTMLDivElement>) => {\n    if (!ariaExpand) {\n      evt.currentTarget.focus();\n      containerSkipNavRef.current?.classList.remove('show');\n    }\n    props.onBlur?.(evt);\n  };\n\n  const handleKeyUp = (evt: KeyboardEvent<HTMLDivElement>) => {\n    const code = evt.code;\n\n    const allSkipMenuItems: HTMLElement[] = containerSkipNavRef.current?.querySelectorAll('[role=\"menuitem\"]') as unknown as HTMLElement[];\n    const currentIndexFocus = [...allSkipMenuItems].findIndex((mi) => mi === evt.currentTarget);\n    if (code === 'ArrowDown') {\n      if (currentIndexFocus + 1 !== allSkipMenuItems.length) {\n        allSkipMenuItems[currentIndexFocus + 1].focus();\n      } else {\n        allSkipMenuItems[0].focus();\n      }\n    }\n\n    if (code === 'ArrowUp') {\n      if (currentIndexFocus - 1 !== allSkipMenuItems.length && currentIndexFocus - 1 >= 0) {\n        allSkipMenuItems[currentIndexFocus - 1].focus();\n      } else {\n        allSkipMenuItems[allSkipMenuItems.length - 1].focus();\n      }\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const handleSkipOptionControlKeyDownCapture = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (!skipOptionsRef.current) {\n      return;\n    }\n\n    if (ariaExpand) {\n      switch (evt.code) {\n        case 'Escape':\n        case 'Tab':\n          containerSkipNavRef.current?.classList.remove('show');\n          skipOptionsRef.current.classList.add('hidden');\n          setAriaExpand(false);\n          break;\n        case 'ArrowDown':\n        case 'ArrowUp':\n          //  PREVENT SCROLL AND TAB INDEX CHANGE FOCUS\n          evt.preventDefault();\n          evt.stopPropagation();\n          break;\n      }\n    }\n  };\n\n  const handleButtonSkipClick = () => {\n    if (skipOptionsRef.current && !ariaExpand) {\n      skipOptionsRef.current.classList.remove('hidden');\n      setAriaExpand(true);\n    } else if (skipOptionsRef.current && ariaExpand) {\n      skipOptionsRef.current.classList.add('hidden');\n      setAriaExpand(false);\n    }\n  };\n  const handleButtonFocus = () => {\n    containerSkipNavRef.current?.classList.add('show');\n    if (skipOptionsRef.current) {\n      skipOptionsRef.current.classList.remove('hidden');\n      setAriaExpand(true);\n      (document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[0] as HTMLElement)?.focus();\n    }\n  };\n  const handleButtonBlur = () => {\n    containerSkipNavRef.current?.classList.remove('show');\n  };\n\n  const handleButtonKeyUp = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (skipOptionsRef.current) {\n      switch (evt.code) {\n        case 'Escape':\n        case 'Tab':\n          skipOptionsRef.current.classList.add('hidden');\n          setAriaExpand(false);\n          break;\n        case 'ArrowDown':\n          if (ariaExpand) {\n            (document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[0] as HTMLElement)?.focus();\n          }\n          break;\n        case 'ArrowUp':\n          if (ariaExpand) {\n            (\n              document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]')[\n                document.activeElement?.nextElementSibling?.querySelectorAll('[role=\"menuitem\"]').length - 1\n              ] as HTMLElement\n            )?.focus();\n          }\n          break;\n      }\n    }\n  };\n\n  const handleButtonControlKeyDownCapture = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n\n    if (!skipOptionsRef.current) {\n      return;\n    }\n\n    if (ariaExpand) {\n      if (code === 'Tab' || code === 'ArrowDown' || code === 'ArrowUp') {\n        //  PREVENT SCROLL AND TAB INDEX CHANGE FOCUS\n        evt.preventDefault();\n        evt.stopPropagation();\n      }\n    }\n\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      if (skipOptionsRef.current && !ariaExpand) {\n        skipOptionsRef.current.classList.remove('hidden');\n      } else if (skipOptionsRef.current && ariaExpand) {\n        skipOptionsRef.current.classList.add('hidden');\n      }\n    }\n  };\n\n  const getFinal = (elements: ReactElement[], lvl: number) => {\n    let final;\n    for (let e = 0; e < elements.length; e++) {\n      if (e === 0) {\n        final = cloneElement(elements[0] as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n          role: 'menuitem',\n          className: `skip-level-${lvl}`,\n          onClick: handleClick,\n          onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt),\n          onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt),\n          onKeyUp: (evt: KeyboardEvent<HTMLDivElement>) => handleKeyUp(evt),\n          onKeyDownCapture: (evt: KeyboardEvent<HTMLDivElement>) => handleSkipOptionControlKeyDownCapture(evt)\n        });\n      } else if (e > 0) {\n        if (final) {\n          final = cloneElement(elements[e] as ReactElement<HTMLAttributes<HTMLDivElement>>, { children: final });\n        }\n      }\n    }\n    return final;\n  };\n\n  const getNotDirectAnchor = (initLink: ReactElement, lvl: number) => {\n    let childData: ReactElement | null = initLink;\n    let elements: ReactElement[] = [];\n    let isLink: boolean = false;\n    let final;\n    while (childData !== null) {\n      if ((childData.props as HTMLProps<ReactElement>)?.children) {\n        if ((childData.props as HTMLProps<ReactElement>).href) {\n          isLink = true;\n          elements = [...elements, childData];\n          elements = elements.reverse();\n          final = getFinal(elements, lvl);\n          childData = null;\n        } else {\n          elements = [...elements, childData];\n          if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n            childData = null;\n          } else {\n            childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n          }\n        }\n      } else {\n        childData = null;\n      }\n    }\n    if (isLink) {\n      return final;\n    } else {\n      return initLink;\n    }\n  };\n\n  type RecursiveLinkType = Record<string, Record<string, ReactElement>>;\n\n  let groupAnchors: ReactElement[] = [];\n  const recursiveLinks = (links: RecursiveLinkType[], lvl: number = 0) => {\n    links.forEach((level: RecursiveLinkType, index) => {\n      const getKeys = Object.keys(level);\n      const keyIndex = getKeys.findIndex((o) => o != 'link');\n      const key = getKeys[keyIndex];\n\n      let newLink;\n      const init = level[key];\n      const initLink = init.link;\n      const initLength = Object.keys(init).length;\n\n      if ((initLink?.props as HTMLProps<ReactElement>)?.href) {\n        newLink = cloneElement(init.link, {\n          role: 'menuitem',\n          className: `skip-level-${lvl}`,\n          onClick: handleClick,\n          onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt),\n          onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt),\n          onKeyUp: (evt: KeyboardEvent<HTMLDivElement>) => handleKeyUp(evt),\n          onKeyDownCapture: (evt: KeyboardEvent<HTMLDivElement>) => handleSkipOptionControlKeyDownCapture(evt)\n        } as HTMLProps<HTMLDivElement>);\n      } else {\n        newLink = getNotDirectAnchor(initLink, lvl);\n      }\n\n      const idx = `link-lvl-${lvl}-${index}`;\n      if (initLength > 1) {\n        groupAnchors = [\n          ...groupAnchors,\n          <LinkWrapper key={idx} appearance=\"link\" variant=\"neutral\" className=\"skip-option\">\n            {newLink}\n          </LinkWrapper>\n        ];\n\n        recursiveLinks([init as unknown as RecursiveLinkType], lvl + 1);\n      } else {\n        groupAnchors = [\n          ...groupAnchors,\n          <LinkWrapper key={idx} appearance=\"link\" variant=\"neutral\" className=\"skip-option\">\n            {newLink}\n          </LinkWrapper>\n        ];\n      }\n    });\n  };\n\n  const menuSkipNavigation = () => {\n    const menu = multipleLinks?.skipList.map((element, index) => {\n      groupAnchors = [];\n      const idx = index;\n      const links = element.links as unknown as RecursiveLinkType[];\n      recursiveLinks(links, 0);\n      return (\n        <Fragment key={idx}>\n          <div role=\"separator\" id={`skip-separator-${idx}`} className=\"skip-section-separator\">\n            {element.sectionLabel}\n          </div>\n          <div role=\"group\" aria-labelledby={`skip-separator-${idx}`} className=\"flex flex-col\">\n            {groupAnchors}\n          </div>\n        </Fragment>\n      );\n    });\n\n    return menu;\n  };\n  const handleClickOutside = useCallback(\n    (evt: MouseEvent) => {\n      if (!containerSkipNavRef.current?.contains(evt.target as HTMLElement)) {\n        skipOptionsRef.current?.classList.add('hidden');\n        containerSkipNavRef.current?.classList.remove('show');\n        setAriaExpand(false);\n      }\n    },\n    [containerSkipNavRef]\n  );\n\n  useEffect(() => {\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, [handleClickOutside]);\n\n  return (\n    <div className={className} ref={containerSkipNavRef} {...props}>\n      <Button\n        {...multipleLinks.skipButton}\n        appearance=\"link\"\n        className=\"skip-button\"\n        aria-expanded={ariaExpand ? 'true' : 'false'}\n        onClick={handleButtonSkipClick}\n        onFocus={handleButtonFocus}\n        onBlur={handleButtonBlur}\n        onKeyUp={handleButtonKeyUp}\n        onKeyDownCapture={handleButtonControlKeyDownCapture}\n      />\n      <div role=\"menu\" aria-label={multipleLinks.skipAriaLabel} className=\"skip-options hidden\" ref={skipOptionsRef}>\n        {menuSkipNavigation()}\n      </div>\n    </div>\n  );\n};\n","import { LinkWrapper } from '@/components/link-wrapper';\nimport React, {\n  cloneElement,\n  ComponentProps,\n  FC,\n  FocusEvent,\n  HTMLAttributes,\n  HTMLProps,\n  ReactElement,\n  MouseEvent as ReactMouseEvent,\n  RefObject\n} from 'react';\n\nexport interface SkipNavigationSingleProps extends ComponentProps<'div'> {\n  className: string | undefined;\n  containerSkipNavRef: RefObject<HTMLDivElement>;\n  singleLink: ReactElement;\n  targetRef?: RefObject<HTMLElement>;\n}\n\nconst handleClick = (evt: ReactMouseEvent<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  props.targetRef?.current?.focus();\n  props.onClick?.(evt);\n};\n\nconst handleFocus = (evt: FocusEvent<HTMLDivElement>, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  containerSkipNavRef.current?.classList.add('show');\n  props.onFocus?.(evt);\n};\n\nconst handleBlur = (evt: FocusEvent<HTMLDivElement>, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  containerSkipNavRef.current?.classList.remove('show');\n  props.onBlur?.(evt);\n};\n\nconst getFinal = (elements: ReactElement[], containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let final;\n  for (let e = 0; e < elements.length; e++) {\n    if (e === 0) {\n      final = cloneElement(elements[0] as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n        className: 'skip-item',\n        onClick: (evt: ReactMouseEvent<HTMLDivElement>) => handleClick(evt, props),\n        onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt, containerSkipNavRef, props),\n        onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt, containerSkipNavRef, props)\n      });\n    } else if (e > 0) {\n      if (final) {\n        final = cloneElement(elements[e] as ReactElement<HTMLAttributes<HTMLDivElement>>, { children: final });\n      }\n    }\n  }\n  return final;\n};\n\nconst getNotDirectAnchor = (singleLink: ReactElement, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let childData: ReactElement | null = singleLink;\n  let elements: ReactElement[] = [];\n  let isLink: boolean = false;\n  let final;\n\n  while (childData !== null) {\n    if ((childData.props as HTMLProps<ReactElement>)?.children) {\n      if ((childData.props as HTMLProps<ReactElement>).href) {\n        isLink = true;\n        elements = [...elements, childData];\n        elements = elements.reverse();\n        final = getFinal(elements, containerSkipNavRef, props);\n        childData = null;\n      } else {\n        elements = [...elements, childData];\n        if (childData === (childData.props as HTMLProps<ReactElement>).children) {\n          childData = null;\n        } else {\n          childData = (childData.props as HTMLProps<ReactElement>).children as ReactElement;\n        }\n      }\n    } else {\n      childData = null;\n    }\n  }\n  if (isLink) {\n    return final;\n  } else {\n    return singleLink;\n  }\n};\n\nconst buildAnchor = (singleLink: ReactElement, containerSkipNavRef: RefObject<HTMLDivElement>, props: SkipNavigationSingleProps) => {\n  let newSingleLink;\n\n  if (singleLink && (singleLink?.props as HTMLProps<ReactElement>).href) {\n    newSingleLink = cloneElement(singleLink as ReactElement<HTMLAttributes<HTMLDivElement>>, {\n      className: 'skip-item',\n      onClick: (evt: ReactMouseEvent<HTMLDivElement>) => handleClick(evt, props),\n      onFocus: (evt: FocusEvent<HTMLDivElement>) => handleFocus(evt, containerSkipNavRef, props),\n      onBlur: (evt: FocusEvent<HTMLDivElement>) => handleBlur(evt, containerSkipNavRef, props)\n    });\n  } else {\n    newSingleLink = getNotDirectAnchor(singleLink, containerSkipNavRef, props);\n  }\n\n  return newSingleLink;\n};\n\nexport const SkipNavigationSingle: FC<SkipNavigationSingleProps> = ({ className, containerSkipNavRef, singleLink, ...props }) => {\n  const newSingleLink = buildAnchor(singleLink, containerSkipNavRef, { className, containerSkipNavRef, singleLink, ...props });\n\n  return (\n    <>\n      {newSingleLink && (\n        <div className={className} ref={containerSkipNavRef} {...props}>\n          <LinkWrapper inline={true}>{newSingleLink}</LinkWrapper>\n        </div>\n      )}\n    </>\n  );\n};\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement, ReactNode, RefObject, useImperativeHandle, useRef } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { ButtonProps } from '@/components/button';\nimport { SkipNavigationMultiple } from './skip-navigation-multiple';\nimport { SkipNavigationSingle } from './skip-navigation-single';\nimport './skip-navigation.css';\n\nexport interface LevelLinks {\n  level1: {\n    link: ReactNode;\n    level2?: {\n      link: ReactNode;\n      level3?: {\n        link: ReactNode;\n      };\n    };\n  };\n}\n\nexport interface SkipListProps {\n  sectionLabel: string;\n  links: LevelLinks[];\n}\nexport interface MultipleLinksProps {\n  skipButton: ButtonProps;\n  skipAriaLabel: string;\n  skipList: SkipListProps[];\n}\n\nexport interface SkipNavigationProps extends ComponentProps<'div'> {\n  /**\n   * Skip navigation multiple links or single link\n   */\n  multiple?: BooleanProp;\n\n  /**\n   * Single Link\n   */\n  singleLink?: ReactElement;\n\n  /**\n   * Multiple Links\n   */\n  multipleLinks?: MultipleLinksProps;\n}\n\nconst SkipNavigation: FC<SkipNavigationProps> = ({ ref = null, multiple = 'false', singleLink, multipleLinks, ...props }) => {\n  const containerSkipNavRef = useRef<HTMLDivElement>(null);\n\n  useImperativeHandle(ref, () => containerSkipNavRef.current as HTMLDivElement);\n\n  const navigationClassName = classNames('agora-skip-navigation container', props.className);\n\n  return (\n    <>\n      {stringToBoolean(multiple) && multipleLinks && (\n        <SkipNavigationMultiple\n          className={navigationClassName}\n          containerSkipNavRef={containerSkipNavRef as RefObject<HTMLDivElement>}\n          multipleLinks={multipleLinks}\n        />\n      )}\n      {!stringToBoolean(multiple) && singleLink && (\n        <SkipNavigationSingle\n          className={navigationClassName}\n          containerSkipNavRef={containerSkipNavRef as RefObject<HTMLDivElement>}\n          singleLink={singleLink}\n          {...props}\n        />\n      )}\n    </>\n  );\n};\n\nexport { SkipNavigation };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactElement } from 'react';\nimport './step-list.css';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\n\nexport interface StepListProps extends ComponentPropsWithoutRef<'ol'> {\n  /**\n   * Children content.\n   */\n  children?: ReactElement<HTMLLIElement> | Array<ReactElement<HTMLLIElement>>;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n}\n\nexport const StepList: FC<StepListProps> = ({ children, darkMode, ...props }) => {\n  const stepListClass = classNames('agora-step-list', { 'dark-mode': stringToBoolean(darkMode) });\n\n  return (\n    <ol className={stepListClass} {...props}>\n      {children}\n    </ol>\n  );\n};\n","import React, { ComponentProps, FC, KeyboardEvent, MouseEvent, ReactElement, useRef, useState } from 'react';\n\nimport { useBreakpointScreenValues, useWindowSize } from '@/hooks';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport { Icon, IconDimensions, IconProps } from '../icon';\nimport { IconSet } from '../shared/icon-set';\nimport { IconItem, IconSetProps, IconSetState } from '../shared/icon-set/icon-set';\nimport './step.css';\n\n/**\n * Available step status.\n */\nexport type StepStatusType = 'done' | 'error' | 'current' | 'draft' | 'disabled' | 'default';\n\nexport interface StepProps extends ComponentProps<'button'> {\n  /**\n   * Defines if the step is interactive. If the parent stepper have interactive prop defined, it will override this prop.\n   */\n  interactive?: BooleanProp;\n  /**\n   * The status of the step.\n   */\n  status?: StepStatusType;\n  /**\n   * Defines if the stepper is in dark mode or not.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst getInteractiveIconSet = (\n  activeState: IconSetState,\n  status: StepStatusType,\n  dimensions: IconDimensions\n): ReactElement<IconSetProps> => {\n  return (\n    <>\n      {status === 'draft' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-edit\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'current' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-edit\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-edit\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'done' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-check\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-check\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-check\" aria-hidden />\n        </IconSet>\n      )}\n      {status === 'error' && (\n        <IconSet className=\"icon-wrapper trailing\" state={activeState}>\n          <IconItem dimensions={dimensions} state=\"default\" name=\"agora-line-alert-triangle\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"hover\" name=\"agora-solid-alert-triangle\" aria-hidden />\n          <IconItem dimensions={dimensions} state=\"active\" name=\"agora-solid-alert-triangle\" aria-hidden />\n        </IconSet>\n      )}\n    </>\n  );\n};\n\nconst getNonInteractiveIcon = (status: StepStatusType, dimensions: IconDimensions): ReactElement<IconProps> => {\n  return (\n    <>\n      {status === 'draft' && <Icon dimensions={dimensions} name=\"agora-line-edit\" aria-hidden />}\n      {status === 'current' && <Icon dimensions={dimensions} name=\"agora-line-edit\" aria-hidden />}\n      {status === 'done' && <Icon dimensions={dimensions} name=\"agora-line-check\" aria-hidden />}\n      {status === 'error' && <Icon dimensions={dimensions} name=\"agora-line-alert-triangle\" aria-hidden />}\n    </>\n  );\n};\n\nexport const Step: FC<StepProps> = ({ interactive = false, status = 'default', darkMode = false, children, ...props }) => {\n  const { width } = useWindowSize();\n  const { xlScreen } = useBreakpointScreenValues();\n\n  const isMobileOrTablet = width < xlScreen;\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n\n  const [activeState, setActiveState] = useState<IconSetState>('default');\n\n  const classes = classNames('step', status, { 'read-only': !stringToBoolean(interactive), 'dark-mode': stringToBoolean(darkMode) });\n\n  const onKeyDownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      buttonRef.current?.classList.add('active');\n\n      setActiveState('active');\n    }\n\n    props.onKeyDown?.(evt);\n  };\n\n  const onKeyUpHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    if (evt.code === 'Enter' || evt.code === 'NumpadEnter' || evt.code === 'Space') {\n      buttonRef.current?.classList.remove('active');\n\n      setActiveState('default');\n\n      buttonRef.current?.setAttribute('data-custom-triggered-click', 'true');\n      buttonRef.current?.click();\n    }\n\n    props.onKeyUp?.(evt);\n  };\n\n  const onMouseEnterHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('hover');\n\n    props.onMouseEnter?.(evt);\n  };\n\n  const onMouseLeaveHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    buttonRef.current?.classList.remove('active');\n\n    props.onMouseLeave?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseDownHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('active');\n\n    buttonRef.current?.classList.add('active');\n\n    props.onMouseDown?.(evt);\n  };\n\n  // Need this to let focus goes on story where no action click defined\n  const onMouseUpHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    evt.preventDefault();\n\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    if (isTouchDevice) {\n      return;\n    }\n\n    setActiveState('default');\n\n    buttonRef.current?.classList.remove('active');\n\n    props.onMouseUp?.(evt);\n  };\n\n  const onClickHandler = (evt: MouseEvent<HTMLButtonElement>) => {\n    const isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\n    //  TRUE MOUSE CLICK OR TOUCH CLICK\n    if (evt.detail > 0) {\n      setActiveState(isTouchDevice ? 'default' : 'hover');\n      props.onClick?.(evt);\n      return;\n    }\n\n    //  CLICK FROM KEYBOARD\n\n    //  NEED TO CHECK THIS ATTRIBUTE BECAUSE FIREFOX DOES NOT TRIGGER CLICK EVENTS WHENEVER THE ENTER/SPACE/NUMPADENTER KEY IS PRESSED.\n    //  TO FIX THAT INCONSISTENCY, WE ADD A CUSTOM ATTRIBUTE TO SIGNAL THE ARTIFICIAL CLICK TRIGGER AND PREVENT THE CHROMIUM BASED BROWSERS OF DUPLICATE CLICK EVENTS.\n    //  ON KEYUP THE CLICK EVENT IS TRIGGERED AND WILL BE ADDED THE CUSTOM ATTRIBUTE. THEN, IF THE BROWSER TRIGGERED ANOTHER CLICK, THE HANDLER WILL NOT FIND THE CUSTOM ATTRIBUTE AND WILL NOT TRIGGER A DUPLICATED EVENT.\n    const shouldTriggerClick = buttonRef.current?.getAttribute('data-custom-triggered-click') === 'true';\n    buttonRef.current?.removeAttribute('data-custom-triggered-click');\n\n    if (!shouldTriggerClick) {\n      evt.preventDefault();\n      return;\n    }\n\n    setActiveState('default');\n    props.onClick?.(evt);\n  };\n\n  return (\n    <li className={classes} {...(status === 'current' ? { 'aria-current': 'step' } : {})}>\n      <button\n        {...props}\n        ref={buttonRef}\n        type=\"button\"\n        disabled={status === 'disabled'}\n        {...(!stringToBoolean(interactive) || status === 'disabled'\n          ? { tabIndex: -1 }\n          : {\n              onClick: onClickHandler,\n              onKeyDown: onKeyDownHandler,\n              onKeyUp: onKeyUpHandler,\n              onMouseDown: onMouseDownHandler,\n              onMouseUp: onMouseUpHandler,\n              onMouseLeave: onMouseLeaveHandler,\n              onMouseEnter: onMouseEnterHandler\n            })}\n      >\n        <span className=\"line\" />\n\n        {stringToBoolean(interactive) && (\n          <span className=\"counter\">{getInteractiveIconSet(activeState, status, isMobileOrTablet ? 'xs' : 'm')}</span>\n        )}\n\n        {!stringToBoolean(interactive) && <span className=\"counter\">{getNonInteractiveIcon(status, isMobileOrTablet ? 'xs' : 'm')}</span>}\n\n        <span className=\"content\">{children}</span>\n      </button>\n    </li>\n  );\n};\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { Children, ComponentProps, FC, isValidElement, ReactElement, useId } from 'react';\nimport { Step, StepProps } from './step';\nimport './stepper.css';\n\nexport interface StepperProps extends ComponentProps<'div'> {\n  /**\n   * Defines if the stepper is interactive or not.\n   */\n  interactive?: BooleanProp;\n  /**\n   * Defines if the stepper is in dark mode or not.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * List of steps.\n   */\n  children?: ReactElement<StepProps> | ReactElement<StepProps>[];\n}\n\nconst Stepper: FC<StepperProps> = ({ ref = null, className, children, interactive = false, darkMode = false, ...props }) => {\n  const generatedId = useId();\n\n  const classes = classNames('agora-stepper', interactive, darkMode, { 'dark-mode': stringToBoolean(darkMode) }, className);\n\n  return (\n    <nav {...props} ref={ref} className={classes}>\n      <ol>\n        {Children.map(children, (c, index) => {\n          if (!isValidElement<StepProps>(c)) {\n            return null;\n          }\n\n          const key = `agora-stepper-${generatedId}-${index}`;\n\n          return (\n            <Step\n              {...c.props}\n              key={key}\n              interactive={typeof interactive !== 'undefined' ? stringToBoolean(interactive) : stringToBoolean(c.props.interactive)}\n              darkMode={typeof darkMode !== 'undefined' ? stringToBoolean(darkMode) : stringToBoolean(c.props.darkMode)}\n            />\n          );\n        })}\n      </ol>\n    </nav>\n  );\n};\n\nexport { Stepper };\n","import { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, KeyboardEvent, MouseEvent, ReactNode, useEffect, useId, useRef, useState } from 'react';\nimport './switch.css';\n\nexport type SwitchPosition = 'start' | 'center' | 'space-between' | 'space-around' | 'space-evenly';\n\nexport interface SwitchProps extends ComponentProps<'input'> {\n  /**\n   * The flag to set dark mode as active or not.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Input label text.\n   */\n  label?: string;\n  /**\n   * Show or hide input label.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Whether the switch is reversed.\n   */\n  reverse?: BooleanProp;\n  /**\n   * The position of the switch.\n   */\n  position?: SwitchPosition;\n  /**\n   * Defines if the Switch should be fluid\n   */\n  fullWidth?: BooleanProp;\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below input text.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlight the switch indicating some error.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n}\n\nconst Switch: FC<SwitchProps> = ({\n  ref = null,\n  darkMode = false,\n  className,\n  label,\n  hideLabel,\n  disabled,\n  reverse,\n  position,\n  fullWidth,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  feedbackStateLabel,\n  hasError,\n  onChange,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const propsClone = { ...props };\n\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const [currentChecked, setCurrentChecked] = useState(stringToBoolean(propsClone.checked ?? propsClone.defaultChecked));\n\n  const wrapperRef = useRef<HTMLDivElement>(null);\n\n  const handleChange = (evt: ChangeEvent<HTMLInputElement>) => {\n    setCurrentChecked((last) => !last);\n    asyncTrigger(() => onChange?.(evt));\n  };\n\n  useEffect(() => {\n    const checked = propsClone.checked ?? propsClone.defaultChecked;\n    if (checked !== undefined) {\n      setCurrentChecked(checked);\n    }\n  }, [propsClone.checked, propsClone.defaultChecked]);\n\n  const handleCustomSwitchKeydown = (evt: KeyboardEvent<HTMLDivElement>) => {\n    if (wrapperRef !== null && (evt.code === 'Space' || evt.code === 'Enter' || evt.code === 'NumpadEnter')) {\n      evt.preventDefault();\n      wrapperRef.current?.querySelector('input')?.click();\n    }\n  };\n\n  const handleCustomSwitchClick = (evt: MouseEvent<HTMLDivElement>) => {\n    if (wrapperRef !== null) {\n      evt.preventDefault();\n      wrapperRef.current?.querySelector('input')?.click();\n    }\n  };\n\n  const switchWrapperClasses = classNames('agora-switch-wrapper', className, {\n    'dark-mode': stringToBoolean(darkMode),\n    'switch-side': stringToBoolean(reverse),\n    [`switch-${position}`]: position,\n    'switch-full-width': stringToBoolean(fullWidth),\n    'switch-disabled': disabled,\n    'switch-focus': hideLabel,\n    'switch-label-focus': !hideLabel,\n    'has-error': stringToBoolean(hasError),\n    'has-feedback': stringToBoolean(hasFeedback),\n    ['feedback-' + feedbackState]: stringToBoolean(hasFeedback) && feedbackState\n  });\n\n  const markerClasses = classNames('toggle-ball', {\n    'icon-disabled': disabled,\n    'icon-off': !currentChecked && !disabled\n  });\n\n  const switchLabelClasses = classNames('switch-label', {\n    'label-disabled': disabled\n  });\n\n  const ariaLabel = props['aria-label'] ?? label;\n\n  return (\n    <div>\n      <div ref={wrapperRef} className={switchWrapperClasses}>\n        <input {...propsClone} type=\"checkbox\" tabIndex={-1} disabled={disabled} onChange={handleChange} ref={ref} id={propsClone.id} />\n        <div\n          className={`toggle-switch ${currentChecked ? 'on' : 'off'} ${disabled ? 'toggle-switch-disabled' : ''}`}\n          role=\"switch\"\n          aria-checked={currentChecked ? 'true' : 'false'}\n          tabIndex={!disabled ? 0 : -1}\n          aria-label={ariaLabel}\n          aria-describedby={\n            (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText ? `switch-${propsClone.id}-feedback` : undefined\n          }\n          onClick={handleCustomSwitchClick}\n          onKeyDown={handleCustomSwitchKeydown}\n        >\n          <span className={markerClasses}>\n            {currentChecked ? (\n              <Icon name=\"agora-solid-check\" aria-hidden className=\"on\" dimensions=\"xs\" />\n            ) : (\n              <Icon name=\"agora-solid-x\" aria-hidden className=\"off\" dimensions=\"xs\" />\n            )}\n          </span>\n        </div>\n        {!hideLabel && label && (\n          <label htmlFor={propsClone.id} className={switchLabelClasses}>\n            {label}\n          </label>\n        )}\n      </div>\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`switch-${propsClone.id}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n          className=\"px-16\"\n        />\n      )}\n    </div>\n  );\n};\n\nexport { Switch };\n","import React, { FC, HTMLAttributes, ReactElement } from 'react';\nimport { TableRowProps } from './table-row';\n\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactElement<TableRowProps> | Array<ReactElement<TableRowProps>>;\n}\n\nconst TableBody: FC<TableBodyProps> = ({ children, ...props }) => {\n  return <tbody {...props}>{children}</tbody>;\n};\n\nexport { TableBody };\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface TableCaptionProps extends HTMLAttributes<HTMLTableCaptionElement> {\n  children: ReactNode;\n}\n\nconst TableCaption: FC<TableCaptionProps> = ({ children, ...props }) => {\n  return <caption {...props}>{children}</caption>;\n};\n\nexport { TableCaption };\n","import React, { FC, ReactNode, TdHTMLAttributes } from 'react';\n\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {\n  children: ReactNode;\n  /**\n   * Header label.\n   */\n  headerLabel: ReactNode;\n  /**\n   * Header identification key.\n   */\n  headerKey?: string;\n  /**\n   * Value of the cell.\n   */\n  value?: string | number | Date;\n}\n\nconst TableCell: FC<TableCellProps> = ({ children, headerKey = '', headerLabel, ...props }) => {\n  return (\n    <td {...props} data-header-key={headerKey} data-label={headerLabel}>\n      {children}\n    </td>\n  );\n};\n\nexport { TableCell };\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface TableFooterProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactNode;\n}\n\nconst TableFooter: FC<TableFooterProps> = ({ children, ...props }) => {\n  return <tfoot {...props}>{children}</tfoot>;\n};\n\nexport { TableFooter };\n","import React, { FC, HTMLAttributes, ReactElement } from 'react';\nimport { TableRowProps } from './table-row';\n\nexport interface TableHeaderProps extends HTMLAttributes<HTMLTableSectionElement> {\n  children: ReactElement<TableRowProps> | Array<ReactElement<TableRowProps>>;\n}\n\nconst TableHeader: FC<TableHeaderProps> = ({ children, ...props }) => {\n  return <thead {...props}>{children}</thead>;\n};\n\nexport { TableHeader };\n","import React, { FC, HTMLAttributes, ReactNode, useMemo } from 'react';\nimport { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { SortOrder } from './models/sort-order.type';\nimport { SortType } from './models/sort-type.type';\n\nconst DESCENDING_ICON_NAMES: Record<SortType, string> = {\n  string: 'agora-line-sort-alpha-up',\n  date: 'agora-solid-sort-generic-up',\n  numeric: 'agora-solid-sort-generic-up'\n};\n\nconst ASCENDING_ICON_NAMES: Record<SortType, string> = {\n  string: 'agora-solid-sort-alpha-down',\n  date: 'agora-solid-sort-generic-down',\n  numeric: 'agora-solid-sort-generic-down'\n};\n\nexport interface TableHeaderCellProps extends HTMLAttributes<HTMLTableCellElement> {\n  children: ReactNode;\n  /**\n   * The scope of the header cell. Defines the set of data cells that the header applies to.\n   * Defaults to \"col\".\n   * */\n  scope?: 'col' | 'row' | 'colgroup' | 'rowgroup';\n  /**\n   * The sort type applied.\n   * */\n  sortType?: SortType;\n  /**\n   * The sort order applied.\n   * */\n  sortOrder?: SortOrder;\n  /**\n   * Callback to be called when the sort change\n   */\n  onSortChange?: (sortOrder: SortOrder) => void;\n}\n\nconst TableHeaderCell: FC<TableHeaderCellProps> = ({ scope = 'col', sortType, sortOrder = 'none', onSortChange, children, ...props }) => {\n  const circularSortOrder = ['none', 'ascending', 'descending'] as SortOrder[];\n  const currentSortOrderIndex = circularSortOrder.findIndex((order) => order === sortOrder);\n\n  const sortIconName = useMemo(() => {\n    if (!sortType) {\n      return '';\n    }\n\n    if (sortOrder === 'ascending') {\n      return ASCENDING_ICON_NAMES[sortType];\n    }\n\n    if (sortOrder === 'descending') {\n      return DESCENDING_ICON_NAMES[sortType];\n    }\n\n    return 'agora-solid-sort-vertical';\n  }, [sortType, sortOrder]);\n\n  const ariaSortValue = useMemo(() => {\n    if (!sortType) {\n      return 'none';\n    }\n\n    if (sortOrder === 'ascending') {\n      return 'ascending';\n    }\n\n    if (sortOrder === 'descending') {\n      return 'descending';\n    }\n\n    return 'none';\n  }, [sortType, sortOrder]);\n\n  const applySort = () => {\n    if (!sortType) {\n      return '';\n    }\n\n    let nextSortOrder = currentSortOrderIndex + 1;\n\n    if (nextSortOrder >= circularSortOrder.length) {\n      nextSortOrder = 0;\n    }\n\n    onSortChange?.(circularSortOrder[nextSortOrder]);\n  };\n\n  return (\n    <th {...props} scope={scope} className={props.className} aria-sort={ariaSortValue}>\n      {sortType && (\n        <Button className=\"table-header-cell\" appearance=\"link\" variant=\"neutral\" aria-label=\"Ordenar\" onClick={applySort}>\n          <span className=\"table-header-cell__content\">\n            <Icon name={sortIconName} aria-hidden />\n            <span className=\"children-wrapper\">{children}</span>\n          </span>\n        </Button>\n      )}\n\n      {!sortType && <span className=\"table-header-cell\">{children}</span>}\n    </th>\n  );\n};\n\nexport { TableHeaderCell };\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n  children: ReactNode;\n}\n\nconst TableRow: FC<TableRowProps> = ({ children, ...props }) => {\n  return <tr {...props}>{children}</tr>;\n};\n\nexport { TableRow };\n","import { Button } from '@/components/button';\nimport { Dropdown, DropdownElement, DropdownOption, DropdownOptionProps, DropdownSection } from '@/components/dropdown';\nimport React, {\n  ComponentProps,\n  FC,\n  KeyboardEvent,\n  MouseEvent as ReactMouseEvent,\n  Ref,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState\n} from 'react';\nimport './table-pagination.css';\nimport { asyncTrigger } from '@/utils';\n\nexport interface TablePaginationProps extends ComponentProps<'div'> {\n  /**\n   * Defines the label for the items per page\n   */\n  itemsPerPageLabel: string;\n  /**\n   * Defines the page size\n   */\n  itemsPerPage: number;\n  /**\n   * Total items of the table\n   */\n  totalItems: number;\n  /**\n   * Array of values to be displayed in the dropdown\n   */\n  availablePageSizes: number[];\n  /**\n   * Current page of the table\n   */\n  currentPage: number;\n  /**\n   * Aria label for the button\n   */\n  buttonDropdownAriaLabel: string;\n  /**\n   * Aria label for the dropdown list\n   */\n  dropdownListAriaLabel: string;\n  /**\n   * Aria label for the previous button\n   */\n  prevButtonAriaLabel?: string;\n  /**\n   * Aria label for the next button\n   */\n  nextButtonAriaLabel?: string;\n  /**\n   * Callback to be called when the page changes\n   */\n  onPageChange?: (newPage: number) => void;\n  /**\n   * Callback to be called when the dropdown changes\n   */\n  onPageSizeChange?: (newPageSize: number) => void;\n}\n\nconst TablePagination: FC<TablePaginationProps> = ({\n  ref = null,\n  itemsPerPageLabel,\n  itemsPerPage,\n  totalItems,\n  availablePageSizes,\n  currentPage,\n  buttonDropdownAriaLabel,\n  dropdownListAriaLabel,\n  prevButtonAriaLabel,\n  nextButtonAriaLabel,\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const buttonRef = useRef<HTMLButtonElement>(null);\n  const dropdownRef = useRef<DropdownElement>(null);\n  const dropdownWrapperRef = useRef<HTMLDivElement>(null);\n\n  const [isDropdownVisible, setIsDropdownVisible] = useState(false);\n\n  const toggleVisibility = () => {\n    if (dropdownRef.current?.visibility) {\n      dropdownRef.current?.hide();\n    } else {\n      dropdownRef.current?.show();\n    }\n\n    buttonRef.current?.classList.remove('active');\n  };\n\n  const onDropdownButtonClickHandler = (evt: ReactMouseEvent<HTMLButtonElement>) => {\n    if (typeof evt.detail === 'number' && evt.detail === 0) {\n      //  EVENT DETAIL IS THE NUMBER OF CLICKS. KEYBOARD DOES NOT ADD A CLICK COUNTER.\n      //  KEYBOARD IS HANDLED ON KEYDOWN\n      return;\n    }\n\n    toggleVisibility();\n  };\n\n  const onDropdownButtonKeydownHandler = (evt: KeyboardEvent<HTMLButtonElement>) => {\n    const code = evt.code;\n\n    if (code === 'Escape' && dropdownRef.current?.visibility) {\n      dropdownRef.current.hide();\n    }\n\n    if (code === 'Enter' || code === 'Space' || code === 'NumpadEnter') {\n      toggleVisibility();\n    }\n  };\n\n  const onShowDropdownHandler = () => {\n    setIsDropdownVisible(true);\n    asyncTrigger(() => {\n      dropdownRef.current?.first();\n    });\n  };\n\n  const onHideDropDownHandler = () => {\n    setIsDropdownVisible(false);\n    asyncTrigger(() => {\n      buttonRef.current?.focus();\n    });\n  };\n\n  const onDropdownChangeHandler = (options: DropdownOptionProps[]) => {\n    if (options.length > 0) {\n      const option = options[0];\n      props.onPageSizeChange?.(+option.value);\n    }\n  };\n\n  useEffect(() => {\n    const handleClickOutside = (evt: MouseEvent) => {\n      if (dropdownRef.current?.visibility && !dropdownWrapperRef.current?.contains(evt.target as HTMLElement)) {\n        dropdownRef.current.hide();\n      }\n    };\n\n    document?.addEventListener('click', handleClickOutside);\n\n    return () => {\n      document?.removeEventListener('click', handleClickOutside);\n    };\n  }, []);\n\n  const totalPages = Math.ceil(totalItems / itemsPerPage);\n\n  const handlePrevPage = () => {\n    props.onPageChange?.(Math.max(0, currentPage - 1));\n  };\n\n  const handleNextPage = () => {\n    props.onPageChange?.(Math.min(currentPage + 1, totalPages - 1));\n  };\n\n  //  Utility to change button icon\n  const iconDefinition = useMemo(() => {\n    if (!isDropdownVisible) {\n      return {\n        default: 'agora-solid-chevron-down',\n        hover: 'agora-line-chevron-down'\n      };\n    }\n\n    return {\n      default: 'agora-solid-chevron-up',\n      hover: 'agora-line-chevron-up'\n    };\n  }, [isDropdownVisible]);\n\n  return (\n    <div className=\"agora-table-pagination\" ref={ref}>\n      <div className=\"section-items\" ref={dropdownWrapperRef}>\n        <Button\n          ref={buttonRef}\n          appearance=\"link\"\n          hasIcon\n          trailingIcon={iconDefinition.default}\n          trailingIconHover={iconDefinition.hover}\n          aria-label={buttonDropdownAriaLabel}\n          role=\"combobox\"\n          aria-controls={generatedId}\n          aria-expanded={isDropdownVisible}\n          onClick={onDropdownButtonClickHandler}\n          onKeyDown={onDropdownButtonKeydownHandler}\n        >\n          {itemsPerPageLabel} {itemsPerPage}\n        </Button>\n\n        <div className=\"absolute -bottom-8 left-0 w-full min-h-[8px]\">\n          <Dropdown\n            id={generatedId}\n            ref={dropdownRef as Ref<HTMLDivElement>}\n            type=\"text\"\n            onHide={onHideDropDownHandler}\n            onShow={onShowDropdownHandler}\n            onChange={onDropdownChangeHandler}\n            hideSectionNames\n            aria-label={dropdownListAriaLabel}\n          >\n            <DropdownSection label=\"pagination\" name=\"page-size-dropdown\">\n              {availablePageSizes.map((ps) => {\n                return (\n                  <DropdownOption key={ps} value={String(ps)}>\n                    {String(ps)}\n                  </DropdownOption>\n                );\n              })}\n            </DropdownSection>\n          </Dropdown>\n        </div>\n      </div>\n      <div className=\"action-buttons\">\n        <div className=\"prev_box\">\n          <Button\n            variant=\"neutral\"\n            darkMode\n            className=\"prev\"\n            hasIcon\n            iconOnly\n            trailingIcon=\"agora-solid-chevron-left\"\n            trailingIconHover=\"agora-line-chevron-left\"\n            onClick={handlePrevPage}\n            disabled={currentPage === 0}\n            aria-label={prevButtonAriaLabel}\n          />\n        </div>\n        <div className=\"next_box\">\n          <Button\n            variant=\"neutral\"\n            darkMode\n            className=\"next\"\n            hasIcon\n            iconOnly\n            trailingIcon=\"agora-solid-chevron-right\"\n            trailingIconHover=\"agora-line-chevron-right\"\n            onClick={handleNextPage}\n            disabled={currentPage === totalPages - 1}\n            aria-label={nextButtonAriaLabel}\n          />\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport { TablePagination };\n","import classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactElement } from 'react';\nimport { TableLayout } from './models/table-layout.type';\nimport { TableBodyProps } from './table-body';\nimport { TableCaptionProps } from './table-caption';\nimport { TableFooterProps } from './table-footer';\nimport { TableHeaderProps } from './table-header';\nimport { TablePagination, TablePaginationProps } from './table-pagination';\nimport './table.css';\n\nexport interface TableProps extends ComponentProps<'table'> {\n  /**\n   * Table children content\n   */\n  children?:\n    | ReactElement<TableCaptionProps>\n    | ReactElement<TableHeaderProps>\n    | ReactElement<TableBodyProps>\n    | ReactElement<TableFooterProps>\n    | Array<\n        ReactElement<TableCaptionProps> | ReactElement<TableHeaderProps> | ReactElement<TableBodyProps> | ReactElement<TableFooterProps>\n      >;\n  /**\n   * Define layout for mobile breakpoint\n   */\n  mobileLayout?: TableLayout;\n  /**\n   * Define layout for tablet breakpoint\n   */\n  tabletLayout?: TableLayout;\n  /**\n   * Define layout for desktop breakpoint\n   */\n  desktopLayout?: TableLayout;\n  /**\n   * Configurations used for pagination\n   */\n  paginationProps?: TablePaginationProps;\n  /**\n   * Alternative text describing the current sort applied.\n   */\n  sortDescription?: string;\n}\n\nconst Table: FC<TableProps> = ({\n  ref = null,\n  className = '',\n  mobileLayout = 'list',\n  tabletLayout = 'table',\n  desktopLayout = 'table',\n  children,\n  paginationProps,\n  sortDescription = '',\n  ...props\n}) => {\n  const tableClassNames = classNames(\n    'agora-table-container',\n    {\n      'layout-table-mobile': mobileLayout === 'table',\n      'layout-list-mobile': mobileLayout === 'list',\n      'layout-table-tablet': tabletLayout === 'table',\n      'layout-list-tablet': tabletLayout === 'list',\n      'layout-table-desktop': desktopLayout === 'table',\n      'layout-list-desktop': desktopLayout === 'list'\n    },\n    className\n  );\n\n  return (\n    <div className=\"agora-table\">\n      <table {...props} className={tableClassNames} ref={ref}>\n        {children}\n      </table>\n      {paginationProps && <TablePagination {...paginationProps} />}\n      <span className=\"sr-only\" aria-live=\"polite\">\n        {sortDescription}\n      </span>\n    </div>\n  );\n};\n\nexport { Table };\n","import classNames from 'classnames';\nimport React, { FC, HTMLAttributes } from 'react';\n\nexport interface TableSelectionCellProps extends Omit<HTMLAttributes<HTMLTableCellElement>, 'onChange'> {\n  /**\n   * Whether this row's checkbox is checked.\n   */\n  checked: boolean;\n  /**\n   * Callback fired when the row checkbox changes.\n   * Receives `true` when checked, `false` when unchecked.\n   */\n  onChange: (checked: boolean) => void;\n  /**\n   * Space-separated list of IDs of elements whose text content provides the\n   * accessible name for this row's checkbox.\n   * Should reference cells in the same row that contain meaningful content\n   * (e.g. name, identifier).\n   *\n   * Falls back to `aria-label=\"Selecionar linha\"` when not provided.\n   */\n  checkboxAriaLabelledBy?: string;\n}\n\nconst TableSelectionCell: FC<TableSelectionCellProps> = ({ checked, onChange, checkboxAriaLabelledBy, className, ...props }) => {\n  const handleChange = (evt: React.ChangeEvent<HTMLInputElement>) => {\n    onChange(evt.currentTarget.checked);\n  };\n\n  const checkboxAccessibleName = checkboxAriaLabelledBy\n    ? { 'aria-labelledby': checkboxAriaLabelledBy }\n    : { 'aria-label': 'Selecionar linha' };\n\n  return (\n    <td {...props} className={classNames('table-selection-cell', className)} data-label=\"\">\n      <label className=\"table-selection-checkbox__label\">\n        <input\n          type=\"checkbox\"\n          className=\"table-selection-checkbox__input\"\n          checked={checked}\n          onChange={handleChange}\n          {...checkboxAccessibleName}\n        />\n        <span className=\"table-selection-checkbox__mark\" aria-hidden=\"true\" />\n      </label>\n    </td>\n  );\n};\n\nexport { TableSelectionCell };\n","import classNames from 'classnames';\nimport React, { FC, HTMLAttributes, useEffect, useId, useRef } from 'react';\nimport { RowSelectionState } from './models/row-selection-state.type';\n\nexport interface TableSelectionHeaderCellProps extends HTMLAttributes<HTMLTableCellElement> {\n  /**\n   * The current selection state of all rows.\n   * - 'none': no rows selected\n   * - 'indeterminate': some rows selected\n   * - 'all': all rows selected\n   */\n  selectionState: RowSelectionState;\n  /**\n   * Callback fired when the select-all checkbox changes.\n   * Receives `true` when the user intends to select all rows, `false` when deselecting all.\n   */\n  onSelectionChange: (checked: boolean) => void;\n}\n\nconst TableSelectionHeaderCell: FC<TableSelectionHeaderCellProps> = ({ selectionState, onSelectionChange, className, ...props }) => {\n  const inputRef = useRef<HTMLInputElement>(null);\n  const descriptionId = useId();\n\n  useEffect(() => {\n    if (inputRef.current) {\n      inputRef.current.indeterminate = selectionState === 'indeterminate';\n    }\n  }, [selectionState]);\n\n  const isChecked = selectionState === 'all';\n\n  const handleChange = (evt: React.ChangeEvent<HTMLInputElement>) => {\n    onSelectionChange(evt.currentTarget.checked);\n  };\n\n  return (\n    <th\n      {...props}\n      className={classNames('table-selection-cell', className)}\n      aria-label=\"Selecionar linhas\"\n      aria-describedby={descriptionId}\n    >\n      <span id={descriptionId} className=\"sr-only\">\n        todas as linhas\n      </span>\n      <label className=\"table-selection-checkbox__label\">\n        <input\n          ref={inputRef}\n          type=\"checkbox\"\n          className=\"table-selection-checkbox__input\"\n          checked={isChecked}\n          onChange={handleChange}\n          aria-label=\"Selecionar linhas\"\n          aria-describedby={descriptionId}\n        />\n        <span className=\"table-selection-checkbox__mark\" aria-hidden=\"true\" />\n      </label>\n    </th>\n  );\n};\n\nexport { TableSelectionHeaderCell };\n","import { Button } from '@/components/button';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentProps, FC, ReactNode } from 'react';\nimport './tag.css';\n\nexport interface TagProps extends ComponentProps<'button'> {\n  /**\n   * Defines if the button uses an icon.\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Defines the name of the icon to use.\n   */\n  icon?: string;\n  /**\n   * Defines the name of the icon to be displayed on mouse hover. If none specified, it will the appropriate variant of the icon.\n   */\n  iconHover?: string;\n  /**\n   * Children content.\n   */\n  children?: ReactNode;\n  /**\n   * Add a darkMode to the button tag.\n   */\n  darkMode?: BooleanProp;\n}\n\nconst Tag: FC<TagProps> = ({ ref = null, darkMode = false, icon = '', iconHover = '', children, className = '', ...props }) => {\n  const tagClassName = classNames('agora-btn-tag', className);\n\n  const currentIcon = icon || 'no-icon';\n  const currentIconHover = iconHover || 'no-icon';\n\n  return (\n    <Button\n      {...props}\n      hasIcon\n      ref={ref}\n      fullWidth={false}\n      variant=\"neutral\"\n      appearance=\"outline\"\n      className={tagClassName}\n      trailingIcon=\"agora-line-x\"\n      trailingIconHover=\"agora-solid-x\"\n      darkMode={stringToBoolean(darkMode)}\n      leadingIcon={stringToBoolean(props.hasIcon) ? currentIcon : undefined}\n      leadingIconHover={stringToBoolean(props.hasIcon) ? currentIconHover : undefined}\n    >\n      {children}\n    </Button>\n  );\n};\n\nexport { Tag };\n","import { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport './timeline-event.css';\n\nexport interface TimelineEventProps extends ComponentPropsWithoutRef<'button'> {\n  /**\n   * Hide the label\n   */\n  hideLabel?: BooleanProp;\n  /**\n   * Label for the event\n   */\n  label?: string;\n  /**\n   * Additional class names\n   */\n  className?: string;\n  /**\n   * Is the event active\n   */\n  active?: boolean;\n  /**\n   * Has an icon\n   */\n  hasIcon?: BooleanProp;\n  /**\n   * Icon name\n   */\n  icon?: string;\n  /**\n   * Icon alt text\n   */\n  altIcon?: string;\n  /**\n   * Determines if the timeline event is interactive or not\n   */\n  interactive?: BooleanProp;\n  /**\n   * Children\n   */\n  children: ReactNode;\n}\n\nexport const TimelineEvent: FC<TimelineEventProps> = ({ label, hideLabel, active, className, interactive, ...props }) => {\n  const timelineEventClassNames = classNames('agora-timeline-step', className, { active: stringToBoolean(active) });\n  const timelineLabelClassNames = classNames('timeline-label', { 'invisible h-0 overflow-hidden': stringToBoolean(hideLabel) });\n\n  const propsClone = { ...props };\n  delete propsClone.children;\n\n  return (\n    <button\n      {...propsClone}\n      className={timelineEventClassNames}\n      tabIndex={interactive ? 0 : -1}\n      aria-current={stringToBoolean(active)}\n      aria-label={stringToBoolean(hideLabel) ? (propsClone['aria-label'] ?? label) : propsClone['aria-label']}\n    >\n      {label && !stringToBoolean(hideLabel) && (\n        <div className={timelineLabelClassNames} aria-labelledby={label}>\n          {label}\n        </div>\n      )}\n      <div className=\"timeline-event-container\">\n        <div className=\"timeline-event-left-indicator\" />\n        <div className=\"timeline-event-dot\">\n          <div className=\"timeline-event\" />\n        </div>\n        <div className=\"timeline-event-right-indicator\" />\n      </div>\n    </button>\n  );\n};\n","import React, { FC } from 'react';\nimport { Icon } from '@/components/icon';\nimport { stringToBoolean } from '@/utils';\nimport { TimelineEventProps } from '../timeline-event/timeline-event';\nimport './timeline-event-vertical.css';\n\nexport const TimelineEventVertical: FC<TimelineEventProps> = ({ hasIcon, icon, altIcon, children }) => {\n  return (\n    <li className=\"agora-timeline-item\">\n      <div className=\"timeline-event\">\n        {!stringToBoolean(hasIcon) ? (\n          <div className=\"timeline-dot\" />\n        ) : (\n          <div className=\"timeline-icon\">\n            <Icon name={icon} alt={altIcon} aria-hidden={!altIcon} />\n          </div>\n        )}\n        <div className=\"timeline-line\" />\n      </div>\n      <div className=\"timeline-content\">{children}</div>\n    </li>\n  );\n};\n","import React, { Children, ComponentPropsWithoutRef, FC, ReactElement, useEffect, useId, useState } from 'react';\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { TimelineEventVertical } from '../shared/timeline-event-vertical';\nimport { TimelineEventProps } from '../shared/timeline-event/timeline-event';\nimport './timeline-vertical.css';\n\nexport interface TimelineVerticalProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Hide the labels\n   */\n  hideLabels: BooleanProp;\n  /**\n   * Timeline events\n   */\n  children: ReactElement<TimelineEventProps> | Array<ReactElement<TimelineEventProps>>;\n}\n\nexport const TimelineVertical: FC<TimelineVerticalProps> = ({ hideLabels, ...props }) => {\n  const generateId = useId();\n  const [events, setEvents] = useState<Array<Array<ReactElement<TimelineEventProps>>>>([]);\n\n  useEffect(() => {\n    const sortedEvents = Children.toArray(props.children) as Array<ReactElement<TimelineEventProps>>;\n\n    const groupedEvents = sortedEvents.reduce(\n      (grouped, event) => {\n        const label = event.props.label ?? '';\n        grouped[label] = grouped[label] || [];\n        grouped[label].push(event);\n        return grouped;\n      },\n      {} as Record<string, ReactElement<TimelineEventProps>[]>\n    );\n\n    const groupedEventsArray = Object.values(groupedEvents);\n\n    setEvents(groupedEventsArray);\n  }, [props.children]);\n\n  return (\n    <div {...props} className={classNames('agora-timeline-vertical')}>\n      {events.map((group, groupIndex) => {\n        const keyGroup = `timeline-group-${groupIndex}-${generateId}`;\n\n        const groupClassNames = classNames('timeline-group', { 'has-label': !stringToBoolean(hideLabels) });\n\n        return (\n          <div key={keyGroup} className={groupClassNames}>\n            {!stringToBoolean(hideLabels) && group[0]?.props.label && (\n              <div className=\"timeline-label-wrapper\">\n                <div className=\"timeline-label\">{group[0].props.label}</div>\n              </div>\n            )}\n            <ul className=\"timeline-items\">\n              {group.map((event, eventIndex) => {\n                const keyEvent = `timeline-event-${groupIndex}-${eventIndex}-${generateId}`;\n                return (\n                  <TimelineEventVertical key={keyEvent} hasIcon={event.props.hasIcon} icon={event.props.icon} altIcon={event.props.altIcon}>\n                    {event.props.children}\n                  </TimelineEventVertical>\n                );\n              })}\n            </ul>\n          </div>\n        );\n      })}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport React, { Children, ComponentPropsWithoutRef, FC, ReactElement, useEffect, useLayoutEffect, useState } from 'react';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { Button } from '@/components/button';\nimport { TimelineEvent, TimelineEventProps } from '../shared/timeline-event/timeline-event';\nimport { TimelineVertical } from '../timeline-vertical';\nimport './timeline-horizontal.css';\n\nexport interface TimelineHorizontalProps extends ComponentPropsWithoutRef<'div'> {\n  /**\n   * Label for the next button\n   **/\n  nextLabel: string;\n  /**\n   * Label for the previous button\n   **/\n  previousLabel: string;\n  /**\n   * Determines if the timeline is interactive or not\n   **/\n  interactive?: BooleanProp;\n  /**\n   * Timeline events\n   **/\n  children: ReactElement<TimelineEventProps> | Array<ReactElement<TimelineEventProps>>;\n}\n\nexport const TimelineHorizontal: FC<TimelineHorizontalProps> = ({\n  children,\n  nextLabel,\n  previousLabel,\n  interactive = true,\n  className,\n  ...props\n}) => {\n  const [isMobile, setIsMobile] = useState(window.innerWidth < 768);\n  const maxVisibleEvents = 6;\n  const [events, setEvents] = useState<Array<ReactElement<TimelineEventProps>>>([]);\n  const [activeEvent, setActiveEvent] = useState<number>(0);\n\n  const [startIndex, setStartIndex] = useState<number>(0);\n  const [endIndex, setEndIndex] = useState<number>(maxVisibleEvents);\n\n  useEffect(() => {\n    const eventChildren = Children.toArray(children) as Array<ReactElement<TimelineEventProps>>;\n    setEvents(eventChildren);\n    const activeIndex = eventChildren.findIndex((child) => child.props.active);\n    setActiveEvent(activeIndex !== -1 ? activeIndex : 0);\n  }, [children]);\n\n  const handleClickEvent = (index: number) => {\n    setActiveEvent(index);\n  };\n\n  const getTimelineStepClasses = (index: number, currentActiveEvent: number) => {\n    return index < currentActiveEvent ? 'completed' : '';\n  };\n\n  const handleNextButtonClick = () => {\n    const newEvent = Math.min(activeEvent + 1, Children.count(children) - 1);\n    setActiveEvent(newEvent);\n\n    if (newEvent >= endIndex) {\n      setStartIndex(startIndex + 1);\n      setEndIndex(endIndex + 1);\n    }\n  };\n\n  const handlePreviousButtonClick = () => {\n    const newEvent = Math.max(activeEvent - 1, 0);\n    setActiveEvent(newEvent);\n\n    if (newEvent < startIndex) {\n      setStartIndex(startIndex - 1);\n      setEndIndex(endIndex - 1);\n    }\n  };\n\n  const selectedContentEvent = Children.map(children, (child, index) => {\n    return index === activeEvent ? child.props.children : null;\n  });\n\n  const visibleEvents = events.slice(startIndex, endIndex);\n\n  useEffect(() => {\n    if (activeEvent > endIndex - 1 || activeEvent < startIndex) {\n      const newStartIndex = Math.max(0, activeEvent - Math.floor(maxVisibleEvents / 2));\n      const newEndIndex = newStartIndex + maxVisibleEvents;\n\n      if (newEndIndex > events.length) {\n        setStartIndex(events.length - maxVisibleEvents);\n        setEndIndex(events.length);\n      } else {\n        setStartIndex(newStartIndex);\n        setEndIndex(newEndIndex);\n      }\n    }\n  }, [activeEvent, events, maxVisibleEvents, startIndex, endIndex]);\n\n  useLayoutEffect(() => {\n    function updateSize() {\n      setIsMobile(window.innerWidth < 768);\n    }\n    window.addEventListener('resize', updateSize);\n    updateSize();\n    return () => window.removeEventListener('resize', updateSize);\n  }, []);\n\n  const renderTimelineActions = () => {\n    const isPreviousButtonDisabled = activeEvent === 0;\n    const isLastButtonDisabled = activeEvent === Children.count(children) - 1;\n\n    return (\n      <div className=\"timeline-actions\">\n        <Button\n          appearance=\"link\"\n          variant=\"primary\"\n          hasIcon\n          leadingIcon=\"agora-line-arrow-left-circle\"\n          leadingIconHover=\"agora-line-arrow-left-circle\"\n          className=\"button-previous\"\n          onClick={handlePreviousButtonClick}\n          disabled={isPreviousButtonDisabled}\n        >\n          {previousLabel}\n        </Button>\n        <Button\n          appearance=\"link\"\n          variant=\"primary\"\n          hasIcon\n          trailingIcon=\"agora-line-arrow-right-circle\"\n          trailingIconHover=\"agora-line-arrow-right-circle\"\n          className=\"button-next\"\n          onClick={handleNextButtonClick}\n          disabled={isLastButtonDisabled}\n        >\n          {nextLabel}\n        </Button>\n      </div>\n    );\n  };\n\n  const timelineClasses = classNames(\n    'agora-timeline-horizontal',\n    {\n      'event-static': !stringToBoolean(interactive)\n    },\n    className\n  );\n\n  return (\n    <div>\n      {isMobile ? (\n        <TimelineVertical {...props} hideLabels={false}>\n          {children}\n        </TimelineVertical>\n      ) : (\n        <div {...props} className={timelineClasses}>\n          <div className=\"timeline-steps\">\n            {visibleEvents.map((event, index) => {\n              const isFirstVisibleEvent = index + startIndex === 0;\n              const isLastVisibleEvent = index + startIndex === endIndex - 1;\n\n              const hasMoreEventsLeft = startIndex > 0;\n              const hasMoreEventsRight = endIndex < events.length;\n\n              const eventClassNames = classNames(getTimelineStepClasses(index + startIndex, activeEvent), {\n                'first-event': isFirstVisibleEvent,\n                'last-event': isLastVisibleEvent && index + startIndex === events.length - 1,\n                'has-more-events-left': hasMoreEventsLeft,\n                'has-more-events-right': hasMoreEventsRight\n              });\n\n              return (\n                <TimelineEvent\n                  key={event.props.id ?? index}\n                  {...event.props}\n                  active={index + startIndex === activeEvent}\n                  onClick={() => handleClickEvent(index + startIndex)}\n                  interactive={stringToBoolean(interactive)}\n                  className={eventClassNames}\n                >\n                  {event.props.children}\n                </TimelineEvent>\n              );\n            })}\n          </div>\n          {stringToBoolean(interactive) && events.length > maxVisibleEvents && renderTimelineActions()}\n          <div className=\"timeline-content\">{selectedContentEvent}</div>\n        </div>\n      )}\n    </div>\n  );\n};\n","import { createContext, useContext } from 'react';\nimport { ToastProps } from './toast';\nimport './toast.css';\n\nexport interface ToastContextProps {\n  showToast: (data: ToastProps, duration?: number) => void;\n  removeToast: (data: ToastProps) => void;\n}\n\nconst ToastContext = createContext<ToastContextProps>({} as ToastContextProps);\n\nconst useToastContext = (): ToastContextProps => {\n  const context = useContext(ToastContext);\n  return context;\n};\n\nexport { ToastContext, useToastContext };\n","import { Button } from '@/components/button';\nimport { Icon } from '@/components/icon';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, ReactNode } from 'react';\nimport { Anchor, AnchorProps } from '../anchor';\nimport { Pill, PillVariant } from '../pill';\nimport { useToastContext } from './toast-context';\nimport './toast.css';\n\nexport type ToastType = 'success' | 'failure' | 'warning' | 'info';\n\ntype ToastPillVariant = Extract<PillVariant, 'success' | 'danger' | 'warning' | 'informative'>;\n\nconst toastTypeToPillVariant: Record<ToastType, ToastPillVariant> = {\n  success: 'success',\n  failure: 'danger',\n  warning: 'warning',\n  info: 'informative'\n};\n\nexport interface ToastProps extends Omit<ComponentPropsWithoutRef<'div'>, 'id' | 'title'> {\n  /**\n   * The id of the toast\n   */\n  id: number | string;\n  /**\n   * Title of the toast\n   */\n  title?: ReactNode;\n  /**\n   * Description of the toast\n   */\n  description: ReactNode;\n  /**\n   * Pill text to apply to the pill component\n   */\n  pillText?: string;\n  /**\n   * Status text to apply to the status component\n   */\n  statusText?: string;\n  /**\n   * Anchor props to apply to the anchor component within the toast\n   */\n  anchor?: AnchorProps;\n  /**\n   * Type variant of the toast\n   */\n  type: ToastType;\n  /**\n   * Alternative text to apply to the toast close button\n   */\n  closeLabel: string;\n  /**\n   * Whether to show the close button on the toast or not\n   */\n  closeButton?: BooleanProp;\n  /**\n   * Callback that's invoked when the toast is dismissed\n   */\n  onDismiss?: () => void;\n}\n\nexport const Toast: FC<ToastProps> = ({\n  className,\n  id,\n  title,\n  description,\n  pillText,\n  statusText,\n  anchor,\n  type,\n  closeLabel,\n  closeButton = true,\n  onDismiss\n}: ToastProps) => {\n  const { removeToast } = useToastContext();\n\n  const getIconNameForType = (selectedType: ToastType): string => {\n    switch (selectedType) {\n      case 'success':\n        return 'agora-solid-check-circle';\n      case 'failure':\n        return 'agora-solid-alert-triangle';\n      case 'warning':\n        return 'agora-solid-alert-circle';\n      default:\n        return 'agora-solid-info-mark';\n    }\n  };\n\n  const handleCloseClick = () => {\n    removeToast({\n      id,\n      type,\n      title,\n      description,\n      closeLabel,\n      onDismiss\n    } as ToastProps);\n  };\n\n  const toastContainerClassnames = classNames('agora-toast', { [`agora-toast-${type}`]: type }, className);\n\n  const statusIconClassNames = classNames('-ml-[10px]', {\n    'fill-warning-600': type === 'warning' || type === 'info',\n    'fill-danger-600': type === 'failure',\n    'fill-success-600': type === 'success'\n  });\n\n  const anchorClassNames = classNames(`!p-0 !no-underline ${anchor?.className} self-start`, {\n    '!text-warning-900': type === 'warning',\n    '!text-danger-600': type === 'failure',\n    '!text-success-600': type === 'success',\n    '!text-informative-600': type === 'info'\n  });\n\n  return (\n    <div className={toastContainerClassnames} role=\"alert\" key={id} aria-label={type}>\n      <Icon className=\"toast-icon mt-[10px]\" name={getIconNameForType(type)} dimensions=\"m\" aria-hidden />\n\n      <div className=\"toast-messages\">\n        {pillText && (\n          <Pill appearance=\"solid\" variant={toastTypeToPillVariant[type]} className=\"toast-pill\" size=\"large\">\n            {pillText}\n          </Pill>\n        )}\n\n        {title && <div className=\"toast-title\">{title}</div>}\n\n        {statusText && (\n          <div className=\"flex justify-start items-center\">\n            <Icon name=\"agora-solid-bullet\" dimensions=\"l\" className={statusIconClassNames} />\n            <span className=\"text-m-regular -ml-[4px]\">{statusText}</span>\n          </div>\n        )}\n\n        <div className=\"toast-description\">{description}</div>\n\n        {anchor && (\n          <div className=\"toast-anchor\">\n            <Anchor\n              {...anchor}\n              hasIcon\n              trailingIcon=\"agora-line-arrow-right-circle\"\n              trailingIconHover=\"agora-line-arrow-right-circle\"\n              className={anchorClassNames}\n            >\n              {anchor.children}\n            </Anchor>\n          </div>\n        )}\n      </div>\n\n      {stringToBoolean(closeButton) && (\n        <Button\n          className=\"toast-close-button\"\n          appearance=\"link\"\n          variant=\"neutral\"\n          onClick={handleCloseClick}\n          aria-label={closeLabel}\n          hasIcon\n          iconOnly\n          trailingIcon=\"agora-line-x\"\n          trailingIconHover=\"agora-solid-x\"\n        />\n      )}\n    </div>\n  );\n};\n","import { useCallback, useState } from 'react';\nimport { ToastProps } from './toast';\nimport { asyncTrigger } from '@/utils';\n\nconst useToast = () => {\n  const [toasts, setToasts] = useState<ToastProps[]>([]);\n\n  const removeToast = useCallback((toast: ToastProps) => {\n    setToasts((prevToasts) => prevToasts.filter((t) => t.id !== toast.id));\n    toast.onDismiss?.();\n  }, []);\n\n  const showToast = useCallback(\n    (toast: ToastProps, duration?: number) => {\n      setToasts((prevToasts) => {\n        return [...prevToasts, toast];\n      });\n\n      if (duration && duration > 0) {\n        asyncTrigger(() => {\n          removeToast(toast);\n        }, duration);\n      }\n    },\n    [removeToast]\n  );\n\n  return { toasts, showToast, removeToast };\n};\n\nexport { useToast };\n","import React, { FC, ReactNode, useMemo } from 'react';\nimport { Toast } from './toast';\nimport { ToastContext } from './toast-context';\nimport './toast.css';\nimport { useToast } from './use-toast';\nimport { useWindowSize } from '@/hooks';\n\nexport type ToastPositions = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n\nexport interface ToastProviderProps {\n  children?: ReactNode;\n  position?: ToastPositions;\n}\nconst ToastProvider: FC<ToastProviderProps> = ({ children, position = 'bottom-right' }: ToastProviderProps) => {\n  const { toasts, showToast, removeToast } = useToast();\n  const { width } = useWindowSize();\n\n  const contextValue = useMemo(\n    () => ({\n      showToast,\n      removeToast\n    }),\n    [showToast, removeToast]\n  );\n\n  const memoToast = useMemo(() => {\n    const VISIBLE_TOAST_NUMBER_MOBILE = 3;\n    const VISIBLE_TOAST_NUMBER_DESKTOP = 5;\n    const isMobile = width < 768;\n    const visibleToastsCount = isMobile ? VISIBLE_TOAST_NUMBER_MOBILE : VISIBLE_TOAST_NUMBER_DESKTOP;\n\n    if (position.includes('bottom')) {\n      return [...toasts].slice(-1 * visibleToastsCount);\n    }\n\n    return [...toasts].reverse().slice(0, visibleToastsCount);\n  }, [position, toasts, width]);\n\n  return (\n    <ToastContext value={contextValue}>\n      {children}\n      <div className={`agora-toast-list toast-list-${position}`} aria-live=\"assertive\" aria-atomic=\"true\">\n        {memoToast.map((toast) => {\n          return <Toast key={toast.id} {...toast} />;\n        })}\n      </div>\n    </ToastContext>\n  );\n};\n\nexport { ToastProvider };\n","import classNames from 'classnames';\nimport React, { ComponentPropsWithoutRef, FC, useId } from 'react';\nimport './file-list.css';\nimport { Button, ButtonProps } from '@/components/button';\nimport { Feedback } from '@/components/shared/feedback/';\nimport { stringToBoolean } from '@/index';\n\nexport interface FileListProps extends ComponentPropsWithoutRef<'div'> {\n  files: File[];\n\n  removeFileButtonLabel: string;\n  onFileRemove?: (fileRemoved: File) => void;\n\n  replaceFileButtonLabel: string;\n  onFileReplace?: (fileReplaced: File) => void;\n\n  messages?: { [fileName: string]: { text: string; hasError: boolean } };\n}\n\nconst FileList: FC<FileListProps> = ({\n  files = [],\n\n  removeFileButtonLabel,\n  onFileRemove,\n\n  replaceFileButtonLabel,\n  onFileReplace,\n\n  messages = {},\n  ...props\n}) => {\n  const generatedId = useId();\n\n  const handleReplaceFile = (fileToReplace: File) => {\n    onFileReplace?.(fileToReplace);\n  };\n\n  const handleRemoveFile = (fileToRemoved: File) => {\n    onFileRemove?.(fileToRemoved);\n  };\n\n  const getParsedSizeString = (bytes: number, decimals = 0) => {\n    const k = 1024;\n    const decimalCases = decimals < 0 ? 0 : decimals;\n    const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n    const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n    return `${parseFloat((bytes / Math.pow(k, i)).toFixed(decimalCases))} ${sizes[i]}`;\n  };\n\n  const getAvailableFileActions = (file: File, fileMessage?: { text: string; hasError: boolean }): ButtonProps[] => {\n    return [\n      {\n        'className': 'replace-action',\n        'hasIcon': true,\n        'iconOnly': true,\n        'appearance': 'link',\n        'variant': 'neutral',\n        'leadingIcon': 'agora-line-refresh-ccw',\n        'leadingIconHover': 'agora-solid-refresh-ccw',\n        'onClick': () => handleReplaceFile(file),\n        'aria-label': `${replaceFileButtonLabel} ${file.name}`,\n        'type': 'button'\n      },\n      {\n        'className': `delete-action ${!stringToBoolean(fileMessage?.hasError) ? '' : 'error'}`,\n        'hasIcon': true,\n        'iconOnly': true,\n        'appearance': 'link',\n        'variant': 'neutral',\n        'leadingIcon': 'agora-line-trash',\n        'leadingIconHover': 'agora-solid-trash',\n        'onClick': () => handleRemoveFile(file),\n        'aria-label': `${removeFileButtonLabel} ${file.name}`,\n        'type': 'button'\n      }\n    ] as ButtonProps[];\n  };\n\n  const fileListClassNames = classNames('agora-file-list', props.className);\n\n  return (\n    <ul className={fileListClassNames} aria-live=\"polite\">\n      {files.map((file, index) => {\n        const fileIndex = `${generatedId}-${file.name}-${index}`;\n\n        const fileMessage = messages[file.name] || messages[index];\n\n        const actions = getAvailableFileActions(file, fileMessage);\n\n        return (\n          <li className=\"file\" key={fileIndex}>\n            <div className=\"file-item\">\n              <div className=\"file-info\">\n                <div className=\"name\">{file.name}</div>\n                <div className=\"size\">{getParsedSizeString(file.size)}</div>\n              </div>\n\n              {actions.length > 0 && (\n                <div className=\"actions\">\n                  {actions.map((actionBtnProps, actionIndex) => {\n                    const actionKey = `${fileIndex}-action-${actionIndex}`;\n                    return <Button key={actionKey} {...actionBtnProps} />;\n                  })}\n                </div>\n              )}\n            </div>\n            {fileMessage && (\n              <Feedback feedbackState={!stringToBoolean(fileMessage.hasError) ? 'info' : 'danger'} feedbackText={fileMessage.text} />\n            )}\n            <div className=\"file-divider\" />\n          </li>\n        );\n      })}\n    </ul>\n  );\n};\n\nexport { FileList };\n","import { asyncTrigger } from '@/utils';\nimport { useEffect, useRef, useState } from 'react';\n\nconst isFileExtensionAllowed = (fileName: string, extensionWhitelist: string[]): boolean => {\n  if (extensionWhitelist.length == 0) {\n    return true;\n  }\n\n  const lastPoint = fileName.lastIndexOf('.');\n  const fileExtension = fileName.substring(lastPoint);\n  const isAllowed = extensionWhitelist.includes(fileExtension);\n\n  return isAllowed;\n};\n\nconst isNotDuplicated = (filename: string, files: File[]): boolean => {\n  return files.findIndex((f) => f.name === filename) < 0;\n};\n\nconst getFileInput = (\n  multiple: boolean,\n  extensionWhiteList: string[],\n  onChangeHandler: (event: Event) => void,\n  fileToReplace?: string\n): HTMLInputElement => {\n  const input = document.createElement('input');\n  input.type = 'file';\n  input.onchange = onChangeHandler;\n  input.multiple = multiple;\n  input.accept = extensionWhiteList.join(',');\n\n  if (fileToReplace) {\n    input.dataset.replaceFile = fileToReplace;\n  }\n\n  return input;\n};\n\nconst validateFiles = (\n  lastFiles: File[],\n  newFiles: File[],\n  maxCount: number,\n  maxSize: number,\n  extensionWhitelist: string[],\n  replaceValidation = false\n): FileUploadError => {\n  let hasErrors = false;\n  const duplicatedFiles: string[] = [];\n  const sizeExceededFiles: string[] = [];\n  const extensionForbiddenFiles: string[] = [];\n\n  const maxCountExceeded = !replaceValidation && maxCount < lastFiles.length + newFiles.length;\n  if (maxCountExceeded) {\n    hasErrors = true;\n  }\n\n  newFiles.forEach((file) => {\n    if (!isNotDuplicated(file.name, lastFiles)) {\n      hasErrors = true;\n      duplicatedFiles.push(file.name);\n    }\n\n    if (file.size > maxSize) {\n      hasErrors = true;\n      sizeExceededFiles.push(file.name);\n    }\n\n    if (!isFileExtensionAllowed(file.name, extensionWhitelist)) {\n      hasErrors = true;\n      extensionForbiddenFiles.push(file.name);\n    }\n  });\n\n  return {\n    hasErrors,\n    maxCountExceeded,\n    duplicatedFiles,\n    sizeExceededFiles,\n    extensionForbiddenFiles\n  } as FileUploadError;\n};\n\nexport interface FileUploadError {\n  hasErrors: boolean;\n  maxCountExceeded: boolean;\n  duplicatedFiles: string[];\n  sizeExceededFiles: string[];\n  extensionForbiddenFiles: string[];\n}\n\nexport interface IUseFileUpload {\n  files: File[];\n  errors: FileUploadError | null;\n  onAddFiles: () => void;\n  onRemoveFile: (file: File) => void;\n  onReplaceFile: (file: File) => void;\n  onPasteFiles: (files: File[]) => void;\n  onReset: (files: File[]) => void;\n}\n\nexport const useFileUpload = (\n  maxFileCount: number,\n  maxFileSize: number,\n  extensionWhitelist: string[],\n  multiple: boolean,\n  onChange: (files: File[], errors: FileUploadError | null) => void,\n  defaultFiles?: File[]\n): IUseFileUpload => {\n  const [files, setFiles] = useState<File[]>([]);\n  const lastErrors = useRef<FileUploadError | null>(null);\n\n  const getParsedMaxCount = () => {\n    return multiple ? maxFileCount : 1;\n  };\n\n  const triggerOnChange = (newFiles: File[], errors: FileUploadError | null) => {\n    asyncTrigger(() => onChange(newFiles, errors));\n  };\n\n  const resetFiles = (initialFiles: File[]) => {\n    const validationErrors = validateFiles([], initialFiles, getParsedMaxCount(), maxFileSize, extensionWhitelist);\n\n    const newFiles = [];\n\n    if (!validationErrors.hasErrors) {\n      lastErrors.current = null;\n      newFiles.push(...initialFiles);\n    } else {\n      lastErrors.current = validationErrors;\n    }\n\n    setFiles(newFiles);\n    triggerOnChange(newFiles, lastErrors.current);\n  };\n\n  const addFiles = (filesToAdd: File[]) => {\n    if (filesToAdd.length == 0) {\n      return;\n    }\n\n    setFiles((prevFiles) => {\n      const validationErrors = validateFiles(prevFiles, filesToAdd, getParsedMaxCount(), maxFileSize, extensionWhitelist);\n\n      const newFiles = [...prevFiles];\n\n      if (!validationErrors.hasErrors) {\n        lastErrors.current = null;\n        newFiles.push(...filesToAdd);\n      } else {\n        lastErrors.current = validationErrors;\n      }\n\n      triggerOnChange(newFiles, lastErrors.current);\n      return newFiles;\n    });\n  };\n\n  const removeFile = (file: File) => {\n    lastErrors.current = null;\n    setFiles((prevFiles) => {\n      const newFiles = prevFiles.filter((f) => f.name !== file.name);\n      triggerOnChange(newFiles, lastErrors.current);\n      return newFiles;\n    });\n  };\n\n  const replaceFile = (replaceFileName: string, filesToAdd: File[]) => {\n    if (!replaceFileName || filesToAdd.length == 0) {\n      return;\n    }\n\n    const validationErrors = validateFiles(files, [filesToAdd[0]], getParsedMaxCount(), maxFileSize, extensionWhitelist, true);\n\n    const newFiles = [...files];\n\n    if (!validationErrors.hasErrors) {\n      lastErrors.current = null;\n\n      const targetIndex = newFiles.findIndex((f) => f.name === replaceFileName);\n\n      if (targetIndex >= 0) {\n        newFiles.splice(targetIndex, 1, filesToAdd[0]);\n      }\n    } else {\n      lastErrors.current = validationErrors;\n    }\n\n    setFiles(newFiles);\n    triggerOnChange(newFiles, lastErrors.current);\n  };\n\n  const handleInputFileChangeOnAdd = (event: Event) => {\n    const target = event.currentTarget as HTMLInputElement;\n\n    const selectedFiles = Array.from(target.files ?? []);\n    addFiles(selectedFiles);\n  };\n\n  const handleInputFileChangeOnReplace = (event: Event) => {\n    const target = event.currentTarget as HTMLInputElement;\n    const selectedFiles = Array.from(target.files ?? []);\n    replaceFile(target.dataset.replaceFile ?? '', selectedFiles);\n  };\n\n  useEffect(() => {\n    if (defaultFiles) {\n      setFiles(defaultFiles);\n    }\n  }, [defaultFiles]);\n\n  const onAddFiles = () => {\n    const input = getFileInput(multiple, extensionWhitelist, handleInputFileChangeOnAdd);\n    input.click();\n  };\n\n  const onRemoveFile = (file: File) => {\n    removeFile(file);\n  };\n\n  const onReplaceFile = (file: File) => {\n    const input = getFileInput(multiple, extensionWhitelist, handleInputFileChangeOnReplace, file.name);\n    input.click();\n  };\n\n  const onPasteFiles = (newFiles: File[]) => {\n    addFiles(newFiles);\n  };\n\n  return { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles, onReset: resetFiles } as IUseFileUpload;\n};\n","/* eslint-disable jsx-a11y/label-has-for */\nimport { Button } from '@/components/button/';\nimport { Feedback } from '@/components/shared/feedback/';\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport classNames from 'classnames';\nimport React, { ChangeEvent, ComponentProps, FC, ReactNode, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { FileList } from '../shared/file-list';\nimport { FileUploadError, useFileUpload } from '../shared/use-file-upload';\n\nimport './button-uploader.css';\n\nexport interface ButtonUploaderElement extends HTMLInputElement {\n  input: HTMLInputElement | null;\n  reset: () => void;\n}\n\nexport interface ButtonUploaderProps extends ComponentProps<'input'> {\n  /**\n   * Label for the input file uploader.\n   */\n  label?: string;\n  /**\n   * Label for the button file uploader after files selected.\n   */\n  selectedFilesLabel?: string;\n  /**\n   * Label for the button file uploader.\n   */\n  inputLabel?: string;\n  /**\n   * Hides the button labels.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Alternative text for the delete file button of the file list.\n   */\n  removeFileButtonLabel: string;\n  /**\n   *  Alternative text for the replace file button of the file list.\n   */\n  replaceFileButtonLabel: string;\n  /**\n   *  Instruction text for the button uploader.\n   */\n  extensionsInstructions?: ReactNode;\n  /**\n   *  Max number of files to upload.\n   */\n  maxCount?: number;\n  /**\n   *  Max size in bytes of each file.\n   */\n  maxSize?: number;\n  /**\n   *  Max count exceeded error message.\n   */\n  maxCountExceededErrorLabel?: string;\n  /**\n   *  Max size exceeded error message.\n   */\n  maxSizeExceededErrorLabel?: string;\n  /**\n   *  Forbidden error message.\n   */\n  forbiddenExtensionErrorLabel?: string;\n  /**\n   *  Duplicated error message.\n   */\n  duplicatedFileErrorLabel?: string;\n  /**\n   *  Initial default files.\n   */\n  files?: File[];\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below button uploader.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlights the button uploader with some error indication.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n}\n\nconst ButtonUploader: FC<ButtonUploaderProps> = ({\n  ref = null,\n  label,\n  inputLabel,\n  selectedFilesLabel,\n  hideLabel,\n\n  required = true,\n\n  removeFileButtonLabel,\n  replaceFileButtonLabel,\n\n  extensionsInstructions,\n  accept = '',\n  maxSize = Number.MAX_SAFE_INTEGER,\n  maxCount = Number.MAX_SAFE_INTEGER,\n\n  maxCountExceededErrorLabel = '',\n  maxSizeExceededErrorLabel = '',\n  forbiddenExtensionErrorLabel = '',\n  duplicatedFileErrorLabel = '',\n\n  multiple,\n  disabled,\n  onChange,\n\n  files: defaultFiles,\n\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  feedbackStateLabel,\n\n  id,\n  ...props\n}) => {\n  const generatedId = useId();\n  const customId = id || generatedId;\n  const inputId = `button-uploader-input-${customId}`;\n\n  const isRequired = disabled ? false : required;\n\n  const innerButtonRef = useRef<HTMLButtonElement>(null);\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n\n  const [labelText, setLabelText] = useState(inputLabel);\n\n  const [errorMessages, setErrorMessages] = useState([] as string[]);\n\n  const [fileMessages, setFileMessages] = useState<{ [fileName: string]: { text: string; hasError: boolean } }>({});\n\n  const updateErrors = (errors: FileUploadError | null) => {\n    if (!errors) {\n      setErrorMessages([]);\n      setFileMessages({});\n      return;\n    }\n\n    const parsedErrors: string[] = [];\n\n    const newFileMessages: { [fileName: string]: { text: string; hasError: boolean } } = {};\n\n    errors.duplicatedFiles.forEach((fileName) => {\n      newFileMessages[fileName] = {\n        text: duplicatedFileErrorLabel,\n        hasError: true\n      };\n    });\n\n    errors.sizeExceededFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${maxSizeExceededErrorLabel}`);\n    });\n\n    errors.sizeExceededFiles.forEach((fileName) => {\n      newFileMessages[fileName] = {\n        text: `${fileName} - ${maxSizeExceededErrorLabel}`,\n        hasError: true\n      };\n    });\n\n    errors.extensionForbiddenFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${forbiddenExtensionErrorLabel}`);\n    });\n\n    if (errors.maxCountExceeded) {\n      parsedErrors.push(maxCountExceededErrorLabel);\n    }\n\n    setErrorMessages(parsedErrors);\n    setFileMessages(newFileMessages);\n  };\n\n  const handleOnChangeFiles = (files: File[], errors: FileUploadError | null) => {\n    if (innerInputRef.current) {\n      const list = new DataTransfer();\n\n      files.forEach((f) => {\n        list.items.add(f);\n      });\n\n      innerInputRef.current.files = list.files;\n\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n\n    updateErrors(errors);\n  };\n\n  const { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles, onReset } = useFileUpload(\n    maxCount,\n    maxSize,\n    accept ? accept.split(',') : [],\n    !!multiple,\n    handleOnChangeFiles,\n    defaultFiles\n  );\n\n  useImperativeHandle(\n    ref,\n    () =>\n      ({\n        input: innerInputRef.current,\n        reset: () => {\n          if (innerInputRef.current) {\n            innerInputRef.current.value = '';\n          }\n          onReset([]);\n        }\n      }) as ButtonUploaderElement\n  );\n\n  const canUpload = useMemo(() => {\n    if (multiple) {\n      return !disabled && files.length < maxCount;\n    }\n\n    return !disabled && files.length === 0;\n  }, [disabled, multiple, files, maxCount]);\n\n  const canUploadRef = useRef(canUpload);\n  canUploadRef.current = canUpload;\n  const onPasteFilesRef = useRef(onPasteFiles);\n  onPasteFilesRef.current = onPasteFiles;\n\n  const handleFileReplace = (newFileToReplace: File) => {\n    onReplaceFile(newFileToReplace);\n  };\n\n  const handleFileRemove = (fileToRemove: File) => {\n    onRemoveFile(fileToRemove);\n  };\n\n  useEffect(() => {\n    const handlePaste = (e: Event) => {\n      if (!canUploadRef.current) {\n        return;\n      }\n\n      if (innerButtonRef.current && innerButtonRef.current === document.activeElement) {\n        const { clipboardData } = e as ClipboardEvent;\n        if (clipboardData && clipboardData.files.length > 0) {\n          const clipboardFiles = Array.from(clipboardData.files) ?? [];\n          onPasteFilesRef.current(clipboardFiles);\n        }\n      }\n    };\n\n    window.addEventListener('paste', handlePaste);\n\n    return () => {\n      window.removeEventListener('paste', handlePaste);\n    };\n  }, []);\n\n  const containerClassNames = classNames(\n    'agora-button-file-uploader',\n    { 'cannot-upload': !canUpload },\n    { 'has-error': hasError },\n    { 'has-error': errorMessages.length },\n    props.className\n  );\n\n  const buttonContainerClassNames = classNames('button-file-uploader-container');\n\n  const fileListClassNames = classNames('file-list-container', { 'p-16': files.length > 0 });\n\n  useEffect(() => {\n    if (files.length > 0) {\n      setLabelText(`${files.length} ${selectedFilesLabel}`);\n    } else {\n      setLabelText(inputLabel);\n    }\n  }, [files, selectedFilesLabel, inputLabel]);\n\n  useEffect(() => {\n    if (!isRequired) return;\n\n    const form = innerInputRef.current?.form;\n    if (!form) return;\n\n    const handleSubmit = (e: Event) => {\n      if (files.length === 0) {\n        e.preventDefault();\n        innerButtonRef.current?.focus();\n      }\n    };\n\n    form.addEventListener('submit', handleSubmit);\n    return () => {\n      form.removeEventListener('submit', handleSubmit);\n    };\n  }, [isRequired, files]);\n\n  // this is part of a fix for an issue that occurs when a file is selected and the upload button changes color until the cursor is moved\n  if (innerButtonRef.current) {\n    innerButtonRef.current.onmouseenter = () => {\n      innerButtonRef.current!.style.backgroundColor = '';\n    };\n  }\n\n  return (\n    <div className={containerClassNames}>\n      {label && (\n        <div className=\"button-uploader-label-wrapper\">\n          <label htmlFor={inputId} hidden={stringToBoolean(hideLabel)} className=\"button-uploader-label\">\n            {label}\n          </label>\n        </div>\n      )}\n\n      <input\n        id={inputId}\n        ref={innerInputRef}\n        type=\"file\"\n        tabIndex={-1}\n        className=\"sr-only\"\n        aria-describedby={\n          (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText ? `button-uploader-${customId}-feedback` : undefined\n        }\n        aria-invalid={stringToBoolean(hasError) || undefined}\n        aria-label={stringToBoolean(hideLabel) ? label : undefined}\n      />\n\n      <div className={buttonContainerClassNames}>\n        <Button\n          id={customId}\n          ref={innerButtonRef}\n          type=\"button\"\n          fullWidth\n          iconOnly={stringToBoolean(hideLabel)}\n          hasIcon\n          trailingIcon=\"agora-line-upload\"\n          trailingIconHover=\"agora-solid-upload\"\n          variant={errorMessages.length > 0 || stringToBoolean(hasError) ? 'danger' : 'neutral'}\n          disabled={!canUpload}\n          onClick={() => {\n            // this is part of a fix for an issue that occurs when a file is selected and the upload button changes color until the cursor is moved\n            innerButtonRef.current!.style.backgroundColor = 'var(--color-neutral-700)';\n            onAddFiles();\n          }}\n        >\n          {labelText}\n        </Button>\n\n        <div className=\"extension-instructions\">{extensionsInstructions}</div>\n      </div>\n\n      {errorMessages.length > 0 && (\n        <div className=\"errors-container\">\n          {errorMessages.map((message, index) => {\n            const errorKey = `error-message-${generatedId}-${index}`;\n            return <Feedback key={errorKey} feedbackState={'danger'} feedbackText={message} />;\n          })}\n        </div>\n      )}\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`button-uploader-${customId}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n        />\n      )}\n      <div className={fileListClassNames}>\n        <FileList\n          files={files}\n          onFileReplace={handleFileReplace}\n          onFileRemove={handleFileRemove}\n          removeFileButtonLabel={removeFileButtonLabel}\n          replaceFileButtonLabel={replaceFileButtonLabel}\n          messages={fileMessages}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { ButtonUploader };\n","import React, { ChangeEvent, ComponentProps, FC, ReactNode, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\n\nimport { Button } from '@/components/button/button';\nimport { Icon } from '@/components/icon';\nimport { Feedback } from '@/components/shared/feedback';\n\nimport { BooleanProp, FeedbackState } from '@/models';\nimport { asyncTrigger, createSyntheticEvent, stringToBoolean } from '@/utils';\nimport { FileList } from '../shared/file-list';\nimport { FileUploadError, useFileUpload } from '../shared/use-file-upload';\n\nimport './drag-and-drop-uploader.css';\n\nexport interface DragAndDropUploaderProps extends ComponentProps<'input'> {\n  /**\n   * Label for the drag and drop file uploader.\n   */\n  dragAndDropLabel?: string;\n  /**\n   * Label for the input file uploader.\n   */\n  label?: string;\n  /**\n   * Label for the drag and drop file uploader after files selected.\n   */\n  selectedFilesLabel?: string;\n  /**\n   * Label for the drag and drop file button uploader.\n   */\n  inputLabel?: string;\n  /**\n   * Hides the drag and drop button labels.\n   */\n  hideLabel?: BooleanProp;\n  /**\n   *  Instruction text for the button uploader.\n   */\n  extensionsInstructions?: ReactNode;\n  /**\n   *  Text that separates instructions label from the button.\n   */\n  separatorLabel?: ReactNode;\n  /**\n   *  Alternative text for the delete file button of the file list.\n   */\n  removeFileButtonLabel: string;\n  /**\n   *  Alternative text for the replace file button of the file list.\n   */\n  replaceFileButtonLabel: string;\n  /**\n   *  Max number of files to upload.\n   */\n  maxCount?: number;\n  /**\n   *  Max size in bytes of each file.\n   */\n  maxSize?: number;\n  /**\n   *  Max count exceeded error message.\n   */\n  maxCountExceededErrorLabel?: string;\n  /**\n   *  Max size exceeded error message.\n   */\n  maxSizeExceededErrorLabel?: string;\n  /**\n   *  Forbidden error message.\n   */\n  forbiddenExtensionErrorLabel?: string;\n  /**\n   *  Duplicated error message.\n   */\n  duplicatedFileErrorLabel?: string;\n  /**\n   *  Initial default files.\n   */\n  files?: File[];\n  /**\n   * Show or hide the feedback status text.\n   */\n  hasFeedback?: BooleanProp;\n  /**\n   * Text informative displayed below button uploader.\n   */\n  feedbackText?: ReactNode;\n  /**\n   * Defines the state of the feedback text. This param will change the feedback icon and dye it.\n   */\n  feedbackState?: FeedbackState;\n  /**\n   * Highlights the button uploader with some error indication.\n   */\n  hasError?: BooleanProp;\n  /**\n   * Accessible label for screen readers, prepended to feedbackText.\n   */\n  feedbackStateLabel?: string;\n}\n\nconst DragAndDropUploader: FC<DragAndDropUploaderProps> = ({\n  ref = null,\n  label,\n  dragAndDropLabel,\n  inputLabel,\n  selectedFilesLabel,\n  hideLabel,\n\n  required = true,\n\n  extensionsInstructions,\n  separatorLabel,\n\n  removeFileButtonLabel,\n  replaceFileButtonLabel,\n\n  accept,\n  maxSize = Number.MAX_SAFE_INTEGER,\n  maxCount = Number.MAX_SAFE_INTEGER,\n\n  maxCountExceededErrorLabel = '',\n  maxSizeExceededErrorLabel = '',\n  forbiddenExtensionErrorLabel = '',\n  duplicatedFileErrorLabel = '',\n\n  multiple,\n  disabled,\n  onChange,\n\n  files: defaultFiles,\n\n  hasError,\n  hasFeedback,\n  feedbackState = 'info',\n  feedbackText,\n  feedbackStateLabel,\n\n  ...props\n}) => {\n  const generatedId = useId();\n  const propsClone = { ...props };\n  propsClone.id = propsClone.id ?? generatedId;\n\n  const isRequired = disabled ? false : required;\n\n  const innerButtonRef = useRef<HTMLButtonElement>(null);\n  const innerInputRef = useRef<HTMLInputElement | null>(null);\n  useImperativeHandle(ref, () => innerInputRef.current as HTMLInputElement);\n\n  const dragAreaRef = useRef<HTMLDivElement | null>(null);\n\n  const [labelText, setLabelText] = useState(inputLabel);\n  const [isDraggingOver, setIsDraggingOver] = useState(false);\n\n  const [errorMessages, setErrorMessages] = useState([] as string[]);\n  const [fileMessages, setFileMessages] = useState<{ [fileName: string]: { text: string; hasError: boolean } }>({});\n\n  const updateErrors = (errors: FileUploadError | null) => {\n    if (!errors) {\n      setErrorMessages([]);\n      setFileMessages({});\n      return;\n    }\n\n    const parsedErrors: string[] = [];\n    const newFileMessages: { [fileName: string]: { text: string; hasError: boolean } } = {};\n\n    if (errors.maxCountExceeded) {\n      parsedErrors.push(maxCountExceededErrorLabel);\n    }\n\n    errors.duplicatedFiles.forEach((fileName) => {\n      newFileMessages[fileName] = {\n        text: duplicatedFileErrorLabel,\n        hasError: true\n      };\n    });\n\n    errors.sizeExceededFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${maxSizeExceededErrorLabel}`);\n    });\n\n    errors.sizeExceededFiles.forEach((fileName) => {\n      newFileMessages[fileName] = {\n        text: `${fileName} - ${maxSizeExceededErrorLabel}`,\n        hasError: true\n      };\n    });\n\n    errors.extensionForbiddenFiles.forEach((f) => {\n      parsedErrors.push(`${f} - ${forbiddenExtensionErrorLabel}`);\n    });\n\n    setErrorMessages(parsedErrors);\n    setFileMessages(newFileMessages);\n  };\n\n  const handleOnChangeFiles = (files: File[], errors: FileUploadError | null) => {\n    if (files.length > 0) {\n      setLabelText(`${files.length} ${selectedFilesLabel}`);\n    } else {\n      setLabelText(inputLabel);\n    }\n\n    if (innerInputRef.current) {\n      const list = new DataTransfer();\n\n      files.forEach((f) => {\n        list.items.add(f);\n      });\n\n      innerInputRef.current.files = list.files;\n\n      const syntheticEvent = createSyntheticEvent<HTMLInputElement>(innerInputRef.current, 'change');\n      asyncTrigger(() => onChange?.(syntheticEvent as ChangeEvent<HTMLInputElement>));\n    }\n\n    updateErrors(errors);\n  };\n\n  const { files, onAddFiles, onRemoveFile, onReplaceFile, onPasteFiles } = useFileUpload(\n    maxCount,\n    maxSize,\n    accept ? accept.split(',') : [],\n    !!multiple,\n    handleOnChangeFiles,\n    defaultFiles\n  );\n\n  const canUpload = useMemo(() => {\n    if (multiple) {\n      return !disabled && files.length < maxCount;\n    }\n\n    return !disabled && files.length === 0;\n  }, [disabled, multiple, files, maxCount]);\n\n  const canUploadRef = useRef(canUpload);\n  canUploadRef.current = canUpload;\n  const onPasteFilesRef = useRef(onPasteFiles);\n  onPasteFilesRef.current = onPasteFiles;\n  const onAddFilesRef = useRef(onAddFiles);\n  onAddFilesRef.current = onAddFiles;\n\n  const handleFileReplace = (newFileToReplace: File) => {\n    onReplaceFile(newFileToReplace);\n  };\n\n  const handleFileRemove = (fileToRemove: File) => {\n    onRemoveFile(fileToRemove);\n  };\n\n  useEffect(() => {\n    const handlePaste = (e: Event) => {\n      if (!canUploadRef.current) {\n        return;\n      }\n\n      if (innerButtonRef.current && innerButtonRef.current === document.activeElement) {\n        const { clipboardData } = e as ClipboardEvent;\n        if (clipboardData && clipboardData.files.length > 0) {\n          const clipboardFiles = Array.from(clipboardData.files) ?? [];\n          onPasteFilesRef.current(clipboardFiles);\n        }\n      }\n    };\n\n    window.addEventListener('paste', handlePaste);\n\n    return () => {\n      window.removeEventListener('paste', handlePaste);\n    };\n  }, []);\n\n  useEffect(() => {\n    const handleClick = (evt: MouseEvent) => {\n      if (innerButtonRef.current && innerButtonRef.current !== evt.target && !innerButtonRef.current.contains(evt.target as HTMLElement)) {\n        onAddFilesRef.current();\n      }\n    };\n\n    const handleDragOver = (evt: DragEvent) => {\n      if (!canUploadRef.current) {\n        return;\n      }\n      evt.preventDefault();\n      evt.stopPropagation();\n      setIsDraggingOver(true);\n      if (evt.dataTransfer) {\n        evt.dataTransfer.dropEffect = 'copy';\n      }\n    };\n\n    const handleDragLeave = () => {\n      setIsDraggingOver(false);\n    };\n\n    const handleDrop = (evt: DragEvent) => {\n      if (!canUploadRef.current) {\n        return;\n      }\n      evt.preventDefault();\n      evt.stopPropagation();\n      setIsDraggingOver(false);\n      if (evt.dataTransfer) {\n        const droppedFiles = Array.from(evt.dataTransfer.files ?? []);\n        onPasteFilesRef.current(droppedFiles);\n      }\n    };\n\n    const dragArea = dragAreaRef.current;\n\n    if (dragArea) {\n      dragArea.addEventListener('click', handleClick);\n      dragArea.addEventListener('dragover', handleDragOver);\n      dragArea.addEventListener('dragleave', handleDragLeave);\n      dragArea.addEventListener('drop', handleDrop);\n    }\n\n    return () => {\n      if (dragArea) {\n        dragArea.removeEventListener('click', handleClick);\n        dragArea.removeEventListener('dragover', handleDragOver);\n        dragArea.removeEventListener('dragleave', handleDragLeave);\n        dragArea.removeEventListener('drop', handleDrop);\n      }\n    };\n  }, []);\n\n  useEffect(() => {\n    if (!isRequired) return;\n\n    const form = innerInputRef.current?.form;\n    if (!form) return;\n\n    const handleSubmit = (e: Event) => {\n      if (files.length === 0) {\n        e.preventDefault();\n        innerButtonRef.current?.focus();\n      }\n    };\n\n    form.addEventListener('submit', handleSubmit);\n    return () => {\n      form.removeEventListener('submit', handleSubmit);\n    };\n  }, [isRequired, files]);\n\n  const containerClassNames = classNames(\n    'agora-drag-and-drop-file-uploader',\n    { 'cannot-upload': !canUpload },\n    { hasError: errorMessages.length > 0 || stringToBoolean(hasError) },\n    props.className\n  );\n\n  const dragAndDropClassNames = classNames('drag-and-drop-area', { 'drag-over': isDraggingOver });\n  const fileListClassNames = classNames('file-list-container', { 'py-8': files.length > 0 });\n\n  return (\n    <div className={containerClassNames}>\n      {label && (\n        <div className=\"drag-and-drop-label-wrapper\">\n          <label hidden={stringToBoolean(hideLabel)} htmlFor={propsClone.id} className=\"drag-and-drop-label\">\n            {label}\n          </label>\n        </div>\n      )}\n      <div className=\"drag-and-drop-input-wrapper\">\n        <input ref={innerInputRef} type=\"file\" style={{ display: 'none' }} tabIndex={-1} />\n\n        <div ref={dragAreaRef} className={dragAndDropClassNames}>\n          <Icon className=\"download-icon\" name=\"agora-line-download\" aria-hidden />\n\n          {(dragAndDropLabel || extensionsInstructions) && (\n            <div className=\"instructions\">\n              {dragAndDropLabel && <div className=\"drag-and-drop-label\">{dragAndDropLabel}</div>}\n              {extensionsInstructions && <div className=\"extension-instructions\">{extensionsInstructions}</div>}\n            </div>\n          )}\n\n          {separatorLabel && <div className=\"separator-label\">{separatorLabel}</div>}\n\n          <Button\n            id={propsClone.id}\n            ref={innerButtonRef}\n            fullWidth\n            iconOnly={stringToBoolean(hideLabel)}\n            hasIcon\n            trailingIcon=\"agora-line-upload\"\n            trailingIconHover=\"agora-solid-upload\"\n            variant={'neutral'}\n            disabled={!canUpload}\n            onClick={onAddFiles}\n            aria-describedby={\n              (stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText\n                ? `drag-and-drop-${propsClone.id}-feedback`\n                : undefined\n            }\n          >\n            {labelText}\n          </Button>\n        </div>\n      </div>\n\n      {/* Feedback */}\n      {(stringToBoolean(hasFeedback) || stringToBoolean(hasError)) && feedbackText && (\n        <Feedback\n          id={`drag-and-drop-uploader-${propsClone.id}-feedback`}\n          feedbackState={!stringToBoolean(hasError) ? feedbackState : 'danger'}\n          feedbackText={feedbackText}\n          feedbackStateLabel={feedbackStateLabel}\n        />\n      )}\n      {errorMessages.length > 0 && (\n        <div className=\"errors-container\">\n          {errorMessages.map((message, index) => {\n            const errorKey = `error-message-${generatedId}-${index}`;\n            return <Feedback key={errorKey} feedbackState={'danger'} feedbackText={message} />;\n          })}\n        </div>\n      )}\n      <div className={fileListClassNames}>\n        <FileList\n          files={files}\n          onFileReplace={handleFileReplace}\n          onFileRemove={handleFileRemove}\n          removeFileButtonLabel={removeFileButtonLabel}\n          replaceFileButtonLabel={replaceFileButtonLabel}\n          messages={fileMessages}\n        />\n      </div>\n    </div>\n  );\n};\n\nexport { DragAndDropUploader };\n","import { createContext, ReactElement } from 'react';\nimport { FinancingSectionContainer, LinksSectionContainer, LogoSectionContainer } from './index';\n\nexport type NestedChildren<T> = T | NestedChildren<T>[];\n\ntype ChildType = NestedChildren<ReactElement> | undefined;\n\nfunction flattenChildren(children: ChildType): ReactElement[] {\n  if (!children) {\n    return [];\n  }\n\n  return Array.isArray(children) ? children.flatMap(flattenChildren) : [children];\n}\n\nexport type FooterChildren =\n  | ReactElement<typeof LogoSectionContainer>\n  | ReactElement<typeof FinancingSectionContainer>\n  | ReactElement<typeof LinksSectionContainer>;\n\nexport type FooterVariant = 'white' | 'neutral-100' | 'primary-700' | 'primary-900';\n\nexport function getChildrenOfType<T>(childType: T, children: ChildType) {\n  const childFound = flattenChildren(children).find((child) => child.type === childType);\n\n  return childFound || null;\n}\n\nexport function getAllChildrenOfType<T>(childType: T, children: ChildType) {\n  return flattenChildren(children).filter((child) => child.type === childType);\n}\n\nexport const FooterContext = createContext<{ isLightVariant: boolean }>({ isLightVariant: true });\n","import React, { FC, HTMLAttributes } from 'react';\nimport { FooterChildren, FooterContext, FooterVariant, getChildrenOfType, NestedChildren } from './helpers';\nimport { FinancingSectionContainer, LinksSectionContainer, LogoSectionContainer } from './index';\n\nexport interface FooterProps extends HTMLAttributes<HTMLElement> {\n  variant?: FooterVariant;\n  children?: NestedChildren<FooterChildren>;\n}\n\nexport const Footer: FC<FooterProps> = ({ children, variant = 'white', ...props }) => {\n  const logoSectionContainer = getChildrenOfType(LogoSectionContainer, children);\n  const financingSectionContainer = getChildrenOfType(FinancingSectionContainer, children);\n  const linksSectionContainer = getChildrenOfType(LinksSectionContainer, children);\n\n  const bgColorClass = {\n    'white': 'bg-[var(--color-white)]',\n    'neutral-100': 'bg-[var(--color-neutral-100)]',\n    'primary-700': 'bg-[var(--color-primary-700)]',\n    'primary-900': 'bg-[var(--color-primary-900)]'\n  };\n\n  const isLightVariant = variant === 'white' || variant === 'neutral-100';\n\n  return (\n    <div className={`agora-footer w-full ${bgColorClass[variant]}`} {...props}>\n      <FooterContext value={{ isLightVariant }}>\n        {logoSectionContainer}\n        {financingSectionContainer}\n        {linksSectionContainer}\n      </FooterContext>\n    </div>\n  );\n};\n","import './logo-section-container.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\nimport classNames from 'classnames';\n\nimport { FooterDisclaimer, FooterGenericLogo, LogoSectionAccessibilityLogo, LogoSectionFreestyle, LogoSectionMainLogo } from '../../index';\nimport { FooterContext, getAllChildrenOfType, getChildrenOfType, NestedChildren } from '../../helpers';\n\ntype LogoSectionContainerChildren =\n  | ReactElement<typeof LogoSectionFreestyle>\n  | ReactElement<typeof LogoSectionMainLogo>\n  | ReactElement<typeof FooterGenericLogo>\n  | ReactElement<typeof FooterDisclaimer>\n  | ReactElement<typeof LogoSectionAccessibilityLogo>;\n\nexport interface LogoSectionContainerProps extends HTMLAttributes<HTMLDivElement> {\n  children?: NestedChildren<LogoSectionContainerChildren>;\n}\n\nexport const LogoSectionContainer: FC<LogoSectionContainerProps> = (props) => {\n  const logoSectionMainLogo = getChildrenOfType(LogoSectionMainLogo, props.children);\n  const footerGenericLogos = getAllChildrenOfType(FooterGenericLogo, props.children);\n  const footerDisclaimer = getChildrenOfType(FooterDisclaimer, props.children);\n  const logoSectionAccessibilityLogo = getChildrenOfType(LogoSectionAccessibilityLogo, props.children);\n  const { isLightVariant } = useContext(FooterContext);\n\n  const logoSectionFreestyle = getChildrenOfType(LogoSectionFreestyle, props.children);\n\n  const hasMain = logoSectionMainLogo || footerGenericLogos?.length || footerDisclaimer || logoSectionAccessibilityLogo;\n\n  const hasFooterGenericLogos = !!footerGenericLogos?.length;\n\n  const containerMainClass = classNames('agora-footer-logo-section-container-main', {\n    'main-without-section-freestyle': !logoSectionFreestyle,\n    'xl:border-r-2 border-black/5': isLightVariant && logoSectionFreestyle,\n    'xl:border-r-2 border-white/5': !isLightVariant && logoSectionFreestyle\n  });\n\n  const containerLogosClass = classNames('agora-footer-logo-section-container-logos', {\n    'no-footer-generic-logos': hasFooterGenericLogos || logoSectionAccessibilityLogo\n  });\n\n  return (\n    <div className=\"agora-footer-logo-section-container\" {...props}>\n      {hasMain && (\n        <div className={containerMainClass}>\n          <ul className={containerLogosClass}>\n            {logoSectionMainLogo} {footerGenericLogos}\n          </ul>\n          {footerDisclaimer && <div className=\"agora-footer-logo-section-container-disclaimer\">{footerDisclaimer}</div>}\n\n          {logoSectionAccessibilityLogo && <>{logoSectionAccessibilityLogo}</>}\n        </div>\n      )}\n\n      {logoSectionFreestyle && <>{logoSectionFreestyle}</>}\n    </div>\n  );\n};\n","import classNames from 'classnames';\nimport { FooterContext } from '../../helpers';\nimport './logo-section-freestyle.css';\nimport React, { FC, HTMLAttributes, ReactNode, useContext } from 'react';\n\nexport interface LogoSectionFreestyleProps extends HTMLAttributes<HTMLDivElement> {\n  children?: ReactNode;\n}\n\nexport const LogoSectionFreestyle: FC<LogoSectionFreestyleProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  const containerMainClass = classNames('agora-logo-section-freestyle', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerMainClass} {...props}>\n      {props.children}\n    </div>\n  );\n};\n\nexport default LogoSectionFreestyle;\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface LogoSectionMainLogoProps extends HTMLAttributes<HTMLLIElement> {\n  children?: ReactNode;\n}\n\nexport const LogoSectionMainLogo: FC<LogoSectionMainLogoProps> = (props) => (\n  <li className=\"agora-footer-logo-section-main-logo\" {...props}>\n    {props.children}\n  </li>\n);\n\nexport default LogoSectionMainLogo;\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface LogoSectionAccessibilityLogoProps extends HTMLAttributes<HTMLDivElement> {\n  children?: ReactNode;\n}\n\nexport const LogoSectionAccessibilityLogo: FC<LogoSectionAccessibilityLogoProps> = (props) => (\n  <div className=\"agora-footer-logo-section-accessibility-logo\" {...props}>\n    {props.children}\n  </div>\n);\n\nexport default LogoSectionAccessibilityLogo;\n","import './financing-section-container.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\n\nimport { FooterDisclaimer, FooterGenericLogo } from '../index';\nimport { FooterContext, getAllChildrenOfType, getChildrenOfType, NestedChildren } from '../helpers';\nimport classNames from 'classnames';\n\ntype FinancingSectionContainerChildren = ReactElement<typeof FooterDisclaimer> | ReactElement<typeof FooterGenericLogo>;\n\nexport interface FinancingSectionContainerProps extends HTMLAttributes<HTMLDivElement> {\n  children?: NestedChildren<FinancingSectionContainerChildren>;\n  financingSectionAriaLabel?: string;\n}\n\nexport const FinancingSectionContainer: FC<FinancingSectionContainerProps> = (props) => {\n  const disclaimer = getChildrenOfType(FooterDisclaimer, props.children);\n  const genericLogos = getAllChildrenOfType(FooterGenericLogo, props.children);\n  const { isLightVariant } = useContext(FooterContext);\n\n  const genericLogosClassName = classNames('agora-footer-financing-section-generic-logos-container', {\n    'xl:justify-end': !!disclaimer\n  });\n\n  const containerClassNames = classNames('agora-footer-financing-section-container', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerClassNames} {...props}>\n      {disclaimer && <>{disclaimer}</>}\n\n      {genericLogos?.length > 0 && (\n        <nav className=\"agora-footer-financing-section-generic-logos\" aria-label={props.financingSectionAriaLabel}>\n          <ul className={genericLogosClassName}>{genericLogos}</ul>\n        </nav>\n      )}\n    </div>\n  );\n};\n","import './links-section-container.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\n\nimport { FooterContext, getChildrenOfType, NestedChildren } from '../../helpers';\nimport { LinksSectionRelatedLinks, LinksSectionSocialLinks } from '../../index';\nimport classNames from 'classnames';\n\ntype LinksSectionContainerChildren = ReactElement<typeof LinksSectionRelatedLinks> | ReactElement<typeof LinksSectionSocialLinks>;\n\nexport interface LinksSectionContainerProps extends HTMLAttributes<HTMLDivElement> {\n  children?: NestedChildren<LinksSectionContainerChildren>;\n}\n\nexport const LinksSectionContainer: FC<LinksSectionContainerProps> = (props) => {\n  const socialLinksSection = getChildrenOfType(LinksSectionSocialLinks, props.children);\n  const relatedLinksSection = getChildrenOfType(LinksSectionRelatedLinks, props.children);\n  const hasBothSections = !!socialLinksSection && !!relatedLinksSection;\n  const { isLightVariant } = useContext(FooterContext);\n\n  const containerClassNames = classNames('agora-footer-links-section-container', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  const dividerClassNames = classNames('agora-footer-links-section-container-divider', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerClassNames} {...props}>\n      {socialLinksSection}\n\n      {hasBothSections && <div className={dividerClassNames} />}\n\n      {relatedLinksSection}\n    </div>\n  );\n};\n","import './links-section-social-links.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\n\nimport { FooterLink, LinksSectionSocialLinksLabel } from '../../index';\nimport { FooterContext, getAllChildrenOfType, getChildrenOfType, NestedChildren } from '../../helpers';\nimport classNames from 'classnames';\n\ntype LinksSectionSocialLinksChildren = ReactElement<typeof LinksSectionSocialLinksLabel> | ReactElement<typeof FooterLink>;\n\nexport interface LinksSectionSocialLinksProps extends HTMLAttributes<HTMLDivElement> {\n  children?: NestedChildren<LinksSectionSocialLinksChildren>;\n  linksSectionSocialAriaLabel?: string;\n}\n\nexport const LinksSectionSocialLinks: FC<LinksSectionSocialLinksProps> = (props) => {\n  const socialLinksLabel = getChildrenOfType(LinksSectionSocialLinksLabel, props.children);\n  const links = getAllChildrenOfType(FooterLink, props.children);\n  const { isLightVariant } = useContext(FooterContext);\n\n  const containerClassNames = classNames('agora-footer-links-section-social-links', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerClassNames} {...props}>\n      {socialLinksLabel}\n\n      <nav aria-label={props.linksSectionSocialAriaLabel}>\n        <ul className=\"links-container\">{links}</ul>\n      </nav>\n    </div>\n  );\n};\n","import './links-section-related-links.css';\nimport React, { FC, HTMLAttributes, ReactElement, useContext } from 'react';\n\nimport { FooterLink, LinksSectionRelatedLinksCopyright } from '../../index';\nimport { FooterContext, getAllChildrenOfType, getChildrenOfType, NestedChildren } from '../../helpers';\nimport classNames from 'classnames';\n\ntype LinksSectionRelatedLinksChildren = ReactElement<typeof FooterLink> | ReactElement<typeof LinksSectionRelatedLinksCopyright>;\n\nexport interface LinksSectionRelatedLinksProps extends HTMLAttributes<HTMLDivElement> {\n  children?: NestedChildren<LinksSectionRelatedLinksChildren>;\n  linksSectionRelatedAriaLabel?: string;\n}\n\nexport const LinksSectionRelatedLinks: FC<LinksSectionRelatedLinksProps> = (props) => {\n  const links = getAllChildrenOfType(FooterLink, props.children);\n  const copyright = getChildrenOfType(LinksSectionRelatedLinksCopyright, props.children);\n  const { isLightVariant } = useContext(FooterContext);\n\n  const containerClassNames = classNames('agora-footer-links-section-related-links', {\n    'border-black/5': isLightVariant,\n    'border-white/5': !isLightVariant\n  });\n\n  return (\n    <div className={containerClassNames} {...props}>\n      {links.length > 0 && (\n        <nav aria-label={props.linksSectionRelatedAriaLabel}>\n          <ul className=\"links-container\">{links}</ul>\n        </nav>\n      )}\n\n      {copyright && <>{copyright}</>}\n    </div>\n  );\n};\n","import './links-section-related-links-copyright.css';\nimport React, { FC, HTMLAttributes, ReactNode, useContext } from 'react';\nimport { FooterContext } from '../../../helpers';\nimport classNames from 'classnames';\n\nexport interface LinksSectionRelatedLinksCopyrightProps extends HTMLAttributes<HTMLSpanElement> {\n  children?: ReactNode;\n}\n\nexport const LinksSectionRelatedLinksCopyright: FC<LinksSectionRelatedLinksCopyrightProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  const copyrightClassName = classNames('agora-footer-links-section-related-links-copyright', {\n    'text-[var(--color-neutral-700)]': isLightVariant,\n    'text-[var(--color-neutral-500)]': !isLightVariant\n  });\n\n  return (\n    <span className={copyrightClassName} {...props}>\n      {props.children}\n    </span>\n  );\n};\n","import './links-section-social-links-label.css';\nimport React, { FC, HTMLAttributes, ReactNode, useContext } from 'react';\nimport { FooterContext } from '../../../helpers';\nimport classNames from 'classnames';\n\nexport interface LinksSectionSocialLinksLabelProps extends HTMLAttributes<HTMLSpanElement> {\n  children?: ReactNode;\n}\n\nexport const LinksSectionSocialLinksLabel: FC<LinksSectionSocialLinksLabelProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  const labelClassName = classNames('agora-footer-links-section-social-links-label', {\n    'text-[var(--color-neutral-900)]': isLightVariant,\n    'text-[var(--color-neutral-500)]': !isLightVariant\n  });\n\n  return (\n    <span className={labelClassName} {...props}>\n      {props.children}\n    </span>\n  );\n};\n","import './footer-disclaimer.css';\nimport React, { FC, HTMLAttributes, ReactNode, useContext } from 'react';\nimport { FooterContext } from '../../helpers';\nimport classNames from 'classnames';\n\nexport interface FooterDisclaimerProps extends HTMLAttributes<HTMLSpanElement> {\n  children?: ReactNode;\n}\n\nexport const FooterDisclaimer: FC<FooterDisclaimerProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  const copyrightClassName = classNames('agora-footer-disclaimer', {\n    'text-[var(--color-neutral-700)]': isLightVariant,\n    'text-[var(--color-neutral-500)]': !isLightVariant\n  });\n\n  return (\n    <span className={copyrightClassName} {...props}>\n      {props.children}\n    </span>\n  );\n};\n","import React, { FC, HTMLAttributes, ReactNode } from 'react';\n\nexport interface FooterGenericLogoProps extends HTMLAttributes<HTMLLIElement> {\n  children?: ReactNode;\n}\n\nexport const FooterGenericLogo: FC<FooterGenericLogoProps> = (props) => (\n  <li className=\"agora-footer-generic-logo\" {...props}>\n    {props.children}\n  </li>\n);\n","import './footer-link.css';\nimport React, { FC, useContext } from 'react';\nimport { Anchor, AnchorProps } from '@/components/anchor';\nimport { FooterContext } from '../../helpers';\n\nexport interface FooterLinkProps extends AnchorProps {}\n\nexport const FooterLink: FC<FooterLinkProps> = (props) => {\n  const { isLightVariant } = useContext(FooterContext);\n\n  return (\n    <li className=\"agora-footer-link\">\n      <Anchor darkMode={!isLightVariant} {...props} />\n    </li>\n  );\n};\n","import { createContext, ReactElement } from 'react';\n\nexport type NavigationRailPositions = 'right' | 'left';\n\nexport type NavigationRailContextType = {\n  darkMode: boolean;\n  position: NavigationRailPositions;\n  expanded: boolean;\n};\n\ntype NavigationRailChildType = ReactElement | ReactElement[] | undefined;\n\nexport const NavigationRailContext = createContext<NavigationRailContextType>({\n  darkMode: false,\n  position: 'right',\n  expanded: false\n});\n\nexport const getChildrenOfType = (childType: unknown, children: NavigationRailChildType) => {\n  if (!children) {\n    return null;\n  }\n\n  let childrenArray: ReactElement[];\n\n  if (Array.isArray(children)) {\n    childrenArray = children;\n  } else {\n    childrenArray = [children];\n  }\n\n  const childFound = childrenArray.find((child) => child.type === childType);\n\n  return childFound || null;\n};\n\nexport const getAllChildrenOfType = (childType: unknown[], children: NavigationRailChildType) => {\n  if (!children) {\n    return [];\n  }\n\n  let childrenArray: ReactElement[];\n\n  if (Array.isArray(children)) {\n    childrenArray = children;\n  } else {\n    childrenArray = [children];\n  }\n\n  const childrenFound = childrenArray.filter((child) => childType.includes(child.type));\n\n  return childrenFound || [];\n};\n\nexport const handlerExpandButtonIcon = (position: NavigationRailPositions, opened: boolean) => {\n  const iconForLeftPositionedRail = {\n    leadingIcon: opened ? 'agora-line-expand-left' : 'agora-line-expand-right',\n    leadingIconHover: opened ? 'agora-solid-expand-left' : 'agora-solid-expand-right'\n  };\n\n  const iconForRightPositionedRail = {\n    trailingIcon: opened ? 'agora-line-expand-right' : 'agora-line-expand-left',\n    trailingIconHover: opened ? 'agora-solid-expand-right' : 'agora-solid-expand-left'\n  };\n\n  const currentIconPosition = position === 'left' ? iconForLeftPositionedRail : iconForRightPositionedRail;\n\n  return currentIconPosition;\n};\n","import './navigation-rail.css';\nimport React, { Children, FC, isValidElement, ReactElement, useMemo } from 'react';\n\nimport classNames from 'classnames';\nimport { BooleanProp } from '@/models';\nimport { stringToBoolean } from '@/utils';\nimport { ActionButton, ExpandButton, NavigationRailAnchor, NavigationRailDrawer } from './index';\nimport { getAllChildrenOfType, getChildrenOfType, NavigationRailContext, NavigationRailPositions } from './helper';\n\nexport type NavigationRailChildren =\n  | ReactElement<typeof ExpandButton>\n  | ReactElement<typeof NavigationRailAnchor>\n  | ReactElement<typeof NavigationRailDrawer>\n  | ReactElement<typeof ActionButton>\n  | boolean;\n\nexport interface NavigationRailProps {\n  /**\n   * The flag to set if navigation rail is open or closed.\n   */\n  expanded?: BooleanProp;\n  /**\n   * The flag to set Dark mode.\n   */\n  darkMode?: BooleanProp;\n  /**\n   * Defines the orientation of navigation rail.\n   */\n  position?: NavigationRailPositions;\n  /**\n   * The children of the component, which can be of type `ExpandButton`, `NavigationRailAnchor`, `NavigationRailDrawer` or `ActionButton`.\n   */\n  children?: NavigationRailChildren | NavigationRailChildren[];\n}\n\nexport const NavigationRail: FC<NavigationRailProps> = ({ children, position = 'left', darkMode = false, expanded = false }) => {\n  const validChildren = useMemo(() => Children.toArray(children).filter(isValidElement), [children]);\n\n  const expandButton = getChildrenOfType(ExpandButton, validChildren);\n  const navigationAndDrawerButtons = getAllChildrenOfType([NavigationRailAnchor, NavigationRailDrawer], validChildren);\n  const actionButton = getChildrenOfType(ActionButton, validChildren);\n\n  const darkModeBoolean = stringToBoolean(darkMode);\n  const expandedBoolean = stringToBoolean(expanded);\n\n  const navigationRailClassName = classNames('navigation-rail', {\n    'navigation-rail-expanded': expandedBoolean\n  });\n\n  const buttonsContainerClassName = classNames('navigation-rail-buttons-container', {\n    'navigation-rail-dark-mode': darkModeBoolean,\n    'navigation-rail-light-mode': !darkModeBoolean,\n    'navigation-rail-buttons-container-expanded-right': expandedBoolean && position === 'right'\n  });\n\n  const navigationRailContextValue = useMemo(\n    () => ({ darkMode: darkModeBoolean, position, expanded: expandedBoolean }),\n    [darkModeBoolean, position, expandedBoolean]\n  );\n\n  return (\n    <nav className={navigationRailClassName}>\n      <NavigationRailContext value={navigationRailContextValue}>\n        <ul className={buttonsContainerClassName}>\n          {expandButton} {navigationAndDrawerButtons} {actionButton}\n        </ul>\n      </NavigationRailContext>\n    </nav>\n  );\n};\n","import './expand-button.css';\nimport React, { FC, useContext } from 'react';\n\nimport classNames from 'classnames';\nimport { handlerExpandButtonIcon, NavigationRailContext } from '../../helper';\nimport { Button, ButtonProps } from '@/components/button';\n\nexport interface ExpandButtonProps extends ButtonProps {}\n\nexport const ExpandButton: FC<ExpandButtonProps> = ({ children, ...props }) => {\n  const { darkMode, position, expanded } = useContext(NavigationRailContext);\n\n  const containerClassName = classNames('navigation-rail-expand-button-container', {\n    expanded: expanded\n  });\n\n  const buttonClassName = classNames('navigation-rail-expand-button', {\n    'dark-mode': darkMode,\n    'light-mode': !darkMode\n  });\n\n  const variant = darkMode ? 'neutral' : 'primary';\n\n  return (\n    <li className={containerClassName}>\n      <Button\n        hasIcon\n        fullWidth\n        variant={variant}\n        darkMode={darkMode}\n        appearance=\"outline\"\n        className={buttonClassName}\n        {...handlerExpandButtonIcon(position, expanded)}\n        {...props}\n      >\n        {children}\n      </Button>\n    </li>\n  );\n};\n","import React, { FC } from 'react';\nimport { Button, ButtonProps } from '@/components/button';\nimport classNames from 'classnames';\nimport { handlerExpandButtonIcon, NavigationRailPositions } from '../../helper';\nimport './expand-button-outside.css';\n\nexport interface ExpandButtonOutsideProps extends ButtonProps {\n  isNavigationRailOpened: boolean;\n  position: NavigationRailPositions;\n}\n\nexport const ExpandButtonOutside: FC<ExpandButtonOutsideProps> = ({ darkMode, position, isNavigationRailOpened, children, ...props }) => {\n  const buttonClassNames = classNames('expand-button-outside flex !rounded-none', {\n    'dark-mode': darkMode,\n    'light-mode': !darkMode,\n    '!justify-end': position === 'right',\n    '!justify-start': position === 'left'\n  });\n\n  const variant = darkMode ? 'neutral' : 'primary';\n\n  return (\n    <Button\n      hasIcon\n      fullWidth\n      appearance=\"link\"\n      darkMode={darkMode}\n      className={buttonClassNames}\n      variant={variant}\n      {...handlerExpandButtonIcon(position, isNavigationRailOpened)}\n      {...props}\n    >\n      {children}\n    </Button>\n  );\n};\n\nexport default ExpandButtonOutside;\n","import './navigation-rail-anchor.css';\nimport React, { FC, useContext, useEffect, useRef } from 'react';\n\nimport classNames from 'classnames';\nimport { NavigationRailContext } from '../../helper';\nimport { Anchor, AnchorProps } from '@/components/anchor';\n\nexport interface NavigationRailAnchorProps extends AnchorProps {\n  active?: boolean;\n  borderless?: boolean;\n  isTextBold?: boolean;\n}\n\nexport const NavigationRailAnchor: FC<NavigationRailAnchorProps> = ({\n  children,\n  active = false,\n  borderless = false,\n  leadingIcon,\n  isTextBold,\n  trailingIcon,\n  leadingIconHover,\n  trailingIconHover,\n  ...props\n}) => {\n  const { darkMode, expanded, position } = useContext(NavigationRailContext);\n  const anchorRef = useRef<HTMLAnchorElement>(null);\n\n  useEffect(() => {\n    if (active && anchorRef.current) {\n      anchorRef.current.focus();\n    }\n  }, [active]);\n\n  const anchorContainerClassName = classNames('navigation-rail-navigation-anchor-container', {\n    'w-full': expanded,\n    'borderless': borderless && active,\n    'dark-mode-active': darkMode && active,\n    'light-mode-active': !darkMode && active,\n    'border-left': active && position === 'left',\n    'border-right': active && position === 'right'\n  });\n\n  const anchorClassName = classNames('navigation-rail-navigation-anchor', {\n    'closed': !expanded,\n    'light-mode': !darkMode,\n    'text-bold-opened': expanded && isTextBold,\n    'text-bold-closed': !expanded && isTextBold,\n    'left-side': expanded && position === 'left',\n    'flex-col': !expanded && position === 'left',\n    'right-side': expanded && position === 'right',\n    'flex-col-reverse': !expanded && position === 'right'\n  });\n\n  const variant = darkMode ? 'neutral' : 'primary';\n\n  const leadingIconInternal = position === 'right' ? undefined : leadingIcon;\n  const trailingIconInternal = position === 'right' ? trailingIcon : undefined;\n\n  const leadingIconHoverInternal = position === 'right' ? undefined : leadingIconHover;\n  const trailingIconHoverInternal = position === 'right' ? trailingIconHover : undefined;\n\n  return (\n    <li className={anchorContainerClassName}>\n      <Anchor\n        hasIcon\n        fullWidth\n        ref={anchorRef}\n        appearance=\"link\"\n        variant={variant}\n        darkMode={darkMode}\n        leadingIcon={leadingIconInternal}\n        trailingIcon={trailingIconInternal}\n        leadingIconHover={leadingIconHoverInternal}\n        trailingIconHover={trailingIconHoverInternal}\n        className={anchorClassName}\n        {...props}\n      >\n        {children}\n      </Anchor>\n    </li>\n  );\n};\n","import './action-button.css';\nimport React, { FC, useContext } from 'react';\n\nimport classNames from 'classnames';\nimport { NavigationRailContext } from '../../helper';\nimport { Button, ButtonProps } from '@/components/button';\n\nexport interface ActionButtonProps extends ButtonProps {}\n\nexport const ActionButton: FC<ActionButtonProps> = ({ children, ...props }) => {\n  const { darkMode, expanded, position } = useContext(NavigationRailContext);\n\n  const containerClassName = classNames('navigation-rail-action-button-container', {\n    expanded: expanded\n  });\n\n  const buttonClassName = classNames('navigation-rail-action-button', {\n    'dark-mode': darkMode,\n    'light-mode': !darkMode,\n    'text-to-right': expanded && position === 'left',\n    'text-to-left': expanded && position === 'right'\n  });\n\n  return (\n    <li className={containerClassName}>\n      <Button\n        hasIcon\n        fullWidth\n        variant=\"primary\"\n        appearance=\"solid\"\n        darkMode={darkMode}\n        className={buttonClassName}\n        leadingIcon=\"agora-line-plus-circle\"\n        leadingIconHover=\"agora-solid-plus-circle\"\n        {...props}\n      >\n        {children}\n      </Button>\n    </li>\n  );\n};\n","import React, { FC, ReactElement, useContext, useId, useState } from 'react';\nimport './navigation-rail-drawer.css';\nimport { Button, ButtonProps } from '@/components/button';\nimport classNames from 'classnames';\nimport { NavigationRailAnchor } from '../../index';\nimport { getAllChildrenOfType, NavigationRailContext } from '../../helper';\nimport { Pill } from '@/components/pill';\n\nexport type NavigationRailDrawerChildren = ReactElement<typeof NavigationRailAnchor> | ReactElement<typeof NavigationRailDrawer>;\n\nexport interface NavigationRailDrawerDrawerProps extends ButtonProps {\n  label: string;\n  numberPill?: number;\n  startOpened?: boolean;\n  isTextBold?: boolean;\n  hasChildrenActivated?: boolean;\n  children?: NavigationRailDrawerChildren | NavigationRailDrawerChildren[];\n}\n\nexport const NavigationRailDrawer: FC<NavigationRailDrawerDrawerProps> = ({\n  label,\n  leadingIcon,\n  trailingIcon,\n  isTextBold,\n  leadingIconHover,\n  trailingIconHover,\n  children,\n  numberPill,\n  hasChildrenActivated,\n  startOpened,\n  ...props\n}) => {\n  const { expanded, darkMode, position } = useContext(NavigationRailContext);\n  const [opened, setOpened] = useState(startOpened || hasChildrenActivated);\n  const generatedId = useId();\n\n  if (!expanded) {\n    return (\n      <NavigationRailAnchor\n        borderless\n        href=\"#\"\n        isTextBold={isTextBold}\n        leadingIcon={leadingIcon}\n        trailingIcon={trailingIcon}\n        leadingIconHover={leadingIconHover}\n        trailingIconHover={trailingIconHover}\n        active={hasChildrenActivated}\n        onClick={(event) => {\n          event.preventDefault();\n          const buttonEventClick = event as unknown as React.MouseEvent<HTMLButtonElement, MouseEvent>;\n          props?.onClick?.(buttonEventClick);\n        }}\n      >\n        {label}\n      </NavigationRailAnchor>\n    );\n  }\n\n  const drawerAndNavigationRailAnchor = getAllChildrenOfType([NavigationRailAnchor, NavigationRailDrawer], children);\n\n  const buttonClassName = classNames('navigation-rail-drawer-button', {\n    'activated': hasChildrenActivated,\n    'text-bold-opened': expanded && isTextBold,\n    'text-bold-closed': !expanded && isTextBold,\n    '!h-[76px]': expanded,\n    '!h-[100px]': !expanded,\n    'light-mode': !darkMode,\n    'navigation-rail-drawer-button-left-side': position === 'left',\n    'navigation-rail-drawer-button-right-side': position === 'right'\n  });\n\n  const childrenContainerClassName = classNames('w-full', {\n    'pl-16': position === 'left',\n    'pr-16': position === 'right'\n  });\n\n  const variant = darkMode ? 'neutral' : 'primary';\n\n  const chevron = opened ? 'agora-line-chevron-up' : 'agora-line-chevron-down';\n\n  const iconLeftSide = {\n    leadingIcon: leadingIcon,\n    leadingIconHover: leadingIconHover,\n    trailingIcon: chevron,\n    trailingIconHover: chevron\n  };\n\n  const iconRightSide = {\n    leadingIcon: chevron,\n    leadingIconHover: chevron,\n    trailingIcon: trailingIcon,\n    trailingIconHover: trailingIconHover\n  };\n\n  const currentIcon = position === 'left' ? iconLeftSide : iconRightSide;\n\n  function onClickDrawer(event: React.MouseEvent<HTMLButtonElement, MouseEvent>) {\n    setOpened((oldState) => !oldState);\n    props.onClick?.(event);\n  }\n\n  const navigationRailDrawerId = `agora-navigation-rail-drawer-${generatedId}`;\n\n  return (\n    <li className=\"navigation-rail-drawer-container\">\n      <Button\n        hasIcon\n        {...currentIcon}\n        appearance=\"link\"\n        variant={variant}\n        darkMode={darkMode}\n        fullWidth={expanded}\n        aria-expanded={opened}\n        className={buttonClassName}\n        aria-controls={navigationRailDrawerId}\n        {...props}\n        onClick={onClickDrawer}\n      >\n        {label}\n\n        {numberPill && (\n          <div className=\"inline-block mx-16\">\n            <Pill darkMode={darkMode} variant=\"neutral\" appearance=\"outline\">\n              {numberPill}\n            </Pill>\n          </div>\n        )}\n      </Button>\n\n      {opened && (\n        <div className={childrenContainerClassName} id={navigationRailDrawerId}>\n          {drawerAndNavigationRailAnchor}\n        </div>\n      )}\n    </li>\n  );\n};\n","import { createContext } from 'react';\nimport { EcosystemBarVariant } from './ecosystem-bar';\n\ninterface EcosystemBarContextValue {\n  darkMode: boolean;\n  contentId: string;\n  isContentOpen: boolean;\n  toggleContent: () => void;\n  variant: EcosystemBarVariant;\n}\n\nexport const EcosystemBarContext = createContext<EcosystemBarContextValue>({\n  contentId: '',\n  darkMode: false,\n  variant: 'white',\n  isContentOpen: false,\n  toggleContent: () => {}\n});\n","import { Children, isValidElement, ReactElement, ReactNode } from 'react';\n\ntype ChildType = ReactNode | undefined;\n\nfunction getValidChildren(children: ChildType): ReactElement[] {\n  return Children.toArray(children).filter(isValidElement);\n}\n\nexport function getChildrenOfType<T>(childType: T, children: ChildType) {\n  const childrenArray = getValidChildren(children);\n\n  const childFound = childrenArray.find((child) => child.type === childType);\n\n  return childFound || null;\n}\n\nexport function getAllChildrenOfType<T>(childType: T, children: ChildType) {\n  const childrenArray = getValidChildren(children);\n\n  return childrenArray.filter((child) => child.type === childType);\n}\n","import React, { ComponentProps, useId, useState } from 'react';\nimport { EcosystemBarContext } from './helper';\nimport classNames from 'classnames';\nimport { getChildrenOfType } from '@/utils/get-children';\nimport { EcosystemBarButton, EcosystemBarContent } from './index';\n\nimport './ecosystem-bar.css';\n\nexport type EcosystemBarVariant = 'white' | 'neutral' | 'brand' | 'dark';\n\nexport interface EcosystemBarProps extends ComponentProps<'div'> {\n  /**\n   * Defines if the component starts open or closed.\n   */\n  startOpen?: boolean;\n  /**\n   * Defines what style to apply.\n   */\n  variant?: EcosystemBarVariant;\n}\n\nconst DARK_VARIANTS = Object.freeze(['brand', 'dark']);\n\nfunction EcosystemBar({ variant = 'white', children, className, startOpen, ...props }: Readonly<EcosystemBarProps>) {\n  const [isContentOpen, setIsContentOpen] = useState(!!startOpen);\n\n  const contentId = useId();\n\n  const ecosystemBarButton = getChildrenOfType(EcosystemBarButton, children);\n  const ecosystemBarContent = getChildrenOfType(EcosystemBarContent, children);\n\n  const ecosystemBarClassName = classNames(`agora-ecosystem-bar variant-${variant}`, className);\n\n  function toggleContent() {\n    setIsContentOpen((oldState) => !oldState);\n  }\n\n  const context = {\n    variant,\n    contentId,\n    isContentOpen,\n    toggleContent: toggleContent,\n    darkMode: DARK_VARIANTS.includes(variant)\n  };\n\n  return (\n    <div {...props} className={ecosystemBarClassName}>\n      <EcosystemBarContext value={context}>\n        {ecosystemBarButton}\n\n        {isContentOpen && ecosystemBarContent}\n      </EcosystemBarContext>\n    </div>\n  );\n}\n\nexport { EcosystemBar };\n","import React, { MouseEvent, useContext } from 'react';\nimport { Button, ButtonProps } from '@/components/button';\nimport { EcosystemBarContext } from '../../helper';\nimport classNames from 'classnames';\n\nimport './ecosystem-bar-button.css';\n\nexport interface EcosystemBarButtonProps extends ButtonProps {}\n\nexport function EcosystemBarButton({ children, onClick, className, ...props }: EcosystemBarButtonProps) {\n  const { darkMode, toggleContent, isContentOpen, contentId } = useContext(EcosystemBarContext);\n\n  const trailingIcon = isContentOpen ? 'agora-line-chevron-up' : 'agora-line-chevron-down';\n\n  const buttonClassName = classNames('agora-ecosystem-bar-button', className);\n\n  function ecosystemBarButtonOnClick(event: MouseEvent<HTMLButtonElement>) {\n    toggleContent();\n    onClick?.(event);\n  }\n\n  return (\n    <div className=\"agora-ecosystem-bar-button-container\">\n      <Button\n        {...props}\n        hasIcon\n        type=\"button\"\n        variant=\"neutral\"\n        appearance=\"link\"\n        darkMode={darkMode}\n        aria-controls={contentId}\n        className={buttonClassName}\n        trailingIcon={trailingIcon}\n        aria-expanded={isContentOpen}\n        trailingIconHover={trailingIcon}\n        leadingIcon=\"agora-line-dashboard\"\n        leadingIconHover=\"agora-line-dashboard\"\n        onClick={ecosystemBarButtonOnClick}\n      >\n        {children}\n      </Button>\n    </div>\n  );\n}\n","import React, { ComponentProps, useContext } from 'react';\nimport { EcosystemBarContext } from '../../helper';\nimport classNames from 'classnames';\n\nimport './ecosystem-bar-content.css';\n\nexport interface EcosystemBarContentProps extends ComponentProps<'div'> {}\n\nexport function EcosystemBarContent({ children, className, ...props }: Readonly<EcosystemBarContentProps>) {\n  const { variant, contentId } = useContext(EcosystemBarContext);\n\n  const ecosystemBarClassName = classNames(`agora-ecosystem-bar-content-container variant-${variant}`, className);\n\n  return (\n    <div {...props} id={contentId} className={ecosystemBarClassName}>\n      <div className=\"agora-ecosystem-bar-content\">{children}</div>\n    </div>\n  );\n}\n"],"names":["AgoraTailwindConfig","addComponents","addBase","theme","extractColorVars","colorObj","colorGroup","vars","colorKey","value","extractedColorVar","hasOwn","classNames","classes","i","arg","appendClass","parseValue","key","newClass","module","iconList","lazy","allIcons","c","isBundledIcon","name","iconsCache","loadIcon","cachedIcon","lazyComponent","InternalIcon","dimensions","onIconLoad","onIconError","props","applyDefaultColor","_a","_b","onLoad","onError","React","LazyComponent","fullProps","Suspense","Icon","memo","prevProps","nextProps","IconItem","state","IconSet","ref","className","children","Children","child","isValidElement","childState","childProps","iconClassName","createSyntheticEvent","target","eventType","event","isDefaultPrevented","isPropagationStopped","preventDefault","stopPropagation","debounce","func","timeout","timer","args","useDebounceHook","useRef","setArgs","useState","useEffect","getDateString","d","dayString","monthString","yearString","normalizeText","text","stringToBoolean","useExpandedRef","innerRef","data","externalRef","useImperativeHandle","_","safeData","asyncTrigger","useWindowSize","fallback","size","setSize","updateSize","useBreakpointScreenValues","xsScreen","mdScreen","xlScreen","Accordion","hasIcon","leadingIcon","leadingIconHover","darkMode","headingTitle","Component","defaultExpanded","expandedFromProps","onExpanded","onCollapsed","onChange","ariaLabel","generatedId","useId","isControlled","hasDefaultValue","internalExpandedValue","setInternalExpandedValue","activeState","setActiveState","width","isMobile","expanded","eventToTrigger","setEventToTrigger","summaryRef","hadFocusRef","expand","silentExpand","collapse","silentCollapse","toggle","silentToggle","onExpandedRef","onCollapsedRef","onChangeRef","expandedEvt","collapsedEvt","changeEvt","_c","AccordionClassName","AccordionBodyClassName","AccordionIconClassName","onClickHandler","onKeyDownHandler","evt","onKeyUpHandler","onMouseDownHandler","onMouseUpHandler","onMouseLeaveHandler","onMouseEnterHandler","AccordionGroup","generatedAccordionGroupId","accordionsRefMap","useMemo","updateRefMap","id","acc","renderAccordions","index","newRef","createRef","AccordionGroupClassName","Anchor","appearance","variant","fullWidth","iconOnly","leadingIconActive","trailingIcon","trailingIconHover","trailingIconActive","inline","anchorClassName","handleClick","isTouchDevice","handleMouseEnter","handleMouseLeave","handleMouseDown","handleMouseUp","onBlur","TOOLTIP_CHANGE_EVENT_NAME","Tooltip","hasTitle","position","alignment","title","description","top","setTop","left","setLeft","setWidth","height","setHeight","setDimensions","useCallback","rect","propsClone","TooltipContainerClassName","TooltipClassName","visibility","setVisibility","showTooltip","hideTooltip","handleEscapeKey","handleTooltipMouseLeave","handleTooltipChange","customEventArgs","parsedChildren","cloneElement","relatedElement","cb","topPositioning","bottomPositioning","leftPositioning","rightPositioning","tooltipPosition","TooltipContent","memoPortal","createPortal","Button","innerButtonRef","buttonClassName","_d","shouldTriggerClick","InteractiveAvatar","onActivate","alt","ariaHasPopup","ariaExpanded","ariaCurrent","role","tabIndex","NonInteractiveAvatar","Avatar","avatarType","srcPath","hasBadge","information","badgePosition","badgeVariant","badgeAppearance","badgeSize","tooltipAlignment","interactive","containerClasses","memoContent","avatarClasses","badgeClasses","InternalDropdownContext","createContext","useInternalDropdownContext","useContext","InternalDropdownFilterSection","debounceTimeout","dropdownContext","applyFilter","hide","next","currentFilter","setCurrentFilter","debouncedApplyFilter","onInputChange","inputId","inputAriaLabel","inputPlaceholder","labelText","resetFilter","inputRef","onKeyDownCaptureHandler","onMouseDownCaptureHandler","dropdownFilterClasses","InternalNoResults","label","OptionComponent","type","icon","InternalDropdownOption","disabled","selected","filtered","iconPosition","onRangeSelection","sectionOptionId","internalDropdownOptionRef","parsedIconName","iconName","setIconName","selectOption","options","last","first","prev","optionWrapperClasses","select","option","opt","handleRangeSelectionAndSelect","isShiftClick","code","onMouseDownCapture","clickHandler","applySolidIcon","lastIconName","applyLineIcon","optionHeight","InternalDropdownSection","hideLabel","lastSelectedOption","setLastSelectedOption","sectionNameRef","sectionClassNames","handleRangeSelection","currentOptionId","sectionOptions","lastIndex","currentIndex","startIndex","endIndex","shouldSelect","optionClassNames","sectionNameHeight","labelVisible","InternalDropdownSelectAllSection","isAllDisabled","isAllSelected","selectAll","onKeydown","currentRef","handler","dropdownselectAllSectionClassNames","dropdownAllOptionClassNames","InternalDropdown","selectAllLabel","searchPlaceholder","searchAriaLabel","searchable","optionsVisible","noSearchResults","context","activeFilter","sections","filterRef","isOpenRef","maxHeightStyleProp","setMaxHeightStyleProp","getFilterSectionHeight","elem","val","getSelectAllSectionHeight","getVisibleSectionNamesHeight","visibleSections","heightCount","sectionName","getVisibleOptionsHeight","visibleOptions","visibleOptionsKeys","optionId","getListboxBorderWidths","computedStyle","borderTopWidth","borderBottomWidth","containedOptions","maxHeight","dropdownClasses","hasOptions","hasSectionsWithResults","allSectionResultsDisabled","visibleResults","sectionWithResults","s","section","useDropdownState","internalDropdownRef","hideSectionNames","onSearchChange","onShow","onHide","setSections","setOptions","backupOptions","setBackupOptions","parsedSectionProps","parsedOptionProps","sec","setActiveFilter","newFilter","lastFilter","lastOptions","newOptions","childrenVal","notFound","results","focusElem","inputFilter","opts","domOptions","idx","current","show","triggerOnChange","selectedOptions","o","isMultiSelection","isProvidedOption","isAllSectionOptionsSelected","availableOptions","hasOptionsUnselected","selectSectionOptions","allOptionsSelected","isInSectionProvided","hasSectionOptionsToInteract","hasOptionsNotDisabled","showDropdownHandler","showDropdown","dropdownState","Dropdown","firstCall","sectionChild","optionChild","DropdownSection","DropdownOption","handleWithAvailableSpace","containerDropdownRef","containerRef","distanceFromLeft","result","VisibleCountAvatarGroup","avatarCount","visibleCount","visibleCountAriaLabel","hoverBridgeClassname","countValue","avatarCountList","avatar","dropdownRef","buttonRef","isDropdownVisible","setIsDropdownVisible","handleKeydown","currentContainerRef","avatarKey","AvatarGroup","generatedAvatarGroupId","avatarGroupClasses","totalVisibleAvatars","renderAvatarListItem","BackToTop","tooltipVariant","hasTooltipTitle","tooltipTitle","tooltipDescription","backToTopClassName","goToTop","BreadcrumbDesktop","items","BreadcrumbClassName","link","BreadcrumbMobile","sectionTitle","isExpanded","setIsExpanded","listRef","breadcrumbIndents","closeMenuClickHandler","handleTabKey","linkList","liParentNode","setKeyboardKeydownBehavior","firstLink","expandMenu","breadcrumbItemIndent","Breadcrumb","baseClasses","desktopBreadcrumbClassnames","mobileBreadcrumbClassnames","useHandlerOrientationChange","ignoreHandlerOrientation","orientationState","setOrientationState","componentWidth","setComponentWidth","currentComponentWidth","ToggleGroup","orientation","multiple","valueFromProps","defaultValue","onChangeFromProps","toggleGroupClassName","parsedDefaultValue","internalValue","setInternalValue","parsedChildValue","isChecked","cv","newVals","v","newVal","ButtonGroup","childrenButtons","ret","buttonGroupClasses","buttonGroupContainer","Pill","circular","pillClassName","useBlockedLink","parentCardRef","anchorRef","blockedLink","activateLink","onClickCaptureHandler","anchorElement","parentCardElem","CardArticle","hasPill","pill","mainAnchor","image","Heading","subtitle","cardArticleRef","cardArticleAnchorRef","onlyAnchor","headingPlacement","anchorPlacement","mainAnchorClone","buildText","anchorProps","isAnchor","isHeading","cardClassNames","anchorContainerClassNames","CardCollection","cardCollectionRef","cardCollectionAnchorRef","CardCollectionClass","CardEmphasize","mainButton","cardEmphasizeClasseNames","iconProps","buttonProps","LinkWrapper","anchorContainerClassName","CardError","backLink","statusCodeMessage","CardLinksClasses","BookmarkIcon","fill","fillTop","newProps","CardAccordion","previousEventToTrigger","DarkBackground","HeaderClassName","CardExpandable","cardTitle","cardSubtitle","showBookmarkIcon","accordionHeadingTitle","cardExpandableClasses","useBlockedLinkV2","mainLinkRef","a","mainLinkElement","CardFrame","mainLink","linkPosition","cardFrameRef","mainAnchorElementRef","mainLinkElementRef","cardFrameClassNames","cardFrameContainerClass","CardFullImage","cardFullImageClassName","CardHeroHelper","helpTopics","CardHeroHelperClasses","block","CardHeroIndex","CardExpandableClasses","cardIndex","CardHeroSitemap","anchors","highlightedLink","arrayLink","CardHeroSitemapClasses","InnerHighlightCard","links","CardHighlight","highlightAreaPosition","cardPosition","cardSize","cardHighlightClassName","isTablet","cardInfoRef","cardContentRef","spaceBetweenElements","marginTop","heightLessDefaultValue","CardHighlightNewsletter","cardHighlightNewsletterClassName","CardHighlightSingle","actionButton","CardHighLightClasses","CardLinks","category","date","topics","padding","cardLinksRef","cardLinksClasses","pseudoDarkMode","imageOverlayClassNames","anchorKey","topic","Item","List","listStyle","startNumber","ComponentType","mappedLIElements","stringOrReactNode","CardNoResults","hasAnchor","valueAnchor","anchorLeadingIcon","anchorLeadingIconHover","anchorTrailingIcon","anchorTrailingIconHover","itemList","anchorHref","hasList","anchorTarget","extraDescription","cardNoResultsClasses","mainContentClasses","hasAnyAnchorIcon","item","CardSingle","cardSingleRef","cardSingleAnchorRef","CardSingleClasses","CardTopic","statusLabel","status","variantMemo","cardTopicRef","cardTopicAnchorRef","cardTopicClasseNames","cardStatusClasseNames","cardActionVariantsMap","CardAction","isCardHorizontal","titleText","descriptionText","button","buttonFullWidth","buttonVariant","buttonDarkMode","cardActionContainerClassNames","cardActionClassNames","iconLogoClassNames","buttonClassNames","cardIllustrativeAnchorVariantsMap","getSVGElement","getImageElement","CardIllustrative","subtitleText","imageFilter","bgIllustration","bgIllustrationHover","cardIllustrativeRef","anchorVariant","anchorDarkMode","cardIllustrativeContainerClassNames","cardInnerContainerClassNames","svgElem","svgElemHover","imgElem","pillVariant","CardGeneral","anchor","pillText","iconHover","statusText","iconActive","imageIndent","iconDefault","isBlockedLink","cardRef","cardHorizontal","imageHasIndent","isSimple","isSimpleHorizontal","isVerticalWithImage","isHorizontalWithImage","isVerticalWithIcon","isHorizontalWithIcon","cardGeneralClassNames","imageClassNames","cardGeneralIconClassNames","iconClassNames","containerContentClassNames","contentClassNames","StatusCard","showIcon","anchorOnRightSide","statusCard","cardType","pillProps","statusCardClassNames","iconMap","Feedback","feedbackState","feedbackText","feedbackStateLabel","feedbackWrapperClasses","feedbackIconWrapperClasses","feedbackTextClasses","feedbackStateIconsMap","clonedProps","computedRole","computedAriaLive","HelperText","helperText","helperTextWrapperClasses","helperTextClasses","Checkbox","hasError","required","hasFeedback","hasHelperText","hasFeedbackText","hasHelperTextValue","currentChecked","setCurrentChecked","isRequired","inputWrapper","handleChange","handleKeyDown","checked","ariaDescribedByText","CardNotification","hasAvatar","avatarProps","hasCheckbox","rest","variantValue","isDarkVariant","isReadVariant","allowBadgeForVariant","showNotificationCircle","showAvatar","showCheckbox","hasHeaderMedia","isHorizontal","isVertical","isMobileInlineTexts","notificationCircleClassNames","checkboxAriaLabel","CheckboxGroup","legend","hidden","fieldsetProps","innerOnChange","mappedCheckbox","colorLegend","Dialog","visible","fullScreen","dismissOnBackdropClick","dismissOnEscape","onClickedOutside","onEscape","isVisible","setIsVisible","innerDialogRef","focusableElements","b","firstElement","lastElement","handleClickOutside","autoFocusIndex","e","containerClassNames","Drawer","ariaLabelledby","open","setOpen","dialogRef","drawerClassNames","handleClose","fn","_f","_e","RatingButtons","likeButton","dislikeButton","pressedButton","setPressedButton","handleToggleButton","buttonType","createButton","ratingButtonClasses","ratingButtonWrapperClasses","parsedLikeButton","parsedDislikeButton","RatingIcons","readOnly","iconElements","startWrapperRef","selectedIndex","setSelectedIndex","hoverIndex","setHoverIndex","onkeyDownHandler","handleFocusIcon","dataValue","focusedIcon","ratingIconClasses","iconReactElement","iconValue","isHovered","isSelected","clonedIcon","iconKey","tabIndexValue","ratingButtons","message","showMessage","setShowMessage","feedbackClasses","parsedRatingButtons","FooterBrandBadge","brandImage","badgeImage","FooterCaptionPartners","caption","partnersLogos","partnersLogosAriaLabel","textColor","anchorTextColor","_i","partner","FooterSocialUsefulCopyright","socialsLink","usefulLinks","copyright","socialsLinkAriaLabel","usefulLinksAriaLabel","borderColorClass","copyrightTextColorClass","social","MainFooter","bgColorClass","FederatedFooterCard","FederatedFooter","card","isDarkMode","PublicFooterContacts","contacts","contactsOnly","hasCardLinks","contactsClassName","contact","PublicFooterHighlightCard","cardClassName","cardHelpClassName","setCardLinkVW","vw","PublicFooterHighlightCardLinks","cardLinks","textColorClass","PublicFooterHighlight","footerHighlightClassName","cardFooterClassName","PublicFooterMainPlusCardLinks","PublicFooter","GlossaryLetters","letters","lettersComponents","letter","isDisabled","letterClassName","href","HeaderDataContext","useHeaderDataContext","Area","Areas","GeneralBar","hasVisibleAreasProps","generalBarReactElement","areasReactElement","areaReactElements","getParseAreasAriaLabel","getParsedOnAreaChange","getParsedAvailableAreaProps","areas","p","getParsedActiveAreaProps","AuthenticatedFooterAction","AuthenticatedHeader","Authenticated","AuthenticatedBody","AuthenticatedBodyLink","AuthenticatedFooter","getParsedAuthenticatedProps","authenticatedReactElement","getParsedAuthenticatedHeaderProps","authenticatedHeaderReactElement","getParsedAuthenticatedBodyLinkProps","authenticatedBodyReactElement","getParsedAuthenticatedFooterActionProps","authenticatedFooterReactElement","Brand","Institutional","Logo","getParsedInstitutionalPhrase","brandReactElement","institutionalElement","getParsedLogo","logoElement","getParsedGeneralBarAriaLabel","Language","Languages","getLanguagesProps","hasLanguagesProps","getParsedLanguagesAriaLabel","languagesReactElement","getParsedOnLanguageChange","getParsedAvailableLanguageProps","languageReactElements","getParsedCheckedLanguageProps","lang","NavigationBar","NavigationFreestyle","NavigationLink","NavigationRoot","getParsedNavigationBarProps","navigationBarReactElement","getParsedNavigationBarId","countParsedNavigationItems","getParsedNavigationItems","getParsedModalMenuLabel","getParsedModalAriaLabel","getParsedModalCloseLabel","getParsedResponsiveMenuLabel","getParsedResponsiveMenuAriaLabel","getParsedResponsiveMenuBackToRootLabel","hasNavigationBarInternal","CustomSearch","DefaultSearch","Search","SearchInputContainer","SearchRelatedLink","SearchRelatedLinks","SearchRelatedLinksTitle","SearchTitle","Equalizer","InputSearchBar","hasVoiceActionButton","voiceActionAltText","searchActionAltText","isVoiceActive","onVoiceActivate","onSearchActivate","searchButtonRef","voiceButtonRef","currentTarget","setCurrentTarget","handleChangeEvent","onVoiceButtonClick","onSearchButtonClick","inputWrapperClassNames","labelSectionClasses","MIN_SEARCH_LENGTH","hasSearchProps","getSearchButtonLabel","searchPropsElement","hasDefaultSearchProps","defaultSearchPropsElement","getParsedDefaultSearchTitle","defaultSearchTitleElem","getParsedDefaultSearchInputBar","defaultSearchInputSearchBarElement","inputSearchBarElement","getParsedCustomSearchInputBar","getParsedDefaultSearchRelatedLinksTitle","defaultSearchRelatedLinksElem","defaultSearchRelatedLinksTitleElem","getParsedDefaultSearchRelatedLinks","hasCustomSearchProps","customSearchPropsElement","getParsedCustomSearchProps","customSearchProps","Unauthenticated","UnauthenticatedLink","getParsedUnauthenticatedProps","unAuthenticatedReactElement","getParsedUnauthenticatedLinks","unauthenticatedProps","DirectLink","DirectLinkGoBack","DirectLinkTitle","DirectLinkShortDescription","DirectLinkSectionTitle","DirectLinkAnchor","HeaderMenuContext","useHeaderMenuContext","MenuTypeEnum","InternalDirectLinkGoBack","headerDataContext","panelRef","directLinkGoBackClassName","InternalDirectLinkTitle","directLinkTitleClassName","InternalDirectLinkShortDescription","directLinkShortDescriptionClassName","InternalDirectLinkSectionTitle","InternalDirectLinkAnchor","directLinkAnchorItemClassName","getFromDirectLinkChildren","what","all","foundElements","getDirectLinksChildren","directLinkGoBackElement","directLinkTitleElement","directLinkShortDescriptionElement","directLinkSectionTitleElement","directLinkAnchorElements","getDirectLinks","hasDirectLinksProps","getDirectLinksPropsInternal","directLinkElement","useHeaderDataController","maxNavigationItems","area","useHeaderExternalController","headerMenuContext","headerMenuContextRef","menuRef","activeAreaBtn","areaValue","btn","navigationPanelsKeys","k","useScrolling","scrolling","setScrolling","scrollingTimerRef","evaluateScrollingValue","listener","useHeaderMenuController","menuRefMap","expandedMenu","setExpandedMenu","openedSubmenu","setOpenedSubmenu","focusController","CustomHeaderLink","dataAutoFocus","linkClassNames","handleMouseUpOrLeave","elemClassNames","InternalAuthenticatedDrawerBody","bodyLinkProps","InternalAuthenticatedDrawerFooter","footerActions","action","InternalAuthenticatedDrawerHeader","headerProps","InternalAuthenticatedDrawer","authenticatedProps","drawerAriaLabel","PanelMenu","isDrawerPanel","iconsCollapsed","iconsExpanded","portalRefType","panelMenuId","headerContext","portalRef","portalContent","setPortalContent","buttonChildComponent","linkWrapperChildComponent","layoutChildComponent","hasButton","hasLinkWrapper","hasPanel","innerPanelRef","linkWrapperRef","drawerButtonRef","drawerRef","portalElem","handleButtonClick","panelClassNames","panelButtonClassNames","panelLinkWrapperClassNames","panelDrawerButtonClassNames","onKeyDown","onClick","containerElement","memoLeadingIcon","memoLeadingIconHover","memoTrailingIcon","memoTrailingIconHover","RelatedNavigationLink","InternalNavigationBurgerPanel","linksAriaLabel","relatedLinksAriaLabel","backLabel","isOpened","setIsOpened","navigationFreestyle","navigationFreestyleComponent","highlightedLinks","burgerMenuItem","burgerPanelRef","burgerRef","handleClickBack","handleClickButton","navigationBurgerLinksLayoutClassNames","InternalNavigationBurgerLayout","currentArea","otherAreas","menubarRef","focusIndex","setFocusIndex","availableMenuItems","nextIndex","nextElem","handleAreaClick","InternalNavigationBurger","navigationId","menuLabel","menuAriaLabel","InternalInstitutional","InternalArea","active","areasClassNames","InternalAreas","visibleAreas","handleKeyDownCapture","availableAreas","activeIndex","el","InternalAuthenticated","InternalLanguage","InternalLanguagesLayout","languagesRef","InternalLanguages","checkedLanguage","buttonChildren","InternalCustomSearchLayout","content","InternalSearchLayout","searchTitle","defaultInputSearchBarProps","customInputSearchBarProps","relatedLinksTitle","relatedLinks","linkProps","InternalSearch","InternalUnauthenticatedLayout","l","InternalUnauthenticated","unauthenticatedButtonProps","isSingleAuth","panelChildren","panelIconProps","InternalDirectLink","logo","directLinksChildren","internalDirectLinkGoBackElement","internalDirectLinkTitleElement","internalDirectLinkAnchorElements","internalDirectLinkSectionTitleElements","hasTitleOrShortDescription","InternalGeneralBar","generalBarClassNames","InternalLogo","logoClassNames","InternalNavigationLinksLayout","navigationLinksLayoutClassName","InternalNavigationList","list","activeAreaSelector","CustomModalContext","useCustomModalContext","ModalMenu","openLabel","closeLabel","modalAriaLabel","modalContext","modalContentChildComponent","focus","close","handleKeyUp","modalMenuClassNames","menuButtonClassNames","InternalModalContent","contentTitle","activeMenuItemLinks","activeMenuItemRelatedLinks","InternalModalNavbar","onActiveChange","activeMenuItem","setActiveMenuItem","onActiveChangeRef","itemClassNames","autoFocusProp","InternalNavigationModalLayout","setActiveIndex","handleActiveChange","newIndex","navigationModalLayoutClassNames","InternalNavigationModal","InternalNavigationBar","activeArea","tabAccessibleProps","componentClassNames","InternalHeader","hasNavigationBar","generalBarPortalRef","navigationBarPortalRef","headerClassNames","generalBarBGClassNames","navigationBarBGClassNames","CustomModalDialog","CustomModalProvider","dialogChildren","setDialogChildren","dialogConfigs","setDialogConfigs","currentDialogChildren","configs","handleOnShow","handleOnHide","contextValue","Header","headerDataController","headerMenuController","screenWidth","headerMenuControllerRef","handleResize","DatePickerStateContext","isSameDay","date1","date2","Direction","getClosestAvailableDay","startingDate","disabledDates","direction","availableDate","convertedDisabledDates","directionValue","isDayBeforeStartDate","startDate","parsedDate","parsedStartDate","isDayAfterEndDate","endDate","parsedEndDate","isStartDateOneMonthOrMore","isEndDateOneMonthOrMore","isStartDateOneYearOrMore","isEndDateOneYearOrMore","DEFAULT_MONTHS","DEFAULT_WEEK_DAYS","useDatePickerStateContext","ctx","months","weekDays","getAbbrWeekDays","wd","focusedMonth","mapMonths","focusedYear","moveFocusInDays","numberOfDays","focusedDate","newDate","isBeforeStartDate","isAfterEndDate","closestAvailableDay","moveFocusInMonths","numberOfMonths","moveFocusInYears","numberOfYears","isDateInSameMonthOfYear","isDayOnArray","datesArray","convertedDate","parseInputDate","parts","day","month","year","DialogBody","ctxRef","isCalendarActive","setIsCalendarActive","parseDateFromTarget","dateString","focusAndSelectTargetDate","targetDate","parsedTargetDate","parsedDateFromTarget","onKeydownHandler","shiftKey","onFocusHandler","onBlurHandler","memoGrid","buildDay","currentDay","weekNumber","dayNumber","isInCurrentMonth","isFocusedDate","isSelectedDate","isDisabledDate","isToday","stringDate","tdDayClasses","dayClasses","trTdKey","ariaLabelForDay","labels","dayLabel","buildWeek","firstDayOfMonth","dayOfWeek","trCount","trKey","focusDay","DialogFooter","todayDate","isTodayDisabled","onOkPressed","parsedFocusedDate","additionalTodayProps","additionalCancelProps","additionalOkProps","DialogHeader","isPreviousMonthButtonEnabled","setIsPreviousMonthButtonEnabled","isPreviousYearButtonEnabled","setIsPreviousYearButtonEnabled","isNextMonthButtonEnabled","setIsNextMonthButtonEnabled","isNextYearButtonEnabled","setIsNextYearButtonEnabled","DatePickerDropdown","setEndDate","setStartDate","onCancel","isDateDisabled","initialDate","selectedDate","setSelectedDate","setFocusedDate","disabledDatesState","setDisabledDatesState","managerMemo","wrapperClassNames","datePickerDropdownContainerRef","formatDayOrMonth","number","isLeapYear","parseDate","currentMonth","currentYear","newDay","DateText","dayInputPlaceholder","monthInputPlaceholder","yearInputPlaceholder","inputClassNames","validateDate","targetValue","dateParts","newChangeEvt","allowedKeys","callbackWith","setInputWrapperHovered","InputDate","errorFeedbackStateLabel","errorFeedbackText","calendarIconAriaLabel","previousYearAriaLabel","previousMonthAriaLabel","nextMonthAriaLabel","nextYearAriaLabel","monthsLabels","weekdaysLabels","focusedDayAriaLabel","selectedDayAriaLabel","todayDayAriaLabel","todayLabel","todayAriaLabel","cancelLabel","cancelAriaLabel","okLabel","okAriaLabel","innerInputRef","wrapperRef","currentValue","setCurrentValue","lastValueTriggered","trigger","setTrigger","overlayVisible","setOverlayVisible","showOverlay","hideOverlay","toggleOverlay","handleOnDismiss","handleOnDismissRef","handleInputDateKeydown","handleDatePickerCancel","keydownHandler","wrapper","onOverlayChangeHandler","onInputDateChange","syntheticEvent","dropdownDatePickerLabels","inputAriaDescribedBy","iconState","setIconState","currentIconState","EMAIL_REGEXP","InputEmailBar","onSendHandler","pattern","email","setEmail","isValidEmail","setIsValidEmail","onSendButtonClick","labelClasses","inputContainerClassNames","InputNumber","increaseButtonAltText","decreaseButtonAltText","min","max","inputWrapperRef","hasCurrentValue","inputElem","setIsHovered","darkModeClass","inputClassBuilder","inputWrapperClasses","inputClasses","leadingIconWrapperClasses","handleStepUp","handleStepDown","handleMouseHoovering","isHover","InputPassword","togglePasswordAltIconText","showPassword","setShowPassword","hasValue","setHasValue","toggleAriaLabel","handleTogglePassword","FlagsList","separateCountryByCode","country","singleCode","flagsListByCode","PhoneCountryCodes","PhoneCountryISOs","InputPhone","defaultISO","defaultCode","searchInputAriaLabel","searchInputPlaceholder","searchNoResultsText","dropdownAriaLabel","acronymForDirectDialing","customCountriesList","onCountryChange","internalCountriesList","computeCountry","currentCountry","setCurrentCountry","onDropdownChange","selectedISO","selectedCode","selectedCountry","f","handleInputKeydownCapture","handleInputChange","toggleVisibility","handleDropdownControlKeydown","handleDropdownControlClick","optionKey","InputRange","currentVal","setCurrentVal","prevPropValue","innerRefs1","innerRefs2","values","handleRangeChange","firstValue","secondValue","currentBgVal","setCurrentBgVal","primaryColor","secondaryColor","percent","percent0","percent1","RangeStyle","RailClassName","InputSearch","getEnabledItemsCount","count","getEnabledOptions","getSelectedData","newSelectedData","InputSelect","placeholder","pluralSelectedPlaceholder","pillLabel","allSelectedLabel","onSearchInputChange","normalizedGeneratedId","controlWrapperRef","controlRef","selectedData","setSelectedData","resetSelection","mainWrapperClasses","controlClasses","selection","useLayoutEffect","enabledItemsCount","stringOutputMemo","allItemsSelected","onClickLabel","onDropDownChange","toggleDropdown","onDropDownClickHandler","onDropdownControlKeyDownHandler","enabledOptions","nextOption","InputText","InputTextArea","showCharCounter","charCounterClasses","FULL_TIME_TEXT_REGEX_WITH_PERIOD","FULL_TIME_TEXT_REGEX_WITHOUT_PERIOD","DEFAULT_PLACEHOLDER","timePeriod","startTime","formatHour","hour","minHour","maxHour","numericValue","formatMinute","minute","minMinute","maxMinute","formatFullTime","hasPeriod","selectedHour","selectedMinute","selectedPeriod","parseFullTime","fullTimeText","hourFormat","period","match","isTimeTextValid","timeText","TimeInputContext","TimeInputContextProvider","initialValues","setSelectedHour","setSelectedMinute","setSelectedPeriod","selectedTime","setSelectedTime","providerValue","useTimeInputContext","TimeText","setInputTextValue","hourInputPlaceholder","minuteInputPlaceholder","periodInputPlaceholder","timeCtx","parsePlaceholder","input","hourPlaceholder","minutePlaceholder","periodPlaceholder","fullInputPlaceholder","validateInputTimeText","acceptPlaceholder","emptyValueOnError","isValid","isHourWithPlaceholder","isMinuteWithPlaceholder","isPeriodWithPlaceholder","handleBlur","clickPos","handleFocus","isMouseFocus","handleSlot","periodValues","start","end","minValue","maxValue","updateSlot","slotStart","slotEnd","updateSlotValue","newValue","handleArrowUpDown","isArrowUp","handleNumberInput","parsedNewValue","isValueTwoDigit","isSecondDigitGreaterThanMaxValue","handlePeriodInput","isModifierKeyPressed","handleTab","selectionStart","nextElement","handleShiftTab","prevElement","handleTabNavigation","handleTimeSelection","selectionEnd","handleHourSlot","handleMinuteSlot","handlePeriodSlot","selectedText","Toggle","checkedFromProps","defaultChecked","hasDefaultChecked","internalChecked","setInternalChecked","toggleButtonClassName","fakeEvent","hourInputRef","handleHourUp","prevValue","handleHourDown","handleMinuteUp","handleMinuteDown","handleHourInputChange","formattedHour","handleHourFocus","handleHourKeyDown","handleMinuteInputChange","formattedMinute","handleMinuteFocus","handleMinuteKeyDown","handleSelectedPeriod","timeWithPeriodContainerClassName","inputNumberClasses","onCancelPressed","selectedTimeText","TimePickerDropdown","hasTimepickerMessage","textCurrentValue","selectedFormat","isReady","setIsReady","textCurrentValueRef","additionalTimepickerMessageProps","InputTime","format","clockIconAriaLabel","timepickerMessageLabel","timepickerMessageAriaLabel","handleTimePickerCancel","clickedOnInputElement","onInputTimeChange","firstRender","dropdownTimePickerLabels","timeCtxInitialValues","LoaderDialog","loaderClass","LoaderDialogContext","useLoaderDialogContext","LoaderDialogProvider","loaderRef","dialogProps","setDialogProps","ariaLiveMessage","setAriaLiveMessage","showLoader","currentDialogProps","getText","hideLoader","ModalContext","useModalContext","ModalDialog","configurations","onBeforeClose","onAfterClose","ModalProvider","dialogConfig","setDialogConfig","config","convertContentToNode","ContentComponent","handleIcons","PanelSwitcherDesktop","buttonListRef","activeButton","activateButton","buttonsHeaderData","buttonsBodyData","isPressed","setIsPressed","panelSwitcherWrapperClassName","panelSwitcherTabsListClassNames","selectedButton","focusTab","buttons","newState","buttonsHeader","isActive","ModalContent","PanelSwitcherMobileInternal","modalCloseButtonLabel","buttonsRef","focusedButton","setFocusedButton","panelSwitcherMobileClassName","panelButtonListClassNames","openModalHandler","modalConfig","currentFocus","isFocusOnPanelButtons","prevBtn","currentButton","totalButtons","newPressedState","PanelSwitcherMobile","PanelSwitcherContainer","setActiveButton","setButtonsHeaderData","setButtonsBodyData","isMobileOrTablet","header","body","element","headerChild","bodyChild","TabBody","TabHeader","Tab","TabsDesktop","vertically","tabListRef","tabPanelRef","activeTab","activateTab","currentType","tabPanelClassName","tabsHeaderData","tabsBodyData","isDesktop","tabsClassName","tabListClassNames","desktopActiveTab","tabListItemClassNames","TabsMobile","isTabletOrMobile","Tabs","automaticActivation","onTabActivation","desktopTabListRef","mobileTabListRef","setActiveTab","focusedTab","setFocusedTab","setTabsHeaderData","setTabsBodyData","navigationArrowRight","currentTabList","newFocusedTab","navigationArrowLeft","navigationArrowDown","navigationArrowUp","navigationHome","navigationEnd","handleTabListItemKeyDown","eventTargetTag","eventTargetParentRole","tabs","PanelSwitcher","panel","contentNode","PopupContext","usePopupContext","PopupDialog","popupContainerRef","popupHeaderRef","containerMaxHeight","setContainerMaxHeight","setMaxHeight","dialogClassNames","titleClassNames","containerElem","headerElem","margins","containerHeight","headerHeight","PopupProvider","currentDialogConfigs","ProgressBar","hidePercentageValue","isFirst","isLast","isMiddle","progressPercentage","labelsClasses","percentageClasses","ProgressBarGroup","hidePercentageValues","sequential","progressBars","activeCurrent","foundCurrent","currentCount","firstNotCompletedIndex","sumMaxValues","renderProgressBars","isCurrent","isSingle","getProgressValue","progressValue","Fragment","RadioButton","QuizOption","isChildrenSelected","QuizOptionsClassName","QuizOptions","QuizItemSummary","QuizItemSummaryClassName","RadioButtonGroup","mappedRadioButtons","scribblesList","allScribbles","isBundledScribbles","scribblesCache","loadScribbles","cachedScribbles","lazyScribble","Scribbles","onScribblesLoad","onScribblesError","LazyScribble","SearchPage","pageNumber","SearchPaginationNumberOverlay","SearchPagination","totalPages","_className","hidePreviousPageButton","hideNextPageButton","boundaryCount","siblingCount","nextPageAriaLabel","previousPageAriaLabel","activePage","activePageInternal","setActivePageInternal","navArrowsClasses","prevPage","pages","showAllPagesContent","page","page_index","paginationContent","leftSiblingIndex","rightSiblingIndex","leftRange","middleRange","rightRange","visiblePages","shouldShowLeftDots","shouldShowRightDots","openOnCurrentItem","sidebarRef","flat","agoraSidebar","currentTreeItem","initialPrevItem","_g","_h","elements","_k","_j","_l","_n","_m","SidebarItemNavigationMobile","sidebarMenuLabel","backButtonLabel","refDialog","backButtonHandler","openButtonHandler","treeItems","hasAriaCurrent","itemTree","sidebarNavigationMobileClassName","sidebarItemNavigationMobileMenuClassName","sidebarItemNavigationMobileBackButtonClassName","sidebarItemNavigationMobileDialogClassName","Sidebar","newSidebarItem","listSidebarItem","generateId","isMobileAndTablet","trailingFilter","setTrailingFilter","leadingFilter","setLeadingFilter","sidebarClassName","loadHandler","bodyFocusHandler","checkLeading","checkTrailing","itemProps","foundedLeadingIcon","foundedTrailingIcon","t","j","setIconsExpandCollapsed","setInitialSidebarItem","sidebarItemChildren","toggleSidebarItem","sidebarItem","sidebarItemExpanded","toggleSidebarItemChildren","SidebarItemFilter","pillValue","pillAriaLabel","buttonItemRef","contentItemRef","setAriaExpanded","ariaExpandedRef","buttonItemClassName","contentItemClassName","toggleItemContent","toggleItemExpand","onMouseClickHandler","shouldBeOpen","icons","newItem","getParentTreeItem","nodeContent","node","toggleParentItemExpand","parentNode","navigationSidebarItemHandler","sidebar","toggleExpandAllSiblingItems","contentParent","adsItem","navigationEnterSpace","getAllVisibleItems","allVisibleItems","navigationUp","prevItem","visibleItem","navigateAndFocusUntilCurrent","nextItem","navigationDown","navigationRight","navigationLeft","navigationTab","setFocusByFirstCharacter","char","ti","defaultPrintableCharacters","SidebarItemNavigation","newSidebarItemChildren","listInnerSidebarItem","listSidebarItemChildren","showIconHover","setShowIconHover","anchorItemRef","handleAnchorClick","handleOnKeyUp","isPrintableCharacter","str","handleRightArrow","handleLeftArrow","handleOnKeyDown","handleClickIcon","handleMouseEnterIcon","handleMouseLeaveIcon","isLinkedSidebarItem","getFinalFlat","childData","final","getFlatNotDirectAnchor","ariaOwns","getFlatSidebarItem","anchorIconWrapper","cloneAnchorElement","dataChildren","getFinal","insideLoopElements","getNotDirectAnchor","getSidebarItem","getSidebarItemChildren","agoraSidebarButtonItemClassName","SidebarItem","sidebarItemClassName","SkipNavigationMultiple","containerSkipNavRef","multipleLinks","skipOptionsRef","ariaExpand","setAriaExpand","allSkipMenuItems","currentIndexFocus","mi","handleSkipOptionControlKeyDownCapture","handleButtonSkipClick","handleButtonFocus","handleButtonBlur","handleButtonKeyUp","handleButtonControlKeyDownCapture","lvl","initLink","isLink","groupAnchors","recursiveLinks","level","getKeys","keyIndex","newLink","init","initLength","menuSkipNavigation","singleLink","buildAnchor","newSingleLink","SkipNavigationSingle","SkipNavigation","navigationClassName","StepList","stepListClass","getInteractiveIconSet","getNonInteractiveIcon","Step","Stepper","Switch","reverse","handleCustomSwitchKeydown","handleCustomSwitchClick","switchWrapperClasses","markerClasses","switchLabelClasses","TableBody","TableCaption","TableCell","headerKey","headerLabel","TableFooter","TableHeader","DESCENDING_ICON_NAMES","ASCENDING_ICON_NAMES","TableHeaderCell","scope","sortType","sortOrder","onSortChange","circularSortOrder","currentSortOrderIndex","order","sortIconName","ariaSortValue","applySort","nextSortOrder","TableRow","TablePagination","itemsPerPageLabel","itemsPerPage","totalItems","availablePageSizes","currentPage","buttonDropdownAriaLabel","dropdownListAriaLabel","prevButtonAriaLabel","nextButtonAriaLabel","dropdownWrapperRef","onDropdownButtonClickHandler","onDropdownButtonKeydownHandler","onShowDropdownHandler","onHideDropDownHandler","onDropdownChangeHandler","handlePrevPage","handleNextPage","iconDefinition","ps","Table","mobileLayout","tabletLayout","desktopLayout","paginationProps","sortDescription","tableClassNames","TableSelectionCell","checkboxAriaLabelledBy","checkboxAccessibleName","TableSelectionHeaderCell","selectionState","onSelectionChange","descriptionId","Tag","tagClassName","currentIcon","currentIconHover","TimelineEvent","timelineEventClassNames","timelineLabelClassNames","TimelineEventVertical","altIcon","TimelineVertical","hideLabels","events","setEvents","groupedEvents","grouped","groupedEventsArray","group","groupIndex","keyGroup","groupClassNames","eventIndex","keyEvent","TimelineHorizontal","nextLabel","previousLabel","setIsMobile","maxVisibleEvents","activeEvent","setActiveEvent","setStartIndex","setEndIndex","eventChildren","handleClickEvent","getTimelineStepClasses","currentActiveEvent","handleNextButtonClick","newEvent","handlePreviousButtonClick","selectedContentEvent","visibleEvents","newStartIndex","newEndIndex","renderTimelineActions","isPreviousButtonDisabled","isLastButtonDisabled","timelineClasses","isFirstVisibleEvent","isLastVisibleEvent","hasMoreEventsLeft","hasMoreEventsRight","eventClassNames","ToastContext","useToastContext","toastTypeToPillVariant","Toast","closeButton","onDismiss","removeToast","getIconNameForType","selectedType","handleCloseClick","toastContainerClassnames","statusIconClassNames","anchorClassNames","useToast","toasts","setToasts","toast","prevToasts","showToast","duration","ToastProvider","memoToast","visibleToastsCount","FileList","files","removeFileButtonLabel","onFileRemove","replaceFileButtonLabel","onFileReplace","messages","handleReplaceFile","fileToReplace","handleRemoveFile","fileToRemoved","getParsedSizeString","bytes","decimals","decimalCases","sizes","getAvailableFileActions","file","fileMessage","fileListClassNames","fileIndex","actions","actionBtnProps","actionIndex","actionKey","isFileExtensionAllowed","fileName","extensionWhitelist","lastPoint","fileExtension","isNotDuplicated","filename","getFileInput","extensionWhiteList","onChangeHandler","validateFiles","lastFiles","newFiles","maxCount","maxSize","replaceValidation","hasErrors","duplicatedFiles","sizeExceededFiles","extensionForbiddenFiles","maxCountExceeded","useFileUpload","maxFileCount","maxFileSize","defaultFiles","setFiles","lastErrors","getParsedMaxCount","errors","resetFiles","initialFiles","validationErrors","addFiles","filesToAdd","prevFiles","removeFile","replaceFile","replaceFileName","targetIndex","handleInputFileChangeOnAdd","selectedFiles","handleInputFileChangeOnReplace","ButtonUploader","inputLabel","selectedFilesLabel","extensionsInstructions","accept","maxCountExceededErrorLabel","maxSizeExceededErrorLabel","forbiddenExtensionErrorLabel","duplicatedFileErrorLabel","customId","setLabelText","errorMessages","setErrorMessages","fileMessages","setFileMessages","updateErrors","parsedErrors","newFileMessages","handleOnChangeFiles","onAddFiles","onRemoveFile","onReplaceFile","onPasteFiles","onReset","canUpload","canUploadRef","onPasteFilesRef","handleFileReplace","newFileToReplace","handleFileRemove","fileToRemove","handlePaste","clipboardData","clipboardFiles","buttonContainerClassNames","form","handleSubmit","errorKey","DragAndDropUploader","dragAndDropLabel","separatorLabel","dragAreaRef","isDraggingOver","setIsDraggingOver","onAddFilesRef","handleDragOver","handleDragLeave","handleDrop","droppedFiles","dragArea","dragAndDropClassNames","flattenChildren","getChildrenOfType","childType","getAllChildrenOfType","FooterContext","Footer","logoSectionContainer","LogoSectionContainer","financingSectionContainer","FinancingSectionContainer","linksSectionContainer","LinksSectionContainer","isLightVariant","logoSectionMainLogo","LogoSectionMainLogo","footerGenericLogos","FooterGenericLogo","footerDisclaimer","FooterDisclaimer","logoSectionAccessibilityLogo","LogoSectionAccessibilityLogo","logoSectionFreestyle","LogoSectionFreestyle","hasMain","hasFooterGenericLogos","containerMainClass","containerLogosClass","disclaimer","genericLogos","genericLogosClassName","socialLinksSection","LinksSectionSocialLinks","relatedLinksSection","LinksSectionRelatedLinks","hasBothSections","dividerClassNames","socialLinksLabel","LinksSectionSocialLinksLabel","FooterLink","LinksSectionRelatedLinksCopyright","copyrightClassName","labelClassName","NavigationRailContext","childrenArray","handlerExpandButtonIcon","opened","NavigationRail","validChildren","expandButton","ExpandButton","navigationAndDrawerButtons","NavigationRailAnchor","NavigationRailDrawer","ActionButton","darkModeBoolean","expandedBoolean","navigationRailClassName","buttonsContainerClassName","navigationRailContextValue","containerClassName","ExpandButtonOutside","isNavigationRailOpened","borderless","isTextBold","leadingIconInternal","trailingIconInternal","leadingIconHoverInternal","trailingIconHoverInternal","numberPill","hasChildrenActivated","startOpened","setOpened","buttonEventClick","drawerAndNavigationRailAnchor","childrenContainerClassName","chevron","onClickDrawer","oldState","navigationRailDrawerId","EcosystemBarContext","getValidChildren","DARK_VARIANTS","EcosystemBar","startOpen","isContentOpen","setIsContentOpen","contentId","ecosystemBarButton","EcosystemBarButton","ecosystemBarContent","EcosystemBarContent","ecosystemBarClassName","toggleContent","ecosystemBarButtonOnClick"],"mappings":"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","x_google_ignoreList":[1]}