{"version":3,"sources":["../webpack/bootstrap","../../../../../../../../external/underscore","../../../../../../../../external/@bingads-webui/listener","../webpack-src:/in-memory-listener/index.js","../webpack-src:/in-memory-listener/src/in-memory-listener.es","../webpack-src:/in-memory-listener/src/in-memory-sink.es","../webpack-src:/in-memory-listener/src/session-storage-sink.es","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../../node_modules/@bingads-webui/adlibrary-fetch-layer/src/constants.js","../../../node_modules/@bingads-webui/adlibrary-fetch-layer/src/helpers.js","../../../node_modules/@bingads-webui/adlibrary-fetch-layer/src/fetch-provider.js","../webpack-src:/console-listener/index.js","../webpack-src:/console-listener/src/index.es","../../../../../../../../external/underscore.string","../webpack-src:/listener/index.js","../webpack-src:/listener/src/index.es","../webpack-src:/listener/src/formatter.es","../webpack-src:/listener/src/filter.es","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-header/logo-image.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-header/header.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/page-menu-item.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/toggle-menu-button.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/page-menu-list.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/page-config.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-menu/page-menu.js","../../../node_modules/@bingads-webui/adlibrary-layout-elements/src/page-footer/footer.js","../webpack-src:/theme-fluent/index.js","../webpack-src:/theme-fluent/src/components/index.js","../webpack-src:/theme-fluent/src/components/alert-style.js","../webpack-src:/theme-fluent/src/components/button-input-style.js","../webpack-src:/theme-fluent/src/components/button-style.js","../webpack-src:/theme-fluent/src/components/close-image-style.js","../webpack-src:/theme-fluent/src/components/control.js","../webpack-src:/theme-fluent/src/components/date-picker-style.js","../webpack-src:/theme-fluent/src/components/drop-down-editor-style.js","../webpack-src:/theme-fluent/src/components/fabric-panel-style.js","../webpack-src:/theme-fluent/src/components/float-button-style.js","../webpack-src:/theme-fluent/src/components/grid-inline-error-style.js","../webpack-src:/theme-fluent/src/components/help-button-style.js","../webpack-src:/theme-fluent/src/components/inline-editor-style.js","../webpack-src:/theme-fluent/src/components/inline-error-style.js","../webpack-src:/theme-fluent/src/components/scrollbar-style.js","../webpack-src:/theme-fluent/src/components/search-box-style.js","../webpack-src:/theme-fluent/src/components/search-box.js","../webpack-src:/theme-fluent/src/components/entity-selector-style.js","../webpack-src:/theme-fluent/src/components/pagination-style.js","../webpack-src:/theme-fluent/src/components/status-style.js","../webpack-src:/theme-fluent/src/components/toggle-button-style.js","../webpack-src:/theme-fluent/src/components/underline-link-style.js","../webpack-src:/theme-fluent/src/components/internal-link-style.js","../webpack-src:/theme-fluent/src/components/spinner-style.js","../webpack-src:/theme-fluent/src/components/ui-blocker-style.js","../webpack-src:/theme-fluent/src/constants/index.js","../webpack-src:/theme-fluent/src/constants/zindexes.js","../webpack-src:/theme-fluent/src/constants/pagePadding.js","../webpack-src:/theme-fluent/src/components/grid-plugins/top-grid-panel-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/column-chooser-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/column-chooser-override-style.js","../webpack-src:/theme-fluent/src/components/new-feature-label-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/filter-editor-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/filter-editor-override-style.js","../webpack-src:/theme-fluent/src/components/grid-plugins/legacy-filter-bar-style.js","../webpack-src:/theme-fluent/src/components/grid-shared/index.js","../webpack-src:/theme-fluent/src/components/grid-shared/body.js","../webpack-src:/theme-fluent/src/components/grid-shared/variables.js","../webpack-src:/theme-fluent/src/components/grid-shared/col-group.js","../webpack-src:/theme-fluent/src/components/grid-shared/columns.js","../webpack-src:/theme-fluent/src/components/grid-shared/footer.js","../webpack-src:/theme-fluent/src/components/grid-shared/global.js","../webpack-src:/theme-fluent/src/components/grid-shared/header.js","../webpack-src:/theme-fluent/src/components/grid-shared/table.js","../webpack-src:/theme-fluent/src/core/index.js","../webpack-src:/theme-fluent/src/core/theme-fluent.js","../../../../../../../../external/@fluentui/react","../webpack-src:/theme-fluent/src/core/dark-theme.js","../../../../../../../../external/bluebird","../webpack-src:/page-ready/index.js","../webpack-src:/page-ready/src/index.es","../webpack-src:/page-ready/src/page-ready.es","../webpack/universalModuleDefinition","../webpack-src:/instrumentation/index.js","../webpack-src:/instrumentation/src/instrumentation.js","../webpack-src:/instrumentation/src/default-config.js","../webpack-src:/instrumentation/src/loggers/trace-logger.es","../../../../../../../../external/@bingads-webui-universal/primitive-utilities","../webpack-src:/instrumentation/src/constants.es","../webpack-src:/instrumentation/src/loggers/logger.es","../webpack-src:/instrumentation/src/loggers/perf-logger.es","../webpack-src:/instrumentation/src/loggers/error-logger.es","../webpack-src:/instrumentation/src/loggers/ajax-logger.es","../webpack-src:/instrumentation/src/processors/scenario-processor.es","../webpack-src:/instrumentation/src/loggers/substrate-logger.js","../webpack-src:/instrumentation/src/logging-service.js","../webpack-src:/instrumentation/src/scenario-factory.es","../webpack-src:/instrumentation/src/activity-factory.es","../webpack-src:/instrumentation/src/log-transmitter.es","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/mode.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/layout-configs.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/layout-context.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/components.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/styles-container.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/layout-container.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/layout.js","../../../node_modules/@bingads-webui/adlibrary-layout-container/src/with-layout.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../webpack-src:/primitive-utilities/index.ts","../webpack-src:/primitive-utilities/src/index.ts","../webpack-src:/primitive-utilities/src/lodash.ts","../webpack-src:/primitive-utilities/src/string.ts","../webpack-src:/primitive-utilities/src/guid.ts","../webpack-src:/primitive-utilities/src/date.ts","../webpack-src:/primitive-utilities/src/file.ts","../webpack-src:/primitive-utilities/src/promise.ts","../webpack-src:/primitive-utilities/src/color.ts","../webpack-src:/primitive-utilities/src/number.ts","../webpack-src:/primitive-utilities/src/memoize.ts","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/typeof.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/inherits.js","../webpack-src:/i18n-model/index.js","../webpack-src:/i18n-model/src/index.js","../../../../../../../../external/globalize","../webpack-src:/i18n-model/src/locale.js","../webpack-src:/i18n-model/src/resource.js","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../webpack-src:/i18n-mock/index.js","../webpack-src:/i18n-mock/src/index.es","../webpack-src:/i18n-mock/src/fixed-i18n-mock.es","../webpack-src:/i18n-mock/src/static-i18n-mock.es","../webpack-src:/i18n-mock/src/model-i18n-mock.es","../../../../../../../../external/@bingads-webui-universal/i18n-cldr-data-modern/core.json","../../../../../../../../external/@bingads-webui-universal/i18n-cldr-data-modern/locales/en.json","../../../../../../../../external/@bingads-webui-universal/i18n-model","../webpack-src:/i18n-mock/src/shims/module-i18n-shim.js","../webpack-src:/i18n-mock/src/shims/string-utils.js","../webpack-src:/i18n-mock/src/shims/component-i18n-shim.js","../../../../../../../../external/iana-tz-data","../webpack-src:/i18n-mock/src/static-i18n-model-mock.es","../../../../../../../../external/iana-tz-data/iana-tz-data.json","../../../../../../../../external/urijs","../webpack-src:/url-util/index.ts","../webpack-src:/url-util/src/index.ts","../webpack-src:/url-util/src/top-domain.ts","../../../../../../../../external/jquery","../webpack-src:/performance-marker/index.js","../webpack-src:/performance-marker/src/index.es","../webpack-src:/performance-marker/src/activity.es","../webpack-src:/performance-marker/src/marker.es","../../../../../../../../external/@bingads-webui/page-ready","../webpack-src:/performance-marker/src/helpers.es","../webpack-src:/performance-marker/src/proptypes.es","../../../../../../../../external/prop-types","../../../../../../../../external/@bingads-webui/url-util","../webpack-src:/instrumentation/src/ariaConfig.js","../webpack-src:/instrumentation/src/log-table-configs/campaign.js","../../../../../../../../external/@bingads-webui/instrumentation","../webpack-src:/instrumentation/src/log-table-configs/adinsight.js","../webpack-src:/instrumentation/src/log-processors/context-processor.js","../webpack-src:/instrumentation/src/log-processors/debug-processor.js","../webpack-src:/instrumentation/src/log-processors/perf-timing-processor.js","../webpack-src:/instrumentation/src/log-formatters/basic-formatter.js","../webpack-src:/instrumentation/src/log-formatters/format-utilities.js","../webpack-src:/instrumentation/src/log-formatters/api-formatter.js","../webpack-src:/instrumentation/src/log-formatters/adinsight-opportunity-log-formatter.js","../webpack-src:/instrumentation/src/log-formatters/reporting-api-formatter.js","../webpack-src:/instrumentation/src/log-formatters/uettaghelper-formatter.js","../webpack-src:/instrumentation/src/log-formatters/import-api-formatter.js","../webpack-src:/instrumentation/src/log-formatters/console-formatter.js","../webpack-src:/instrumentation/src/log-formatters/perf-timing-formatter.js","../webpack-src:/instrumentation/src/log-filters/log-level-filter.js","../webpack-src:/instrumentation/src/log-filters/api-filter.js","../webpack-src:/instrumentation/src/log-filters/adinsight-opportunity-api-filter.js","../webpack-src:/instrumentation/src/log-filters/console-filter.js","../webpack-src:/instrumentation/src/log-filters/unload-log-filter.js","../webpack-src:/instrumentation/src/log-filters/perf-timing-filter.js","../webpack-src:/instrumentation/src/ajax-error-mappers/odata-error-mapper.js","../webpack-src:/instrumentation/src/ajax-error-mappers/campaignapi-error-mapper.js","../webpack-src:/instrumentation/src/ajax-error-mappers/url-error-mapper.js","../webpack-src:/instrumentation/src/utilities/environment-helper.js","../webpack-src:/instrumentation/src/local-storage-log-retriever.js","../webpack-src:/instrumentation/src/utilities/default-error-codes.js","../../../node_modules/@bingads-webui/adlibrary-instrumentation/src/instrumentation-schema.js","../../../node_modules/@bingads-webui/adlibrary-instrumentation/src/instrumentation.js","../../../node_modules/@bingads-webui/adlibrary-instrumentation/src/instrumentation-context.js","../webpack-src:/instrumentation-setup/index.js","../webpack-src:/instrumentation-setup/src/instrumentation.js","../../../../../../../../external/@bingads-webui/performance-timing-logger","../../../../../../../../external/@bingads-webui/performance-marker","../webpack-src:/instrumentation-setup/src/listeners.js","../../../../../../../../external/@bingads-webui/aria-listener","../../../../../../../../external/@bingads-webui/console-listener","../../../../../../../../external/@bingads-webui/local-storage-listener","../../../../../../../../external/@bingads-webui/in-memory-listener","../../../../../../../../external/@bingads-webui-campaign/instrumentation","../webpack-src:/instrumentation-setup/src/processors.js","../webpack-src:/instrumentation-setup/src/set-stub.js","../../../../../../../../external/@bingads-webui/instrumentation-stubs","../webpack-src:/instrumentation-setup/src/perf-timing-config.es","../webpack-src:/instrumentation-setup/src/instrumentation-schema.js","../webpack-src:/instrumentation-stubs/index.js","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-stub.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-interceptor.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-event-interceptor.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/default-config.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-event-handler.es","../webpack-src:/instrumentation-stubs/src/ajax-stub/ajax-stub-schema.es","../webpack-src:/instrumentation-stubs/src/error-stub/error-stub.es","../../../../../../../../external/stacktrace-js","../webpack-src:/instrumentation-stubs/src/error-stub/error-stub-schema.es","../webpack-src:/aria-listener/index.js","../webpack-src:/aria-listener/src/aria-listener.es","../../../../../../../../external/@aria/webjs-sdk","../webpack-src:/aria-listener/src/default-config.es","../webpack-src:/aria-listener/src/formatters/log-property-formatter.es","../../../../node_modules/@bingads-webui-tool/react-app-scripts/node_modules/@babel/runtime/helpers/esm/createClass.js","../webpack-src:/local-storage-listener/index.js","../webpack-src:/local-storage-listener/src/local-storage-listener.es","../webpack-src:/performance-timing-logger/index.js","../webpack-src:/performance-timing-logger/src/index.es"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_EXTERNAL_MODULE__3__","__WEBPACK_EXTERNAL_MODULE__5__","_inMemoryListener","_inMemorySink","_sessionStorageSink","_listener","_underscore","Listener","constructor","options","super","this","formatters","filters","sink","init","_","isFunction","write","initialized","logMessage","filterLogs","formattedMsg","formatLogs","maxSize","logs","log","push","length","shift","items","SessionStorageSink","storageKey","Error","keyCache","existingItemsStr","window","sessionStorage","getItem","isEmpty","JSON","parse","forEach","addEventListener","setItemsOnUnload","setItem","stringify","_classCallCheck","instance","Constructor","TypeError","__webpack_exports__","API_NAME","getApiNameFromUrl","fullUrl","mainPart","split","test","getReqIdFromRoute","route","reqIdQueryString","find","param","includes","FetchProvider","props","instrumentation","_useState","useState","_useState2","slicedToArray","APIEndpoint","setAPIEndpoint","addScenario","scenario","toConsumableArray","fetchEventSchema","fetchScenario","fetchEvent","fetchTrace","fetchError","fetchOptions","useMemo","interceptors","request","_ref","url","concat","trace","method","response","_ref2","ok","data","error","status","statusText","onError","useEffect","domain","location","hostname","mapDomainToAPIEndpoint","react_default","a","createElement","esm","children","_index","category","logCategory","include","toLowerCase","console","__WEBPACK_EXTERNAL_MODULE__13__","_formatter","_filter","any","filter","check","clone","each","formatter","format","noop","Formatter","Filter","LogoImage","React","memo","assign","version","id","xmlns","x","y","viewBox","enableBackground","className","classes","logoText","fill","propTypes","PropTypes","shape","string","isRequired","getStyles","container","display","flexDirection","height","logo","width","logoClickable","cursor","logoContainer","padding","divider","borderLeftColor","borderLeftWidth","borderLeftStyle","marginTop","marginBottom","item","marginLeft","marginRight","justifyContent","alignItems","text","color","fontSize","lineHeight","fontStyle","textAlign","paddingLeft","fontWeight","@media screen and (forced-colors: active)","Header","compose","WrappedComponent","withDefaultStyles","layout_dist","dist","to","aria-label","classnames","getStyle","pageMenuItem","position","& a","textDecoration","paddingTop","&:hover","backgroundColor","selectionIndicator","top","bottom","left","borderRadius","zIndex","borderLeft","textContainer","&.selected","PageMenuItem","page","isCollapsed","isSelected","displayName","path","aria-current","icon","toggleMenuButton","ToggleMenuButton","onToggleClick","isExpanded","Button","appearance","chunk_7","primaryFill","onClick","aria-expanded","pageMenuContainer","transition","PageMenuList","changeLayout","menuItems","pages","map","Mode","Collapsed","useCallback","Expanded","nav","PageConfigs","chunk_6","chunk_4","sideBarContainer","PageMenu","currentPath","useLocation","pathname","pageConfig","_objectSpread","flex","footerList","footerLinkContainer","listStyle","footerItem","& > a","& > button","border","PageFooter","useDefaultStyles","role","Date","getFullYear","link","Link","href","target","ComponentSettings","_interopRequireWildcard","Constants","_index2","keys","_exportNames","_alertStyle","_buttonInputStyle","_buttonStyle","_closeImageStyle","_control","_datePickerStyle","_dropDownEditorStyle","_fabricPanelStyle","_floatButtonStyle","_gridInlineErrorStyle","_helpButtonStyle","_inlineEditorStyle","_inlineErrorStyle","_scrollbarStyle","_searchBoxStyle","_searchBox","_entitySelectorStyle","_paginationStyle","_statusStyle","_toggleButtonStyle","_underlineLinkStyle","_internalLinkStyle","_spinnerStyle","_uiBlockerStyle","_topGridPanelStyle","_columnChooserStyle","_columnChooserOverrideStyle","_filterEditorStyle","_filterEditorOverrideStyle","_legacyFilterBarStyle","_gridShared","_ref$palette","palette","_ref$iconFontFamily","iconFontFamily","& .alert","boxShadow","neutralPrimary","&.alert-danger .alert-image:before","fontFamily","content","&.alert-info .alert-image:before","neutralSecondary","&.alert-warning .alert-image:before","& input.btn-primary[type=\"button\"], input.btn-primary[type=\"submit\"], input.btn-hero[type=\"button\"]","&:focus","white","themePrimary","& input.btn-default[type=\"button\"]","outline","neutralSecondaryAlt","outlineOffset","btnInteractStyle","background","neutralLighter","neutralLight","_ref2$palette","primary","minWidth","boxSizing","themeDarkAlt","&:active","themeDark","&:disabled","neutralTertiary",".btn-primary",".btn-hero",".btn-default",".closeimage","right",".closeimage:before",".form-control","-webkit-box-shadow","backgroundImage","borderColor","focusedStyle",".k-animation-container","& .k-calendar-container","& .k-link:hover","neutralDark","& .k-header","paddingBottom","& .k-nav-fast","order","& .k-nav-prev","& .k-nav-next","& .k-icon","& .k-i-arrow-w:before","& .k-i-arrow-e:before","& .k-content","& th, td","& .k-link","& .k-other-month .k-link","& .k-state-selected","& .k-today","themeLighter","& .k-state-focused","& .k-meta-view","& tr","& td","& td:last-child","& .grid-editable-cell select.editor-control.select-editor","borderWidth","borderBottomColor","&:hover, &:focus, &:active","footer","commands","floatButton","minHeight","&:active, &:focus, &:hover","neutralQuaternaryAlt","& .inline-editor-errors","& .error-messages","listStyleType","& .error","&:before","red","& .error-message",".helpbutton","verticalAlign","outlineColor","black",".helpbutton::before",".custom-parameters-inline-edit-popup",".grid-popupeditor .form-inline .form-group",".inline-editor-errors","& .grid-error","&.spritedimage","&.spritedimage:before","::-webkit-scrollbar","::-webkit-scrollbar-track","::-webkit-scrollbar-thumb","::-webkit-scrollbar:horizontal","::-webkit-scrollbar-track:horizontal","::-webkit-scrollbar-thumb:horizontal","& .searchbox","& .searchbox .form-horizontal","& .searchbox-input","& .searchbox .form-control","borderBottom","& .filter_search_icon_small","& .filter_search_icon_small:before","inputGroup","overflow","input","style","& .ba-campaign-selector, & .ba-campaign-adgroup-selector","& .ba-list-selector","& .list-selector-item","& .list-selector-content","& .list-selector-select-all-bar","& .arrow-button.enabled","& .arrow-button.remove","& .enabled.arrow-button:before, & .arrow-button.remove:before","& .multi-selector","& .ba-entity-selector","& .multi-item-container","& .added-to-result-list","& .ba-campaign-adgroup-selector .selected-item, .ba-campaign-selector .selected-item","maxWidth","& .ba-campaign-selector, & .ba-campaign-adgroup-selector, & .disclaimer-selector, & .audience-planner-location-selector","& .dropdown-toggle","&:focus, &:active","& .selected-item","textOverflow","overflowWrap","wordBreak","whiteSpace","& .icon-right","float","& .glyphicon-triangle-bottom, .glyphicon-pencil","& .glyphicon-triangle-bottom:before","& .glyphicon.glyphicon-pencil::before","& .dropdown-toggle:focus:after, .dropdown-toggle:active:after","& .dropdown-menu","& .ba-search-box ","borderTop","borderRight","& .search-box__input","& .search-box__icon","& .search-box__icon:before","& .list-selector-header","& .panel-heading","& .panel-title","margin","& > div, & .item-content","paddingRight","& .statusIcon","& .text","& .selected","& .list-selector-item:hover","& .list-selector-item:focus","& .list-selector-empty","& .ba-cascader-selector","& .ba-cascader-selector>div","& .ba-cascader-selector>div:nth-child(2)>div:nth-child(2)","& .pagination-container","& .ba-pagination","& .ba-campaign-adgroup-selector, & .ba-campaign-selector","& .dropdown-toggle .dropdown-edit-mode-parent-text","& .item-content-parent-info","& .ba-pagination, .dlb-pager-container, .pagination-control","& > .text","& > span","& button","& button:hover","& button:disabled","& .prev + .text, .pager-previous + .text","& .pager-input","& .glyphicon-triangle-left, & .glyphicon-triangle-right","& .glyphicon-triangle-left:before","& .glyphicon-triangle-right:before","& .pager, .location-bid-pager-view","& .pager-input, .page-number-input, .grid-pager-input","& .pager-input[disabled], & .page-number-input[disabled], & .grid-pager-input[disabled]","& .pager-previous, & .pager-next, & .glyphicon-triangle-left, & .glyphicon-triangle-right","& .pager-previous, & .pager-next","& .pager-previous:hover, & .pager-next:hover","& .pager-previous-disabled, & .pager-next-disabled","& .pager-previous-disabled:before, & .pager-previous:before","& .pager-next-disabled:before, & .pager-next:before","& .pager-totalCount","& .pagination-control","& .page-size-selector","& .pager","& .statusDraft_icon","-webkit-font-smoothing","-moz-osx-font-smoothing","& .statusDraft_icon::before","& .statusDeleted_icon","& .statusDeleted_icon::before","redOrange10","& .statusEnabled_icon","& .statusEnabled_icon::before","green","& .statusExcluded_icon","& .statusExcluded_icon::before","& .statusPaused_icon","& .statusPaused_icon::before","& .statushypendisplay","& .statushypendisplay::before","& .toggle","& .toggle-button","boxsizing","transition-duration","-webkit-transition-duration","& .toggle-handle","borderStyle","& .toggle-on","& .toggle-off","_ref$elementLocator","elementLocator","_ref$isGreyBackground","isGreyBackground","themeDarker","size","borderRightColor","themeLight","borderTopColor","animation","@keyframes spinner","transform","_constants",".blocker",".blocker-global, .blocker-local","ZIndexShellComponents","Loader",".blocker-global",".blocker, .blocker-global, .blocker-local","& .blocker-indicator","& .blocker-image","getBlockerStyle","spinnerKeyframe",".blocker-panel",".blocker-panel + .blocker-indicator","& .blocker-text","& .react-block-ui","& > div:last-child","arguments","undefined","_zindexes","_pagePadding","_HelpContainer","_BootstrapPopover","_BootstrapModal","_BootstrapModalBackdrop","ModalBackDrop","Panel","TopBanner","PromotionBanner","Nav","Status","Menu","Tab","SubTab","Content","GridToolbar","GridHeader","StatusPopup","mainSectionLeftPadding","smallMainSectionLeftPadding","& .panel","underlineLinkStyle","& .alert-info .alert-info-inline","internalLinkStyle","& .panel-body","& hr","& .panel-footer","& input.btn, & button.btn","& input.btn:focus","& input.btn-primary:focus","& .previewTable","maxHeight","& .column-chooser .option","& .column-chooser .option:hover","& .column-chooser input[type=\"checkbox\"]","& .column-chooser-instructions","& .column-chooser-categories","& .column-chooser-list","& .column-chooser-list+.column-chooser-list","& .column-chooser-list.right","& .column-chooser-option-header","& .column-chooser-bulk-control","& .column-chooser-category","& .column-chooser-category.active","& .column-chooser-category:focus, & .column-chooser-category.k-state-focused","& .column-chooser-options","overflowX","overflowY","& .column-chooser-options.selected","& .column-chooser-options.available","& .column-chooser-option","borderRightWidth","& .column-chooser-option:hover","& .column-chooser-message","& .column-chooser-option-selected","& .column-chooser-option-selected:hover","& .column-chooser-option-selected .remove","& .column-chooser-option-fixed","& .column-chooser-option-unmovable","& .column-chooser-option-placeholder","opacity","& .column-chooser","& .column-chooser .panel .panel-body .column-chooser-selection-area","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-option-header","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-search-box","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .search-input","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search:before","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li.active","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list .column-chooser-bulk-control","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-not-selected","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status.disabled","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options a.add-column-link","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .column-chooser-selected-header","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-locked","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable.draggable-list__item-preview","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable span.remove","& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item .selected-list-item span","M","W","fallbacks","userSelect","& .column-chooser .panel .panel-body .save-column-view","& .column-chooser .panel .panel-body .save-column-view .save-checkbox","& .column-chooser .panel .panel-body .save-column-view .save-checkbox .column-chooser-save-column","& .column-chooser .panel .panel-body .save-column-view .save-checkbox input.column-chooser-saved-name","& .column-chooser .panel .panel-footer","& .column-chooser .panel-component","& .column-chooser .panel-component .panel-heading","& .column-chooser .panel-component .panel-title","fontColor","& .column-chooser .panel-component .panel-body","& .column-chooser .panel-form","& .column-chooser .panel-form.noPadding","& .column-chooser .panel-form .panel-heading","& .column-chooser .panel-form .section","& .column-chooser .panel-form .panel-body.noPadding","& .column-chooser .panel-form-footer","& .column-chooser .panel.panel-white","& .column-chooser .panel-body","& .column-chooser .panel-body:before, & .column-chooser .panel-body:after","& .column-chooser .panel-body:after","clear","& .column-chooser .panel-heading","& .column-chooser .panel-heading>.dropdown .dropdown-toggle","& .column-chooser .panel-title","& .column-chooser .panel-title>a","& .column-chooser .panel-footer","& .column-chooser hr","& .column-chooser .save-column-checkbox","_newFeatureLabelStyle","& .column-chooser-selection-area","getNewFeatureLabelStyle","& .option","& .category-tabs","& li a:after","& > li","& .new-feature-label","& > li.active","& > a.currentActive","& .options-view .column-chooser-option-list","& .arrow-button","& ul.column-chooser-options","& span.option-not-selected","& span.option-name","& .option-status, & a.add-column-link","& .column-chooser-editable-picker","& .custom-column-remove","& .glyphicon-pencil","& .glyphicon-remove","& span.option-status.enabled","& a.add-column-link","& .inapplicable-column","& .custom-column-add","& .remove-all-in-list, .add-all-in-list","& .invalid-custom-column:focus","& .option-name","& .column-chooser-selected","& .column-chooser-selected-header","& .column-chooser-selected-header:before","& .column-chooser-selected-header:after","& .remove-all-in-selected-list","& .column-chooser-selected-list","& .draggable-list-view","& ul.draggable-list","& li.draggable-list-item","& .selected-list-item","& .selected-item-name","& .trigger-icon","&:after","&.selected, &:focus, &:hover","& .trigger-icon:before","letterSpacing","writingMode","& li.draggable-list-item.draggable-list__item-locked","& li.draggable-list-item.draggable-list__item-draggable","& .save-column-view","& .save-checkbox","& label+input","& .column-chooser-save-column","& .save-column-checkbox","& input[type=\"checkbox\"]","& .column-chooser-saved-name","orange","& .predicate-row","& .filter-editor .panel","& .filter-body.filter-editor .save-form input[type=\"checkbox\"]","& .filter-body.filter-editor .save-form .btn + .btn","& .filter-body.filter-editor .save-form .btn + .checkbox","& .filter-body.filter-editor .save-form .checkbox label + input","& .predicate-list li","& .predicate-list li .error-row","& .predicate-list li .error-row label","& .predicate-list li .predicate-row .filter-predicate-property","& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default","& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default > .selected","& .predicate-list li .predicate-row .filter-predicate-property + .predicate-operator","& .predicate-list li .predicate-row .form-control","& .predicate-list li .predicate-row > * + *","& .predicate-list li .predicate-row .predicate-property","& .predicate-list li .predicate-row .predicate-operator","& .predicate-list li .predicate-row .predicate-operator + .predicate-value","& .checkbox-inline, & .checkbox-inline + .checkbox-inline, & .radio-inline, & .radio-inline + .radio-inline","& .checkbox-inline:last-child, & .radio-inline:last-child","& .predicate-list li .predicate-row .predicate-value","& .predicate-list li .predicate-row .predicate-value > input","& .predicate-list li .predicate-row .predicate-value + .remove","& .predicate-list li .predicate-row .predicate-value button.selector-dropdown-button","& .predicate-list li .predicate-row .predicate-value .selector.dropdown-menu","& .predicate-list li .predicate-row .single-operator-column, & .predicate-list li .predicate-row .single-property-column","& .predicate-list li .predicate-row .dropdown-submenu","& .predicate-list li .predicate-row .dropdown-submenu li","& .predicate-list li .predicate-row .dropdown-submenu > span","& .predicate-list li .predicate-row .dropdown-submenu:hover > .dropdown-menu","visibility","& .predicate-list li .predicate-row .dropdown-submenu .spritedimage","& .predicate-list li .predicate-row .btn .caret","& .filter-header","& .filter-header .filter-button","& .filter-header .filter-button:hover","& .filter-header .glyphicon-filter","& .filter-header .filterMenu","& .filter-header .filterMenu .saved","& .filter-header .filterMenu .new, & .filter-header .filterMenu .apply","& .filter-header .filterMenu .new:hover, & .filter-header .filterMenu .apply:hover, & .filter-header .filterMenu .saved>li:hover","& .filter-header .filterMenu .delete","& .filter-header .filterMenu .apply-header","& .filter-header .quick","& .filter-header .quick .quick-text","& .filter-header .quick .quick-text:active","& .filter-body .save-form","& .filter-body .save-form h5.checkbox","& .filter-body .save-form .name","& .grid-toolbar-bar","& .predicate-list>ul","& .predicate-list>ul>li.row","& .predicate-list>ul>li.row>div","& .predicate-list>ul>li.row .operator-single","& .predicate-list>ul>li.row .dropdown .dropdown-control .glyphicon-triangle-bottom","& .predicate-list>ul>li.row .dropdown .dropdown-menu","& .predicate-list>ul>li.row span.datepicker","& .predicate-list>ul>li.row ul.enum-options>li","& .predicate-list>ul>li.row ul.enum-options>li input[type=\"checkbox\"]","& .predicate-list a.remove, & .predicate-list a.new","& ol, & ul","& .filter-editor","& .save-form .checkbox label","& .glyphicon-remove:before","& .glyphicon","font-family","font-size","font-style","& .glyphicon.glyphicon-remove","& .glyphicon.glyphicon-plus","& .glyphicon-plus:before","& .delivery-status-category-container:first-of-type","& .delivery-status-category-container + .delivery-status-category-container","& .filter_button","& .filter-bar","& .panel-component","& .filter_title_collapsed","& .filter_row_readonly .humanized","& .column, & .filter_operator","& .filterValue","& .filterand","& .filter_links","&:nth-child(2n)","&:last-child","& .filter_title_collapsed, & .filter_row_readonly, & .filter_links","_body","_colGroup","_columns","_footer","_global","_header","_table","variables","GridSharedStyles","getSharedBodyStyles","getSharedColGroupStyles","getSharedColumnsStyles","getSharedFooterStyles","getSharedGlobalStyles","getSharedHeaderStyles","getSharedTableStyles","_variables","components","& tr.segment-row","& .segment-value","& tr.aggregate-row","& tr.aggregated-row","totalRowBackgroundColor","tableBorder","&[data-key]:first-child, &:not([data-key]) + tr[data-key]","&[data-key]:hover, &.row-selected[data-key], &.row-selected[data-key]:hover","&.row-selected","& td a","&:hover, &.row-selected, &.row-selected:hover","&.grid-error-row","& ul.grid-error-list","gridPaddingLeft","PagePadding","&.col-selection","&","&:first-child","& span","& tr.noborder","gridPaddingComponsation","& .form-control.page-size-selector","& .nav-button","&.prev","& + .text","&.next","& .page-number-input",".bingadsgrid","& .grid-noresult, & .grid-noresult-empty, & .noresult",".table-container .glyphicon.glyphicon-triangle-left",".table-container .glyphicon.glyphicon-triangle-left::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-left::before",".table-container .glyphicon.glyphicon-triangle-right",".table-container .glyphicon.glyphicon-triangle-right::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-right::before",".table-container .glyphicon.glyphicon-triangle-bottom",".table-container .glyphicon.glyphicon-triangle-bottom::before",".table-container .btn:disabled .glyphicon.glyphicon-triangle-bottom::before","& th","& tr.overall-total-row","totalRowBorderTop","& th.column-header","headerRowBorderTop","headerRowBorderBottom","& .helpbutton::before","& span.grid-header-text","& span.grid-header-helpId","headerRowBackgroundColor","& th:first-child","&.pop-enabled + tr.pop-enabled th:first-child","& th.column-header-sortable","&.grid-cross-page-select-all","& .glyphicon-arrow-up:before","& .glyphicon-arrow-down:before","& th span.pop-toggle-icon.clickable","&.pop-expand:before","&.pop-collapse:before","& tr.pop-enabled th.column-header.pop-column-header > div.column-header-container","& .iconba","& .grid-disabled","_themeFluent","_darkTheme","_react","ThemeFluent","createTheme","NeutralColors","gray190","gray160","neutralPrimaryAlt","gray150","gray130","gray110","gray90","neutralTertiaryAlt","gray60","neutralQuaternary","gray50","gray40","gray30","gray20","neutralLighterAlt","gray10","CommunicationColors","shade20","shade30","shade10","tint20","tint30","themeLighterAlt","tint40","themeSecondary","tint10","themeTertiary","SharedColors","red10","redDark","red20","globalBackground","mainMenuHoverBackground","effects","roundedCorner2","elevation4","Depths","depth4","elevation8","depth8","elevation16","depth16","elevation64","depth64","__WEBPACK_EXTERNAL_MODULE__66__","DarkTheme","__WEBPACK_EXTERNAL_MODULE__17__","singleton","PageReady","_bluebird","GLOBAL_PAGE","p$pagesReady","resolvePageReadyCbs","pageIsReady","pageName","lazyInitializePromise","afterPageReady","Promise","res","factory","self","__WEBPACK_EXTERNAL_MODULE__6__","_instrumentation","_logger","_defaultConfig","_loggingService","_logTransmitter","config","setup","scenarioContext","initTransmissionService","initLoggingService","defaultConfig","getDefaultConfig","loggers","defaults","processors","listeners","isDebugMode","stop","beforeStop","logTransmitter","LogTransmitter","writeRawLog","rawLogs","transmit","logger","loggingService","LoggingService","scenarioSchema","extend","parseSchema","createScenarioAndActivity","parentScenario","scenarioName","activityName","schema","activity","createScenario","ScenarioContext","traceLogger","TraceLogger","perfLogger","PerfLogger","errorLogger","ErrorLogger","ajaxLogger","AjaxLogger","substrateLogger","SubstrateLogger","scenarioProcessor","ScenarioProcessor","_traceLogger","_perfLogger","_errorLogger","_ajaxLogger","_scenarioProcessor","_substrateLogger","_primitiveUtilities","Logger","message","api","requestId","httpMethod","logLevel","timeStamp","getUtcTime","constants","LOGCATEGORY","TRACE","LOGLEVEL","INFO","entryType","ENTRYTYPE","MESSAGE","getLogMethods","IMPACTUSER","True","False","NA","DEBUG","VERBOSE","PERFORMANCE","ERROR","SUBSTRATE","SCENARIO","ACTIVITY","AJAX","AJAXRENDER","METHOD","transmitter","start","isMethodEnter","result","pass","isUndefined","monitor","func","context","originalFunc","args","t0","getTimestamp","apply","timeTaken","monitorAsync","promise","onPromiseDone","then","perf","impactUser","ajax","entityCount","includeRendering","process","has","activityId","scenarioId","parentScenarioId","parentScenarioName","omit","startSignal","startTime","stopSignal","trackDuration","endTime","toJSON","signal","withSignalSync","action","actionReturn","withSignalAsync","promiseReturn","_scenarioFactory","registry","checkSchemaDuplication","scenarios","activities","Set","add","scenarioFactories","ScenarioFactory","_activityFactory","Scenario","generateGuid","setting","ActivityFactory","createActivity","Activity","activitySchema","simpleActivity","logMethods","logMethod","updateScenarioContext","stopped","processedLogs","processor","listener","teardown","dynamicComponents","topBanner","promotionBanner","staticComponents","header","panelContainer","menu","tab","subTab","base","immersive","fullScreen","withoutDate","showDatePicker","withDisabledDate","showDisabledDatePicker","withHistoryButton","showHistoryButton","dateWithoutCompare","disableCompare","fullScreenWithSummaryBar","fullScreenWithSummaryBarAndTab","accountSummary","withoutMenu","layoutConfigs","default","withoutNav","withSingleTab","singleTabMode","accountSummaryWithoutDate","withMenuOnly","withCollapsedMenuOnly","withCollapsedMenuAndNav","withTabAndSubTab","signupScreen","LayoutContext","createContext","change","_objectWithoutProperties","source","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","shared","hidden","expanded","surveyHeight","collapsed","hotelCenterMenu","cfg","components_objectSpread","optimizationScore","showExperimentScoreCard","names","mapObject","calcQueue","getSelection","advancedOptions","_excluded","advancedOptionValue","advancedOptionName","advancedProcessor","StylesContainer","createClass","classCallCheck","selected","styles","jss","createStyleSheet","attach","update","_this","startPos","component","LayoutContainer","_React$PureComponent","_callSuper","updates","isPageConfig","isPageConfigPartialUpdate","afterChangeLayout","setState","state","merge","cloneDeep","persistConfig","isEqual","ownUpdate","updatePage","stylesContainer","controlledByProps","inherits","prevProps","prevState","Provider","nextProps","PureComponent","defaultProps","Layout","Component","itemName","_useContext","useContext","componentProps","layout_objectSpread","LayoutHoC","with_layout_callSuper","toLayout","_this$props","withLayout","Consumer","with_layout_LayoutHoC","partial","with_layout_objectSpread","_defineProperty","obj","configurable","writable","__WEBPACK_EXTERNAL_MODULE__7__","__WEBPACK_EXTERNAL_MODULE__26__","_lodash","_string","_guid","_date","_file","_promise","_color","_number","_memoize","sourceCopyMap","isObject","isDate","result_1","isArray","set","Map","funcs","_i","reverse","defaultValue","sub","keyPath","castPath","isNull","reduce","rest","dest","src","destKey","first","index","lastIndex","nested","list","invoke","iteratee","String","currentSum","arr","array","comparator","Boolean","uniq","every","compact","templateString","template","settings","str","distinguishWideChar","displayLength","isString","match","noMatch","escape","evaluate","interpolate","wideCharPattern","RegExp","replace","IsControlRegex","s4","Math","floor","random","toString","substring","date","i18n","convertDateBetweenTimeZones","from","firstRange","secondRange","convertForComparison","range","dates","pick","compared","comparedStart","comparedEnd","end","dateTime","lookBackYears","isValidDate","performance","now","timing","navigationStart","lookBackMonths","lastNDate","firstDateNMonthsAgo","getMonth","getDate","minDate","maxDate","selectedDate","withoutTime","min","max","errors","returnDate","valueOf","setHours","lookBackDays","_a","_b","dateString","formatDate","timeZone","parseDate","img","blob","dataURItoBlob","postfix","last","type","File","lastModified","dataURI","reg","arrs","byteString","atob","Uint8Array","charCodeAt","Blob","currentPromise","promiseChain","callbacks","queueNextWork","finishProcess","ASYNC_STATUS","SUCCESS","onSuccess","err","_c","onCancel","CANCELLED","cleanup","resolve","reject","dequeuePromise","asyncToken","chain","on","cancel","cancelCallback","lastPromise","promiseFactory","finish","fail","lastPromiseCanceled","factoryArgs","processHandle","_interopRequireDefault","colorToGrayscale","rgbInteger","rgb","blue","numberToRgb","round","parseInt","substr","code","remain","slice","integer","isNumber","dividend","remainder","memoized","resolveFromCache","cache","Cache","toCache","nestedCache","lruTrigger","delete","val","next","_slicedToArray","Array","_arrayWithHoles","_arr","_n","_d","_e","_s","iterator","done","_iterableToArrayLimit","_nonIterableRest","_typeof2","_typeof","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","_setPrototypeOf","setPrototypeOf","__proto__","_inherits","subClass","superClass","__WEBPACK_EXTERNAL_MODULE__14__","__WEBPACK_EXTERNAL_MODULE__27__","_globalize","_locale","_resource","localeManager","LocaleManager","dynamicLocaleInstances","assertReady","isReady","debugInfo","locale","synchronousResource","p$data","resource","synchronousGlobalize","globalize","isThenable","loadData","translationData","loadTranslationData","cldrData","loadCLDRData","Resource","failFast","cldr","Globalize","dateMethodOptions","skeleton","time","datetime","raw","withSignWrapper","withSign","abs","getCldr","minusSign","main","plusSign","RangeError","numberFormatterWithSign","globalizeFormatter","numberFormatter","currencyFormatterWithSymbol","currency","withSymbol","currencyFormatter","currencyToPartsFormatter","parts","part","join","I18nModel","[object Object]","setGlobalLocale","all","setLocale","load","loadTimeZone","failfast","defaultFailFast","missingKeys","parserFormatterCache","fnName","i18nModel","realMethod","createCache","specificMethodCache","withGlobalizeCache","p$globalLocale","isFulfilled","globalLocale","ready","return","getLocale","getFirstDayOfWeek","alt","defaultRegionKey","attributes","region","supplemental","getToday","_this$formatDateToPar2","formatDateToParts","year","month","day","Number","getString","defer","getData","getQuarter","quarter","getDay","getDayOfWeek","dayOfWeek","getCurrency","getCurrencySymbol","getDateFormats","calendar","defaultProperties","dateTimeFormats","availableFormats","yMd","dateFormats","timeFormats","formatDecimal","number","decimalFormatter","minimumIntegerDigits","minimumFractionDigits","maximumFractionDigits","minimumSignificantDigits","maximumSignificantDigits","useGrouping","formatDecimalToFixed","decimalToFixedFormatter","digits","formatDecimalToInteger","decimalToIntegerFormatter","parseDecimal","decimalParser","numberParser","isValidDecimal","decimalValidator","parser","isNaN","formatPercent","percentFormatter","formatPercentToFixed","percentToFixedFormatter","parsePercent","percentParser","isValidPercent","percentValidator","formatCurrency","dateFormatter","dateToPartsFormatter","dateParser","dateValidator","formatCivilDate","civilDate","civilDateFormatter","parseCivilDate","civilDateParser","getUTCFullYear","getUTCMonth","getUTCDate","toISOString","formatUnit","unit","unitFormatter","form","formatList","listFormatter","_style$split2","variant","cldrTypeName","listPattern","pattern","second","twoTemplate","middleTemplate","middle","startTemplate","endTemplate","_list","_toArray","initial","fetchString","fetchLocale","p$global","resolveGlobalLocale","putil","model","preprocess","identity","ret","ex","curlyTemplate","compiled","_getPrototypeOf","getPrototypeOf","__WEBPACK_EXTERNAL_MODULE__4__","__WEBPACK_EXTERNAL_MODULE__8__","__WEBPACK_EXTERNAL_MODULE__9__","__WEBPACK_EXTERNAL_MODULE__10__","__WEBPACK_EXTERNAL_MODULE__11__","__WEBPACK_EXTERNAL_MODULE__15__","_fixedI18nMock","_modelI18nMock","_staticI18nMock","_staticI18nModelMock","staticI18nMock","FixedI18nMock","dictionary","parseFloat","_core","_en","_i18nModel","_moduleI18nShim","_componentI18nShim","core","enLocale","require","modelI18nMock","extendOwn","ComponentI18nShim","ModuleI18nShim","modelI18n","i18nRequireRequest","loaderName","_stringUtils","realI18n","safeGetString","regex","getStringOrDefault","defValue","toArray","splice","e","checkKey","_ianaTzData","loadTimeZoneData","timeZoneData","staticI18nModelMock","loc","__WEBPACK_EXTERNAL_MODULE__99__","serializeParam","originalData","_jquery","startOfRoute","pathAndQuery","recipient","subject","body","keepSqBrackets","setQueryStringParam","innerUrl","originalN","v","replaceOnly","qs","pound","lastIndexOf","originalName","exec","decodeURIComponent","originalUrl","re","hash","separator","queryIndex","domainsToCheck","isRelativeUrl","getDomain","toCheck","website","site","trim","uri","_urijs","protocol","matchs","topLevelDomain","contains","_topDomain","toUpperCase","UrlRegex","matches","frags","frag","eSlash","sSlash","hasProtocol","document","startIndex","_helpers","_proptypes","_activity","_marker","filesFetched","instr","markerOptions","autoEnd","isActiveChild","parentMarker","isFileFetched","PerfMarker","perfScenario","perfMarker","getScenario","sendLog","_pageReady","isPageReadyFulfilled","markTime","activeTime","NaN","isMarkerValid","getUrl","search","markers","InitUrl","hierarchy","isDone","activeChildren","doneCallback","createChild","childMarker","PerfMarkerFactory","createMarker","willFetchFile","timeFetchFile","markConsole","willFetchData","timeFetchData","willInit","timeInit","willRender","timeRender","onChildDone","activeChild","additionalMessage","timeDone","send","markerPoint","parseMarkers","some","marker","doneUrl","didUrlChange","Version","Name","ParentName","Data","IsParentDone","IsPageReadyFulfilled","IsFileFetched","FileFetchStartTime","FileFetchActiveStartTime","DataFetchStartTime","DataFetchActiveStartTime","RenderStartTime","RenderActiveStartTime","InitStartTime","InitActiveStartTime","DoneStartTime","DoneActiveStartTime","DidUrlChange","DoneUrl","AdditionalMessage","__WEBPACK_EXTERNAL_MODULE__52__","asyncFunc","_propTypes","perfMarkerPropTypes","__WEBPACK_EXTERNAL_MODULE__55__","__WEBPACK_EXTERNAL_MODULE__102__","__WEBPACK_EXTERNAL_MODULE__22__","_ariaConfig","_campaign","_adinsight","_contextProcessor","_debugProcessor","_perfTimingProcessor","_basicFormatter","_apiFormatter","_adinsightOpportunityLogFormatter","_reportingApiFormatter","_uettaghelperFormatter","_importApiFormatter","_consoleFormatter","_perfTimingFormatter","_logLevelFilter","_apiFilter","_adinsightOpportunityApiFilter","_consoleFilter","_unloadLogFilter","_perfTimingFilter","_odataErrorMapper","_campaignapiErrorMapper","_urlErrorMapper","_environmentHelper","_localStorageLogRetriever","_defaultErrorCodes","env","token","allTokens","TOKENS","Local","getTokensForSmartPage","Aria3","Aria07","AdInsight","ccui.devdev.bingads.microsoft.com","redmond.corp.microsoft.com","app1.ads-int.microsoft.com","ui.si.bingads.microsoft.com","ui.beta.si.bingads.microsoft.com","ui.ads-int.microsoft.com","ui.beta.ads-int.microsoft.com","ui.tip.bingads.microsoft.com","ui.tip.ads.microsoft.com","si.bingads.microsoft.com","beta.si.bingads.microsoft.com","ads-int.microsoft.com","beta.ads-int.microsoft.com","tip.bingads.microsoft.com","tip.ads.microsoft.com","ui.sandbox.bingads.microsoft.com","ui.sandbox.ads.microsoft.com","ui.bingads.microsoft.com","ui.beta.bingads.microsoft.com","ui.ads.microsoft.com","ui.beta.ads.microsoft.com","bingads.microsoft.com","beta.bingads.microsoft.com","ads.microsoft.com","beta.ads.microsoft.com","adlibraryui-test.azureedge.net","adlibrary.ads.microsoft.com","adInsightOppTracking","tokens","flushInterval","batchSize","spToken","__WEBPACK_EXTERNAL_MODULE__498__","logTableNames","priority","defaultLogCategory","__WEBPACK_EXTERNAL_MODULE__500__","pageContext","CurrentCustomer","Id","CurrentAccount","CurrentUser","Locale","Market","UserRole","ManagedBy","LocaleID","CustomerId","AccountId","UserId","Lcid","CustomerMarket","Permissions","IsInternalUser","CustomerManagedBy","SessionId","Omniture","PageTrackingId","PageVersion","Pilots","customerId","accountId","userId","lcid","sessionId","pageTrackingId","pageVersion","market","userRole","managedBy","pilots","landingPageUrl","referrer","landingPg","_urlUtil","_formatUtilities","applicationSystem","applicationSubSystem","getPFlagsProps","rawLog","pflags","apiString","getParameter","updateParameter","getEventType","Sn","SceID","RID","Api","Pass","Dur","safeParseInteger","Ime","Hm","Timestamp","SesID","Url","UID","CID","AID","LCID","Mes","Lc","Ll","Env","As","Asub","An","ActID","Et","Loc","Role","MgdBy","PFlags","Iu","Ec","UserAgent","navigator","userAgent","PgID","PgVer","DbgMode","__WEBPACK_EXTERNAL_MODULE__506__","parsedNum","bracketedParamsRegex","convertAbsoluteToRelativePath","removeQueryParameters","_log$Api$split2","removeDotMExtension","removeBracketedParameters","removeApplicationNameFromApi","appName","tap","environment","Action","clientName","logApi","channel","logApiClientNameMapper","OverviewOpportunityTile","MCCOverviewOpportunityTile","isClick","isMCC","RequestId","OpportunityId","OpportunityType","OpportunityTypeId","typeId","CampaignId","campaignId","ClientName","Environment","Source","URL","GUID","guid","Position","UserFeedback","Context","apiChunks","getValidatedApiChunks","operationId","rawChunks","pageNavigationColumns","resourceTimingColumns","columns","isPageNavigationLog","formattedLogs","uid","aid","cid","mkt","dbgMode","pgId","pgVer","appLogLevel","ignoredApis","shouldFilter","isErrorLog","isIgnoreApi","ignoredApi","excludeFromLocalStorage","allowedEnvs","exlcudeResources","resourceName","excludedResource","errorCodes","ajaxData","errorString","errorCode","knownUserErrorCodes","jqXHR","urlString","responseText","Errors","Code","domains","ajaxUrlString","envToCheck","prodEnvs","deleteAfterRetrieval","storage","localStorage","retrievedLogs","logKeyPrefix","parsedLog","removeItem","defaultSchema","errorMappers","odataErrorMapper","OdataErrorMapper","odataErrorCodes","campaignApiErrorMapper","CampaignApiErrorMapper","campaignApiErrorCodes","urlErrorMapper","UrlErrorMapper","invalidDomains","formatNameValue","onLine","getInstrumentation","serverContext","userContext","getInstrumentationInstance","isInDevelopmentMode","applicationName","systemName","subSystemName","objectsToStub","getInstrumentationService","_ref2$scenario","InstrumentationSchema","defaultScenario","logError","logTrace","logMetrics","stubOptions","eventHandler","AjaxEventHandler","shouldAddHeaders","ajaxContext","isInternalUrl","ajaxStub","AjaxStub","errorStub","ErrorStub","stub","InstrumentationServiceContext","__WEBPACK_EXTERNAL_MODULE__490__","_instrumentationSchema","ajaxStubOptions","_ref$ariaConfig","ariaConfig","_ref$objectsToStub","$","_processors","getProcessors","instrumentationForPerfTiming","Instrumentation","_perfTimingConfig","PerformanceTimingLogger","_listeners","getListeners","contextProcessor","debugProcessor","_setStub","setStub","vNextInstrumentation","_performanceTimingLogger","_performanceMarker","__WEBPACK_EXTERNAL_MODULE__521__","__WEBPACK_EXTERNAL_MODULE__522__","applicationAriaConfig","currentEnv","getAriaConfig","basicFormatter","BasicFormatter","apiFormatter","ApiFormatter","reportingApiFormatter","ReportingApiFormatter","consoleFormatter","ConsoleFormatter","logLevelFilter","LogLevelFilter","apiFilter","ApiFilter","consoleFilter","ConsoleFilter","unloadLogFilter","UnloadLogFilter","localStorageListener","LocalStorageListener","uniquePageId","campaignAriaListener","AriaListener","tenantToken","campaignLogTableConfig","registerForTeardown","adInsightLogFormatter","AdInsightOpportunityLogFormatter","adInsightApiFilter","AdInsightOpportunityApiFilter","adInsightAriaListener","adInsightLogTableConfig","consoleListener","ConsoleListener","isTestEnvironment","seleniumLogsSink","InMemorySink","inMemoryListener","InMemoryListener","_ariaListener","_consoleListener","_localStorageListener","__WEBPACK_EXTERNAL_MODULE__524__","__WEBPACK_EXTERNAL_MODULE__525__","__WEBPACK_EXTERNAL_MODULE__526__","__WEBPACK_EXTERNAL_MODULE__527__","__WEBPACK_EXTERNAL_MODULE__528__","ContextProcessor","DebugProcessor","perfTimingProcessor","PerfTimingProcessor","filteredObjectsToStub","_instrumentationStubs","__WEBPACK_EXTERNAL_MODULE__531__","performanceLogsFormatter","PerformanceLogsFormatter","performanceLogsFilter","PerformanceLogsFilter","ariaListener","resourcetiming","_ajaxStub","_ajaxEventHandler","_errorStub","_ajaxInterceptor","_ajaxStubSchema","handler","setupScenario","interceptor","AjaxInterceptor","ajaxStubScenario","objectToStub","intercept","_ajaxEventInterceptor","globalInterceptInstance","generateRid","jQuery","originalAjax","shouldAddRequestId","dataType","setQuery","ajaxStubActivity","AjaxEventInterceptor","triggerEventInterceptors","urlInLowerCase","__WEBPACK_EXTERNAL_MODULE__28__","__WEBPACK_EXTERNAL_MODULE__29__","event","BEFORESEND","COMPLETE","requestResult","ajaxStartTime","ajaxRenderStartTime","getPageSize","beforeSendHandler","interceptBeforeSend","successHandler","interceptSuccess","errorHandler","interceptError","completeHandler","interceptComplete","ajaxOptions","originalEventHandler","originalRet","handleException","onBeforeSendDone","successRenderHandler","stack","serverErrorCodes","detectError","respData","Message","getEntityCount","Records","RowCount","requestData","BiDateRange","__WEBPACK_EXTERNAL_MODULE__32__","constant","setRequestHeader","textStatus","ajaxTimeTaken","getServerPerf","renderTimeTaken","errorThrown","responseXML","isUserError","errorMapper","getResponseHeader","perfTimings","odataPerf","responseJSON","keyUnfilteredCount","keyOdataCount","_stacktraceJs","_errorStubSchema","getStackStringFromStackFrames","stackFrames","frame","getFunctionName","getFileName","getLineNumber","getColumnNumber","asyncAjaxOverride","req","XMLHttpRequest","open","onerror","onreadystatechange","readyState","logUnhandledPromiseRejections","skipStackTraceResolutionForPromiseRejections","isExpectedUnhandledPromiseError","stackTraceOptions","errorMsg","lineNumber","column","errorObj","errorStubScenario","errorStubActivity","handleError","promiseRejection","handlePromiseRejection","errorMessage","StackTrace","fromError","catch","finally","perviousRoute","history","previousRoute","promiseRejectionEvent","detail","reason","__WEBPACK_EXTERNAL_MODULE__36__","__WEBPACK_EXTERNAL_MODULE__37__","_webjsSdk","activeListeners","flushEventAttached","enableSessionTracking","AWTLogManager","initialize","setTransmitProfile","AWT_NEAR_REAL_TIME","defaultLogger","getLogger","logSession","AWTSessionState","Started","trackedListenerRefs","count","setInterval","flushBatch","flushLogs","flush","registeredForTeardown","flushAll","Ended","release","batchLogs","logsToFlush","logEvent","flushAndTeardown","categoryName","getCategoryName","properties","propertyFormatter","AriaPropertyFormatter","_defineProperties","descriptor","_createClass","protoProps","staticProps","logCount","generateKey","updateInterval","getEntriesByType","isPageLoaded","pageNavLogged","logOnLoad","timer","logOnTimer","logOnUnload","writeResourceTimingLogs","tryRecordInactiveTime","tryLogPageNavigation","clearLogBuffer","pageLoaded","inactiveTime","loadEventEnd","writePageNavigationLogs","extensions","chrome","loadTimes","firstPaintTime","navTimingV2Logs","navTimingV2Log","colsToReplace","redirectCount","navigation","clearResourceTimings","webkitClearResourceTimings"],"mappings":"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YjB,SAAU4kD,EAAUP,GACxB,IAAIrkD,EAAMqkD,EACV,IAAKrpD,EAAA0mC,QAAEsJ,SAAShrC,IAAQhF,EAAA0mC,QAAEzkC,QAAQ+C,EAAIglD,QACpC,MAAO,GAGThlD,EAAMA,EAAIglD,OACV,IAAM9jD,EAAI8kD,SAAS7kD,cAAc,KAC7BN,EAAS,GACbK,EAAE2J,KAAOk7C,EAAY/lD,GAAOA,EAAO,UAAUA,EAE7C,IACU,IAAAe,EAAaG,EAALH,SACVklD,EAAajmD,EAAI0B,cAAcihC,QAAQ5hC,GAE7CF,GAA0B,IAAhBolD,EAAoB,GAAKjmD,EAAI+rC,UAAUka,EAAYllD,EAASzE,OAAS2pD,GAC/E,MAAO9V,GACPtvC,EAAS,GAGX,OAAOA,EAGH,SAAU8jD,EAAc3kD,GAC5B,OAAOhF,EAAA0mC,QAAEsJ,SAAShrC,IAA8B,IAArBA,EAAI2iC,QAAQ,KAmClC,IAAM8iB,EAAW,+GACoB,wLCnL7B,CACb,MACA,OACA,SACA,MACA,SACA,SACA,MACA,OACA,UACA,WACA,KACA,UACA,YACA,aACA,cACA,MACA,QACA,KACA,OACA,MACA,QACA,KACA,MACA,OACA,QACA,KACA,MACA,SACA,KACA,UACA,SACA,KACA,MACA,SACA,WACA,SACA,OACA,KACA,YACA,UACA,SACA,YACA,WACA,OACA,SACA,SACA,KACA,SACA,kBACA,iBACA,OACA,QACA,QACA,YACA,YACA,UACA,SACA,MACA,KACA,MACA,aACA,MACA,QACA,KACA,YACA,KACA,OACA,SACA,QACA,OACA,OACA,MACA,OACA,KACA,OACA,OACA,aACA,KACA,UACA,WACA,KACA,UACA,OACA,UACA,QACA,UACA,SACA,OACA,QACA,UACA,KACA,MACA,KACA,MACA,KACA,QACA,KACA,OACA,QACA,UACA,iBACA,OACA,OACA,MACA,YACA,cACA,WACA,WACA,WACA,WACA,aACA,UACA,SACA,KACA,MACA,MACA,OACA,MACA,MACA,KACA,KACA,QACA,SACA,OACA,UACA,SACA,OACA,UACA,MACA,KACA,KACA,KACA,SACA,KACA,QACA,MACA,OACA,OACA,QACA,MACA,MACA,KACA,QACA,cACA,cACA,OACA,YACA,OACA,KACA,MACA,MACA,KACA,aACA,KACA,QACA,aACA,OACA,MACA,OACA,MACA,OACA,UACA,QACA,SACA,SACA,MACA,WACA,MACA,KACA,WACA,cACA,WACA,SACA,UACA,WACA,KACA,KACA,QACA,WACA,WACA,MACA,OACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,OACA,MACA,OACA,cACA,MACA,SACA,OACA,QACA,WACA,UACA,aACA,MACA,UACA,QACA,OACA,SACA,UACA,OACA,OACA,OACA,OACA,SACA,MACA,WACA,WACA,MACA,MACA,OACA,MACA,KACA,KACA,SACA,MACA,OACA,KACA,MACA,MACA,KACA,KACA,SACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,SACA,SACA,KACA,WACA,SACA,QACA,UACA,OACA,QACA,OACA,WACA,KACA,KACA,SACA,WACA,QACA,SACA,WACA,WACA,QACA,OACA,UACA,KACA,KACA,KACA,QACA,QACA,SACA,UACA,UACA,MACA,UACA,WACA,YACA,UACA,UACA,WACA,SACA,SACA,eACA,aACA,UACA,cACA,UACA,iBACA,OACA,OACA,UACA,UACA,SACA,UACA,UACA,MACA,KACA,SACA,aACA,cACA,UACA,QACA,MACA,SACA,UACA,KACA,aACA,KACA,KACA,KACA,KACA,QACA,OACA,KACA,QACA,MACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,MACA,KACA,OACA,SACA,QACA,SACA,WACA,OACA,WACA,QACA,WACA,SACA,UACA,OACA,SACA,MACA,MACA,WACA,OACA,UACA,SACA,YACA,WACA,WACA,OACA,MACA,KACA,KACA,KACA,MACA,KACA,OACA,SACA,MACA,UACA,MACA,WACA,QACA,MACA,QACA,SACA,SACA,SACA,OACA,MACA,KACA,QACA,MACA,KACA,MACA,QACA,MACA,YACA,KACA,KACA,QACA,SACA,SACA,WACA,cACA,cACA,QACA,YACA,KACA,WACA,OACA,KACA,MACA,SACA,KACA,WACA,KACA,aACA,MACA,SACA,WACA,SACA,UACA,UACA,aACA,OACA,OACA,YACA,QACA,SACA,MACA,OACA,OACA,UACA,UACA,OACA,QACA,WACA,UACA,UACA,KACA,OACA,WACA,OACA,OACA,QACA,UACA,YACA,OACA,YACA,WACA,OACA,UACA,MACA,UACA,KACA,KACA,SACA,UACA,OACA,UACA,UACA,MACA,KACA,KACA,MACA,OACA,cACA,WACA,OACA,QACA,UACA,QACA,aACA,MACA,KACA,OACA,YACA,MACA,UACA,YACA,WACA,MACA,UACA,MACA,OACA,YACA,SACA,MACA,KACA,MACA,UACA,QACA,SACA,OACA,QACA,MACA,SACA,MACA,KACA,OACA,KACA,MACA,KACA,MACA,OACA,UACA,SACA,KACA,KACA,OACA,KACA,KACA,OACA,QACA,QACA,SACA,KACA,QACA,MACA,SACA,QACA,KACA,QACA,OACA,MACA,MACA,KACA,UACA,OACA,YACA,OACA,MACA,WACA,OACA,SACA,MACA,MACA,MACA,KACA,KACA,KACA,WACA,WACA,SACA,QACA,QACA,UACA,QACA,KACA,KACA,KACA,WACA,QACA,OACA,QACA,UACA,OACA,KACA,KACA,OACA,UACA,UACA,OACA,MACA,OACA,WACA,SACA,aACA,OACA,WACA,OACA,SACA,OACA,SACA,YACA,UACA,MACA,KACA,MACA,KACA,KACA,SACA,WACA,UACA,YACA,YACA,QACA,YACA,QACA,QACA,WACA,OACA,UACA,MACA,UACA,SACA,UACA,QACA,MACA,KACA,OACA,KACA,KACA,SACA,QACA,UACA,MACA,OACA,MACA,MACA,KACA,KACA,OACA,MACA,QACA,KACA,KACA,SACA,OACA,OACA,aACA,KACA,MACA,aACA,WACA,OACA,MACA,MACA,YACA,YACA,SACA,MACA,gBACA,SACA,cACA,KACA,WACA,KACA,KACA,QACA,KACA,UACA,MACA,WACA,KACA,OACA,MACA,SACA,OACA,MACA,KACA,OACA,QACA,UACA,MACA,MACA,KACA,MACA,MACA,KACA,OACA,SACA,MACA,MACA,KACA,WACA,OACA,SACA,UACA,SACA,OACA,KACA,cACA,iBACA,kBACA,MACA,KACA,KACA,KACA,MACA,OACA,MACA,SACA,SACA,UACA,OACA,KACA,KACA,QACA,UACA,SACA,KACA,OACA,MACA,KACA,MACA,OACA,YACA,KACA,KACA,QACA,KACA,KACA,UACA,cACA,QACA,YACA,SACA,OACA,YACA,UACA,UACA,MACA,SACA,UACA,MACA,SACA,KACA,KACA,MACA,QACA,UACA,SACA,QACA,OACA,QACA,OACA,KACA,OACA,OACA,gBACA,YACA,WACA,OACA,QACA,UACA,OACA,UACA,QACA,OACA,QACA,OACA,SACA,KACA,MACA,MACA,OACA,QACA,SACA,QACA,OACA,MACA,SACA,QACA,QACA,OACA,MACA,eACA,KACA,KACA,KACA,MACA,OACA,KACA,WACA,OACA,SACA,KACA,KACA,KACA,QACA,SACA,OACA,SACA,SACA,MACA,aACA,QACA,MACA,SACA,YACA,UACA,WACA,YACA,WACA,SACA,MACA,KACA,WACA,KACA,KACA,MACA,QACA,OACA,YACA,OACA,WACA,MACA,OACA,WACA,KACA,KACA,QACA,YACA,MACA,OACA,OACA,MACA,aACA,KACA,KACA,MACA,MACA,KACA,MACA,KACA,KACA,OACA,SACA,OACA,MACA,MACA,MACA,SACA,QACA,UACA,SACA,WACA,SACA,OACA,cACA,MACA,QACA,KACA,KACA,KACA,KACA,MACA,KACA,MACA,MACA,KACA,SACA,QACA,SACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,SACA,OACA,SACA,OACA,MACA,KACA,KACA,MACA,MACA,UACA,UACA,UACA,UACA,MACA,OACA,OACA,aACA,QACA,KACA,MACA,KACA,MACA,MACA,KACA,OACA,OACA,QACA,QACA,SACA,SACA,KACA,KACA,QACA,qBACA,SACA,MACA,SACA,QACA,KACA,KACA,MACA,MACA,MACA,KACA,MACA,KACA,MACA,WACA,SACA,UACA,SACA,cACA,UACA,OACA,KACA,QACA,MACA,MACA,MACA,SACA,MACA,OACA,SACA,SACA,MACA,UACA,UACA,QACA,SACA,MACA,MACA,KACA,OACA,YACA,QACA,OACA,WACA,QACA,QACA,YACA,MACA,OACA,KACA,MACA,KACA,SACA,KACA,KACA,WACA,MACA,UACA,QACA,QACA,cACA,SACA,SACA,OACA,SACA,WACA,MACA,MACA,OACA,OACA,UACA,QACA,KACA,KACA,QACA,OACA,cACA,WACA,OACA,KACA,KACA,MACA,OACA,QACA,UACA,OACA,OACA,KACA,YACA,QACA,QACA,QACA,MACA,OACA,cACA,OACA,cACA,QACA,aACA,WACA,aACA,MACA,aACA,KACA,KACA,MACA,KACA,MACA,KACA,KACA,OACA,SACA,QACA,SACA,QACA,KACA,OACA,aACA,UACA,SACA,UACA,MACA,WACA,cACA,QACA,QACA,SACA,OACA,WACA,MACA,OACA,UACA,SACA,SACA,aACA,OACA,aACA,SACA,UACA,UACA,OACA,YACA,QACA,MACA,MACA,MACA,KACA,SACA,QACA,QACA,SACA,OACA,KACA,OACA,KACA,QACA,OACA,MACA,KACA,MACA,SACA,KACA,WACA,OACA,SACA,SACA,OACA,QACA,WACA,UACA,UACA,kBACA,SACA,MACA,OACA,MACA,OACA,OACA,KACA,MACA,MACA,KACA,MACA,MACA,aACA,UACA,eACA,SACA,SACA,UACA,UACA,OACA,KACA,KACA,SACA,OACA,SACA,WACA,OACA,SACA,QACA,WACA,MACA,QACA,MACA,MACA,OACA,MACA,KACA,KACA,YACA,QACA,OACA,QACA,OACA,UACA,QACA,OACA,WACA,SACA,OACA,WACA,KACA,OACA,OACA,UACA,OACA,KACA,KACA,MACA,OACA,MACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,OACA,KACA,SACA,SACA,WACA,WACA,OACA,QACA,YACA,OACA,OACA,MACA,MACA,QACA,QACA,OACA,KACA,MACA,KACA,KACA,QACA,UACA,OACA,YACA,YACA,MACA,WACA,YACA,UACA,QACA,SACA,SACA,QACA,QACA,KACA,QACA,WACA,SACA,UACA,OACA,UACA,SACA,KACA,SACA,QACA,KACA,KACA,SACA,UACA,KACA,MACA,SACA,OACA,SACA,SACA,aACA,QACA,SACA,MACA,OACA,KACA,MACA,KACA,MACA,OACA,OACA,aACA,MACA,UACA,SACA,OACA,KACA,KACA,KACA,MACA,UACA,UACA,OACA,UACA,SACA,UACA,OACA,QACA,QACA,KACA,SACA,MACA,KACA,SACA,KACA,KACA,QACA,KACA,KACA,QACA,QACA,QACA,MACA,QACA,UACA,QACA,QACA,OACA,SACA,OACA,KACA,QACA,UACA,WACA,SACA,gBACA,YACA,qBACA,QACA,MACA,KACA,OACA,MACA,QACA,QACA,KACA,MACA,KACA,KACA,KACA,QACA,MACA,KACA,KACA,SACA,aACA,MACA,MACA,MACA,KACA,KACA,KACA,KACA,YACA,OACA,WACA,KACA,KACA,QACA,WACA,WACA,eACA,MACA,KACA,KACA,SACA,QACA,MACA,SACA,SACA,MACA,MACA,SACA,OACA,SACA,OACA,OACA,aACA,KACA,QACA,aACA,QACA,OACA,SACA,OACA,SACA,KACA,SACA,QACA,UACA,SACA,OACA,UACA,QACA,UACA,UACA,iBACA,SACA,QACA,UACA,MACA,UACA,QACA,OACA,KACA,UACA,OACA,OACA,cACA,MACA,UACA,OACA,UACA,MACA,gBACA,WACA,OACA,QACA,QACA,MACA,KACA,MACA,MACA,OACA,QACA,UACA,SACA,MACA,cACA,cACA,cACA,cACA,aACA,cACA,cACA,eACA,cACA,aACA,cACA,eACA,cACA,aACA,eACA,aACA,iBACA,cACA,aACA,oBACA,aACA,cACA,iBACA,eACA,cACA,iBACA,eACA,aACA,eACA,aACA,WACA,YACA,aACA,aACA,cACA,iBACA,oBACA,YACA,aACA,cACA,gBACA,aACA,yBACA,cACA,aACA,aACA,cACA,YACA,YACA,gBACA,cACA,cACA,YACA,iBACA,aACA,aACA,aACA,cACA,cACA,gBACA,gBACA,mBACA,cACA,eACA,cACA,cACA,iBACA,cACA,gBACA,cACA,kBACA,cACA,aACA,YACA,YACA,cACA,iBACA,iBACA,cACA,kBACA,cACA,cACA,aACA,YACA,kBACA,eACA,iBACA,kBACA,mBACA,kBACA,iBACA,eACA,oBACA,oBACA,iBACA,cACA,iBACA,kBACA,iBACA,mBACA,oBACA,eACA,iBACA,eACA,eACA,cACA,iBACA,cACA,eACA,aACA,eACA,eACA,YACA,WACA,YACA,kBACA,cACA,aACA,eACA,cACA,YACA,WACA,cACA,aACA,aACA,cACA,eACA,YACA,WACA,cACA,cACA,iBACA,cACA,cACA,cACA,YACA,gBACA,aACA,0BACA,2BACA,YACA,cACA,uBACA,cACA,aACA,aACA,cACA,mBACA,oBACA,aACA,gBACA,gBACA,cACA,MACA,MACA,SACA,QACA,UACA,SACA,KACA,YACA,OACA,WACA,MACA,UACA,KACA,MACA,KACA,SACA,OACA,OACA,MACA,KACA,OACA,UACA,uBzJh9CFhtD,EAAAD,QAAAmvC,oB0JAAlvC,EAAAD,QAAAwqD,M5EEAvqD,EAAAD,QAAAy9B,EAA2B39B,EAAQ,QAAeA,EAAQ,QAAUA,EAAQ,+y5J/ED5E,IAAAD,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,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8BACA,+BACA,8BACA,kCACA,gCACA,0CACA,2BACA,2BACA,kBACA,kBACA,qBACA,4BACA,4BACA,4CACA,0EACA,6DACA,2DACA,mEACA,gEACA,gDACA,gDACA,gCACA,6DACA,qCACA,sCACA,qBACA,gCACA,2BACA,6BACA,8BACA,+BACA,6BACA,wBACA,gCACA,wCACA,yBACA,wCACA,oCACA,+CACA,kCACA,gCACA,yCACA,6BACA,sBACA,wBACA,yBACA,kBACA,6BACA,2BACA,oBACA,uBACA,sBACA,iBACA,0BACA,2BACA,0BACA,4BACA,wBACA,iBACA,kBACA,8BACA,kCACA,sDACA,4CACA,6CACA,uCACA,qDACA,uCACA,iBACA,8BACA,yCACA,+BACA,oDACA,gCACA,qDACA,iCACA,sBACA,qCACA,8CACA,yCACA,2CACA,4CACA,6CACA,2CACA,sCACA,uDACA,iDACA,wCACA,sCACA,sCACA,iDACA,6BACA,6BACA,iCACA,iCACA,iCACA,iCACA,kCACA,kCACA,kCACA,kCACA,kCACA,kCACA,gCACA,oCACA,iCACA,sBACA,yCACA,8CACA,kCACA,+CACA,mCACA,0BACA,kBACA,+BACA,sCACA,gDACA,+BACA,2BACA,4BACA,gCACA,yBACA,mBACA,mEACA,kBACA,sBACA,4BACA,wBACA,uCACA,6BACA,8BACA,gCACA,wCACA,yCACA,8CACA,4BACA,2BACA,8BACA,2CACA,gCACA,iCACA,2CACA,+BACA,+BACA,4BACA,0BACA,8BACA,wCACA,0CACA,2CACA,wCACA,gCACA,4BACA,oCACA,6BACA,uDACA,0BACA,4BACA,sBACA,2BACA,6BACA,oBACA,gCACA,sBACA,6BACA,yBACA,2BACA,wCACA,kBACA,yBACA,+BACA,uBACA,sCACA,yBACA,gCACA,kBACA,qBACA,wBACA,iCACA,oBACA,wBACA,0CACA,gBACA,4BACA,YACA,qCACA,uBACA,qBACA,qCACA,yBACA,iCACA,6BACA,aACA,wBACA,iBACA,qCACA,wCACA,sCACA,yCACA,aACA,mCACA,eACA,uCACA,8CACA,mBACA,kCACA,qBACA,yBACA,2BACA,oCACA,sBACA,8CACA,qCACA,sCACA,yBACA,qDACA,kCACA,iCACA,iCACA,0BACA,mCACA,2BACA,qDACA,6CACA,oCACA,wCACA,gBACA,2BACA,iCACA,yBACA,0CACA,yCACA,qCACA,yBACA,yBACA,+CACA,mDACA,8CACA,sDACA,wDACA,oDACA,gDACA,gDACA,iDACA,kDACA,qCACA,sCACA,mCACA,iDACA,0CACA,gDACA,sCACA,6BACA,uBACA,gCACA,sDACA,yCACA,yBACA,gBACA,mBACA,2DACA,oDACA,0CACA,iDACA,iCACA,qDACA,qDACA,wCACA,kDACA,4BACA,mBACA,6CACA,8CACA,6BACA,sDACA,sCACA,6CACA,4BACA,0BACA,sBACA,mCACA,iCACA,0BACA,yCACA,8BACA,8BACA,8BACA,8BACA,oCACA,6BACA,6BACA,0CACA,+BACA,8BACA,yBACA,4BACA,mCACA,oCACA,6BACA,qCACA,uBACA,mBACA,4CACA,0BACA,wBACA,eACA,8BACA,gCACA,6BACA,wBACA,gBACA,+BACA,wBACA,6BACA,kBACA,mBACA,eACA,mCACA,mCACA,qCACA,+BACA,kCACA,sCACA,8BACA,kBACA,gCACA,8BACA,4CACA,oCACA,mCACA,gDACA,+CACA,kCACA,oCACA,6BACA,kEAI4B,CAC5B,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,MACA,MACA,wBAIqB,CACrB,2BACA,qBACA,sBACA,yC/L3YFzhE,EAAAD,QAAA6nD,4RgMAaga,EACD,CAAC,CACTphE,KAAM,kBACNU,MAAO,8BACP4+B,SAAU,CAAC,CACTt/B,KAAM,WACNU,MAAO,2BACN,CACDV,KAAM,WACNU,MAAO,2BACN,CACDV,KAAM,aACNU,MAAO,yBAKA2F,EAAmB,CAC9BF,SAAU,CACR,CACEnG,KAAM,aACNU,MAAO,uBACP4+B,SAAU,CACR,CACEt/B,KAAM,aACNU,MAAO,qBAET,CACEV,KAAM,aACNU,MAAO,4lBCZjB,IAAM2gE,EAAe,CACnBC,iBAAkB,IAAIC,mBAAiBC,mBACvCC,uBAAwB,IAAIC,yBAAuBC,yBACnDC,eAAgB,IAAIC,iBAAeC,mBAG/BC,EAAkB,SAAC/hE,EAAMU,GAC7B,OAAI+B,UAAEuB,QAAQtD,GACZ,GAAAsG,OAAUhH,GACDyC,UAAE6sC,SAAS5uC,GACpB,GAAAsG,OAAUhH,EAAV,KAAAgH,OAAkB/C,KAAKM,UAAU7D,GAAjC,qBAAAsG,OAA2DnD,OAAO63D,UAAUsG,QAE9E,GAAAh7D,OAAUhH,EAAV,KAAAgH,OAAkBtG,IA6Bb,IAAMuhE,EAAqB,SAAAn7D,GAAuB,IAApBo7D,EAAoBp7D,EAApBo7D,cAO7BC,EAAc,CAClBxL,gBAHEuL,EAHFvL,iBAMoC,GACpCE,eAJEqL,EAFFrL,gBAMkC,GAClCC,YALEoL,EADFpL,aAM4B,IAG9B,OAAOsL,6BAA2B,CAChC9J,eAAgB4J,EAAcpK,eAC9BuJ,eACAgB,qBAAqBl+B,EACrBg+B,cACAG,gBAAiB,CACfC,WAAY,YACZC,cAAe,MAEjBN,cAAatxD,IAAA,GACRsxD,GACAC,GAELM,cAAe,MAINC,EAA4B,SAAAt7D,GAAsE,IAAnEzB,EAAmEyB,EAAnEzB,gBAAiBu8D,EAAkD96D,EAAlD86D,cAAkDS,EAAAv7D,EAAnCjB,gBAAmC,IAAAw8D,EAAxB,kBAAwBA,EAC7Gh9D,EAAgBO,YAAY,CAC1BC,SAAQ,GAAAa,OAAA7G,OAAAiG,EAAA,EAAAjG,CACHihE,GADGjhE,OAAAiG,EAAA,EAAAjG,CAEHyiE,wBAAsBz8D,aAI7B,IAAM08D,EAAkBl9D,EAAgBQ,GAAUpF,SAC5C+hE,EAAWD,EAAgBC,SAAS/hE,SACpCgiE,EAAWF,EAAgBE,SAAShiE,SACpCiiE,EAAaH,EAAgBG,WAAWjiE,SAI9C,OAvEF,SAAc4E,EAAiBu8D,GAC7B,IAAMe,EAAc,CAClB3K,eAAgB4J,GAAiBA,EAAcpK,eAC/CM,KAAM8J,GAAiBA,EAAcpL,aAAeoL,EAAcpL,YAAYC,QAI1EmM,EAAe,IAAIC,mBAAiB,CACxC9B,eACA+B,iBAHuB,SAAAC,GAAW,OAAIC,wBAAcD,EAAYt8D,QAM5Dw8D,EAAW,IAAIC,WAAS,CAC5BP,cACAC,eACAv9D,oBAGI89D,EAAY,IAAIC,YAAU,CAC9B/9D,oBAGF49D,EAAS/gE,OACTihE,EAAUjhE,OA8CVmhE,CAAKh+D,EAAiBu8D,GAEf,CACLv8D,kBACAm9D,SAAU,SAAC9iE,GAAqB,IAAfU,EAAegjB,UAAArgB,OAAA,QAAAsgB,IAAAD,UAAA,GAAAA,UAAA,GAAP,GACvBo/C,EAASv7D,MAAMw6D,EAAgB/hE,EAAMU,KAEvCqiE,SAAU,SAAC/iE,GAAqB,IAAfU,EAAegjB,UAAArgB,OAAA,QAAAsgB,IAAAD,UAAA,GAAAA,UAAA,GAAP,GACvBq/C,EAAS97D,MAAM86D,EAAgB/hE,EAAMU,KAEvCsiE,WAAY,SAAChjE,GAAqB,IAAfU,EAAegjB,UAAArgB,OAAA,QAAAsgB,IAAAD,UAAA,GAAAA,UAAA,GAAP,GACzBs/C,EAAW/7D,MAAM86D,EAAgB/hE,EAAMU,mBC7GhCkjE,SAAgCn6D,EAAM2/B,cAAc,CAC/D05B,SAAUrgE,UAAE4G,KACZ05D,SAAUtgE,UAAE4G,KACZ25D,WAAYvgE,UAAE4G,KACd1D,gBAAiB,oNnMNnB,IAAAvG,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,qBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,kBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,wBoKlFAhC,EAAAD,QAAA0yD,qBGAAzyD,EAAAD,QAAAskE,qV6BAA,IAAA1mC,EAAA99B,EAAA,KACAykE,EAAAzkE,EAAA,6GCQO,SAAAyH,GAUJ,IATDwxD,EASCxxD,EATDwxD,eACA+I,EAQCv6D,EARDu6D,aACAgB,EAOCv7D,EAPDu7D,oBACAF,EAMCr7D,EANDq7D,YACAG,EAKCx7D,EALDw7D,gBACAJ,EAICp7D,EAJDo7D,cACA6B,EAGCj9D,EAHDi9D,gBAGCC,EAAAl9D,EAFDm9D,kBAEC,IAAAD,EAFY,GAEZA,EAAAE,EAAAp9D,EADD27D,qBACC,IAAAyB,EADe,CAACrgE,OAAOsgE,GACvBD,EACKjmC,GAAa,EAAAmmC,EAAAC,eAAc,CAC/BhC,sBACA/J,iBACA6J,cACAD,kBAGIoC,EAA+B,IAAIC,kBAAgB,CACvDrmC,WAAW,EAAAsmC,EAAA/7B,SAAoB,CAAEw7B,eACjChmC,eAGuB,IAAIwmC,0BAAwB,CACnD9+D,gBAAiB2+D,IAEF9hE,OAEjB,IAAMmD,EAAkB,IAAI4+D,kBAAgB,CAC1CrmC,WAAW,EAAAwmC,EAAAC,cAAa,CAAErM,iBAAgBgK,kBAAiB2B,eAC3DhmC,WAAY,CACV2mC,iBAAkB3mC,EAAW2mC,iBAC7BC,eAAgB5mC,EAAW4mC,kBAkB/B,OAdA,EAAAC,EAAAC,SAAQ,CACNp/D,kBACA2yD,iBACA+I,eACAoB,gBACAsB,kBACA3L,KAAM+J,EAAYrL,YAAYC,SAIhC9H,oBAAkBzsD,KAAKmD,GAEvB9B,OAAOmhE,qBAAuBr/D,EAEvBA,GA3DT,MAAAw3B,EAAA99B,EAAA,KAEA4lE,EAAA5lE,EAAA,KACA6lE,EAAA7lE,EAAA,KACAqlE,EAAArlE,EAAA,KACA+kE,EAAA/kE,EAAA,KACAylE,EAAAzlE,EAAA,KACAmlE,KAAAnlE,EAAA,qDCPAG,EAAAD,QAAA4lE,qBCAA3lE,EAAAD,QAAA6lE,oGCsBO,SAAAt+D,GAIJ,IAHDwxD,EAGCxxD,EAHDwxD,eACAgK,EAECx7D,EAFDw7D,gBAEC0B,EAAAl9D,EADDm9D,WAAYoB,OACX,IAAArB,EADmC,GACnCA,EACKsB,EAAavY,SAASnlD,OACtBq8D,qUAAUrzD,CAAA,IACX,EAAAusB,EAAAooC,eAAcD,GACdD,GAGCpM,EAAoBqJ,GAAmBA,EAAgBC,WAC3DD,EAAgBC,WAAa,WACzBrJ,EAAuBoJ,GAAmBA,EAAgBE,cAC9DF,EAAgBE,cAAgB,QAG5BgD,EAAiB,IAAIC,iBAAe,CACxCxM,oBACAC,yBAEIwM,EAAe,IAAIC,eACnBC,EAAwB,IAAIC,wBAC5BC,EAAmB,IAAIC,mBAEvBC,EAAiB,IAAIC,iBACrBC,EAAY,IAAIC,YAChBC,EAAgB,IAAIC,gBACpBC,EAAkB,IAAIC,kBAEtBC,EAAuB,IAAIC,uBAAqB,CACpDpkE,WAAY,GACZC,QAAS,CACPgkE,mBAEFI,aAAcpO,IAGhBkO,EAAqBhkE,OAErB,IAAMmkE,EAAuB,IAAIC,eAAa,CAC5CC,YAAa5C,EAAWpQ,MACxBqC,cAAe+N,EAAW/N,cAC1BC,UAAW8N,EAAW9N,UACtBG,cAAewQ,yBAAuBxQ,cACtCE,mBAAoBsQ,yBAAuBtQ,mBAC3Cn0D,WAAY,CACVmjE,iBACAE,eACAE,yBAEFtjE,QAAS,CACP0jE,iBACAE,eAIJS,EAAqBnkE,OACrBmkE,EAAqBI,sBAErB,IAAMC,EAAwB,IAAIC,mCAC5BC,EAAqB,IAAIC,gCAEzBC,EAAwB,IAAIR,eAAa,CAC7CC,YAAa5C,EAAWhO,OAAOD,qBAC/BE,cAAe+N,EAAW/N,cAC1BC,UAAW8N,EAAW9N,UACtBG,cAAe+Q,0BAAwB/Q,cACvCE,mBAAoB6Q,0BAAwB7Q,mBAC5Cn0D,WAAY,CACV2kE,yBAEF1kE,QAAS,CACP4kE,wBAIJE,EAAsB5kE,OACtB4kE,EAAsBL,sBAEtB,IAAMO,EAAkB,IAAIC,kBAAgB,CAC1CjlE,QAAS,CACP8jE,iBAEF/jE,WAAY,CACVyjE,sBAIJwB,EAAgB9kE,OAEhB,IAAM07B,EAAY,CAChBsoC,uBACAG,uBACAS,wBACAE,mBAGF,IAAI,EAAAnqC,EAAAqqC,mBAAkBlC,GAAa,CACjCzhE,OAAO4jE,iBAAmB,IAAIC,eAAa,CAAEzkE,QAAS,MACtD,IAAM0kE,EAAmB,IAAIC,mBAAiB,CAC5CrlE,KAAMsB,OAAO4jE,iBACbplE,WAAY,CACVmjE,iBACAE,gBAEFpjE,QAAS,CACP0jE,iBACAE,eAIJyB,EAAiBnlE,OAEjBC,UAAEs8B,OAAOb,EAAW,CAAEypC,qBAGxB,OAAOzpC,GA3IT,MAAAn8B,KAAA1C,EAAA,gCACAwoE,EAAAxoE,EAAA,KACAyoE,EAAAzoE,EAAA,KACA0oE,EAAA1oE,EAAA,KACAsC,EAAAtC,EAAA,KACA89B,EAAA99B,EAAA,iJCLAG,EAAAD,QAAAyoE,qBCAAxoE,EAAAD,QAAA0oE,qBCAAzoE,EAAAD,QAAA2oE,qBCAA1oE,EAAAD,QAAA4oE,qBCAA3oE,EAAAD,QAAA6oE,qGCMO,SAAAthE,GAKJ,IAJDu7D,EAICv7D,EAJDu7D,oBACA/J,EAGCxxD,EAHDwxD,eACA6J,EAECr7D,EAFDq7D,YAGMzL,EADL5vD,EADDo7D,eAEqC/hE,OAAOwJ,OAAO,GAAIw4D,EAAa,CAClE5R,QAAS,QACTuH,eAAgBQ,IAEZsM,EAAmB,IAAIyD,mBAAiB,CAAE3R,gBAC1CmO,EAAiB,IAAIyD,iBAAe,CACxCnqC,YAAakkC,IAETkG,EAAsB,IAAIC,sBAAoB,CAClD5P,eAAgB/0D,OAAOgE,SAAS+J,OASlC,MANmB,CACjBgzD,mBACAC,iBACA0D,wBA3BJ,IAAAprC,EAAA99B,EAAA,kGCIO,SAAAyH,GAOJ,IANDnB,EAMCmB,EANDnB,gBACA2yD,EAKCxxD,EALDwxD,eACA+I,EAICv6D,EAJDu6D,aACAoB,EAGC37D,EAHD27D,cACAsB,EAECj9D,EAFDi9D,gBACA3L,EACCtxD,EADDsxD,KAGMqQ,EAAwBhmE,UAAE+uC,QAAQixB,GACxC,IAAKhgE,UAAEuB,QAAQykE,GAAwB,CACrC,IACMvF,EAAe,IAAIC,mBAAiB,CAAE9B,eAAc+B,iBADjC,SAAAC,GAAW,OAAI,EAAAtK,EAAAuK,eAAcD,EAAYt8D,QAE5Dw8D,EAAW,IAAIC,WAAS,CAC5BP,YAAa,CACXwF,wBACAnQ,iBACAF,OACA2L,mBAEFb,eACAv9D,oBAGF49D,EAAS/gE,OAGO,IAAIkhE,YAAU,CAC9B/9D,oBAEQnD,QAlCZ,MAAAkmE,EAAArpE,EAAA,KACA05D,EAAA15D,EAAA,IACA0C,KAAA1C,EAAA,mDCFAG,EAAAD,QAAAopE,+FCOe,SAA6BjjE,GAAO,IAAAs+D,GACEt+D,GAAS,IAApDu+D,WAAYoB,OAD6B,IAAArB,EACL,GADKA,EAE3CsB,EAAavY,SAASnlD,OACtBq8D,qUAAUrzD,CAAA,IACX,EAAAusB,EAAAooC,eAAcD,GACdD,GAICuD,EAA2B,IAAIC,2BAG/BC,EAAwB,IAAIC,wBAE5BC,EAAe,IAAIpC,eAAa,CACpCC,YAAa5C,EAAWpQ,MACxBqC,cAAe+N,EAAW/N,cAC1BC,UAAW8N,EAAW9N,UACtBG,cAAe,CACb2S,eAAgB,CACdjpE,KAAM,mBAGVw2D,mBAAoB,iBACpBn0D,WAAY,CACVumE,4BAEFtmE,QAAS,CACPwmE,2BAWJ,OAPAE,EAAaxmE,OACbwmE,EAAajC,sBAEK,CAChBiC,iBA3CJ,IAAAnB,EAAAxoE,EAAA,KACA89B,EAAA99B,EAAA,wQCDqC,CACnC8G,SAAU,CACR,CACEnG,KAAM,cACNU,MAAO,eACP4+B,SAAU,CACR,CACEt/B,KAAM,cACNU,MAAO,kBAIb,CACEV,KAAM,uCACNU,MAAO,4BACP4+B,SAAU,CACR,CACEt/B,KAAM,eACNU,MAAO,mBAIb,CACEV,KAAM,uBACNU,MAAO,yBACP4+B,SAAU,CACR,CACEt/B,KAAM,iBACNU,MAAO,qBAIb,CACEV,KAAM,aACNU,MAAO,aACP4+B,SAAU,CACR,CACEt/B,KAAM,kBACNU,MAAO,qBAIb,CACEV,KAAM,mBACNU,MAAO,qBACP4+B,SAAU,CACR,CACEt/B,KAAM,sBACNU,MAAO,yBAET,CACEV,KAAM,yBACNU,MAAO,8BAIb,CACEV,KAAM,qBACNU,MAAO,uBACP4+B,SAAU,CACR,CACEt/B,KAAM,sBACNU,MAAO,yBAET,CACEV,KAAM,2BACNU,MAAO,+CAET,CACEV,KAAM,wBACNU,MAAO,4CAET,CACEV,KAAM,uCACNU,MAAO,2DAIb,CACEV,KAAM,8BACNU,MAAO,kCACP4+B,SAAU,CACR,CACEt/B,KAAM,sBACNU,MAAO,2BAIb,CACEV,KAAM,kBACNU,MAAO,oBACP4+B,SAAU,CACR,kBAGJ,CACEt/B,KAAM,YACNU,MAAO,aACP4+B,SAAU,CACR,cACA,gBAGJ,CACEt/B,KAAM,mBACNU,MAAO,oBACP4+B,SAAU,CACR,qBAGJ,CACEt/B,KAAM,qBACNU,MAAO,uBACP4+B,SAAU,CACR,uBAGJ,CACEt/B,KAAM,iBACNU,MAAO,mBACP4+B,SAAU,CACR,gBAGJ,CACEt/B,KAAM,WACNU,MAAO,WACP4+B,SAAU,CACR,sBAGJ,CACEt/B,KAAM,6CACNU,MAAO,6CACP4+B,SAAU,CACR,wBAGJ,CACEt/B,KAAM,uCACNU,MAAO,uCACP4+B,SAAU,CACR,iBACA,yCjN/IR9/B,EAAAD,QAAA6nD,oLDCA,IAAAhoD,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,qBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,kBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,uBClFAhC,EAAAD,QAAAkC,0ZkNAA,IAAAynE,EAAA7pE,EAAA,IACA8pE,EAAA9pE,EAAA,IACA+pE,EAAA/pE,EAAA,qGCFA,MAAA0C,KAAA1C,EAAA,gCACAgqE,EAAAhqE,EAAA,IACAg+B,EAAAh+B,EAAA,IACAiqE,EAAAjqE,EAAA,eAKO,MAIL4C,YAAYC,EAAU,IACpBE,KAAK6gE,YAAcxgE,UAAEu7B,SAAS97B,EAAQ+gE,aAAe,GAAIplC,gBAAcolC,aACvE7gE,KAAKmnE,QAAUrnE,EAAQghE,cAAgBrlC,gBAAcqlC,aAGrD9gE,KAAKonE,cAActnE,EAAQyD,iBAE3BvD,KAAKqnE,YAAc,IAAIC,kBAAgBtnE,KAAK6gE,YAAa7gE,KAAKmnE,QAASnnE,KAAKunE,kBAG9EnnE,OACEC,UAAEyG,KAAK9G,KAAK6gE,YAAYR,cAAgBmH,IACtCxnE,KAAKqnE,YAAYI,UAAUD,KAI/BJ,cAAclc,GACZA,EAAMpnD,YAAYm5B,UAClBj9B,KAAKunE,iBAAmBrc,EAAMqc,iBAAiB5oE,OAAOusD,EAAM9tB,2HC9BhE,IAAAz9B,EAAAu2C,EAAAj5C,EAAA,IACA4sD,EAAA3T,EAAAj5C,EAAA,KACAshC,EAAAthC,EAAA,IACAyqE,EAAAzqE,EAAA,uDAIA,IAAI0qE,EAA0B,uBAKvB,MAOL9nE,YAAYghE,EAAaC,EAAc/8D,EAAU6jE,GAC/C5nE,KAAK6gE,YAAcA,EACnB7gE,KAAK8gE,aAAeA,EACpB9gE,KAAK+D,SAAWA,EAChB/D,KAAK4nE,YAAcA,GAAe/jC,eAIpC4jC,UAAUI,GACR,MAAMC,EAAeD,EAAOjmC,KACtB6lC,EAAY,CAAC9iE,EAAK7E,KACtBA,EAAUA,GAAW,GAEjBO,UAAE6sC,SAASvoC,GACb7E,EAAU6E,EACDtE,UAAEsvC,SAAShrC,KACpB7E,EAAQ6E,IAAMA,GAIhB,MAAMg6B,EAAY3+B,KAAK4nE,cACnB5nE,KAAK+nE,mBAAmBjoE,EAAQkoE,SAAUloE,EAAQ6E,OACpD7E,EAAQ6E,KAAM,EAAAklD,EAAAxjB,SAAMvmC,EAAQ6E,KAAKsjE,SAAS,QAAStpC,GAAW8R,YAGhE,MAAMvT,EAAWl9B,KAAK+D,SAASmkE,iBAAiBvpE,SAUhD,OAT6B,IAAIwpE,uBAC/BroE,EACA6+B,EACA3+B,KAAK6gE,YACL7gE,KAAK8gE,aACL5jC,GAEmBkrC,2BAEdN,EAAatqE,KAAKqqE,EAAQ/nE,IAGnC6nE,EAA0BF,EAE1BI,EAAOjmC,KAAO,EAACj9B,EAAK7E,IAAa6nE,IAA4BF,EAC3DA,EAAU9iE,EAAK7E,GACfgoE,EAAatqE,KAAKqqE,EAAQljE,EAAK7E,IAGnCioE,mBAAmBC,EAAUrjE,GAC3B,MAAM0jE,EAAiBhoE,UAAEsvC,SAAShrC,GAAOA,EAAI0B,cAAgB,GAE7D,OAAOhG,UAAEsvC,SAAShrC,KACqB,IAArC0jE,EAAe/gC,QAAQ,WACtBjnC,UAAEugC,YAAYonC,IAA0B,WAAbA,KACY,IAAxCK,EAAe/gC,QAAQ,6B9DtE7BlqC,EAAAD,QAAAmrE,iBnEAAlrE,EAAAD,QAAAorE,+GkIAA,MAAA5oE,KAAA1C,EAAA,gCAEA,MAAMurE,EAAQ,CACZC,WAAY,aAAc7zB,QAAS,UAAW8zB,SAAU,WAAY1oC,MAAO,gCAMtE,MAQLngC,YAAYC,EAAS6+B,EAAWkiC,EAAaC,EAAc5jC,GACzDl9B,KAAKF,QAAUA,EACfE,KAAK2+B,UAAYA,EACjB3+B,KAAK6gE,YAAcA,EACnB7gE,KAAK8gE,aAAeA,EACpB9gE,KAAKk9B,SAAWA,EAGlBkrC,2BACE,MAAMlS,EAAiB71D,UAAEqgC,OAAO1gC,KAAK6gE,YAAa,kBAC5CI,EAAc,CAClBJ,YAAa7gE,KAAK6gE,YAClBl8D,IAAK3E,KAAKF,QAAQ6E,IAClBg6B,UAAW3+B,KAAK2+B,UAChBu3B,iBACAyS,eAAe,EACf/pC,WAAY5+B,KAAKF,QAAQ6zC,KACzBxuC,MAAO,GACPyjE,cAAe,EACfC,oBAAqB,EACrBhnC,YAAa7hC,KAAK6gE,YAAYiI,YAAY9oE,KAAKF,QAAQoF,MACvDg4B,SAAUl9B,KAAKk9B,UAGbl9B,KAAK8gE,aAAaiI,mBAAmB/oE,KAAKgpE,oBAAoBhpE,KAAKF,QAASmhE,GAC5EjhE,KAAK8gE,aAAamI,gBAAgBjpE,KAAKkpE,iBAAiBlpE,KAAKF,QAASmhE,GACtEjhE,KAAK8gE,aAAaqI,cAAcnpE,KAAKopE,eAAeppE,KAAKF,QAASmhE,GAClEjhE,KAAK8gE,aAAauI,iBAAiBrpE,KAAKspE,kBAAkBtpE,KAAKF,QAASmhE,GAI9E+H,oBAAoBO,EAAatI,GAC/B,MAAMlgC,EAAU/gC,KAEhB,GAAIK,UAAEugC,YAAY2oC,EAAYf,EAAMC,aAClCc,EAAYf,EAAMC,YAAc,KAAIxnC,KAClCF,EAAQ+/B,aAAaiI,kBAAkB9H,EAAahgC,UAEjD,GAAI5gC,UAAEC,WAAWipE,EAAYf,EAAMC,aAAc,CACtD,MAAMe,EAAuBD,EAAYf,EAAMC,YAC/Cc,EAAYf,EAAMC,YAAc,YAAyBxnC,GACvD,MAMMwoC,EANc1oC,EAAQlhC,YAAY6pE,gBACtCF,EACAzoC,EAAQjhC,QAAQ6E,IAChBo8B,EAAQpC,UACRoC,EAAQ7D,UAEsBkE,MAAMphC,KAAMihC,GAE5C,OADAF,EAAQ+/B,aAAaiI,kBAAkB9H,EAAahgC,GAChDwoC,GAAeppE,UAAEC,WAAWmpE,EAAYE,kBACnCF,EAAYE,iBAAiB1I,EAAahgC,GAE5CwoC,IAKbP,iBAAiBK,EAAatI,GAC5B,MAAMlgC,EAAU/gC,KAEhB,GAAIK,UAAEugC,YAAY2oC,EAAYf,EAAM5zB,UAClC20B,EAAYf,EAAM5zB,SAAW,KAAI3T,KAC/BF,EAAQ+/B,aAAamI,eAAehI,EAAahgC,GAC7CF,EAAQ+/B,aAAa8I,sBACvB7oC,EAAQ+/B,aAAa8I,qBAAqB3I,EAAahgC,UAGtD,GAAI5gC,UAAEC,WAAWipE,EAAYf,EAAM5zB,UAAW,CACnD,MAAM40B,EAAuBD,EAAYf,EAAM5zB,SAC/C20B,EAAYf,EAAM5zB,SAAW,YAAsB3T,GACjDF,EAAQ+/B,aAAamI,eAAehI,EAAahgC,GACjD,MAMMwoC,EANc1oC,EAAQlhC,YAAY6pE,gBACtCF,EACAzoC,EAAQjhC,QAAQ6E,IAChBo8B,EAAQpC,UACRoC,EAAQ7D,UAEsBkE,MAAMphC,KAAMihC,GAI5C,OAHIF,EAAQ+/B,aAAa8I,sBACvB7oC,EAAQ+/B,aAAa8I,qBAAqB3I,EAAahgC,GAElDwoC,IAKbL,eAAeG,EAAatI,GAC1B,MAAMlgC,EAAU/gC,KAEhB,GAAIK,UAAEugC,YAAY2oC,EAAYf,EAAMxoC,QAClCupC,EAAYf,EAAMxoC,OAAS,KAAIiB,KAC7BF,EAAQ+/B,aAAaqI,aAAalI,EAAahgC,UAE5C,GAAI5gC,UAAEC,WAAWipE,EAAYf,EAAMxoC,QAAS,CACjD,MAAMwpC,EAAuBD,EAAYf,EAAMxoC,OAC/CupC,EAAYf,EAAMxoC,OAAS,YAAoBiB,GAS7C,OARAF,EAAQ+/B,aAAaqI,aAAalI,EAAahgC,GAC3BF,EAAQlhC,YAAY6pE,gBACtCF,EACAzoC,EAAQjhC,QAAQ6E,IAChBo8B,EAAQpC,UACRoC,EAAQ7D,UAEsBkE,MAAMphC,KAAMihC,KAMlDqoC,kBAAkBC,EAAatI,GAC7B,MAAMlgC,EAAU/gC,KAEhB,GAAIK,UAAEugC,YAAY2oC,EAAYf,EAAME,WAClCa,EAAYf,EAAME,UAAY,KAAIznC,KAChCF,EAAQ+/B,aAAauI,gBAAgBpI,EAAahgC,UAE/C,GAAI5gC,UAAEC,WAAWipE,EAAYf,EAAME,WAAY,CACpD,MAAMc,EAAuBD,EAAYf,EAAME,UAC/Ca,EAAYf,EAAME,UAAY,YAAuBznC,GACnD,MAMMwoC,EANc1oC,EAAQlhC,YAAY6pE,gBACtCF,EACAzoC,EAAQjhC,QAAQ6E,IAChBo8B,EAAQpC,UACRoC,EAAQ7D,UAEsBkE,MAAMphC,KAAMihC,GAE5C,OADAF,EAAQ+/B,aAAauI,gBAAgBpI,EAAahgC,GAC3CwoC,IAKb5sB,uBAAuB/b,EAAMpC,EAAKC,EAAWzB,EAAUuB,GACrD,OAAO,YAAwBwC,GAC7B,MAAMF,EAAU/gC,KAChB,IAAImF,EAAS9E,UAAEugC,YAAYnC,GAA4B,MAAdA,MACzC,IACE,OAAOqC,EAAKM,MAAML,EAASE,GAC3B,MAAOyjB,GAUP,MATKA,EAAGjmB,QAEIimB,EAAGmlB,MAGb1kE,MAAYu/C,EAAGjmB,wBAAwBimB,EAAGmlB,QAF1C1kE,GAASu/C,EAAGjmB,QAFZt5B,GAASu/C,EAAGjU,WAMdvT,EAAS/3B,MAAMA,EAAOu5B,EAAKC,GAErB+lB,4GCrKd,IAAAoD,EAAA5R,EAAAj5C,EAAA,KACA0C,EAAAu2C,EAAAj5C,EAAA,IACA8pE,EAAA9pE,EAAA,uDAEA,MAyCaw+B,EAAgB,CAC3BolC,YA1CyB,CACzBR,cAAe,CAAC0B,WAChB+H,iBAAkB,EAAE,GACpBC,YAAYC,EAAUF,GACpB,MAAMppC,EAAS,CACbC,MAAM,GAaR,OAVIqpC,GACFA,EAAS7L,QACT6L,EAAS7L,OAAO,IAChB6L,EAAS7L,OAAO,GAAGC,MACnB/9D,UAAEgtC,QAAQy8B,IACVzpE,UAAE4pD,SAAS6f,EAAkBE,EAAS7L,OAAO,GAAGC,QAChD19B,EAAOC,MAAO,EACdD,EAAOjC,QAAUurC,EAAS7L,OAAO,GAAG8L,QACpCvpC,EAAOiB,YAAa,GAEfjB,GAETwpC,eAAeF,GACTA,GAAYA,EAASG,QAChBH,EAASG,QAAQC,UAElB,EAEVtB,YAAYuB,GAEV,GAAIhqE,UAAE6sC,SAASm9B,IAAgBA,EAAYC,YAAa,CACtD,MAAMx6D,EAAOzP,UAAEyP,KAAKu6D,GAGpB,OAAOA,EAFchqE,UAAE6C,KAAK4M,EAAMlR,GAAOA,EAAIqC,OAHzB,YAGgDA,QAHhD,cAIlBrC,EAAI83C,OAAO93C,EAAIqC,OAJG,YAIoBA,UAG1C,OAAQ,IASV6/D,aAJuB,IAAIC,qD5D3C7B3jE,EAAAD,QAAAotE,2G6DAA,IAAAziB,EAAA5R,EAAAj5C,EAAA,KACA0C,EAAAu2C,EAAAj5C,EAAA,IACAshC,EAAAthC,EAAA,0EASO,MACL4C,YAAYC,EAAU,IACpBE,KAAKi/D,aAAen/D,EAAQm/D,cAAgB,GAC5Cj/D,KAAKghE,iBAAmBlhE,EAAQkhE,kBAAoB3gE,UAAEmqE,UAAS,GASjEzB,kBAAkB9H,GAAcjD,IAI9B,GAFAiD,EAAY2H,eAAgB,EAAArqC,EAAA4C,iBAEe,IAAvCnhC,KAAKghE,iBAAiBC,GAAuB,CAC/C,MAAMf,EAAkB7/D,UAAEqgC,OAAOugC,EAAYJ,YAAYc,gBAAiB,kBAAmB,cAE7F3D,EAAMyM,iBAAiB,iBAAkBxJ,EAAYtiC,WAErDsiC,EAAY/K,gBAAkB8H,EAAMyM,iBAAiB,sBAAuBxJ,EAAY/K,gBACxF8H,EAAMyM,iBAAiB,uBAAwBvK,GAC/ClC,EAAMyM,iBAAiB,YAAaxJ,EAAYJ,YAAY7K,MAC5DgI,EAAMyM,iBAAiB,OAAQxJ,EAAYJ,YAAY7K,MAGzDiL,EAAY/jC,SAAS0E,KACnBq/B,EAAYtiC,UACZsiC,EAAYt8D,KACZ,EACAs8D,EAAYriC,WACZ,GACA,EACA,GACAqiC,EAAYp/B,aAUhBonC,eAAehI,GAAc/7D,EAAMwlE,EAAY1M,IAC7C,MAAM2M,GAAgB,EAAApsC,EAAA4C,gBAAiB8/B,EAAY2H,cAC7CloC,EAASugC,EAAYJ,YAAYkJ,YAAY7kE,GAE9Cw7B,EAAOC,OACVsgC,EAAY0H,eAAgB,EAC5B1H,EAAY97D,MAAQu7B,EAAOjC,QAE3BwiC,EAAY/jC,SAAS/3B,MACnB87D,EAAY97D,MACZ87D,EAAYt8D,IACZs8D,EAAYtiC,UACZ+B,EAAOiB,WACPs/B,EAAYriC,aAIhBqiC,EAAY/jC,SAAS0E,KACnBq/B,EAAYtiC,UACZsiC,EAAYt8D,KACZ,EACAs8D,EAAYriC,WACZ+rC,EACA1J,EAAY0H,cACZ3oE,KAAKH,YAAY+qE,cAAc5M,GAC/BiD,EAAYp/B,aAGdo/B,EAAYp/B,YAAco/B,EAAYJ,YAAYqJ,eAAehlE,GACjE+7D,EAAY4H,qBAAsB,EAAAtqC,EAAA4C,gBASpCyoC,qBAAqB3I,GACnB,IAAkC,IAA9BA,EAAY0H,cAAwB,CACtC,MAAMkC,GAAkB,EAAAtsC,EAAA4C,gBAAiB8/B,EAAY4H,oBAErD5H,EAAY/jC,SAAS0E,KACnBq/B,EAAYtiC,UACZsiC,EAAYt8D,KACZ,EACAs8D,EAAYriC,WACZisC,EACA5J,EAAY0H,cACZ,GACA1H,EAAYp/B,aACZ,IAYNsnC,aAAalI,GAAcjD,EAAO0M,EAAYI,IAC5C,MAAMH,GAAgB,EAAApsC,EAAA4C,gBAAiB8/B,EAAY2H,cAEnD,GAAqB,IAAjB5K,EAAM54D,OAAc,CAmBtB,OAlBA67D,EAAY0H,eAAgB,EAE5B1H,EAAY97D,qBAAuB64D,EAAM54D,UAErCslE,GAAqC,KAAvB3I,UAAEpY,KAAK+gB,KACvBzJ,EAAY97D,YAAeulE,IAEvB1M,EAAME,cAA+C,KAA/B6D,UAAEpY,KAAKqU,EAAME,cACrC+C,EAAY97D,YAAe64D,EAAME,eACxBF,EAAM+M,aAA6C,KAA9BhJ,UAAEpY,KAAKqU,EAAM+M,eAC3C9J,EAAY97D,YAAe64D,EAAM+M,gBAIjCD,GAAuC,KAAxB/I,UAAEpY,KAAKmhB,KACxB7J,EAAY97D,YAAe2lE,KAGrB9M,EAAM54D,QACZ,KAAK,IACL,KAAK,IAECpF,KAAKgrE,YAAY/J,EAAajD,EAAO0M,EAAYI,KACnD7J,EAAY0H,eAAgB,GAE9B,MACF,KAAK,IAEH1H,EAAY0H,eAAgB,EAC5B,MACF,QACE1H,EAAY0H,eAAgB,GAGE,IAA9B1H,EAAY0H,cACd1H,EAAY/jC,SAAS/3B,MAAM87D,EAAY97D,MAAO87D,EAAYt8D,IAAKs8D,EAAYtiC,UAAW,GAAIsiC,EAAYriC,YAEtGqiC,EAAY/jC,SAASr4B,MAAMo8D,EAAY97D,MAAO87D,EAAYt8D,IAAKs8D,EAAYtiC,UAAWsiC,EAAYriC,YAItGqiC,EAAY/jC,SAAS0E,KACnBq/B,EAAYtiC,UACZsiC,EAAYt8D,KACZ,EACAs8D,EAAYriC,WACZ+rC,EACA1J,EAAY0H,eAUhBU,gBAAgBpI,GAAcjD,KAY9BgN,YAAY/J,EAAajD,EAAO0M,EAAYI,GAC1C,OAAOzqE,UAAEqG,IAAI1G,KAAKi/D,aAAcgM,GAAeA,EAAYrkE,MACzDq6D,EACAjD,EACA0M,EACAI,IAIJjuB,qBAAqBmhB,GACnB,GAAIA,GAAS39D,UAAEC,WAAW09D,EAAMkN,mBAAoB,CAClD,MAAMC,EAAcnN,EAAMkN,kBAAkB,eAC5C,GAAIC,EACF,OAAOA,EAET,MAAMC,EAAY,GAWlB,GAVA/qE,UAAEyG,KACA,CAAC,0BAA2B,gCAAiC,qCAC5Dk+B,IACC,MAAM1mC,EAAQ0/D,EAAMkN,kBAAkBlmC,GAClC1mC,IACF8sE,EAAUpmC,GAAU1mC,KAKtB0/D,EAAMqN,aAAc,CACtB,MAAMzsE,EAAM,sBACZwsE,EAAUxsE,GAAOo/D,EAAMqN,aAAazsE,GAEpC,MAAM0sE,EAAqB,uBAC3BF,EAAUE,GAAsBtN,EAAMqN,aAAaC,GAEnD,MAAMC,EAAgB,eACtBH,EAAUG,GAAiBvN,EAAMqN,aAAaE,GAGhD,OAAO1pE,KAAKM,UAAUipE,GAExB,MAAO,6GCpOW,CACpBrnE,SAAU,CAAC,CACTnG,KAAM,mBACNU,MAAO,qBACPwlC,QAAS,CACP8D,QAAQ,GAEV1K,SAAU,CACR,CACEt/B,KAAM,mBACNU,MAAO,qBACPwlC,QAAS,gICdjB,IAAAnkC,EAAAu2C,EAAAj5C,EAAA,IACAuuE,EAAAt1B,EAAAj5C,EAAA,KACAi9B,EAAAgc,EAAAj5C,EAAA,KACAwuE,EAAAxuE,EAAA,uDAEA,SAASyuE,EAA8BC,GAQrC,OAPmBtrE,UAAEoN,IAAIk+D,EAAaC,GAAS,CAC7CA,EAAMC,mBAAqB,cAAe,KAC1CD,EAAME,cAAe,IACrBF,EAAMG,gBAAiB,IACvBH,EAAMI,kBAAmB,KACzBrvB,KAAK,KAAKA,KAAK,MAMZ,SAASsvB,EAAkBtnE,GAChC,OAAO,IAAI+1B,UAAQ,CAACya,EAASC,KAC3B,MAAM82B,EAAM,IAAIC,eAChBD,EAAIE,KAAK,MAAOznE,GAAK,GACrBunE,EAAIG,QAAUj3B,EACd82B,EAAII,mBAAqB,WACA,IAAnBJ,EAAIK,aACDL,EAAI9mE,QAAU,KAAO8mE,EAAI9mE,OAAS,KACf,YAArBT,EAAI+xC,OAAO,EAAG,IAAoBw1B,EAAIhO,aACvC/oB,EAAQ+2B,EAAIhO,cAEZ9oB,EAAO,IAAI9zC,sBAAsB4qE,EAAI9mE,qBAAqBT,QAIhEunE,EAAIte,qBAOD,MAIL/tD,YAAYC,EAAU,IAEpBE,KAAKonE,cAActnE,EAAQyD,iBAC3BvD,KAAKwsE,8BAAgC1sE,EAAQ0sE,gCAAiC,EAC9ExsE,KAAKysE,6CAA+C3sE,EAAQ2sE,6CAE5DzsE,KAAK0sE,gCAAkC5sE,EAAQ4sE,gCAC/C1sE,KAAK2sE,kBAAoB,CACvB/qC,KAAMqqC,GAIV7rE,OACEJ,KAAKynE,YAGPA,YACEhmE,OAAO4qE,QAAU,EAACO,EAAUjoE,EAAKkoE,EAAYC,EAAQC,KACnD,MAAM7vC,EAAWl9B,KAAKgtE,kBAAkBC,kBAAkBtuE,SAI1D,OAFAqB,KAAKktE,YAAYN,EAAUjoE,EAAKkoE,EAAYC,EAAQC,EAAU7vC,IAEvD,IAGLl9B,KAAKwsE,+BACP/qE,OAAOO,iBAAiB,qBAAuBmrE,IAC7C,MAAMjwC,EAAWl9B,KAAKgtE,kBAAkBC,kBAAkBtuE,SAE1DqB,KAAKotE,uBAAuBD,EAAkBjwC,KAKpDgwC,YAAYN,EAAUjoE,EAAKkoE,EAAYC,EAAQC,EAAU7vC,GACvD,IAAImwC,KAAkBT,cAAqBjoE,WAAakoE,IAIxD,OAHKxsE,UAAEugC,YAAYksC,KACjBO,eAA4BP,KAEvBQ,UAAWC,UAAUR,EAAU/sE,KAAK2sE,mBAAmBlrC,KAAMkqC,IAClE0B,mBAAgC3B,EAA8BC,OAC7D6B,MAAO9oB,IACJrkD,UAAE6sC,SAAS6/B,IAAa1sE,UAAE2hC,IAAI+qC,EAAU,WAC1CM,mBAAgCN,EAASlD,8BAA8BnlB,QAExE+oB,QAAQ,KACTJ,oBAAiC5rE,OAAOgE,SAAS+J,sBAAsBm7C,SAAS8L,SAAW9L,SAAS8L,SAAW,YAE/G,MAAMiX,EAAgBjsE,OAAOksE,QAAQzjC,OAASzoC,OAAOksE,QAAQzjC,MAAMA,MACjEzoC,OAAOksE,QAAQzjC,MAAMA,MAAM0jC,cAAgB,KAEzCF,IACFL,uBAAoCK,KAGtCxwC,EAAS/3B,MAAMkoE,EAAc,aAIjCD,uBAAuBS,EAAuB3wC,GAC5C,IAAImwC,EAAe,+BAEnB,MAAM3M,EAAYjiC,IACZz+B,KAAK0sE,iCAAmC1sE,KAAK0sE,gCAAgCjuC,GAC/EvB,EAASr4B,MAAM45B,EAAS,wBAExBvB,EAAS/3B,MAAMs5B,EAAS,wBAEnB/D,UAAQya,WATqCzwC,EAa1BmpE,EAAsBC,QAAUD,EAApDtsC,EAb8C78B,EAa9C68B,QAASwsC,EAbqCrpE,EAarCqpE,OAGjB,GAAIA,IAAWA,EAAOtvC,SAAWsvC,EAAOlE,OAAQ,OACtCprC,EAAmBsvC,EAAnBtvC,QAASorC,EAAUkE,EAAVlE,MACjB,OAAI7pE,KAAKysE,6CAEA/L,EADP2M,gBAA6B5uC,kBAAwBorC,KAIhDyD,UAAWC,UAAUQ,EAAQ/tE,KAAK2sE,mBAAmBlrC,KAAMkqC,IAChE0B,gBAA6B5uC,kBAAwBitC,EAA8BC,OAClF6B,MAAO9oB,IACR2oB,MAAmB5uC,QAAcorC,0BAA8BnlB,OAC9D+oB,QAAQ,KACT/M,EAAS2M,KAOb,OAFAA,uCAAoDxrE,KAAKM,UAAU4rE,mBAAwB1tE,UAAEnC,IAAIqjC,EAAS,mBAC1Gm/B,EAAS2M,GACF3yC,UAAQya,UAGjBiyB,cAAclc,GACZA,EAAMpnD,YAAYm5B,UAClBj9B,KAAKgtE,kBAAoB9hB,EAAM8hB,kBAAkBruE,OAAOusD,EAAM9tB,kCC9IlEhgC,EAAAD,QAAA6wE,iBhJAA5wE,EAAAD,QAAA8wE,0GiJGsB,CACpBlqE,SAAU,CAAC,CACTnG,KAAM,oBACNU,MAAO,sBACPwlC,QAAS,CACP8D,QAAQ,GAEV1K,SAAU,CACR,CACEt/B,KAAM,oBACNU,MAAO,sBACPwlC,QAAS,sJ5NbjB,IAAA9mC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,qBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,kBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,iN6NlFA,IAAAqmE,EAAAxoE,EAAA,wGCAA,MAAA0C,KAAA1C,EAAA,gCACAixE,EAAAjxE,EAAA,GACAyC,EAAAzC,EAAA,GACAg+B,EAAAh+B,EAAA,GAEA,MAAMkxE,EAAkB,GACxB,IAAIC,GAAqB,iBAiBlB,cAA2BxuE,WAChCC,YAAYC,EAAU,IACpBC,MAAMD,GACNE,KAAKF,QAAUO,UAAEu7B,SAAS97B,EAAS,CACjCg0D,cAAer4B,gBAAcq4B,cAC7BC,UAAWt4B,gBAAcs4B,UACzBsa,sBAAuB5yC,gBAAc4yC,wBAEvCruE,KAAKC,WAAaI,UAAEu7B,SAAS57B,KAAKF,QAAQG,YAAc,GAAIw7B,gBAAcx7B,YAC1ED,KAAKE,QAAUF,KAAKF,QAAQI,SAAW,GACvCF,KAAKk0D,cAAgBl0D,KAAKF,QAAQo0D,cAClCl0D,KAAKo0D,mBAAqBp0D,KAAKF,QAAQs0D,mBAOzCh0D,OAlCF,IAA0BskC,EAmCjB1kC,KAAKF,QAAQ2kE,cAAezkE,KAAKQ,cAItCR,KAAKc,KAAO,GAGZwtE,gBAAcC,WAAWvuE,KAAKF,QAAQ2kE,aACtC6J,gBAAcE,mBAAmBC,sBAEjCzuE,KAAK0uE,cAAgBJ,gBAAcK,UAAU3uE,KAAKF,QAAQ2kE,aAEtDzkE,KAAKF,QAAQuuE,uBACfruE,KAAK0uE,cAAcE,WAAWC,kBAAgBC,SAG3CR,gBAAcS,sBACjBT,gBAAcS,oBAAsB,CAAEC,MAAO,IAG/CC,YAAY,IAAMjvE,KAAKkvE,aAAclvE,KAAKF,QAAQg0D,eAvD5BpvB,EAwDL1kC,KAvDnBmuE,EAAgBntE,KAAK0jC,GAEhB0pC,IACH3sE,OAAOO,iBAAiB,eAAgB,KACtCmsE,EAAgBpsE,QAAQzE,GAAKA,EAAE6xE,WAAU,IACzCb,gBAAcc,UAGhBhB,GAAqB,GAgDrBpuE,KAAKQ,aAAc,GAQrBmkE,uBACM3kE,KAAKqvE,uBAA0BrvE,KAAKQ,cAIxCR,KAAKqvE,uBAAwB,EAC7Bf,gBAAcS,oBAAoBC,OAAS,GAO7CrqC,WACO3kC,KAAKQ,cAGVR,KAAKsvE,UAAS,GACdtvE,KAAKQ,aAAc,EAEfR,KAAKF,QAAQuuE,uBACfruE,KAAK0uE,cAAcE,WAAWC,kBAAgBU,OAG5CvvE,KAAKqvE,wBACPf,gBAAcS,oBAAoBC,OAAS,GAG7ChvE,KAAKwvE,WASPL,UAAUM,GACR,MACM1b,EADc0b,GAAczvE,KAAKc,KAAKG,OAASjB,KAAKF,QAAQi0D,UAClC/zD,KAAKF,QAAQi0D,UAAY/zD,KAAKc,KAAKG,OAC7DyuE,EAAc1vE,KAAKc,KAAKqmD,OAAO,EAAG4M,GACxC1zD,UAAEyG,KAAK4oE,EAAc3uE,IACnBf,KAAK0uE,cAAciB,SAAS5uE,KAShCyuE,UACkD,IAA5ClB,gBAAcS,oBAAoBC,OACpCV,gBAAcsB,mBASlBrvE,MAAME,GACJ,IAAKT,KAAKQ,aAAeR,KAAKU,WAAWD,GACvC,OAGF,MAAMovE,EAAe7vE,KAAK8vE,gBAAgBrvE,EAAW0F,aAC/CxF,EAAeX,KAAKY,WAAWH,GAErCT,KAAKc,KAAKE,KAAK,CACbpD,KAAMoC,KAAKk0D,cAAc2b,GAAcjyE,KACvCmyE,WAAYpvE,IAQhB2uE,WACEtvE,KAAKmvE,WAAU,GAOjBD,aACElvE,KAAKmvE,WAAU,GAQjBW,gBAAgB3pE,GAEd,OAD2B9F,UAAE2hC,IAAIhiC,KAAKk0D,cAAe/tD,GACzBA,EAAcnG,KAAKo0D,oC7N3KnDh3D,EAAAD,QAAAkC,iB8NAAjC,EAAAD,QAAA4nD,iB7NAA3nD,EAAAD,QAAAmC,wG8NEA,MAEam8B,EAAgB,CAC3Bx7B,WAAY,CAAE+vE,kBAHU,IAF1B/yE,EAAA,GAE8BgzE,wBAI5B5B,uBAAuB,EACvBva,cAAe,IACfC,UAAW,oICRb,MAAAp0D,KAAA1C,EAAA,gCACAyC,EAAAzC,EAAA,2BAEO,cAAoCiK,YACzCF,OAAOvG,GACL,OAAOJ,UAAEioC,UAAU7nC,EAAYi3C,IAAG,CAChCp5C,MAAOo5C,yECNb,SAAAw4B,EAAAzgE,EAAAnM,GACA,QAAAjG,EAAA,EAAiBA,EAAAiG,EAAArC,OAAkB5D,IAAA,CACnC,IAAA8yE,EAAA7sE,EAAAjG,GACA8yE,EAAAlyE,WAAAkyE,EAAAlyE,aAAA,EACAkyE,EAAA/jC,cAAA,EACA,UAAA+jC,MAAA9jC,UAAA,GACAtuC,OAAAC,eAAAyR,EAAA0gE,EAAAvxE,IAAAuxE,IAIe,SAAAC,EAAA9tE,EAAA+tE,EAAAC,GAGf,OAFAD,GAAAH,EAAA5tE,EAAArD,UAAAoxE,GACAC,GAAAJ,EAAA5tE,EAAAguE,GACAhuE,EAbArF,EAAAU,EAAA6E,EAAA,sBAAA4tE,2FlOCA,IAAApzE,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,qBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,kBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,yOmOlFA,IAAAumE,EAAA1oE,EAAA,oHCAA,IAAAyC,EAAAzC,EAAA,GAEA,IAAIszE,EAAW,yBAMR,cAAmC3wE,WACxCC,YAAYC,EAAU,IACpBC,MAAMD,GAENE,KAAKC,WAAaH,EAAQG,YAAc,GACxCD,KAAKE,QAAUJ,EAAQI,SAAW,GAClCF,KAAKskE,aAAexkE,EAAQwkE,aAC5BtkE,KAAK0+D,QAAUj9D,OAAOk9D,aAGxBv+D,OACMJ,KAAK0+D,SAAW1+D,KAAKskE,eACvBtkE,KAAKQ,aAAc,GAIvBD,MAAME,GACJ,IAAKT,KAAKQ,aAAeR,KAAKU,WAAWD,GACvC,OAGF,MAAME,EAAeX,KAAKY,WAAWH,GAE/B7B,EAAMoB,KAAKwwE,cAEjB,IACExwE,KAAK0+D,QAAQx8D,QAAQtD,EAAKiD,KAAKM,UAAUxB,IACzC4vE,GAAY,EACZ,MAAOnpB,GACPpnD,KAAK0gE,SAAStZ,IAWlBopB,cACE,8BAA+BxwE,KAAKskE,gBAAgBiM,IAGtD7P,SAAStZ,GACP9gD,QAAQnB,MAAMiiD,sBlOrDlBhqD,EAAAD,QAAAmC,oIFCA,IAAAtC,EAAA,GAGA,SAAAC,EAAAC,GAGA,GAAAF,EAAAE,GACA,OAAAF,EAAAE,GAAAC,QAGA,IAAAC,EAAAJ,EAAAE,GAAA,CACAG,EAAAH,EACAI,GAAA,EACAH,QAAA,IAUA,OANAI,EAAAL,GAAAM,KAAAJ,EAAAD,QAAAC,IAAAD,QAAAF,GAGAG,EAAAE,GAAA,EAGAF,EAAAD,QA0DA,OArDAF,EAAAQ,EAAAF,EAGAN,EAAAS,EAAAV,EAGAC,EAAAU,EAAA,SAAAR,EAAAS,EAAAC,GACAZ,EAAAa,EAAAX,EAAAS,IACAG,OAAAC,eAAAb,EAAAS,EAAA,CAA0CK,YAAA,EAAAC,IAAAL,KAK1CZ,EAAAkB,EAAA,SAAAhB,GACA,qBAAAiB,eAAAC,aACAN,OAAAC,eAAAb,EAAAiB,OAAAC,YAAA,CAAwDC,MAAA,WAExDP,OAAAC,eAAAb,EAAA,cAAiDmB,OAAA,KAQjDrB,EAAAsB,EAAA,SAAAD,EAAAE,GAEA,GADA,EAAAA,IAAAF,EAAArB,EAAAqB,IACA,EAAAE,EAAA,OAAAF,EACA,KAAAE,GAAA,kBAAAF,QAAAG,WAAA,OAAAH,EACA,IAAAI,EAAAX,OAAAY,OAAA,MAGA,GAFA1B,EAAAkB,EAAAO,GACAX,OAAAC,eAAAU,EAAA,WAAyCT,YAAA,EAAAK,UACzC,EAAAE,GAAA,iBAAAF,EAAA,QAAAM,KAAAN,EAAArB,EAAAU,EAAAe,EAAAE,EAAA,SAAAA,GAAgH,OAAAN,EAAAM,IAAqBC,KAAA,KAAAD,IACrI,OAAAF,GAIAzB,EAAA6B,EAAA,SAAA1B,GACA,IAAAS,EAAAT,KAAAqB,WACA,WAA2B,OAAArB,EAAA,SAC3B,WAAiC,OAAAA,GAEjC,OADAH,EAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAiB,EAAAC,GAAsD,OAAAjB,OAAAkB,UAAAC,eAAA1B,KAAAuB,EAAAC,IAGtD/B,EAAAkC,EAAA,GAIAlC,IAAAmC,EAAA,sBClFAhC,EAAAD,QAAAkC,oB0JAAjC,EAAAD,QAAAotE,4O0EAA,IAAAtkE,EAAAhJ,EAAA,uHCAA,IAAA6qD,EAAA5R,EAAAj5C,EAAA,KACA0C,EAAAu2C,EAAAj5C,EAAA,iFAKO,MACL4C,YAAYC,EAAU,IACpBE,KAAKuD,gBAAkBzD,EAAQyD,gBAC/BvD,KAAKywE,eAAiB3wE,EAAQ2wE,gBAAkB,KAOlDrwE,OACOC,UAAEC,WAAWmB,OAAOmwC,YAAY8+B,oBAIrC1wE,KAAK2wE,cAAe,EACpB3wE,KAAK4wE,eAAgB,EAEO,aAAxBjmB,SAAS4hB,WACXvsE,KAAK6wE,aAEL,EAAA/oB,EAAAzhB,SAAE5kC,QAAQ+zC,GAAG,OAAQ,IAAMx1C,KAAK6wE,aAGlC7wE,KAAK8wE,MAAQ7B,YAAY,IAAMjvE,KAAK+wE,aAAc/wE,KAAKywE,gBAEvDzwE,KAAKuD,gBAAgB04B,WAAa,MAChCj8B,KAAKgxE,iBAQTH,YACE7wE,KAAKixE,0BACLjxE,KAAKkxE,wBACLlxE,KAAKmxE,uBACLnxE,KAAK2wE,cAAe,EAOtBI,aACE/wE,KAAKixE,0BACLjxE,KAAKmxE,uBAOPH,cACEhxE,KAAKixE,0BAQPA,0BACE,MAAMnwE,EAAOW,OAAOmwC,YAAY8+B,iBAAiB,YAEjD1wE,KAAKoxE,iBAEAtwE,EAAKG,QAIVZ,UAAEyG,KAAKhG,EAAOC,IACZV,UAAEs8B,OAAO57B,EAAK,CAAEswE,WAAYrxE,KAAK2wE,eACjC3wE,KAAKuD,gBAAgB64B,YAAYr7B,KAUrCmwE,wBACM7wE,UAAEC,WAAWmB,OAAOmwC,YAAYoa,cAClChsD,KAAKsxE,aAAe7vE,OAAOmwC,YAAYC,MAAQpwC,OAAOmwC,YAAYoa,cAStEmlB,uBAOE,OANKnxE,KAAK4wE,eACRnvE,OAAOmwC,YAAYE,QACnBrwC,OAAOmwC,YAAYE,OAAOy/B,aAAe,IACzCvxE,KAAK4wE,cAAgB5wE,KAAKwxE,2BAGrBxxE,KAAK4wE,cAQdY,0BACE,MAAMC,EAAa,CACjBlV,qBAAqB,GAGvB,GAAI96D,OAAOiwE,QAAUrxE,UAAEC,WAAWmB,OAAOiwE,OAAOC,WAAY,OAClDC,GAAoBnwE,OAAOiwE,OAAOC,aAAe,IAAjDC,eAER,KAAIvxE,UAAE02C,SAAS66B,IAAmBA,EAAiB,GAGjD,OAAO,EAFPH,EAAWG,eAAkC,IAAjBA,EAMhC,MAAMC,EAAkBpwE,OAAOmwC,YAAY8+B,iBAAiB,cAE5D,GAAIrwE,UAAEgtC,QAAQwkC,IAAoBxxE,UAAE0f,KAAK8xD,GAAmB,EAAG,CAC7D,MAAMC,EAAiBzxE,UAAEguC,MAAMwjC,GACzBE,EAAgB1xE,UAAE+wC,KACtB0gC,EACA,mBAAoB,iBAAkB,gBAAiB,gBACrD,eAEJzxE,UAAEs8B,OAAO80C,EAAYM,QAErBN,EAAWO,cAAgBvwE,OAAOmwC,YAAYqgC,WAAWD,cAQ3D,OALIhyE,KAAKsxE,eACPG,EAAWH,aAAetxE,KAAKsxE,cAGjCtxE,KAAKuD,gBAAgB64B,YAAY/7B,UAAEs8B,OAAO,GAAIl7B,OAAOmwC,YAAYE,OAAQ2/B,KAClE,EAOTL,iBACM/wE,UAAEC,WAAWmB,OAAOmwC,YAAYsgC,sBAClCzwE,OAAOmwC,YAAYsgC,uBACV7xE,UAAEC,WAAWmB,OAAOmwC,YAAYugC,6BACzC1wE,OAAOmwC,YAAYugC","file":"static/js/application.initial.c022cd79.chunk.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 56);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__3__;","module.exports = __WEBPACK_EXTERNAL_MODULE__5__;","export { InMemoryListener } from './src/in-memory-listener';\r\nexport { InMemorySink } from './src/in-memory-sink';\r\nexport { SessionStorageSink } from './src/session-storage-sink';\r\n","import { Listener } from '@bingads-webui/listener';\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * In memory listener class. This logs to an in-memory object that is passed\r\n * in. It expects a sink object with write method on it.\r\n */\r\n\r\nexport class InMemoryListener extends Listener {\r\n /**\r\n * Creates an instance of InMemoryListener.\r\n * @param {any} [options={}] - The options for in-memory listener\r\n * @param {Object} options.sink - Sink to push logs to.\r\n * Should have write method on it\r\n * @param {Object} options.formatters - Object where values are formatters\r\n * to use for the listener\r\n * @param {Object} options.filters - Object where values are filters to\r\n * use for the listener\r\n */\r\n constructor(options = {}) {\r\n super(options);\r\n\r\n this.formatters = options.formatters || {};\r\n this.filters = options.filters || {};\r\n this.sink = options.sink;\r\n }\r\n\r\n /**\r\n * Init in memory listener if needed options passed in\r\n * @returns {undefined} - no returns\r\n */\r\n init() {\r\n if (this.sink && _.isFunction(this.sink.write)) {\r\n this.initialized = true;\r\n }\r\n }\r\n\r\n /**\r\n * writes logs to the listener\r\n * @param {object} logMessage - logs to be written\r\n * @returns {undefined} - no returns\r\n */\r\n write(logMessage) {\r\n if (!this.initialized || this.filterLogs(logMessage)) {\r\n return;\r\n }\r\n\r\n const formattedMsg = this.formatLogs(logMessage);\r\n\r\n this.sink.write(formattedMsg);\r\n }\r\n}\r\n\r\n","/**\r\n * Sink that is compatible with InMemoryListener.\r\n * Can be passed in to the listener to receive logs.\r\n */\r\nexport class InMemorySink {\r\n /**\r\n * Creates an instance of InMemorySink.\r\n * @param {Number} [maxSize=2000] - Maximum size of logs array.\r\n * Pass in -1 to have unbounded array.\r\n */\r\n constructor({ maxSize = 2000 } = {}) {\r\n this.logs = [];\r\n this.maxSize = maxSize;\r\n }\r\n\r\n /**\r\n * Write log to the sink\r\n * @param {Object} log - Log object to write\r\n * @returns {undefined} - no returns\r\n */\r\n write(log) {\r\n this.logs.push(log);\r\n\r\n while (this.maxSize > -1 && this.logs.length > this.maxSize) {\r\n this.logs.shift();\r\n }\r\n }\r\n\r\n /**\r\n * Getter for logs written to sink. Returns the\r\n * logs array.\r\n * @readonly\r\n */\r\n get items() {\r\n return this.logs;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n/**\r\n * Sink that is compatible with SessionStorage.\r\n * Can be passed in to the listener to receive logs.\r\n */\r\nexport class SessionStorageSink {\r\n /**\r\n * Creates an instance of SessionStorageSink.\r\n * @param {Object} options - Options to initialize\r\n * @param {Number} [options.maxSize=2000] - Maximum size of logs array.\r\n * @param {String} options.storageKey - Key to use in session storage\r\n * Pass in -1 to have unbounded array.\r\n */\r\n constructor(options = {}) {\r\n this.logs = [];\r\n this.maxSize = options.maxSize || 2000;\r\n\r\n if (!options.storageKey) {\r\n throw new Error('Cannot create sink without storageKey');\r\n }\r\n\r\n if (SessionStorageSink.keyCache[options.storageKey]) {\r\n throw new Error('Storage key is already initialized on page');\r\n }\r\n SessionStorageSink.keyCache[options.storageKey] = true;\r\n\r\n this.storageKey = options.storageKey;\r\n const existingItemsStr = window.sessionStorage.getItem(this.storageKey);\r\n const existingItems = _.isEmpty(existingItemsStr) ? [] : JSON.parse(existingItemsStr);\r\n existingItems.forEach(formattedMsg => this.write(formattedMsg));\r\n\r\n window.addEventListener('beforeunload', () => {\r\n this.setItemsOnUnload();\r\n });\r\n }\r\n\r\n /**\r\n * Write log to the sink\r\n * @param {Object} log - Log object to write\r\n * @returns {undefined} - no returns\r\n */\r\n write(log) {\r\n this.logs.push(log);\r\n\r\n while (this.maxSize > -1 && this.logs.length > this.maxSize) {\r\n this.logs.shift();\r\n }\r\n }\r\n\r\n /**\r\n * Getter for logs written to sink. Returns the\r\n * logs array.\r\n * @readonly\r\n */\r\n get items() {\r\n return this.logs;\r\n }\r\n\r\n setItemsOnUnload() {\r\n window.sessionStorage.setItem(this.storageKey, JSON.stringify(this.logs));\r\n }\r\n\r\n static keyCache = {};\r\n}\r\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export const API_NAME = {\r\n GET_ADS: 'getAds',\r\n GET_AD_DETAIL: 'getAdDetail',\r\n GET_ADVERTISERS: 'getAdvertisers',\r\n GET_ADVERTISER_DETAIL: 'getAdvertiserDetail',\r\n UNKNOWN: 'unknown',\r\n};\r\n\r\nexport const MSG_BEFORE_FETCH = 'Fetch started';\r\nexport const MSG_AFTER_FETCH = 'Fetch succeeded';\r\nexport const MSG_FETCH_FAILED = 'Fetch failed';\r\nexport const MSG_EXCEPTION = 'Exception occurred';\r\n","import { API_NAME } from './constants';\r\n\r\nexport const mapDomainToAPIEndpoint = (domain) => {\r\n if (domain === 'adlibrary.ads.microsoft.com') {\r\n return 'https://adlibrary.api.bingads.microsoft.com';\r\n }\r\n return 'https://adslibrary-test.api.bingads.microsoft.com';\r\n};\r\n\r\nexport const getApiNameFromUrl = (fullUrl) => {\r\n const mainPart = fullUrl.split('/api/v1/')[1].split('?')[0];\r\n /**\r\n * 1. /Ads -> getAds\r\n * 2. /Ads/<Id>? -> getAdDetail\r\n * 3. /Advertisers -> getAdvertisers\r\n * 4. /Advertisers/<id>? -> getAdvertiserDetail\r\n */\r\n if (/^Ads$/.test(mainPart)) {\r\n return API_NAME.GET_ADS;\r\n } else if (/^Ads\\/[^d]+\\/?$/.test(mainPart)) {\r\n return API_NAME.GET_AD_DETAIL;\r\n } else if (/^Advertisers$/.test(mainPart)) {\r\n return API_NAME.GET_ADVERTISERS;\r\n } else if (/^Advertisers\\/[^/]+\\/?$/.test(mainPart)) {\r\n return API_NAME.GET_ADVERTISER_DETAIL;\r\n }\r\n return API_NAME.UNKNOWN;\r\n};\r\n\r\nexport const getReqIdFromRoute = (route) => {\r\n const reqIdQueryString = route.split('&').find(param => param.includes('ReqId'));\r\n if (!reqIdQueryString) return null;\r\n return reqIdQueryString.split('=')[1];\r\n};\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport Proptypes from 'prop-types';\r\nimport { Provider } from 'use-http';\r\nimport { fetchEventSchema } from '@bingads-webui/adlibrary-instrumentation';\r\nimport {\r\n MSG_BEFORE_FETCH,\r\n MSG_AFTER_FETCH,\r\n MSG_FETCH_FAILED,\r\n MSG_EXCEPTION,\r\n} from './constants';\r\nimport {\r\n mapDomainToAPIEndpoint,\r\n getApiNameFromUrl,\r\n getReqIdFromRoute,\r\n} from './helpers';\r\n\r\nexport const FetchProvider = (props) => {\r\n const { instrumentation } = props;\r\n const [APIEndpoint, setAPIEndpoint] = useState('');\r\n\r\n instrumentation.addScenario({\r\n scenario: [\r\n ...fetchEventSchema.scenario,\r\n ],\r\n });\r\n\r\n // eslint-disable-next-line react/prop-types\r\n const fetchScenario = instrumentation.fetchEvent.create();\r\n const fetchTrace = fetchScenario.fetchTrace.create();\r\n const fetchError = fetchScenario.fetchError.create();\r\n\r\n const fetchOptions = useMemo(() => ({\r\n interceptors: {\r\n request: ({ options, url, route }) => {\r\n const fullUrl = `${url}/${route}`;\r\n fetchTrace.trace(MSG_BEFORE_FETCH, getApiNameFromUrl(fullUrl), getReqIdFromRoute(route), options.method);\r\n return options;\r\n },\r\n response: ({ response }) => {\r\n if (response.ok) {\r\n fetchTrace.trace(`${MSG_AFTER_FETCH}: ${JSON.stringify(response.data)}`, getApiNameFromUrl(response.url), getReqIdFromRoute(response.url));\r\n } else {\r\n fetchError.error(`${MSG_FETCH_FAILED}: ${response.status} ${response.statusText} ${JSON.stringify(response.data)}`, getApiNameFromUrl(response.url), getReqIdFromRoute(response.url));\r\n }\r\n return response;\r\n },\r\n },\r\n onError: (error) => {\r\n fetchError.error(`${MSG_EXCEPTION}: ${JSON.stringify(error)}`);\r\n },\r\n }), [fetchError, fetchTrace]);\r\n\r\n useEffect(() => {\r\n const domain = window.location.hostname;\r\n setAPIEndpoint(mapDomainToAPIEndpoint(domain));\r\n }, []);\r\n\r\n return (\r\n <Provider url={APIEndpoint} options={fetchOptions}>\r\n {props.children}\r\n </Provider>\r\n );\r\n};\r\n\r\nFetchProvider.propTypes = {\r\n instrumentation: Proptypes.shape({\r\n addScenario: Proptypes.func.isRequired,\r\n }).isRequired,\r\n children: Proptypes.node.isRequired,\r\n};\r\n","export { ConsoleListener } from './src/index';\r\n","import { include } from 'underscore.string';\r\nimport { Listener } from '@bingads-webui/listener';\r\n\r\n/**\r\n * Console listener class\r\n */\r\nexport class ConsoleListener extends Listener {\r\n constructor(options = {}) {\r\n super(options);\r\n\r\n this.formatters = options.formatters || [];\r\n this.filters = options.filters || [];\r\n }\r\n\r\n init() {\r\n this.initialized = true;\r\n }\r\n\r\n /* eslint-disable no-console */\r\n write(logMessage) {\r\n if (!this.initialized || this.filterLogs(logMessage)) {\r\n return;\r\n }\r\n\r\n const formattedMsg = this.formatLogs(logMessage);\r\n\r\n const category = logMessage.logCategory || '';\r\n if (include(category.toLowerCase(), 'error')) {\r\n console.error(formattedMsg);\r\n } else {\r\n console.log(formattedMsg);\r\n }\r\n\r\n // TODO: use console.timeStamp for activity perf marker\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__498__;","export { Listener } from './src/index';\r\nexport { Formatter } from './src/formatter';\r\nexport { Filter } from './src/filter';\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * Base listener class - defines the interface for custom listeners.\r\n * This can be extended by custom listeners\r\n */\r\nexport class Listener {\r\n constructor() {\r\n this.initialized = false;\r\n this.logs = [];\r\n }\r\n\r\n filterLogs(logMessage) {\r\n return _.any(this.filters, filter => filter.check(logMessage));\r\n }\r\n\r\n formatLogs(logMessage) {\r\n let formattedMsg = _.clone(logMessage);\r\n _.each(this.formatters, (formatter) => {\r\n formattedMsg = formatter.format(formattedMsg);\r\n });\r\n return formattedMsg;\r\n }\r\n\r\n write() {\r\n throw new Error('Not Implemented');\r\n }\r\n\r\n teardown() {\r\n _.noop();\r\n }\r\n}\r\n","/**\r\n * Base Formatter class - defines the interface for custom Formatters\r\n */\r\nexport class Formatter {\r\n format() {\r\n throw new Error('Not Implemented');\r\n }\r\n}\r\n","/**\r\n * Base Filter class - defines the interface for custom Filters\r\n */\r\nexport class Filter {\r\n check() {\r\n throw new Error('Not Implemented');\r\n }\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport const LogoImage = React.memo(props => (\r\n <svg\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 337.6 72\"\r\n enableBackground=\"new 0 0 337.6 72\"\r\n {...props}\r\n >\r\n <path\r\n className={props.classes.logoText}\r\n fill=\"#646464\"\r\n d=\"M140.3,14.4v43.2h-7.5V23.8h-0.1l-13.4,33.9h-5l-13.7-33.9h-0.1v33.9h-6.9V14.4h10.8l12.4,32h0.2l13.1-32H140.3\r\n L140.3,14.4z M146.6,17.7c0-1.2,0.4-2.2,1.3-3c0.9-0.8,1.9-1.2,3.1-1.2c1.3,0,2.4,0.4,3.2,1.3s1.3,1.8,1.3,3s-0.4,2.2-1.3,3\r\n c-0.9,0.8-1.9,1.2-3.2,1.2s-2.3-0.4-3.1-1.2C147,19.9,146.6,18.9,146.6,17.7z M154.6,26.7v31h-7.3v-31\r\n C147.3,26.7,154.6,26.7,154.6,26.7z M176.8,52.3c1.1,0,2.3-0.3,3.6-0.8s2.5-1.2,3.6-2v6.8c-1.2,0.7-2.5,1.2-4,1.5s-3.1,0.5-4.9,0.5\r\n c-4.6,0-8.3-1.4-11.1-4.3c-2.9-2.9-4.3-6.6-4.3-11c0-5,1.5-9.1,4.4-12.3s7-4.8,12.4-4.8c1.4,0,2.8,0.2,4.1,0.5\r\n c1.4,0.4,2.5,0.8,3.3,1.2v7c-1.1-0.8-2.3-1.5-3.4-1.9c-1.1-0.4-2.4-0.7-3.6-0.7c-2.9,0-5.2,0.9-7,2.8s-2.6,4.4-2.6,7.6\r\n c0,3.1,0.9,5.6,2.6,7.3C171.5,51.5,173.8,52.3,176.8,52.3z M204.7,26.1c0.6,0,1.1,0,1.6,0.1s0.9,0.2,1.2,0.3v7.4\r\n c-0.4-0.3-0.9-0.5-1.7-0.8s-1.6-0.4-2.7-0.4c-1.8,0-3.3,0.8-4.5,2.3s-1.9,3.8-1.9,7v15.6h-7.3v-31h7.3v4.9h0.1c0.7-1.7,1.7-3,3-4\r\n C201.2,26.6,202.8,26.2,204.7,26.1L204.7,26.1z M207.8,42.6c0-5.1,1.4-9.2,4.3-12.2s6.9-4.5,12.1-4.5c4.8,0,8.6,1.4,11.3,4.3\r\n s4.1,6.8,4.1,11.7c0,5-1.4,9-4.3,12c-2.9,3-6.8,4.5-11.8,4.5c-4.8,0-8.6-1.4-11.4-4.2C209.3,51.3,207.8,47.5,207.8,42.6z\r\n M215.4,42.4c0,3.2,0.7,5.7,2.2,7.4s3.6,2.6,6.3,2.6c2.6,0,4.7-0.8,6.1-2.6c1.4-1.7,2.1-4.2,2.1-7.6c0-3.3-0.7-5.8-2.1-7.5\r\n c-1.4-1.7-3.4-2.5-6-2.5c-2.7,0-4.7,0.9-6.2,2.7C216.2,36.5,215.4,39.1,215.4,42.4L215.4,42.4z M250.5,34.8c0,1,0.3,1.9,1,2.5\r\n s2.1,1.3,4.4,2.2c2.9,1.2,5,2.5,6.1,3.9c1.2,1.5,1.8,3.2,1.8,5.3c0,2.9-1.1,5.3-3.4,7s-5.3,2.7-9.1,2.7c-1.3,0-2.7-0.2-4.3-0.5\r\n s-2.9-0.7-4-1.2v-7.2c1.3,0.9,2.8,1.7,4.3,2.2s2.9,0.8,4.2,0.8c1.7,0,2.9-0.2,3.7-0.7s1.2-1.2,1.2-2.3c0-1-0.4-1.8-1.2-2.5\r\n s-2.4-1.5-4.6-2.4c-2.7-1.1-4.6-2.4-5.7-3.8c-1.1-1.4-1.7-3.2-1.7-5.4c0-2.8,1.1-5.1,3.3-6.9c2.2-1.8,5.1-2.7,8.6-2.7\r\n c1.1,0,2.3,0.1,3.6,0.4c1.4,0.2,2.5,0.5,3.4,0.9v7c-1-0.6-2.1-1.2-3.4-1.7c-1.3-0.5-2.6-0.7-3.8-0.7c-1.4,0-2.5,0.3-3.2,0.8\r\n C250.9,33.1,250.5,33.9,250.5,34.8L250.5,34.8z M266.9,42.6c0-5.1,1.5-9.2,4.3-12.2c2.9-3,6.9-4.5,12-4.5c4.8,0,8.6,1.4,11.3,4.3\r\n s4.1,6.8,4.1,11.7c0,5-1.5,9-4.3,12c-2.9,3-6.8,4.5-11.8,4.5c-4.8,0-8.6-1.4-11.4-4.2C268.3,51.3,266.9,47.5,266.9,42.6L266.9,42.6z\r\n M274.5,42.4c0,3.2,0.7,5.7,2.2,7.4s3.6,2.6,6.3,2.6c2.6,0,4.7-0.8,6.1-2.6c1.4-1.7,2.1-4.2,2.1-7.6c0-3.3-0.7-5.8-2.1-7.5\r\n s-3.5-2.5-6-2.5c-2.7,0-4.7,0.9-6.2,2.7C275.2,36.5,274.5,39.1,274.5,42.4L274.5,42.4z M322.9,32.6H312v25h-7.4v-25h-5.2v-6h5.2\r\n v-4.3c0-3.3,1.1-5.9,3.2-8s4.8-3.1,8.1-3.1c0.9,0,1.7,0.1,2.4,0.1s1.3,0.2,1.8,0.4v6.4c-0.2-0.1-0.7-0.3-1.3-0.5\r\n c-0.6-0.2-1.3-0.3-2.1-0.3c-1.5,0-2.7,0.5-3.5,1.4c-0.8,1-1.2,2.4-1.2,4.2v3.7h10.9v-7l7.3-2.2v9.2h7.4v6h-7.4v14.5\r\n c0,1.9,0.4,3.3,1,4c0.7,0.8,1.8,1.2,3.3,1.2c0.4,0,0.9-0.1,1.5-0.3s1.1-0.4,1.5-0.7v6c-0.5,0.3-1.2,0.5-2.3,0.7s-2.1,0.3-3.2,0.3\r\n c-3.1,0-5.4-0.8-6.9-2.5c-1.5-1.6-2.3-4.1-2.3-7.4L322.9,32.6L322.9,32.6z\"\r\n />\r\n <path fill=\"#F25022\" d=\"M0,0h34.2v34.2H0V0z\" />\r\n <path fill=\"#7FBA00\" d=\"M37.8,0H72v34.2H37.8V0z\" />\r\n <path fill=\"#00A4EF\" d=\"M0,37.8h34.2V72H0V37.8z\" />\r\n <path fill=\"#FFB900\" d=\"M37.8,37.8H72V72H37.8V37.8z\" />\r\n </svg>\r\n));\r\n\r\nLogoImage.propTypes = {\r\n classes: PropTypes.shape({\r\n logoText: PropTypes.string,\r\n }).isRequired,\r\n};\r\n","import classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport { compose } from 'underscore';\r\n\r\nimport { Col } from '@bingads-webui-react/layout';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { LogoImage } from './logo-image';\r\n\r\nconst getStyles = () => ({\r\n container: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n height: 60,\r\n },\r\n logo: {\r\n height: 20,\r\n width: 100,\r\n },\r\n logoClickable: {\r\n cursor: 'pointer',\r\n },\r\n logoContainer: {\r\n padding: '0px 20px 0px 20px',\r\n height: 20,\r\n },\r\n divider: {\r\n borderLeftColor: 'black',\r\n borderLeftWidth: 1,\r\n borderLeftStyle: 'solid',\r\n height: 40,\r\n marginTop: 10,\r\n marginBottom: 10,\r\n width: 0,\r\n },\r\n item: {\r\n marginLeft: 0,\r\n marginRight: 0,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n text: {\r\n color: '#646464',\r\n fontSize: '17px',\r\n lineHeight: '19px',\r\n fontStyle: 'normal',\r\n marginTop: 18,\r\n marginBottom: 23,\r\n textAlign: 'center',\r\n paddingLeft: 20,\r\n fontWeight: 500,\r\n },\r\n logoText: {\r\n /* Targets displays using the Windows’ \"High Contrast\" theme: */\r\n '@media screen and (forced-colors: active)': {\r\n fill: '#646464 !important',\r\n },\r\n },\r\n});\r\n\r\nconst UnStyledHeader = ({\r\n classes,\r\n}) => (\r\n <div className={classes.container}>\r\n <Col className={classes.item}>\r\n <div className={classes.logoContainer}>\r\n <Link to=\"/\" aria-label=\"logo image\">\r\n <LogoImage\r\n className={classnames([classes.logo, classes.logoClickable])}\r\n classes={classes}\r\n />\r\n </Link>\r\n </div>\r\n </Col>\r\n <Col className={classes.item}>\r\n <div className={classes.divider} />\r\n </Col>\r\n <Col className={classes.item}>\r\n <span className={classnames(classes.text)}>Ad library</span>\r\n </Col>\r\n </div>\r\n);\r\n\r\nUnStyledHeader.propTypes = {\r\n classes: PropTypes.shape({\r\n container: PropTypes.string,\r\n logo: PropTypes.string,\r\n logoClickable: PropTypes.string,\r\n logoContainer: PropTypes.string,\r\n divider: PropTypes.string,\r\n item: PropTypes.string,\r\n text: PropTypes.string,\r\n logoText: PropTypes.string,\r\n }).isRequired,\r\n};\r\n\r\nexport const Header = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyles))(UnStyledHeader);\r\n\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport classnames from 'classnames';\r\nimport Proptypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getStyle = () => ({\r\n pageMenuItem: {\r\n position: 'relative',\r\n height: '36px',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n '& a': {\r\n width: '100%',\r\n textDecoration: 'none',\r\n color: '#323130',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n paddingLeft: '8px',\r\n paddingTop: '4px',\r\n },\r\n '&:hover': {\r\n backgroundColor: '#EDEBE9 !important',\r\n },\r\n },\r\n selectionIndicator: {\r\n position: 'absolute',\r\n top: '2px',\r\n bottom: '2px',\r\n left: '2px',\r\n width: '4px',\r\n borderRadius: '99px',\r\n zIndex: 2,\r\n borderLeft: '4px solid #0078D4',\r\n },\r\n textContainer: {\r\n fontStyle: 'normal',\r\n fontWeight: '400',\r\n fontSize: '14px',\r\n lineHeight: '19px',\r\n textDecoration: 'none',\r\n paddingLeft: '6px',\r\n '&.selected': {\r\n fontWeight: '600',\r\n },\r\n },\r\n});\r\n\r\nconst UnStyledPageMenuItem = ({\r\n classes,\r\n page,\r\n isCollapsed,\r\n}) => (\r\n <div className={classes.pageMenuItem}>\r\n { page.isSelected && <div className={classes.selectionIndicator} />}\r\n { page.isSelected &&\r\n <Link aria-label={page.displayName} to={page.path} aria-current=\"true\">\r\n <span>{page.icon}</span>\r\n { !isCollapsed &&\r\n <span className={classnames(classes.textContainer, 'selected')}>\r\n {page.displayName}\r\n </span> }\r\n </Link>\r\n }\r\n { !page.isSelected &&\r\n <Link aria-label={page.displayName} to={page.path} >\r\n <span>{page.icon}</span>\r\n { !isCollapsed &&\r\n <span className={classnames(classes.textContainer)}>\r\n {page.displayName}\r\n </span> }\r\n </Link>\r\n }\r\n </div>\r\n);\r\n\r\nUnStyledPageMenuItem.propTypes = {\r\n classes: Proptypes.shape({\r\n pageMenuItem: Proptypes.string.isRequired,\r\n selectionIndicator: Proptypes.string.isRequired,\r\n textContainer: Proptypes.string.isRequired,\r\n }).isRequired,\r\n page: Proptypes.shape({\r\n id: Proptypes.string.isRequired,\r\n path: Proptypes.string.isRequired,\r\n icon: Proptypes.element.isRequired,\r\n displayName: Proptypes.string.isRequired,\r\n isSelected: Proptypes.bool.isRequired,\r\n }).isRequired,\r\n isCollapsed: Proptypes.bool.isRequired,\r\n};\r\n\r\nexport const PageMenuItem = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyle))(UnStyledPageMenuItem);\r\n","import React from 'react';\r\nimport Proptypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\n\r\nimport { Button } from '@fluentui/react-components';\r\nimport { Navigation16Regular } from '@fluentui/react-icons';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n// import { ICON_FILL_COLOR } from '../../utils/constants';\r\n\r\nconst ICON_FILL_COLOR = 'rgba(40, 134, 222, 1)';\r\n\r\nconst getStyle = () => ({\r\n toggleMenuButton: {\r\n position: 'relative',\r\n height: '36px',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n paddingLeft: '10px',\r\n },\r\n});\r\n\r\nconst UnStyledToggleMenuButton = ({\r\n classes,\r\n onToggleClick,\r\n isExpanded,\r\n}) => (\r\n <Button\r\n className={classes.toggleMenuButton}\r\n appearance=\"transparent\"\r\n icon={<Navigation16Regular primaryFill={ICON_FILL_COLOR} />}\r\n shape=\"square\"\r\n onClick={onToggleClick}\r\n aria-label=\"menu\"\r\n aria-expanded={isExpanded}\r\n />\r\n);\r\n\r\nUnStyledToggleMenuButton.propTypes = {\r\n classes: Proptypes.shape({\r\n toggleMenuButton: Proptypes.string.isRequired,\r\n }).isRequired,\r\n onToggleClick: Proptypes.func.isRequired,\r\n isExpanded: Proptypes.bool.isRequired,\r\n};\r\n\r\nexport const ToggleMenuButton = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyle))(UnStyledToggleMenuButton);\r\n","import React, { useCallback } from 'react';\r\nimport Proptypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\n\r\nimport { Mode } from '@bingads-webui-react/app-layout-container';\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { PageMenuItem } from './page-menu-item';\r\nimport { ToggleMenuButton } from './toggle-menu-button';\r\n\r\nconst getStyle = () => ({\r\n pageMenuContainer: {\r\n transition: 'width 0.2s',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n paddingTop: '8.5px',\r\n },\r\n});\r\n\r\nexport const UnStyledPageMenuList = ({\r\n classes,\r\n changeLayout,\r\n mode,\r\n pages,\r\n}) => {\r\n const menuItems = pages.map(page => (\r\n <PageMenuItem\r\n key={page.id}\r\n page={page}\r\n isCollapsed={mode === Mode.Collapsed}\r\n />\r\n ));\r\n\r\n const onToggleClick = useCallback(() => {\r\n if (mode === Mode.Expanded) changeLayout({ nav: { mode: Mode.Collapsed } });\r\n else changeLayout({ nav: { mode: Mode.Expanded } });\r\n }, [mode, changeLayout]);\r\n\r\n return (\r\n <div className={classes.pageMenuContainer}>\r\n <ToggleMenuButton onToggleClick={onToggleClick} isExpanded={mode === Mode.Expanded}/>\r\n {menuItems}\r\n </div>\r\n );\r\n};\r\n\r\nUnStyledPageMenuList.propTypes = {\r\n classes: Proptypes.shape({\r\n pageMenuContainer: Proptypes.string.isRequired,\r\n }).isRequired,\r\n changeLayout: Proptypes.func.isRequired,\r\n mode: Proptypes.string.isRequired,\r\n pages: Proptypes.arrayOf(Proptypes.shape({\r\n id: Proptypes.string.isRequired,\r\n displayName: Proptypes.string.isRequired,\r\n path: Proptypes.string.isRequired,\r\n icon: Proptypes.element.isRequired,\r\n })).isRequired,\r\n};\r\n\r\nexport const PageMenuList = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyle))(UnStyledPageMenuList);\r\n","import React from 'react';\r\nimport { Home20Regular, DocumentMultiple20Regular } from '@fluentui/react-icons';\r\n\r\nexport const PageConfigs = [\r\n {\r\n id: 'home',\r\n displayName: 'Home',\r\n icon: <Home20Regular />,\r\n path: '/',\r\n },\r\n {\r\n id: 'api',\r\n displayName: 'API',\r\n icon: <DocumentMultiple20Regular />,\r\n path: '/api',\r\n },\r\n];\r\n\r\nexport const getPageConfigs = (currentPath) => {\r\n const pageConfigs = PageConfigs.map(pageConfig => ({\r\n ...pageConfig,\r\n isSelected: pageConfig.path === currentPath,\r\n }));\r\n return pageConfigs;\r\n};\r\n","import React from 'react';\r\nimport { useLocation } from 'react-router-dom';\r\nimport Proptypes from 'prop-types';\r\nimport { compose } from 'underscore';\r\n\r\nimport { withDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nimport { PageMenuList } from './page-menu-list';\r\nimport { getPageConfigs } from './page-config';\r\n\r\nconst getStyle = () => ({\r\n sideBarContainer: {\r\n backgroundColor: '#F3F2F1',\r\n height: '100vh',\r\n },\r\n});\r\n\r\nconst UnstyledPageMenu = (props) => {\r\n const { classes } = props;\r\n const { pathname: path } = useLocation();\r\n const pages = getPageConfigs(path);\r\n\r\n return (\r\n <nav className={classes.sideBarContainer}>\r\n <PageMenuList\r\n {...props}\r\n pages={pages}\r\n />\r\n </nav>\r\n );\r\n};\r\n\r\nUnstyledPageMenu.propTypes = {\r\n classes: Proptypes.shape({\r\n sideBarContainer: Proptypes.string.isRequired,\r\n }).isRequired,\r\n};\r\n\r\nexport const PageMenu = compose(WrappedComponent => withDefaultStyles(WrappedComponent, getStyle))(UnstyledPageMenu);\r\n","import React from 'react';\r\nimport _ from 'underscore';\r\nimport classnames from 'classnames';\r\nimport { Link } from '@fluentui/react-components';\r\nimport { useDefaultStyles } from '@bingads-webui-react/with-default-styles';\r\n\r\nconst getStyles = () => ({\r\n container: {\r\n backgroundColor: '#F3F2F1',\r\n flex: '0 0 33px',\r\n },\r\n footerList: {\r\n display: 'flex',\r\n paddingLeft: '6px',\r\n },\r\n footerLinkContainer: {\r\n flex: 1,\r\n listStyle: 'none',\r\n marginTop: 0,\r\n marginBottom: 0,\r\n paddingLeft: 0,\r\n },\r\n footerItem: {\r\n display: 'inline-block',\r\n padding: '6px 10px',\r\n '& > a': {\r\n color: '#106EBE',\r\n },\r\n '& > button': {\r\n color: '#106EBE',\r\n border: 0,\r\n },\r\n },\r\n});\r\n\r\nexport const PageFooter = () => {\r\n const links = [\r\n {\r\n url: 'https://go.microsoft.com/fwlink/?linkid=2259814',\r\n text: 'Consumer Healthy Privacy',\r\n },\r\n ];\r\n const classes = useDefaultStyles(getStyles);\r\n\r\n return (\r\n <div className={classnames(classes.container, 'ba-content-footer')} role=\"contentinfo\">\r\n <div className={classnames(classes.footerList, 'footer-link-list')}>\r\n <div className={classnames(classes.footerItem, 'footer-copyright-text')}>\r\n {`© ${new Date().getFullYear()} Microsoft`}\r\n </div>\r\n <ul className={classnames(classes.footerLinkContainer)}>\r\n {_.map(links, link =>\r\n (\r\n <li\r\n key={link.text}\r\n className={classnames(classes.footerItem, 'footer-link-item', link.text)}\r\n >\r\n <Link\r\n href={link.url}\r\n target=\"_blank\"\r\n >\r\n {link.text}\r\n </Link>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import * as ComponentSettings from './src/components/index';\r\nimport * as Constants from './src/constants';\r\n\r\nexport {\r\n ComponentSettings,\r\n ComponentSettings as ThemeFluentComponentSettings, // alias\r\n Constants\r\n};\r\nexport * from './src/core/index';\r\n","export { alertStyle } from './alert-style';\r\nexport { buttonInputStyle } from './button-input-style';\r\nexport { btnStyle, btnInteractStyle } from './button-style';\r\nexport { closeImageStyle } from './close-image-style';\r\nexport { controlStyle } from './control';\r\nexport { datePickerStyle } from './date-picker-style';\r\nexport { dropDownEditorStyle } from './drop-down-editor-style';\r\nexport { fabricPanelStyle } from './fabric-panel-style';\r\nexport { floatButtonStyle } from './float-button-style';\r\nexport { gridInlineErrorStyle } from './grid-inline-error-style';\r\nexport { helpbuttonStyle } from './help-button-style';\r\nexport { InlineEditorStyle } from './inline-editor-style';\r\nexport { inlineErrorStyle } from './inline-error-style';\r\nexport { scrollbarStyle } from './scrollbar-style';\r\nexport { searchboxStyle } from './search-box-style';\r\nexport { SearchBox } from './search-box';\r\nexport { entitySelectorStyle } from './entity-selector-style';\r\nexport { paginationStyle } from './pagination-style';\r\nexport { statusStyle } from './status-style';\r\nexport { toggleButtonStyle } from './toggle-button-style';\r\nexport { underlineLinkStyle } from './underline-link-style';\r\nexport { internalLinkStyle } from './internal-link-style';\r\nexport { getBlockerStyle, spinnerKeyframe } from './spinner-style';\r\nexport { uiblockerStyle, legacyUIBlockerStyle, reactUIBlockerStyle } from './ui-blocker-style';\r\n\r\n// shared grid plugins\r\nexport { getTopGridPanelCommonStyle } from './grid-plugins/top-grid-panel-style';\r\nexport { columnChooserStyle } from './grid-plugins/column-chooser-style';\r\nexport { getColumnChooserOverrideStyle } from './grid-plugins/column-chooser-override-style';\r\nexport { filterEditorStyle } from './grid-plugins/filter-editor-style';\r\nexport { getFilterEditorOverrideStyle } from './grid-plugins/filter-editor-override-style';\r\nexport { getLegacyFilterBarStyle } from './grid-plugins/legacy-filter-bar-style';\r\n\r\n// shared grid styles\r\nexport { GridSharedStyles } from './grid-shared';\r\n","export const alertStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .alert': {\r\n border: 'none',\r\n boxShadow: 'none',\r\n color: palette.neutralPrimary,\r\n display: 'flex',\r\n fontSize: 12,\r\n height: 'auto',\r\n lineHeight: '16px',\r\n padding: '8px 32px 8px 8px',\r\n\r\n '&.alert-danger .alert-image:before': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n lineHeight: '16px',\r\n color: '#A80000',\r\n marginRight: 8,\r\n content: '\"\\\\EA39\"',\r\n },\r\n\r\n '&.alert-info .alert-image:before': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n lineHeight: '16px',\r\n color: palette.neutralSecondary,\r\n marginRight: 8,\r\n content: '\"\\\\E946\"',\r\n },\r\n\r\n '&.alert-warning .alert-image:before': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n lineHeight: '16px',\r\n color: '#d83b01',\r\n marginRight: 8,\r\n\r\n content: '\"\\\\E7BA\"',\r\n },\r\n },\r\n});\r\n","export const buttonInputStyle = ({ palette = {} }) => ({\r\n '& input.btn-primary[type=\"button\"], input.btn-primary[type=\"submit\"], input.btn-hero[type=\"button\"]': {\r\n '&:focus': {\r\n boxShadow: `inset 0 0 0 1px ${palette.white}`,\r\n border: `2px solid ${palette.themePrimary}`,\r\n },\r\n },\r\n\r\n '& input.btn-default[type=\"button\"]': {\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondaryAlt}`,\r\n boxShadow: `inset 0 0 0 1px ${palette.neutralSecondary}`,\r\n outlineOffset: 0,\r\n border: `2px solid ${palette.white}`,\r\n },\r\n },\r\n});\r\n","export const btnInteractStyle = ({ palette = {} }) => ({\r\n '&:hover': {\r\n background: palette.neutralLighter,\r\n },\r\n '&:focus': {\r\n background: palette.neutralLight,\r\n border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n },\r\n});\r\n\r\nexport const btnStyle = ({ palette = {} }) => {\r\n const primary = {\r\n height: 32,\r\n minWidth: 80,\r\n background: palette.themePrimary,\r\n borderRadius: 2,\r\n textAlign: 'center',\r\n color: palette.white,\r\n boxSizing: 'border-box',\r\n\r\n '&:hover': {\r\n background: palette.themeDarkAlt,\r\n },\r\n\r\n '&:focus': {\r\n background: palette.themePrimary,\r\n outline: 'none',\r\n },\r\n\r\n '&:active': {\r\n background: palette.themeDark,\r\n },\r\n\r\n '&:disabled': {\r\n background: palette.neutralLighter,\r\n color: palette.neutralTertiary,\r\n },\r\n };\r\n\r\n return {\r\n '.btn-primary': primary,\r\n '.btn-hero': primary,\r\n\r\n '.btn-default': {\r\n height: 32,\r\n minWidth: 80,\r\n background: palette.white,\r\n borderRadius: 2,\r\n textAlign: 'center',\r\n color: palette.neutralPrimary,\r\n border: `1px solid ${palette.neutralSecondaryAlt}`,\r\n\r\n ...btnInteractStyle({ palette }),\r\n\r\n '&:disabled': {\r\n background: palette.neutralLighter,\r\n color: palette.neutralTertiary,\r\n },\r\n },\r\n };\r\n};\r\n","export const closeImageStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.closeimage': {\r\n fontFamily: iconFontFamily,\r\n color: palette.neutralSecondary,\r\n cursor: 'pointer',\r\n right: -8,\r\n position: 'relative',\r\n },\r\n\r\n '.closeimage:before': {\r\n content: '\"\\\\E711\"',\r\n },\r\n});\r\n","export const controlStyle = ({ palette = {} }) => ({\r\n '.form-control': {\r\n '-webkit-box-shadow': 'none',\r\n backgroundColor: palette.white,\r\n backgroundImage: 'none',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderRadius: 2,\r\n boxShadow: 'none',\r\n color: palette.neutralPrimary,\r\n display: 'block',\r\n fontSize: 14,\r\n height: 32,\r\n lineHeight: 1.5,\r\n padding: '6px 12px',\r\n transition: 'border-color .15s ease-in-out, box-shadow .15s ease-in-out',\r\n\r\n '&:active': {\r\n borderColor: palette.themePrimary,\r\n },\r\n\r\n '&:hover': {\r\n borderColor: palette.neutralPrimary,\r\n },\r\n\r\n '&:focus': {\r\n '-webkit-box-shadow': 'none',\r\n borderColor: palette.themePrimary,\r\n boxShadow: 'none',\r\n outline: 0,\r\n },\r\n },\r\n});\r\n","/* eslint-disable no-unused-vars */\r\nexport const datePickerStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets', focusedStyle }) => ({\r\n '.k-animation-container': {\r\n width: '220px !important',\r\n height: 'auto !important',\r\n background: palette.white,\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n borderRadius: 2,\r\n\r\n '& .k-calendar-container': {\r\n position: 'relative !important',\r\n padding: 12,\r\n width: '100%',\r\n height: '100%',\r\n\r\n '& .k-link:hover': {\r\n backgroundColor: `${palette.neutralLight} !important`,\r\n color: `${palette.neutralDark} !important`,\r\n },\r\n\r\n '& .k-header': {\r\n width: '100%',\r\n paddingBottom: 4,\r\n backgroundColor: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n\r\n '& .k-nav-fast': {\r\n order: '1',\r\n flex: '1',\r\n lineHeight: '19px',\r\n fontWeight: 600,\r\n textAlign: 'left',\r\n display: 'flex',\r\n paddingTop: 4,\r\n paddingBottom: 5,\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .k-nav-prev': {\r\n order: '2',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n '& .k-nav-next': {\r\n order: '3',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n\r\n '& .k-icon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 12,\r\n lineHeight: '12px',\r\n width: 28,\r\n height: '28px',\r\n padding: 8,\r\n color: palette.neutralSecondary,\r\n },\r\n\r\n '& .k-i-arrow-w:before': {\r\n content: '\"\\\\E74A\"',\r\n },\r\n\r\n '& .k-i-arrow-e:before': {\r\n content: '\"\\\\E74B\"',\r\n },\r\n },\r\n\r\n '& .k-content': {\r\n '& th, td': {\r\n width: 28,\r\n height: '28px',\r\n textAlign: 'center',\r\n fontWeight: 'normal',\r\n background: palette.white,\r\n borderRadius: 2,\r\n lineHeight: '16px',\r\n fontSize: 12,\r\n\r\n '& a': {\r\n color: '#212121',\r\n display: 'flex',\r\n width: '28px',\r\n height: '28px',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n },\r\n\r\n '& .k-link': {\r\n background: palette.neutralLighter,\r\n borderRadius: '2px',\r\n },\r\n\r\n '& .k-other-month .k-link': {\r\n background: palette.white,\r\n },\r\n\r\n '& .k-state-selected': {\r\n '& .k-link': {\r\n // outline will only be visible when media query (forced-colors: active)\r\n outline: '1px dashed transparent',\r\n background: palette.themePrimary,\r\n fontWeight: 600,\r\n color: palette.white,\r\n },\r\n },\r\n\r\n '& .k-today': {\r\n '& .k-link': {\r\n // outline will only be visible when media query (forced-colors: active)\r\n outline: '1px dotted transparent',\r\n background: palette.themeLighter,\r\n fontWeight: 600,\r\n color: palette.neutralDark,\r\n },\r\n },\r\n\r\n '& .k-state-focused': {\r\n '& .k-link': focusedStyle || {\r\n // outline will only be visible when media query (forced-colors: active)\r\n outline: '1px solid transparent',\r\n background: palette.themePrimary,\r\n fontWeight: 600,\r\n color: palette.white,\r\n },\r\n },\r\n },\r\n\r\n '& .k-meta-view': {\r\n '& tr': {\r\n '& td': {\r\n background: `${palette.white} !important`,\r\n\r\n '& a': {\r\n display: 'flex',\r\n color: `${palette.neutralPrimary} !important`,\r\n width: '36px',\r\n height: '36px',\r\n marginBottom: 20,\r\n marginRight: 17,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n },\r\n },\r\n\r\n '& td:last-child': {\r\n '& a': {\r\n marginRight: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .k-state-focused': {\r\n '& a': {\r\n color: `${palette.neutralDark} !important`,\r\n background: palette.themeLighter,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const dropDownEditorStyle = ({ palette = {} }) => ({\r\n '& .grid-editable-cell select.editor-control.select-editor': {\r\n borderWidth: '0px 0px 1px 0px',\r\n borderBottomColor: 'transparent',\r\n paddingBottom: 8,\r\n paddingTop: 8,\r\n '&:hover, &:focus, &:active': {\r\n borderBottomColor: 'unset',\r\n outline: 'none',\r\n },\r\n '&:active': {\r\n borderBottomColor: palette.themePrimary,\r\n },\r\n },\r\n});\r\n","export const fabricPanelStyle = () => ({\r\n footer: {\r\n background: 'white',\r\n zIndex: 1,\r\n },\r\n commands: {\r\n marginTop: 0,\r\n marginBottom: 0,\r\n zIndex: 1,\r\n },\r\n});\r\n","export const floatButtonStyle = ({ palette = {} }) => ({\r\n floatButton: {\r\n background: palette.neutralLighter,\r\n border: 'none',\r\n borderRadius: 0,\r\n color: palette.themeDarkAlt,\r\n fontWeight: 'normal',\r\n height: 'auto',\r\n minHeight: 'auto',\r\n minWidth: 'auto',\r\n width: 'auto',\r\n padding: '14px 8px',\r\n\r\n '&:active, &:focus, &:hover': {\r\n color: palette.themeDark,\r\n background: palette.neutralQuaternaryAlt,\r\n },\r\n },\r\n});\r\n","export const gridInlineErrorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .inline-editor-errors': {\r\n '& .error-messages': {\r\n listStyleType: 'none',\r\n marginBottom: 0,\r\n '& .error': {\r\n fontFamily: iconFontFamily,\r\n padding: '10px',\r\n fontSize: '10pt',\r\n '&:before': {\r\n content: '\"\\\\EA39\"',\r\n color: palette.red,\r\n },\r\n },\r\n '& .error-message': {\r\n fontSize: '14px',\r\n },\r\n },\r\n },\r\n});\r\n","export const helpbuttonStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.helpbutton': {\r\n fontSize: 15,\r\n color: `${palette.themePrimary} !important`,\r\n verticalAlign: 'middle',\r\n fontWeight: 'normal',\r\n marginLeft: 7,\r\n\r\n '&:focus': {\r\n outline: '1px solid',\r\n outlineColor: palette.neutralSecondary,\r\n border: 'none',\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n\r\n '&:hover': {\r\n backgroundColor: palette.neutralLighter,\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n\r\n '&:active': {\r\n backgroundColor: palette.neutralLight,\r\n color: palette.black,\r\n textDecoration: 'none',\r\n },\r\n },\r\n\r\n '.helpbutton::before': {\r\n content: '\"\\\\E9CE\"',\r\n fontFamily: iconFontFamily,\r\n position: 'relative',\r\n top: 2,\r\n },\r\n});\r\n\r\n","export const InlineEditorStyle = () => ({\r\n '.custom-parameters-inline-edit-popup': {\r\n width: 456,\r\n minWidth: 456,\r\n },\r\n\r\n '.grid-popupeditor .form-inline .form-group': {\r\n display: 'block',\r\n },\r\n});\r\n","export const inlineErrorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '.inline-editor-errors': {\r\n '& .error-messages': {\r\n listStyleType: 'none',\r\n '& .grid-error': {\r\n '&.spritedimage': {\r\n fontFamily: iconFontFamily,\r\n padding: '10px',\r\n fontSize: '10pt',\r\n },\r\n '&.spritedimage:before': {\r\n content: '\"\\\\EA39\"',\r\n color: palette.red,\r\n },\r\n },\r\n '& .error-message': {\r\n fontSize: '14px',\r\n },\r\n },\r\n },\r\n});\r\n","/* eslint-disable no-unused-vars */\r\nexport const scrollbarStyle = ({ palette = {} }) => ({\r\n '::-webkit-scrollbar':\r\n {\r\n width: 4,\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '::-webkit-scrollbar-track':\r\n {\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '::-webkit-scrollbar-thumb':\r\n {\r\n width: 4,\r\n height: 44,\r\n backgroundColor: '#EBEAE8',\r\n },\r\n\r\n '::-webkit-scrollbar:horizontal':\r\n {\r\n height: 4,\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '::-webkit-scrollbar-track:horizontal':\r\n {\r\n backgroundColor: 'transparent',\r\n },\r\n\r\n '::-webkit-scrollbar-thumb:horizontal':\r\n {\r\n width: 200,\r\n height: 4,\r\n backgroundColor: '#EBEAE8',\r\n },\r\n});\r\n","export const searchboxStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .searchbox': {\r\n padding: 0,\r\n },\r\n\r\n '& .searchbox .form-horizontal': {\r\n width: '100%',\r\n },\r\n\r\n '& .searchbox-input': {\r\n paddingLeft: 40,\r\n },\r\n\r\n '& .searchbox .form-control': {\r\n border: 0,\r\n borderBottom: `1px solid ${palette.neutralLighter}`,\r\n },\r\n\r\n '& .filter_search_icon_small': {\r\n fontFamily: iconFontFamily,\r\n color: palette.themePrimary,\r\n fontSize: 14,\r\n },\r\n\r\n '& .filter_search_icon_small:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n});\r\n","export const SearchBox = {\r\n inputGroup: {\r\n position: 'relative',\r\n overflow: 'hidden',\r\n },\r\n\r\n input: {\r\n border: {\r\n width: 1,\r\n style: 'solid',\r\n },\r\n padding: {\r\n top: 3,\r\n right: 33,\r\n bottom: 3,\r\n left: 8,\r\n },\r\n display: 'block',\r\n width: '100%',\r\n fontSize: '1em',\r\n },\r\n\r\n icon: {\r\n position: 'absolute',\r\n right: 60,\r\n height: 15,\r\n marginTop: 5,\r\n width: 20,\r\n fontSize: 12,\r\n\r\n '&:hover': {\r\n cursor: 'pointer',\r\n },\r\n },\r\n};\r\n","export const entitySelectorStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .ba-campaign-selector, & .ba-campaign-adgroup-selector': {\r\n '& .ba-list-selector': {\r\n border: '1px solid #BBB',\r\n height: 300,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n '& .list-selector-item': {\r\n position: 'relative',\r\n },\r\n\r\n '& .list-selector-content': {\r\n flex: 1,\r\n overflow: 'auto',\r\n },\r\n\r\n '& .list-selector-select-all-bar': {\r\n padding: '5px 10px',\r\n color: '#1470A5',\r\n cursor: 'pointer',\r\n\r\n '& .arrow-button.enabled': {\r\n marginLeft: 6,\r\n },\r\n\r\n '& .arrow-button.remove': {\r\n marginRight: 6,\r\n },\r\n\r\n '& .enabled.arrow-button:before, & .arrow-button.remove:before': {\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n\r\n '& .multi-selector': {\r\n '& .ba-entity-selector': {\r\n '& .ba-list-selector': {\r\n '& .list-selector-item': {\r\n padding: 0,\r\n '& .multi-item-container': {\r\n padding: '7px 8px 8px 8px',\r\n },\r\n '& .added-to-result-list': {\r\n backgroundColor: '#edebe9',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n },\r\n '& .ba-campaign-adgroup-selector .selected-item, .ba-campaign-selector .selected-item': {\r\n maxWidth: 270,\r\n },\r\n '& .ba-campaign-selector, & .ba-campaign-adgroup-selector, & .disclaimer-selector, & .audience-planner-location-selector': {\r\n '& .dropdown-toggle': {\r\n lineHeight: 2,\r\n padding: '0 8px',\r\n verticalAlign: 'middle',\r\n fontWeight: 'normal',\r\n width: 320,\r\n textAlign: 'left !important',\r\n background: 'transparent !important',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n borderRadius: 2,\r\n outline: 'none',\r\n\r\n '&:hover': {\r\n borderColor: palette.neutralPrimary,\r\n },\r\n\r\n '&:focus, &:active': {\r\n borderColor: palette.themePrimary,\r\n },\r\n\r\n '& .selected-item': {\r\n textOverflow: 'ellipsis',\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n },\r\n\r\n '& .icon-right': {\r\n float: 'right',\r\n },\r\n\r\n '& .glyphicon-triangle-bottom, .glyphicon-pencil': {\r\n marginTop: 5,\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n verticalAlign: 'middle',\r\n color: palette.neutralSecondary,\r\n },\r\n\r\n '& .glyphicon-triangle-bottom:before': {\r\n content: '\"\\\\E70D\"',\r\n },\r\n\r\n '& .glyphicon.glyphicon-pencil::before': {\r\n content: '\"\\\\E70F\"',\r\n },\r\n },\r\n\r\n '& .dropdown-toggle:focus:after, .dropdown-toggle:active:after': {\r\n border: 0,\r\n },\r\n\r\n '& .dropdown-menu': {\r\n top: 'auto',\r\n left: 'auto',\r\n minWidth: 320,\r\n padding: 8,\r\n boxShadow: '0px 0.6px 1.8px rgba(0, 0, 0, 0.108), 0px 3.2px 7.2px rgba(0, 0, 0, 0.132)',\r\n borderRadius: '0px 0px 2px 2px',\r\n\r\n '& .ba-search-box ': {\r\n borderTop: `1px solid ${palette.neutralSecondary}`,\r\n borderLeft: `1px solid ${palette.neutralSecondary}`,\r\n borderRight: `1px solid ${palette.neutralSecondary}`,\r\n padding: 1,\r\n position: 'relative',\r\n\r\n '& .search-box__input': {\r\n height: 48,\r\n width: 'calc(100% - 2px)',\r\n border: 0,\r\n borderBottom: `1px solid ${palette.neutralLight}`,\r\n paddingLeft: 48,\r\n marginLeft: 1,\r\n },\r\n\r\n '& .search-box__icon': {\r\n fontFamily: iconFontFamily,\r\n fontSize: 16,\r\n verticalAlign: 'middle',\r\n position: 'absolute',\r\n left: 16,\r\n top: 16,\r\n },\r\n\r\n '& .search-box__icon:before': {\r\n content: '\"\\\\E721\"',\r\n color: palette.themePrimary,\r\n },\r\n },\r\n\r\n '& .ba-list-selector': {\r\n borderBottom: `1px solid ${palette.neutralSecondary}`,\r\n borderLeft: `1px solid ${palette.neutralSecondary}`,\r\n borderRight: `1px solid ${palette.neutralSecondary}`,\r\n\r\n '& .list-selector-header': {\r\n '& .panel-heading': {\r\n color: palette.neutralPrimary,\r\n fontSize: 14,\r\n padding: '7px 8px',\r\n\r\n '& .panel-title': {\r\n fontSize: 14,\r\n marginTop: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .list-selector-content': {\r\n height: 380,\r\n\r\n '& .list-selector-item': {\r\n padding: '7px 8px 8px 8px',\r\n margin: 0,\r\n minHeight: 36,\r\n\r\n '& > div, & .item-content': {\r\n maxWidth: 225,\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n cursor: 'pointer',\r\n paddingRight: '20px',\r\n '& .statusIcon': {\r\n verticalAlign: 'middle',\r\n height: '19px',\r\n },\r\n\r\n '& .text': {\r\n marginLeft: 10,\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n\r\n '& .selected': {\r\n background: palette.neutralLight,\r\n },\r\n },\r\n\r\n '& .list-selector-item:hover': {\r\n background: palette.neutralLight,\r\n },\r\n\r\n '& .list-selector-item:focus': {\r\n outline: 'none',\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n },\r\n\r\n '& .list-selector-empty': {\r\n marginLeft: 10,\r\n },\r\n\r\n '& .ba-cascader-selector': {\r\n border: 0,\r\n padding: 0,\r\n },\r\n\r\n '& .ba-cascader-selector>div': {\r\n width: '100% !important',\r\n marginBottom: 0,\r\n },\r\n\r\n '& .ba-cascader-selector>div:nth-child(2)>div:nth-child(2)': {\r\n '& .ba-list-selector': {\r\n borderLeft: '0 !important',\r\n },\r\n },\r\n\r\n '& .pagination-container': {\r\n '& .ba-pagination': {\r\n height: 36,\r\n padding: '6px 0',\r\n paddingBottom: 0,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .ba-campaign-adgroup-selector, & .ba-campaign-selector': {\r\n '& .dropdown-toggle .dropdown-edit-mode-parent-text': {\r\n color: '#605e5c',\r\n },\r\n\r\n '& .item-content-parent-info': {\r\n color: '#605e5c',\r\n },\r\n },\r\n});\r\n\r\n","export const paginationStyle = ({ palette = {}, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& .ba-pagination, .dlb-pager-container, .pagination-control': {\r\n height: 'auto',\r\n padding: '6px 0',\r\n\r\n '& > .text': {\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n padding: '0px 0px 8px 5px',\r\n '& > span': {\r\n marginRight: '5px',\r\n },\r\n },\r\n '& button': {\r\n border: 0,\r\n background: 'transparent',\r\n minWidth: '1px',\r\n padding: 0,\r\n color: palette.neutralSecondary,\r\n },\r\n\r\n '& button:hover': {\r\n borderRadius: 2,\r\n background: palette.neutralLighter,\r\n },\r\n\r\n '& button:disabled': {\r\n background: 'transparent',\r\n color: '#BEBBB8',\r\n },\r\n\r\n '& .prev + .text, .pager-previous + .text': {\r\n display: 'none',\r\n },\r\n\r\n '& .pager-input': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n padding: '6px 8px',\r\n height: 32,\r\n textAlign: 'center',\r\n margin: '0 12px',\r\n width: 70,\r\n display: 'inline-block',\r\n borderRadius: 2,\r\n boxSizing: 'border-box',\r\n color: palette.neutralPrimary,\r\n\r\n '&:active': {\r\n borderColor: palette.themePrimary,\r\n },\r\n\r\n '&:focus': {\r\n borderColor: palette.themePrimary,\r\n outline: 0,\r\n },\r\n\r\n '&:hover': {\r\n borderColor: palette.neutralPrimary,\r\n },\r\n },\r\n\r\n '& .glyphicon-triangle-left, & .glyphicon-triangle-right': {\r\n display: 'inline-block',\r\n fontFamily: iconFontFamily,\r\n color: 'inherit',\r\n },\r\n\r\n '& .glyphicon-triangle-left:before': {\r\n content: '\"\\\\E76B\"',\r\n },\r\n\r\n '& .glyphicon-triangle-right:before': {\r\n content: '\"\\\\E76C\"',\r\n },\r\n },\r\n\r\n '& .pager, .location-bid-pager-view': {\r\n height: 32,\r\n padding: 0,\r\n margin: 0,\r\n\r\n '& .pager-input, .page-number-input, .grid-pager-input': {\r\n border: `1px solid ${palette.neutralSecondary}`,\r\n padding: '6px 8px',\r\n height: 32,\r\n textAlign: 'center',\r\n margin: '0 12px',\r\n width: '70px !important',\r\n display: 'inline-block',\r\n borderRadius: 2,\r\n boxSizing: 'border-box',\r\n color: palette.neutralPrimary,\r\n background: palette.white,\r\n },\r\n\r\n '& .pager-input[disabled], & .page-number-input[disabled], & .grid-pager-input[disabled]': {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n\r\n '& .pager-previous, & .pager-next, & .glyphicon-triangle-left, & .glyphicon-triangle-right': {\r\n fontFamily: iconFontFamily,\r\n color: palette.neutralSecondary,\r\n background: 'transparent',\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n padding: '2px 5px',\r\n height: 32,\r\n lineHeight: '32px',\r\n marginTop: '-7px',\r\n outline: 'none',\r\n },\r\n\r\n '& .pager-previous, & .pager-next': {\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n outlineOffset: '-2px',\r\n },\r\n },\r\n\r\n '& .pager-previous:hover, & .pager-next:hover': {\r\n borderRadius: 2,\r\n background: palette.neutralLighter,\r\n },\r\n\r\n '& .pager-previous-disabled, & .pager-next-disabled': {\r\n fontFamily: iconFontFamily,\r\n color: '#BEBBB8',\r\n background: 'transparent',\r\n display: 'inline-block',\r\n verticalAlign: 'middle',\r\n padding: '2px 5px',\r\n height: 32,\r\n lineHeight: '32px',\r\n marginTop: '-7px',\r\n outline: 'none',\r\n },\r\n\r\n '& .pager-previous-disabled:before, & .pager-previous:before': {\r\n content: '\"\\\\E76B\"',\r\n },\r\n\r\n '& .pager-next-disabled:before, & .pager-next:before': {\r\n content: '\"\\\\E76C\"',\r\n },\r\n\r\n '& .pager-totalCount': {\r\n verticalAlign: 'unset',\r\n marginLeft: 4,\r\n },\r\n },\r\n\r\n '& .pagination-control': {\r\n textAlign: 'left',\r\n\r\n '& .text': {\r\n display: 'inline-block',\r\n width: 'auto',\r\n },\r\n\r\n '& .page-size-selector': {\r\n height: 32,\r\n textAlign: 'center',\r\n margin: '0 12px',\r\n width: '70px !important',\r\n display: 'inline-block',\r\n borderRadius: 2,\r\n boxSizing: 'border-box',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .pager': {\r\n display: 'inline-block',\r\n },\r\n },\r\n\r\n});\r\n\r\n","export const statusStyle = ({ palette = {} }) => ({\r\n '& .statusDraft_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusDraft_icon::before': {\r\n content: '\"\\\\F6B0\"',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .statusDeleted_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusDeleted_icon::before': {\r\n content: '\"\\\\E738\"',\r\n color: palette.redOrange10,\r\n },\r\n\r\n '& .statusEnabled_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusEnabled_icon::before': {\r\n content: '\"\\\\ECCC\"',\r\n color: palette.green,\r\n },\r\n\r\n '& .statusExcluded_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusExcluded_icon::before': {\r\n content: '\"\\\\E733\"',\r\n color: '#A80000',\r\n },\r\n\r\n '& .statusPaused_icon': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statusPaused_icon::before': {\r\n content: '\"\\\\F6B0\"',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '& .statushypendisplay': {\r\n display: 'inline-block',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n fontSize: 14,\r\n fontStyle: 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .statushypendisplay::before': {\r\n content: '\"\\\\E738\"',\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n});\r\n","export const toggleButtonStyle = ({ palette = {} }) => ({\r\n\r\n '& .toggle': {\r\n display: 'inline-block',\r\n textDecoration: 'none',\r\n\r\n '& .toggle-button': {\r\n display: 'inline-block',\r\n boxsizing: 'border-box',\r\n width: 40,\r\n height: 20,\r\n padding: 4,\r\n lineHeight: '10px',\r\n border: '1px solid',\r\n borderRadius: 30,\r\n 'transition-duration': '0.2s',\r\n '-webkit-transition-duration': '0.2s',\r\n },\r\n\r\n '& .toggle-handle': {\r\n display: 'inline-block',\r\n boxsizing: 'border-box',\r\n width: 10,\r\n height: 10,\r\n borderRadius: 5,\r\n borderWidth: 5,\r\n borderStyle: 'solid',\r\n verticalAlign: 'top',\r\n 'transition-duration': '0.2s',\r\n '-webkit-transition-duration': '0.2s',\r\n },\r\n },\r\n\r\n '& .toggle-on': {\r\n '& .toggle-button': {\r\n backgroundColor: palette.themePrimary,\r\n borderColor: palette.themePrimary,\r\n },\r\n\r\n '& .toggle-handle': {\r\n marginLeft: 20,\r\n borderColor: palette.white,\r\n },\r\n },\r\n\r\n '& .toggle-off': {\r\n '& .toggle-button': {\r\n backgroundColor: palette.white,\r\n borderColor: '#333333',\r\n },\r\n\r\n '& .toggle-handle': {\r\n marginRight: 20,\r\n borderColor: '#333333',\r\n },\r\n },\r\n});\r\n","export const underlineLinkStyle = ({ palette = {}, elementLocator = 'a', isGreyBackground = false }) => ({\r\n [`& ${elementLocator}`]: {\r\n textDecoration: 'underline',\r\n color: isGreyBackground ? palette.themeDarkAlt : palette.themePrimary,\r\n '&:focus': {\r\n textDecoration: 'underline',\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n color: palette.themeDarker,\r\n },\r\n },\r\n});\r\n","export const internalLinkStyle = ({ palette = {}, elementLocator = 'a', isGreyBackground = false }) => ({\r\n [`& ${elementLocator}`]: {\r\n textDecoration: 'none',\r\n color: isGreyBackground ? palette.themeDarkAlt : palette.themePrimary,\r\n '&:focus': {\r\n textDecoration: 'none',\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n '&:hover': {\r\n textDecoration: 'underline',\r\n color: palette.themeDarker,\r\n },\r\n },\r\n});\r\n","export const getBlockerStyle = (size, palette) => ({\r\n width: size,\r\n height: size,\r\n border: '2px solid',\r\n borderLeftColor: palette.themePrimary,\r\n borderRightColor: palette.themeLight,\r\n borderTopColor: palette.themeLight,\r\n borderBottomColor: palette.themeLight,\r\n borderRadius: '50%',\r\n animation: 'spinner 1s linear infinite',\r\n marginRight: 9,\r\n});\r\n\r\nexport const spinnerKeyframe = {\r\n '@keyframes spinner': {\r\n to: { transform: 'rotate(360deg)' },\r\n },\r\n};\r\n","import { ZIndexShellComponents } from '../constants';\r\n\r\nimport { getBlockerStyle, spinnerKeyframe } from './spinner-style';\r\n// this style is in the body scope, out of the feature scope, so use as the global pattern\r\nexport const uiblockerStyle = ({ palette = {} }) => (\r\n Object.assign({\r\n '.blocker': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n },\r\n\r\n '.blocker-global, .blocker-local': {\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n position: 'absolute',\r\n zIndex: ZIndexShellComponents.Loader,\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n },\r\n '.blocker-global': {\r\n left: 0,\r\n top: 0,\r\n right: 0,\r\n bottom: 0,\r\n },\r\n\r\n '.blocker, .blocker-global, .blocker-local': {\r\n '& .blocker-indicator': {\r\n outline: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n backgroundColor: 'white',\r\n padding: '10px',\r\n color: palette.themePrimary,\r\n top: 'calc(50% - 24px)',\r\n left: 'calc(50% - 58px)',\r\n position: 'absolute',\r\n\r\n '& .blocker-image': getBlockerStyle(28, palette),\r\n },\r\n },\r\n }, spinnerKeyframe));\r\n\r\n// blocker defined in $.advertiser\r\nexport const legacyUIBlockerStyle = ({ palette = {} }) => ({\r\n '.blocker-panel': {\r\n position: 'absolute',\r\n backgroundColor: 'rgba(255,255,255,0.4)',\r\n },\r\n '.blocker-panel + .blocker-indicator': {\r\n outline: 'none',\r\n backgroundColor: 'white',\r\n padding: '10px',\r\n color: palette.themePrimary,\r\n position: 'absolute',\r\n\r\n '& .blocker-image': {\r\n ...getBlockerStyle(28, palette),\r\n position: 'absolute',\r\n },\r\n '& .blocker-text': {\r\n margin: '5px 0 0 40px',\r\n },\r\n },\r\n});\r\n\r\n// for @bingads-webui-react/ui-blocker\r\nexport const reactUIBlockerStyle = (palette, backgroundColor = 'white') => ({\r\n '& .react-block-ui': {\r\n '& > div:last-child': {\r\n alignItems: 'center',\r\n backgroundColor,\r\n color: palette.themePrimary,\r\n display: 'flex',\r\n outline: 'none',\r\n padding: 10,\r\n\r\n '& .blocker-text': {\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& .blocker-image': getBlockerStyle(28, palette),\r\n },\r\n },\r\n});\r\n","export { ZIndexShellComponents, ZIndexContentComponents } from './zindexes';\r\nexport { PagePadding } from './pagePadding';\r\n","// For the z-index defined in external place, we use leading \"_\" in key name to indicate it,\r\n// and put them here ONLY FOR REFERENCE.\r\n\r\n// We only focus on z-index of components in app-layout-container and direct children of <body>.\r\n// That's to say, it doesn't matter that z-index of element A inside Content is greater than\r\n// element B inside Header: A will still shows behind B, since Content z-index < Header z-index.\r\nexport const ZIndexShellComponents = {\r\n _HelpContainer: 1100, // defined in apex style file\r\n _BootstrapPopover: 1060, // defined in bootstrap of theme-2018\r\n _BootstrapModal: 1050, // defined in bootstrap of theme-2018\r\n _BootstrapModalBackdrop: 1040, // defined in bootstrap of theme-2018\r\n ModalBackDrop: 1040,\r\n Header: 1031,\r\n Loader: 1030, // should be less than Header\r\n Panel: 1000,\r\n TopBanner: 250,\r\n PromotionBanner: 250,\r\n Nav: 200,\r\n Status: 150,\r\n Menu: 100,\r\n Tab: 75,\r\n SubTab: 50,\r\n Content: 0,\r\n};\r\n\r\n// This is the common place for elements inside \".app-shell-content\"\r\nexport const ZIndexContentComponents = {\r\n // add new elements here in descending order\r\n GridToolbar: 20,\r\n GridHeader: 20,\r\n StatusPopup: 10,\r\n};\r\n","export const PagePadding = {\r\n mainSectionLeftPadding: 32,\r\n smallMainSectionLeftPadding: 15,\r\n};\r\n","import { internalLinkStyle } from '../internal-link-style';\r\nimport { underlineLinkStyle } from '../underline-link-style';\r\n\r\n// Styles for panel itself\r\nexport const getTopGridPanelCommonStyle = ({ palette }) => ({\r\n '& .panel': {\r\n // All top of grid panel have same margin left and top\r\n marginTop: '24px',\r\n marginLeft: '32px',\r\n marginBottom: '0px',\r\n padding: 0,\r\n backgroundColor: 'white',\r\n\r\n // Learn more button styles.\r\n ...underlineLinkStyle({ palette, elementLocator: 'a.HelpTopic' }),\r\n\r\n '& .alert-info .alert-info-inline': {\r\n ...internalLinkStyle({ palette, elementLocator: '> a', isGreyBackground: true }),\r\n },\r\n\r\n '& .panel-heading': {\r\n backgroundColor: 'white',\r\n padding: '0px',\r\n fontWeight: 600,\r\n\r\n '& .panel-title': {\r\n fontSize: '20px',\r\n lineHeight: '27px',\r\n fontWeight: 600,\r\n },\r\n },\r\n\r\n '& .panel-body': {\r\n lineHeight: '19px',\r\n paddingLeft: '0px',\r\n paddingBottom: '0px',\r\n marginBottom: '18px', // leave space between body and the footer buttons\r\n\r\n '& hr': {\r\n margin: 0,\r\n borderTop: '0px',\r\n },\r\n },\r\n\r\n '& .panel-footer': {\r\n borderTop: `1px solid ${palette.neutralLight}`,\r\n paddingTop: '16px',\r\n paddingBottom: '16px',\r\n paddingLeft: '0px',\r\n marginTop: 0,\r\n backgroundColor: 'white',\r\n\r\n '& input.btn, & button.btn': {\r\n marginRight: '8px',\r\n },\r\n '& input.btn:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n outlineOffset: '-3px',\r\n },\r\n '& input.btn-primary:focus': {\r\n outline: '1px solid #fff',\r\n },\r\n '& .previewTable': {\r\n margin: '5px 0 !important',\r\n maxHeight: '250px',\r\n display: 'inline-block',\r\n minWidth: '500px',\r\n width: 'auto !important',\r\n },\r\n },\r\n },\r\n});\r\n","export const columnChooserStyle = {\r\n '& .column-chooser .option': {\r\n padding: '6px 10px',\r\n },\r\n '& .column-chooser .option:hover': {\r\n backgroundColor: 'transparent',\r\n borderColor: 'transparent',\r\n },\r\n '& .column-chooser input[type=\"checkbox\"]': {\r\n margin: '0 5px 0 0',\r\n },\r\n '& .column-chooser-instructions': {\r\n marginBottom: '35px',\r\n },\r\n '& .column-chooser-categories': {\r\n position: 'relative',\r\n float: 'left',\r\n width: '180px',\r\n left: '1px',\r\n zIndex: '1',\r\n },\r\n '& .column-chooser-list': {\r\n position: 'relative',\r\n border: '1px solid #bbb',\r\n background: 'white',\r\n boxSizing: 'border-box',\r\n height: '300px',\r\n width: '340px',\r\n float: 'left',\r\n overflow: 'hidden',\r\n },\r\n '& .column-chooser-list+.column-chooser-list': {\r\n marginLeft: '8px',\r\n },\r\n '& .column-chooser-list.right': {\r\n marginLeft: '10px',\r\n },\r\n '& .column-chooser-option-header': {\r\n padding: '10px',\r\n backgroundColor: '#f4f4f4',\r\n width: '340px',\r\n },\r\n '& .column-chooser-bulk-control': {\r\n padding: '10px',\r\n },\r\n '& .column-chooser-category': {\r\n padding: '10px',\r\n cursor: 'pointer',\r\n borderTop: '0',\r\n },\r\n '& .column-chooser-category.active': {\r\n backgroundColor: 'white',\r\n border: '1px solid #bbb',\r\n borderRightColor: 'white',\r\n borderRight: '0',\r\n },\r\n '& .column-chooser-category:focus, & .column-chooser-category.k-state-focused': {\r\n outline: '1px dashed #333 !important',\r\n },\r\n '& .column-chooser-options': {\r\n listStyle: 'none',\r\n verticalAlign: 'top',\r\n overflowX: 'visible',\r\n overflowY: 'auto',\r\n padding: '0 10px',\r\n height: '230px',\r\n },\r\n '& .column-chooser-options.selected': {\r\n padding: '10px',\r\n height: '290px',\r\n },\r\n '& .column-chooser-options.available': {\r\n height: '250px',\r\n },\r\n '& .column-chooser-option': {\r\n border: '1px solid white',\r\n borderLeftWidth: '0',\r\n borderRightWidth: '0',\r\n padding: '6px 10px',\r\n },\r\n '& .column-chooser-option:hover': {\r\n backgroundColor: '#e5e5e5',\r\n borderColor: '#e5e5e5',\r\n },\r\n '& .column-chooser-message': {\r\n marginBottom: '15px',\r\n fontSize: '12px',\r\n },\r\n '& .column-chooser-option-selected': {\r\n cursor: 'move',\r\n padding: '5px',\r\n marginBottom: '5px',\r\n backgroundColor: '#e7f0f6',\r\n border: '1px solid #1570a6',\r\n height: '28px !important',\r\n },\r\n '& .column-chooser-option-selected:hover': {\r\n backgroundColor: '#f4f4f4',\r\n borderColor: '#606060',\r\n },\r\n '& .column-chooser-option-selected .remove': {\r\n paddingTop: '2px',\r\n },\r\n '& .column-chooser-option-fixed': {\r\n cursor: 'not-allowed',\r\n },\r\n '& .column-chooser-option-unmovable': {\r\n backgroundColor: '#e5e5e5',\r\n borderColor: 'gray',\r\n cursor: 'not-allowed',\r\n padding: '7px',\r\n },\r\n '& .column-chooser-option-placeholder': {\r\n border: '1px solid #1570a6',\r\n opacity: '& .5',\r\n margin: '6px 10px',\r\n height: '20px',\r\n },\r\n '& .column-chooser': {\r\n display: 'block !important',\r\n lineHeight: '15px',\r\n fontWeight: 'normal',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area': {\r\n display: 'inline-block',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option': {\r\n float: 'left',\r\n padding: '0',\r\n backgroundColor: '#f4f4f4',\r\n border: 'none',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-option-header': {\r\n padding: '10px',\r\n width: '340px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .column-chooser-search-box': {\r\n border: '1px solid #F3F2F1',\r\n position: 'relative',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .search-input': {\r\n border: 'none',\r\n height: '48px',\r\n paddingLeft: '48px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search': {\r\n top: '16px',\r\n left: '16px',\r\n color: '#0078d4',\r\n position: 'absolute',\r\n fontSize: '16px',\r\n fontFamily: 'MsAds MDL2 Assets',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .glyphicon-search:before': {\r\n content: '\"\\\\E721\"',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs': {\r\n position: 'relative',\r\n left: '1px',\r\n zIndex: '1',\r\n marginBottom: '8.5px',\r\n marginTop: '0',\r\n paddingLeft: '0',\r\n float: 'left',\r\n width: '180px',\r\n listStyle: 'none',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li': {\r\n padding: '10px',\r\n cursor: 'pointer',\r\n borderTop: '0',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .category-tabs>li.active': {\r\n backgroundColor: 'white',\r\n border: '1px solid #BBB',\r\n borderRightColor: 'white',\r\n borderRight: '0',\r\n fontWeight: 'bold',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view': {\r\n float: 'left',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list': {\r\n position: 'relative',\r\n border: '1px solid #BBB',\r\n background: 'white',\r\n boxSizing: 'border-box',\r\n height: '300px',\r\n width: '340px',\r\n overflow: 'hidden',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list .column-chooser-bulk-control': {\r\n padding: '10px',\r\n textAlign: 'right',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options': {\r\n listStyle: 'none',\r\n verticalAlign: 'top',\r\n overflowX: 'visible',\r\n overflowY: 'auto',\r\n padding: '0 10px',\r\n height: '250px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-not-selected': {\r\n fontWeight: 'bold',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status': {\r\n float: 'right',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options span.option-status.disabled': {\r\n color: '#ccc',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-option .options-view .column-chooser-option-list ul.column-chooser-options a.add-column-link': {\r\n float: 'right',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected': {\r\n float: 'left',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .column-chooser-selected-header': {\r\n padding: '10px',\r\n backgroundColor: '#f4f4f4',\r\n width: '340px',\r\n marginLeft: '0',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view': {\r\n position: 'relative',\r\n border: '1px solid #BBB',\r\n background: 'white',\r\n boxSizing: 'border-box',\r\n height: '300px',\r\n width: '340px',\r\n overflow: 'hidden',\r\n marginLeft: '10px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list': {\r\n padding: '10px',\r\n height: '290px',\r\n overflowX: 'visible',\r\n overflowY: 'auto',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-locked': {\r\n backgroundColor: '#E5E5E5',\r\n marginBottom: '5px',\r\n border: '1px solid gray',\r\n cursor: 'not-allowed',\r\n padding: '7px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable': {\r\n cursor: 'move',\r\n padding: '5px',\r\n marginBottom: '5px',\r\n backgroundColor: '#e7f0f6',\r\n border: '1px solid #008272',\r\n height: '28px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable.draggable-list__item-preview': {\r\n opacity: '& .5',\r\n marginLeft: '10px',\r\n marginRight: '10px',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item.draggable-list__item-draggable span.remove': {\r\n float: 'right',\r\n },\r\n '& .column-chooser .panel .panel-body .column-chooser-selection-area .column-chooser-selected .draggable-list-view ul.draggable-list li.draggable-list-item .selected-list-item span': {\r\n M: 'none',\r\n W: 'none',\r\n fallbacks: [\r\n {\r\n M: 'none',\r\n },\r\n ],\r\n userSelect: 'none',\r\n },\r\n '& .column-chooser .panel .panel-body .save-column-view': {\r\n display: 'inline-block',\r\n },\r\n '& .column-chooser .panel .panel-body .save-column-view .save-checkbox': {\r\n height: '25px',\r\n verticalAlign: 'middle',\r\n },\r\n '& .column-chooser .panel .panel-body .save-column-view .save-checkbox .column-chooser-save-column': {\r\n fontWeight: 'normal',\r\n },\r\n '& .column-chooser .panel .panel-body .save-column-view .save-checkbox input.column-chooser-saved-name': {\r\n border: '1px solid #BBB',\r\n padding: '3px 5px',\r\n fontSize: '12px',\r\n lineHeight: '1.45833333',\r\n },\r\n '& .column-chooser .panel .panel-footer': {\r\n marginTop: '5px',\r\n },\r\n // From @bingads-webui/theme-2016/style/css/bootstrap/less/override/panels.less\r\n // scoped under .column-chooser\r\n '& .column-chooser .panel-component': {\r\n backgroundColor: '#E7F0F6',\r\n },\r\n '& .column-chooser .panel-component .panel-heading': {\r\n backgroundColor: '#E7F0F6',\r\n },\r\n '& .column-chooser .panel-component .panel-title': {\r\n fontColor: '#333',\r\n },\r\n '& .column-chooser .panel-component .panel-body': {\r\n padding: '5px 15px',\r\n },\r\n '& .column-chooser .panel-form': {\r\n backgroundColor: 'white',\r\n border: '1px solid #BBB',\r\n padding: '5px',\r\n },\r\n '& .column-chooser .panel-form.noPadding': {\r\n padding: '0',\r\n },\r\n '& .column-chooser .panel-form .panel-heading': {\r\n marginBottom: '0',\r\n },\r\n '& .column-chooser .panel-form .section': {\r\n padding: '0 0 15px 0',\r\n },\r\n '& .column-chooser .panel-form .panel-body.noPadding': {\r\n padding: '0',\r\n },\r\n '& .column-chooser .panel-form-footer': {\r\n padding: '3px 0',\r\n },\r\n '& .column-chooser .panel.panel-white': {\r\n backgroundColor: 'white',\r\n W: 'none',\r\n boxShadow: 'none',\r\n },\r\n '& .column-chooser .panel-body': {\r\n padding: '0 15px 0 15px',\r\n },\r\n '& .column-chooser .panel-body:before, & .column-chooser .panel-body:after': {\r\n content: '\" \"',\r\n display: 'table',\r\n },\r\n '& .column-chooser .panel-body:after': {\r\n clear: 'both',\r\n },\r\n '& .column-chooser .panel-heading': {\r\n backgroundColor: '#E5E5E5',\r\n padding: '0 15px',\r\n marginBottom: '15px',\r\n },\r\n '& .column-chooser .panel-heading>.dropdown .dropdown-toggle': {\r\n color: 'inherit',\r\n },\r\n '& .column-chooser .panel-title': {\r\n fontWeight: 'bold',\r\n marginTop: '0',\r\n marginBottom: '0',\r\n lineHeight: '30px',\r\n fontSize: 14,\r\n display: 'inline',\r\n },\r\n '& .column-chooser .panel-title>a': {\r\n color: 'inherit',\r\n },\r\n '& .column-chooser .panel-footer': {\r\n padding: '0 15px 0 15px',\r\n borderTop: '0px',\r\n },\r\n '& .column-chooser hr': {\r\n borderTop: '1px solid #A2A2A2',\r\n },\r\n '& .column-chooser .save-column-checkbox': {\r\n float: 'left',\r\n },\r\n};\r\n","import { getNewFeatureLabelStyle } from '../new-feature-label-style';\r\n\r\nexport const getColumnChooserOverrideStyle = palette => ({\r\n // Shared part already moved to 'global-styles.js' to be shared with all top of grid panel.\r\n // Only put column chooser specific override here.\r\n '& .column-chooser': {\r\n display: 'block !important',\r\n lineHeight: '15px',\r\n fontWeight: 'normal',\r\n\r\n '& .panel': {\r\n '& .panel-body': {\r\n '& .column-chooser-selection-area': {\r\n padding: '0px 0px 18px 0px',\r\n\r\n '& .column-chooser-option': {\r\n backgroundColor: 'white',\r\n border: `1px solid ${palette.neutralTertiary}`,\r\n ...getNewFeatureLabelStyle({ palette }),\r\n\r\n '& .option': {\r\n height: '36px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n\r\n '& .column-chooser-option-header': {\r\n display: 'none',\r\n },\r\n\r\n '& .column-chooser-categories': {\r\n left: 0,\r\n width: '300px',\r\n\r\n '& .category-tabs': {\r\n left: 0,\r\n width: '300px',\r\n\r\n '& li a:after': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n content: '\"\\\\E76C\"',\r\n color: palette.neutralSecondary,\r\n float: 'right',\r\n },\r\n\r\n '& > li': {\r\n padding: '10px 8px 10px 10px',\r\n\r\n '& .new-feature-label': {\r\n display: 'inline-block',\r\n position: 'absolute',\r\n },\r\n },\r\n\r\n '& > li.active': {\r\n fontWeight: 'normal',\r\n border: 0,\r\n backgroundColor: palette.neutralLight,\r\n '& > a.currentActive': {\r\n color: palette.themeDarker,\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .options-view .column-chooser-option-list': {\r\n border: '0px',\r\n borderLeft: `1px solid ${palette.neutralLight}`,\r\n width: '300px',\r\n height: '282px',\r\n\r\n '& .column-chooser-bulk-control': {\r\n padding: '10px 8px 9px 10px',\r\n minHeight: '38px',\r\n\r\n '& .arrow-button': {\r\n display: 'none',\r\n },\r\n },\r\n\r\n '& ul.column-chooser-options': {\r\n height: '243.6px',\r\n\r\n '& span.option-not-selected': {\r\n fontWeight: 'normal',\r\n },\r\n\r\n '& span.option-name': {\r\n display: 'inline-block',\r\n maxWidth: '165px',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n },\r\n\r\n '& .option-status, & a.add-column-link': {\r\n marginLeft: 'auto',\r\n },\r\n },\r\n\r\n '& .column-chooser-editable-picker': {\r\n height: '282px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n '& .custom-column-remove': {\r\n margin: '0px 10px',\r\n },\r\n '& .glyphicon-pencil': {\r\n textDecoration: 'none',\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '&:before': {\r\n fontFamily: 'MsAds MDL2 Assets',\r\n content: '\"\\\\E70F\"',\r\n color: palette.themeDark,\r\n },\r\n },\r\n '& .glyphicon-remove': {\r\n textDecoration: 'none',\r\n '&:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n\r\n '&:before': {\r\n fontFamily: 'MsAds MDL2 Assets',\r\n content: '\"\\\\E711\"',\r\n },\r\n },\r\n '& span.option-status.enabled': {\r\n marginLeft: 'auto',\r\n },\r\n '& a.add-column-link': {\r\n marginLeft: 'auto',\r\n },\r\n '& .inapplicable-column': {\r\n marginLeft: 'auto',\r\n },\r\n '& .column-chooser-bulk-control': {\r\n padding: '0',\r\n minHeight: '38px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n\r\n '& .custom-column-add': {\r\n margin: '8px 8px 0px',\r\n },\r\n\r\n '& .remove-all-in-list, .add-all-in-list': {\r\n padding: '10px 8px 9px 10px',\r\n },\r\n },\r\n '& .invalid-custom-column:focus': {\r\n outline: `1px solid ${palette.neutralSecondary}`,\r\n },\r\n '& .column-chooser-options': {\r\n flex: '1 1 1px',\r\n margin: '0',\r\n '& .option': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n '& .option-name': {\r\n flex: '1',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .column-chooser-selected': {\r\n border: `1px solid ${palette.neutralTertiary}`,\r\n marginLeft: '8px',\r\n width: '300px',\r\n height: '334px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n\r\n '& .column-chooser-selected-header': {\r\n backgroundColor: 'white',\r\n padding: '10px 0px 10px 10px',\r\n width: '298px',\r\n },\r\n\r\n '& .column-chooser-selected-header:before': {\r\n content: 'Test new header',\r\n fontWeight: 'bold',\r\n },\r\n\r\n '& .column-chooser-selected-header:after': {\r\n content: 'Test new subheader',\r\n },\r\n\r\n '& .remove-all-in-selected-list': {\r\n marginLeft: 'auto',\r\n float: 'right',\r\n display: 'inline-block',\r\n paddingTop: '10px',\r\n paddingRight: '10px',\r\n },\r\n\r\n '& .column-chooser-selected-list': {\r\n flex: '1',\r\n overflow: 'auto',\r\n '& .draggable-list-view': {\r\n margin: 0,\r\n height: '100%',\r\n width: '298px',\r\n border: 0,\r\n\r\n '& ul.draggable-list': {\r\n padding: 0,\r\n listStyle: 'none',\r\n height: '100%',\r\n overflow: 'auto',\r\n marginBottom: '0',\r\n\r\n '& li.draggable-list-item': {\r\n border: '1px solid transparent',\r\n padding: '1px 0',\r\n outline: 'none',\r\n\r\n '&:focus': {\r\n border: `1px solid ${palette.neutralTertiary}`,\r\n },\r\n\r\n '& .selected-list-item': {\r\n verticalAlign: 'middle',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n\r\n '& .selected-item-name': {\r\n flex: '1',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n },\r\n\r\n '& .trigger-icon': {\r\n color: '#797775',\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n lineHeight: '19px',\r\n padding: '0px 8px',\r\n position: 'relative',\r\n\r\n '&:after': {\r\n color: palette.themePrimary,\r\n content: '\"\\\\E76F\"',\r\n fontSize: '20px',\r\n },\r\n },\r\n },\r\n\r\n '&.selected, &:focus, &:hover': {\r\n '& .trigger-icon:before': {\r\n content: '\"\\\\F090\\\\F08E\"',\r\n fontSize: '14px',\r\n letterSpacing: '3px',\r\n marginTop: '-6px',\r\n position: 'absolute',\r\n writingMode: 'vertical-lr',\r\n },\r\n },\r\n\r\n '&.selected': {\r\n backgroundColor: palette.neutralLight,\r\n\r\n '& .trigger-icon:before': {\r\n color: palette.neutralPrimary,\r\n },\r\n },\r\n },\r\n\r\n '& li.draggable-list-item.draggable-list__item-locked': {\r\n height: '36px',\r\n padding: '0px',\r\n backgroundColor: 'white',\r\n\r\n '& .selected-list-item': {\r\n margin: '8px 8px 9px 36px',\r\n },\r\n },\r\n\r\n '& li.draggable-list-item.draggable-list__item-draggable': {\r\n height: '36px',\r\n padding: '0px',\r\n backgroundColor: 'white',\r\n\r\n '& .selected-list-item': {\r\n margin: '8px 8px 9px 0px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& .save-column-view': {\r\n '& .save-checkbox': {\r\n '& label+input': {\r\n marginLeft: '13px',\r\n },\r\n\r\n '& .column-chooser-save-column': {\r\n float: 'left',\r\n\r\n '& .save-column-checkbox': {\r\n height: '20px',\r\n width: '20px',\r\n },\r\n '& input[type=\"checkbox\"]': {\r\n marginRight: '8px',\r\n },\r\n },\r\n\r\n '& .column-chooser-saved-name': {\r\n height: '32px',\r\n width: '250px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const getNewFeatureLabelStyle = ({ palette = {} }) => ({\r\n '& .new-feature-label': {\r\n color: palette.white,\r\n border: `1px solid ${palette.white}`,\r\n padding: '0 9px',\r\n fontSize: '12px',\r\n borderRadius: '12px',\r\n backgroundColor: palette.orange,\r\n marginLeft: '5px',\r\n },\r\n});\r\n","export const filterEditorStyle = {\r\n '& .predicate-row': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .filter-editor .panel': {\r\n backgroundColor: 'white',\r\n paddingBottom: '15px',\r\n border: '1px solid transparent',\r\n borderRadius: 0,\r\n boxShadow: '0 1px 1px rgba(0,0,0,0.05)',\r\n marginBottom: '15px',\r\n },\r\n '& .filter-body.filter-editor .save-form input[type=\"checkbox\"]': {\r\n marginRight: '5px',\r\n marginTop: 0,\r\n },\r\n '& .filter-body.filter-editor .save-form .btn + .btn': {\r\n marginLeft: '10px',\r\n },\r\n '& .filter-body.filter-editor .save-form .btn + .checkbox': {\r\n marginLeft: '15px',\r\n },\r\n '& .filter-body.filter-editor .save-form .checkbox label + input': {\r\n marginLeft: '10px',\r\n },\r\n '& .predicate-list li': {\r\n marginBottom: '5px',\r\n },\r\n '& .predicate-list li .error-row': {\r\n marginTop: '5px',\r\n },\r\n '& .predicate-list li .error-row label': {\r\n fontWeight: '500',\r\n fontSize: '12px',\r\n lineHeight: '16px',\r\n color: '#a80000',\r\n },\r\n '& .predicate-list li .predicate-row .filter-predicate-property': {\r\n position: 'relative',\r\n display: 'inline-block',\r\n },\r\n '& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default': {\r\n textAlign: 'right',\r\n minWidth: '205px',\r\n },\r\n '& .predicate-list li .predicate-row .filter-predicate-property > .btn.btn-default > .selected': {\r\n float: 'left',\r\n },\r\n '& .predicate-list li .predicate-row .filter-predicate-property + .predicate-operator': {\r\n marginLeft: '10px',\r\n },\r\n '& .predicate-list li .predicate-row .form-control': {\r\n display: 'inline-block',\r\n },\r\n '& .predicate-list li .predicate-row > * + *': {\r\n marginLeft: '4px',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-property': {\r\n width: '15em',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-operator': {\r\n width: '15em',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-operator + .predicate-value': {\r\n marginLeft: '10px',\r\n '& .checkbox-inline, & .checkbox-inline + .checkbox-inline, & .radio-inline, & .radio-inline + .radio-inline': {\r\n marginLeft: 0,\r\n marginRight: '10px',\r\n },\r\n '& .checkbox-inline:last-child, & .radio-inline:last-child': {\r\n marginRight: 0,\r\n },\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value': {\r\n display: 'inline-block',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value > input': {\r\n width: 'inherit',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value + .remove': {\r\n marginLeft: '16px',\r\n height: '32px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value button.selector-dropdown-button': {\r\n backgroundColor: '#fff',\r\n border: '0',\r\n },\r\n '& .predicate-list li .predicate-row .predicate-value .selector.dropdown-menu': {\r\n marginLeft: '-1px',\r\n border: '1px solid #ccc',\r\n },\r\n '& .predicate-list li .predicate-row .single-operator-column, & .predicate-list li .predicate-row .single-property-column': {\r\n display: 'inline-block',\r\n marginTop: '4px',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu': {\r\n minWidth: '150px',\r\n position: 'relative',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu li': {\r\n marginBottom: '0',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu > span': {\r\n display: 'inline-block',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu:hover > .dropdown-menu': {\r\n display: 'block',\r\n visibility: 'visible',\r\n },\r\n '& .predicate-list li .predicate-row .dropdown-submenu .spritedimage': {\r\n marginTop: '2px',\r\n },\r\n '& .predicate-list li .predicate-row .btn .caret': {\r\n marginLeft: '5px',\r\n },\r\n '& .filter-header': {\r\n display: 'inline-block',\r\n },\r\n '& .filter-header .filter-button': {\r\n padding: '7px 10px',\r\n display: 'inline-block',\r\n },\r\n '& .filter-header .filter-button:hover': {\r\n backgroundColor: '#e5e5e5',\r\n cursor: 'pointer',\r\n },\r\n '& .filter-header .glyphicon-filter': {\r\n marginRight: '6px',\r\n },\r\n '& .filter-header .filterMenu': {\r\n border: '1px solid #CCCCCC',\r\n minWidth: '250px',\r\n padding: '2px',\r\n },\r\n '& .filter-header .filterMenu .saved': {\r\n marginBottom: '2px',\r\n },\r\n '& .filter-header .filterMenu .new, & .filter-header .filterMenu .apply': {\r\n display: 'block',\r\n color: '#404040',\r\n padding: '4px 0 4px 20px',\r\n },\r\n '& .filter-header .filterMenu .new:hover, & .filter-header .filterMenu .apply:hover, & .filter-header .filterMenu .saved>li:hover': {\r\n textDecoration: 'none',\r\n backgroundColor: '#EAECEE',\r\n },\r\n '& .filter-header .filterMenu .delete': {\r\n color: '#404040',\r\n padding: '4px 4px 4px',\r\n float: 'right',\r\n clear: 'right',\r\n },\r\n '& .filter-header .filterMenu .apply-header': {\r\n color: '#929fad',\r\n padding: '6px 0 4px 9px',\r\n },\r\n '& .filter-header .quick': {\r\n minWidth: '151px',\r\n borderWidth: '1px',\r\n borderStyle: 'solid',\r\n borderColor: '#ccc',\r\n backgroundColor: '#FFFFFF',\r\n display: 'inline-block',\r\n },\r\n '& .filter-header .quick .quick-text': {\r\n padding: '3px 5px',\r\n border: 'none',\r\n },\r\n '& .filter-header .quick .quick-text:active': {\r\n border: 'none',\r\n },\r\n '& .filter-body .save-form': {\r\n marginTop: '25px',\r\n },\r\n '& .filter-body .save-form h5.checkbox': {\r\n marginLeft: '15px',\r\n },\r\n '& .filter-body .save-form .name': {\r\n width: '300px',\r\n },\r\n '& .grid-toolbar-bar': {\r\n fontSize: 12,\r\n },\r\n '& .predicate-list>ul': {\r\n marginBottom: '10px',\r\n },\r\n '& .predicate-list>ul>li.row': {\r\n marginBottom: '4px',\r\n },\r\n '& .predicate-list>ul>li.row>div': {\r\n paddingLeft: '2px',\r\n paddingRight: '2px',\r\n },\r\n '& .predicate-list>ul>li.row .operator-single': {\r\n lineHeight: '25px',\r\n marginLeft: '10px',\r\n marginBottom: '0',\r\n },\r\n '& .predicate-list>ul>li.row .dropdown .dropdown-control .glyphicon-triangle-bottom': {\r\n float: 'right',\r\n marginTop: '1px',\r\n },\r\n '& .predicate-list>ul>li.row .dropdown .dropdown-menu': {\r\n border: '1px solid #BBB',\r\n padding: '3px 5px',\r\n },\r\n '& .predicate-list>ul>li.row span.datepicker': {\r\n padding: '0',\r\n margin: '0',\r\n border: '0',\r\n },\r\n '& .predicate-list>ul>li.row ul.enum-options>li': {\r\n whiteSpace: 'nowrap',\r\n },\r\n '& .predicate-list>ul>li.row ul.enum-options>li input[type=\"checkbox\"]': {\r\n marginTop: '0',\r\n },\r\n '& .predicate-list a.remove, & .predicate-list a.new': {\r\n lineHeight: '20px',\r\n textDecoration: 'none',\r\n color: '#323130',\r\n fontSize: 12,\r\n },\r\n '& ol, & ul': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n },\r\n};\r\n","export const getFilterEditorOverrideStyle = palette => ({\r\n '& .filter-editor': {\r\n '& .save-form .checkbox label': {\r\n display: 'inline-block',\r\n },\r\n '& .panel-body': {\r\n paddingLeft: '32px',\r\n lineHeight: '19px',\r\n marginBottom: '28px',\r\n },\r\n '& .glyphicon-remove:before': {\r\n // eslint-disable-next-line no-useless-escape\r\n content: '\"\\\\E711\"',\r\n },\r\n '& .glyphicon': {\r\n display: 'inline-block',\r\n 'font-family': 'MsAds MDL2 Assets',\r\n 'font-size': '14px',\r\n 'font-style': 'normal',\r\n '-webkit-font-smoothing': 'antialiased',\r\n '-moz-osx-font-smoothing': 'grayscale',\r\n },\r\n '& .glyphicon.glyphicon-remove': {\r\n top: 0,\r\n },\r\n '& .glyphicon.glyphicon-plus': {\r\n marginRight: 8,\r\n height: 14,\r\n width: 14,\r\n fontFamily: 'MsAds MDL2 Assets',\r\n color: palette.themePrimary,\r\n top: 2,\r\n },\r\n '& .glyphicon-plus:before': {\r\n content: '\"\\\\E710\" !important',\r\n },\r\n '& .delivery-status-category-container:first-of-type': {\r\n float: 'left',\r\n marginLeft: '20px',\r\n display: 'inline-block',\r\n marginTop: 0,\r\n },\r\n\r\n '& .delivery-status-category-container + .delivery-status-category-container': {\r\n paddingLeft: 20,\r\n float: 'left',\r\n },\r\n '& .predicate-row': {\r\n alignItems: 'end',\r\n },\r\n '& .filter_button': {\r\n marginTop: 2,\r\n },\r\n },\r\n});\r\n","// Styles for legacy filter bar to make it looks like New UI, no need to use it for new filter bar\r\nexport const getLegacyFilterBarStyle = ({ palette }) => ({\r\n '& .filter-bar': {\r\n '& .panel-component': {\r\n backgroundColor: palette.neutralLighter,\r\n marginBottom: '0 !important',\r\n minHeight: 56,\r\n minWidth: 1000,\r\n lineHeight: '24px',\r\n padding: '15px 10px',\r\n\r\n '& .panel-body': {\r\n padding: 0,\r\n\r\n '& .filter_title_collapsed': {\r\n marginRight: 35,\r\n },\r\n\r\n '& .filter_row_readonly .humanized': {\r\n '& .column, & .filter_operator': {\r\n marginRight: 5,\r\n },\r\n\r\n '& .filterValue': {\r\n fontWeight: 600,\r\n },\r\n\r\n '& .filterand': {\r\n display: 'inline-block',\r\n width: 20,\r\n },\r\n },\r\n\r\n '& .filter_links': {\r\n marginLeft: 40,\r\n\r\n '& a': {\r\n display: 'inline-block',\r\n textDecoration: 'none',\r\n\r\n '&:nth-child(2n)': {\r\n fontWeight: 600,\r\n marginRight: 30,\r\n color: palette.neutralPrimary,\r\n },\r\n\r\n '&:last-child': {\r\n marginRight: 0,\r\n },\r\n },\r\n },\r\n\r\n '& .filter_title_collapsed, & .filter_row_readonly, & .filter_links': {\r\n display: 'inline-block',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { getSharedBodyStyles } from './body';\r\nimport { getSharedColGroupStyles } from './col-group';\r\nimport { getSharedColumnsStyles } from './columns';\r\nimport { getSharedFooterStyles } from './footer';\r\nimport { getSharedGlobalStyles } from './global';\r\nimport { getSharedHeaderStyles } from './header';\r\nimport { getSharedTableStyles } from './table';\r\nimport * as variables from './variables';\r\n\r\nexport const GridSharedStyles = {\r\n getSharedBodyStyles,\r\n getSharedColGroupStyles,\r\n getSharedColumnsStyles,\r\n getSharedFooterStyles,\r\n getSharedGlobalStyles,\r\n getSharedHeaderStyles,\r\n getSharedTableStyles,\r\n variables,\r\n};\r\n","import { totalRowBackgroundColor, tableBorder } from './variables';\r\n\r\nexport const getSharedBodyStyles = (components, { palette }) => ({\r\n '& tr.segment-row': {\r\n fontSize: '12px',\r\n\r\n // Need this so values in primary key will stay 12px\r\n '& .segment-value': {\r\n fontSize: '12px',\r\n },\r\n },\r\n // The total rows at the bottom of the table\r\n '& tr.aggregate-row': {\r\n '& td': {\r\n fontSize: '12px !important',\r\n },\r\n },\r\n '& tr.aggregated-row': {\r\n '& td': {\r\n fontSize: '12px !important',\r\n backgroundColor: totalRowBackgroundColor,\r\n },\r\n '&:hover': { // No hover color changes for aggregated rows.\r\n '& td': {\r\n fontSize: '12px !important',\r\n borderRight: tableBorder,\r\n },\r\n },\r\n },\r\n '& tr': {\r\n backgroundColor: '#FFFFFF',\r\n color: palette.neutralPrimary,\r\n\r\n // hide extra border between header and body, the first filler tr in grid need to be excluded\r\n '&[data-key]:first-child, &:not([data-key]) + tr[data-key]': {\r\n '& td': {\r\n borderTop: 'none',\r\n },\r\n },\r\n\r\n '&[data-key]:hover, &.row-selected[data-key], &.row-selected[data-key]:hover': {\r\n '& td': {\r\n borderBottom: '1px solid #FFFFFF',\r\n },\r\n },\r\n\r\n '&:hover': {\r\n backgroundColor: palette.neutralLighter,\r\n },\r\n\r\n '&.row-selected': {\r\n backgroundColor: palette.neutralLight,\r\n '& td a': {\r\n color: palette.themeDarker,\r\n fontWeight: 600,\r\n },\r\n '&:hover': {\r\n backgroundColor: palette.neutralQuaternaryAlt,\r\n },\r\n },\r\n\r\n '&:hover, &.row-selected, &.row-selected:hover': {\r\n '& td': {\r\n borderRight: '1px solid #FFFFFF',\r\n },\r\n },\r\n\r\n '&.grid-error-row': {\r\n '& td': {\r\n '& ul.grid-error-list': {\r\n listStyle: 'none',\r\n paddingLeft: 0,\r\n margin: '0.5em 0',\r\n color: '#A80000',\r\n '& .grid-error': {\r\n paddingRight: 5,\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import { PagePadding } from '../../constants/pagePadding';\r\n\r\nexport const headerRowBackgroundColor = '#FFFFFF';\r\nexport const headerRowBorderTop = '2px solid #81868B';\r\nexport const headerRowBorderBottom = '2px solid #81868B';\r\nexport const totalRowBackgroundColor = '#FFFFFF';\r\nexport const totalRowBorderTop = 'none'; // `1px solid ${palette.neutralLighter}`\r\nexport const tableBorder = '1px solid #EDEBE9';\r\n\r\nexport const gridPaddingLeft = PagePadding.mainSectionLeftPadding;\r\nexport const gridPaddingComponsation = 0; // These two should add up to 32px\r\n","// use this in '& col'\r\nexport const getSharedColGroupStyles = () => ({\r\n width: 120,\r\n minWidth: 120,\r\n\r\n '&.col-selection': {\r\n width: 46,\r\n minWidth: 46,\r\n },\r\n});\r\n","/* eslint-disable max-len */\r\nimport { tableBorder } from './variables';\r\n\r\nexport const getSharedColumnsStyles = () => ({\r\n '&': {\r\n padding: '6px 8px',\r\n verticalAlign: 'middle',\r\n border: tableBorder, // NOTE: updated from 'palette.neutralLighter' for fit and finish experiments\r\n fontSize: '12px',\r\n overflowWrap: 'break-word',\r\n },\r\n\r\n '&:first-child': {\r\n paddingLeft: '12px',\r\n },\r\n\r\n '& span': {\r\n lineHeight: '16px',\r\n },\r\n});\r\n","import { gridPaddingComponsation } from './variables';\r\n\r\nexport const getSharedFooterStyles = () => ({\r\n '& tr.noborder': {\r\n '& td': {\r\n border: 'none',\r\n paddingLeft: '0px',\r\n paddingTop: '24px',\r\n '& .pagination-control': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginTop: '5px',\r\n marginBottom: '5px',\r\n marginLeft: gridPaddingComponsation,\r\n\r\n '& .form-control.page-size-selector': {\r\n marginLeft: '5px',\r\n minWidth: '60px',\r\n },\r\n '& .pager': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginTop: '0',\r\n marginBottom: '0',\r\n marginLeft: '20px',\r\n '& .nav-button': {\r\n border: 'none',\r\n padding: '0',\r\n minWidth: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n '&.prev': {\r\n marginRight: '10px',\r\n '& + .text': {\r\n display: 'none', // to hide text \"Page:\"\r\n },\r\n },\r\n '&.next': {\r\n marginLeft: '10px',\r\n },\r\n '&:disabled': {\r\n backgroundColor: '#fff',\r\n },\r\n },\r\n '& .page-number-input': {\r\n marginRight: '5px',\r\n width: '75px',\r\n },\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","export const getSharedGlobalStyles = (components, { palette }) => ({\r\n '.bingadsgrid': {\r\n '& .grid-noresult, & .grid-noresult-empty, & .noresult': {\r\n color: palette.neutralSecondary,\r\n fontSize: 26,\r\n lineHeight: '36px',\r\n padding: '20px 0 20px 40px',\r\n },\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-left': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-left::before': {\r\n content: '\"\\\\E76B\"',\r\n color: palette.neutralSecondary,\r\n },\r\n '.table-container .btn:disabled .glyphicon.glyphicon-triangle-left::before': {\r\n color: '#BEBBB8',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-right': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-right::before': {\r\n content: '\"\\\\E76C\"',\r\n color: palette.neutralSecondary,\r\n },\r\n '.table-container .btn:disabled .glyphicon.glyphicon-triangle-right::before': {\r\n color: '#BEBBB8',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-bottom': {\r\n fontFamily: '\"MsAds MDL2 Assets\"',\r\n },\r\n '.table-container .glyphicon.glyphicon-triangle-bottom::before': {\r\n content: '\"\\\\E70D\"',\r\n color: palette.neutralSecondary,\r\n },\r\n '.table-container .btn:disabled .glyphicon.glyphicon-triangle-bottom::before': {\r\n color: '#BEBBB8',\r\n },\r\n});\r\n","import { tableBorder, totalRowBorderTop, totalRowBackgroundColor, headerRowBorderBottom, headerRowBackgroundColor, headerRowBorderTop } from './variables';\r\n\r\nexport const getSharedHeaderStyles = (components, { palette, iconFontFamily = 'MsAds MDL2 Assets' }) => ({\r\n '& tr.aggregated-row': {\r\n '& th': {\r\n fontSize: '12px',\r\n },\r\n },\r\n '& tr.overall-total-row': {\r\n '& th': {\r\n fontWeight: 'normal',\r\n borderTop: totalRowBorderTop,\r\n borderBottom: tableBorder,\r\n backgroundColor: totalRowBackgroundColor,\r\n },\r\n },\r\n '& tr': {\r\n '& th.column-header': {\r\n borderTop: headerRowBorderTop,\r\n borderBottom: headerRowBorderBottom,\r\n '& .helpbutton::before': {\r\n position: 'static',\r\n },\r\n\r\n '& span.grid-header-text': {\r\n overflowWrap: 'break-word',\r\n wordBreak: 'break-word',\r\n },\r\n '& span.grid-header-helpId': {\r\n lineHeight: 1,\r\n },\r\n },\r\n '& th': {\r\n verticalAlign: 'middle',\r\n fontWeight: '600',\r\n backgroundColor: headerRowBackgroundColor,\r\n color: palette.neutralPrimary,\r\n border: tableBorder,\r\n padding: '6px 8px',\r\n },\r\n\r\n '& th:first-child': {\r\n paddingLeft: '12px',\r\n },\r\n\r\n // we don't want pop first column header to have special padding left\r\n '&.pop-enabled + tr.pop-enabled th:first-child': {\r\n paddingLeft: '10px',\r\n },\r\n\r\n '& th.column-header-sortable': {\r\n cursor: 'pointer',\r\n },\r\n\r\n '&.grid-cross-page-select-all': {\r\n '& th': {\r\n padding: '0',\r\n border: 'none',\r\n },\r\n },\r\n '& .glyphicon': {\r\n fontFamily: iconFontFamily,\r\n },\r\n '& .glyphicon-arrow-up:before': {\r\n content: '\"\\\\EE68\"',\r\n },\r\n '& .glyphicon-arrow-down:before': {\r\n content: '\"\\\\EE69\"',\r\n },\r\n\r\n // this temporary style for grid POP before we got UI from designer\r\n '& th span.pop-toggle-icon.clickable': {\r\n height: '14px',\r\n width: '14px',\r\n border: '1px solid transparent',\r\n display: 'inline-block',\r\n float: 'none',\r\n marginTop: '3px',\r\n\r\n '&:hover': {\r\n border: '1px solid black',\r\n },\r\n\r\n '& span': {\r\n display: 'block',\r\n fontSize: '10px',\r\n fontFamily: iconFontFamily,\r\n fontWeight: 'bold',\r\n '-webkit-font-smoothing': 'antialiased',\r\n height: '12px',\r\n lineHeight: '12px',\r\n textAlign: 'center',\r\n width: '12px',\r\n\r\n '&.pop-expand:before': {\r\n content: '\"\\\\E710\"',\r\n color: 'black',\r\n },\r\n\r\n '&.pop-collapse:before': {\r\n content: '\"\\\\E738\"',\r\n color: 'black',\r\n },\r\n },\r\n },\r\n },\r\n\r\n '& tr.pop-enabled th.column-header.pop-column-header > div.column-header-container': {\r\n display: 'inline-block',\r\n },\r\n});\r\n","export const getSharedTableStyles = (components, { palette }) => ({\r\n '&': {\r\n borderLeft: 'none',\r\n borderRight: 'none',\r\n borderBottom: 'none',\r\n },\r\n '& .glyphicon': {\r\n position: 'static',\r\n },\r\n\r\n '& .iconba': {\r\n position: 'static',\r\n },\r\n\r\n '& .grid-disabled': {\r\n color: palette.neutralSecondaryAlt,\r\n },\r\n});\r\n","// Export themes here\r\nexport { ThemeFluent } from './theme-fluent';\r\nexport { DarkTheme } from './dark-theme';\r\n","import { createTheme, CommunicationColors, NeutralColors, SharedColors, Depths } from '@fluentui/react';\r\n\r\nexport const ThemeFluent = createTheme({\r\n palette: {\r\n neutralDark: NeutralColors.gray190,\r\n neutralPrimary: NeutralColors.gray160,\r\n neutralPrimaryAlt: NeutralColors.gray150,\r\n neutralSecondary: NeutralColors.gray130,\r\n neutralSecondaryAlt: NeutralColors.gray110,\r\n neutralTertiary: NeutralColors.gray90,\r\n neutralTertiaryAlt: NeutralColors.gray60,\r\n neutralQuaternary: NeutralColors.gray50,\r\n neutralQuaternaryAlt: NeutralColors.gray40,\r\n neutralLight: NeutralColors.gray30,\r\n neutralLighter: NeutralColors.gray20,\r\n neutralLighterAlt: NeutralColors.gray10,\r\n themeDark: CommunicationColors.shade20,\r\n themeDarker: CommunicationColors.shade30,\r\n themeDarkAlt: CommunicationColors.shade10,\r\n themeLight: CommunicationColors.tint20,\r\n themeLighter: CommunicationColors.tint30,\r\n themeLighterAlt: CommunicationColors.tint40,\r\n themePrimary: CommunicationColors.primary,\r\n themeSecondary: CommunicationColors.tint10,\r\n themeTertiary: '#71afe5',\r\n // Shared Colors\r\n red: SharedColors.red10,\r\n redDark: SharedColors.red20,\r\n black: '#000000',\r\n white: '#ffffff',\r\n // MS Ads\r\n globalBackground: '#2f2f2f',\r\n mainMenuHoverBackground: '#484644',\r\n },\r\n effects: {\r\n roundedCorner2: '2px',\r\n elevation4: Depths.depth4,\r\n elevation8: Depths.depth8,\r\n elevation16: Depths.depth16,\r\n elevation64: Depths.depth64,\r\n },\r\n});\r\n\r\nThemeFluent.iconFontFamily = 'MsAds MDL2 Assets';\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__66__;","import { createTheme, Depths } from '@fluentui/react';\r\n\r\nexport const DarkTheme = createTheme({\r\n palette: {\r\n themePrimary: '#88b0cf',\r\n themeLighterAlt: '#050708',\r\n themeLighter: '#161c21',\r\n themeLight: '#29353e',\r\n themeTertiary: '#526a7c',\r\n themeSecondary: '#789bb6',\r\n themeDarkAlt: '#93b7d3',\r\n themeDark: '#a2c2da',\r\n themeDarker: '#b8d1e4',\r\n neutralLighterAlt: '#201f1e',\r\n neutralLighter: '#2A2A29',\r\n neutralLight: '#30302F',\r\n neutralQuaternaryAlt: '#1c1b1b',\r\n neutralQuaternary: '#1b1a19',\r\n neutralTertiaryAlt: '#1a1918',\r\n neutralTertiary: '#f5f9fd',\r\n neutralSecondary: '#f6fafe',\r\n neutralPrimaryAlt: '#f8fbfe',\r\n neutralPrimary: '#eff6fc',\r\n neutralDark: '#fbfdfe',\r\n black: '#fdfeff',\r\n white: '#201f1e',\r\n },\r\n\r\n effects: {\r\n roundedCorner2: '2px',\r\n elevation4: Depths.depth4,\r\n elevation8: Depths.depth8,\r\n elevation16: Depths.depth16,\r\n elevation64: Depths.depth64,\r\n },\r\n});\r\n\r\nDarkTheme.iconFontFamily = 'MsAds MDL2 Assets';\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__37__;","\r\n\r\nexport { singleton as PageReady } from './src/index';\r\n","import PageReady from './page-ready';\r\n\r\nexport const singleton = new PageReady();\r\n","import Promise from 'bluebird';\r\n\r\nconst GLOBAL_PAGE = '';\r\n\r\nexport default class PageReady {\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n this.p$pagesReady = {};\r\n this.resolvePageReadyCbs = {};\r\n }\r\n\r\n /**\r\n * Mark the page as ready. This will resolve the promise\r\n * and initialize all the delayed components.\r\n * @param {String} pageName page name, default is global/any page\r\n * @returns {void}\r\n */\r\n pageIsReady(pageName = GLOBAL_PAGE) {\r\n this.lazyInitializePromise(pageName);\r\n this.resolvePageReadyCbs[pageName]();\r\n\r\n // Also mark the global page as ready if any page is ready\r\n if (pageName !== GLOBAL_PAGE && this.resolvePageReadyCbs[GLOBAL_PAGE]) {\r\n this.resolvePageReadyCbs[GLOBAL_PAGE]();\r\n }\r\n }\r\n\r\n /**\r\n * Returns a promise that will resolve when the page is ready.\r\n * Listeners can use this function to delay execution until the page is ready.\r\n * @param {String} pageName page name, default is global/any page\r\n * @returns {Promise} - Promise that is resolved when the page is marked as ready.\r\n */\r\n afterPageReady(pageName = GLOBAL_PAGE) {\r\n this.lazyInitializePromise(pageName);\r\n return this.p$pagesReady[pageName];\r\n }\r\n\r\n /**\r\n * Lazily create the promise if it doesn't already exist\r\n * @private\r\n * @param {String} pageName page name, default is global/any page\r\n * @returns {void}\r\n */\r\n lazyInitializePromise(pageName = GLOBAL_PAGE) {\r\n if (this.p$pagesReady[pageName]) {\r\n return;\r\n }\r\n this.p$pagesReady[pageName] = new Promise((res) => {\r\n this.resolvePageReadyCbs[pageName] = res;\r\n });\r\n\r\n // Also initialize the global promise since it's tied to any page\r\n if (pageName !== GLOBAL_PAGE && !this.p$pagesReady[GLOBAL_PAGE]) {\r\n this.p$pagesReady[GLOBAL_PAGE] = new Promise((res) => {\r\n this.resolvePageReadyCbs[GLOBAL_PAGE] = res;\r\n });\r\n }\r\n }\r\n}\r\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"underscore\"), require(\"urijs\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"underscore\", \"urijs\", \"jquery\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"underscore\"), require(\"urijs\"), require(\"jquery\")) : factory(root[\"underscore\"], root[\"urijs\"], root[\"jquery\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__10__, __WEBPACK_EXTERNAL_MODULE__99__) {\nreturn ","import getAriaConfig from './src/ariaConfig';\r\nimport campaignLogTableConfig from './src/log-table-configs/campaign';\r\nimport adInsightLogTableConfig from './src/log-table-configs/adinsight';\r\nimport { ContextProcessor } from './src/log-processors/context-processor';\r\nimport { DebugProcessor } from './src/log-processors/debug-processor';\r\nimport { PerfTimingProcessor } from './src/log-processors/perf-timing-processor';\r\nimport { BasicFormatter } from './src/log-formatters/basic-formatter';\r\nimport { ApiFormatter } from './src/log-formatters/api-formatter';\r\nimport { AdInsightOpportunityLogFormatter } from './src/log-formatters/adinsight-opportunity-log-formatter';\r\nimport { ReportingApiFormatter } from './src/log-formatters/reporting-api-formatter';\r\nimport { UetTagHelperFormatter } from './src/log-formatters/uettaghelper-formatter';\r\nimport { ImportApiFormatter } from './src/log-formatters/import-api-formatter';\r\nimport { ConsoleFormatter } from './src/log-formatters/console-formatter';\r\nimport { PerformanceLogsFormatter } from './src/log-formatters/perf-timing-formatter';\r\nimport { LogLevelFilter } from './src/log-filters/log-level-filter';\r\nimport { ApiFilter } from './src/log-filters/api-filter';\r\nimport { AdInsightOpportunityApiFilter } from './src/log-filters/adinsight-opportunity-api-filter';\r\nimport { ConsoleFilter } from './src/log-filters/console-filter';\r\nimport { UnloadLogFilter } from './src/log-filters/unload-log-filter';\r\nimport { PerformanceLogsFilter } from './src/log-filters/perf-timing-filter';\r\nimport { OdataErrorMapper } from './src/ajax-error-mappers/odata-error-mapper';\r\nimport { CampaignApiErrorMapper } from './src/ajax-error-mappers/campaignapi-error-mapper';\r\nimport { UrlErrorMapper } from './src/ajax-error-mappers/url-error-mapper';\r\nimport { isTestEnvironment } from './src/utilities/environment-helper';\r\nimport { retrieveLocalStorageLogs } from './src/local-storage-log-retriever';\r\nimport { odataErrorCodes, campaignApiErrorCodes, invalidDomains } from './src/utilities/default-error-codes';\r\n\r\nexport {\r\n getAriaConfig,\r\n campaignLogTableConfig,\r\n adInsightLogTableConfig,\r\n ContextProcessor,\r\n DebugProcessor,\r\n PerfTimingProcessor,\r\n BasicFormatter,\r\n ApiFormatter,\r\n AdInsightOpportunityLogFormatter,\r\n ReportingApiFormatter,\r\n UetTagHelperFormatter,\r\n ConsoleFormatter,\r\n PerformanceLogsFormatter,\r\n ImportApiFormatter,\r\n LogLevelFilter,\r\n ApiFilter,\r\n AdInsightOpportunityApiFilter,\r\n ConsoleFilter,\r\n UnloadLogFilter,\r\n PerformanceLogsFilter,\r\n OdataErrorMapper,\r\n CampaignApiErrorMapper,\r\n UrlErrorMapper,\r\n isTestEnvironment,\r\n retrieveLocalStorageLogs,\r\n odataErrorCodes,\r\n campaignApiErrorCodes,\r\n invalidDomains,\r\n};\r\n","import _ from 'underscore';\r\nimport { getDefaultConfig } from './default-config';\r\nimport { LoggingService } from './logging-service';\r\nimport { LogTransmitter } from './log-transmitter';\r\n\r\n/**\r\n * Class representing Instrumentation\r\n */\r\nexport class Instrumentation {\r\n /**\r\n * Create an instance of Instrumentation\r\n * @param {object} config - should contain a config of loggers/processors/listeners:\r\n * loggers - specify custom loggers to override or add to the default trace, perf, error loggers.\r\n * processors - specify custom log processors to modify or enrich the logs.\r\n * listeners - specify listeners to write logs to.\r\n * isDebugMode - specify if it's in debug mode or not. Default to false. It will throw error\r\n * if (scenario, activity) pair has already been registered before in debug mode\r\n */\r\n constructor(config = {}) {\r\n this.setup(config);\r\n\r\n // scenarioContext maintains the current scenario in use.\r\n this.scenarioContext = {};\r\n\r\n this.initTransmissionService(this.scenarioContext);\r\n\r\n this.initLoggingService();\r\n }\r\n\r\n setup(config) {\r\n const defaultConfig = getDefaultConfig();\r\n this.loggers = _.defaults(config.loggers || {}, defaultConfig.loggers);\r\n this.processors = _.defaults(config.processors || {}, defaultConfig.processors);\r\n this.listeners = _.defaults(config.listeners || {}, defaultConfig.listeners);\r\n this.isDebugMode = config.isDebugMode || defaultConfig.isDebugMode;\r\n\r\n window.addEventListener('unload', () => this.stop());\r\n }\r\n\r\n stop() {\r\n this.beforeStop();\r\n this.logTransmitter.stop();\r\n }\r\n\r\n initTransmissionService(scenarioContext) {\r\n this.logTransmitter = new LogTransmitter({\r\n scenarioContext,\r\n processors: this.processors,\r\n listeners: this.listeners,\r\n });\r\n this.writeRawLog = rawLogs => this.logTransmitter.transmit(rawLogs);\r\n }\r\n\r\n initLoggingService() {\r\n _.each(this.loggers, (logger) => {\r\n logger.logTransmitter = this.logTransmitter; // eslint-disable-line no-param-reassign\r\n });\r\n this.loggingService = new LoggingService({\r\n loggers: this.loggers,\r\n isDebugMode: this.isDebugMode,\r\n });\r\n }\r\n\r\n /**\r\n * adds specified scenarios on to the instrumentation instance\r\n * @param {object} scenarioSchema - schema that specifies the scenarios to be added\r\n * @returns {Instrumentation} - return self for chaining\r\n */\r\n addScenario(scenarioSchema) {\r\n _.extend(this, this.loggingService.parseSchema(scenarioSchema));\r\n return this;\r\n }\r\n\r\n /**\r\n * add simple scenario and activity for one time use\r\n * @param {object} scenarioContext - scenario context such as name, parentScenario\r\n * @returns {object} - activity instance ready to call logger methods\r\n * usage would be: instrumentation.createScenarioAndActivity(\"scenario\", \"activity\")\r\n * DO NOT use this if the scenario is created multiple times, in which case\r\n * the scenarioId would be different\r\n * .signal(\"something happened\")\r\n */\r\n createScenarioAndActivity(scenarioContext) {\r\n const { parentScenario, scenarioName, activityName } = scenarioContext;\r\n\r\n // build the scenario schema with activity\r\n const schema = {\r\n scenario: [\r\n {\r\n name: scenarioName,\r\n value: scenarioName,\r\n activity: activityName ? [\r\n activityName,\r\n ] : [],\r\n },\r\n ],\r\n };\r\n this.addScenario(schema);\r\n const scenario = this[scenarioName].create(parentScenario);\r\n const activity = activityName ? scenario[activityName].create() : undefined;\r\n return {\r\n scenario,\r\n activity,\r\n };\r\n }\r\n\r\n /**\r\n * add simple scenario and activity for one time use\r\n * @param {object} scenarioContext - scenario context such as name, parentScenario\r\n * @returns {object} - scenario instance\r\n */\r\n createScenario(scenarioContext) {\r\n return this.createScenarioAndActivity(scenarioContext).scenario;\r\n }\r\n\r\n /**\r\n * method for custom logic to be run before the instrumentation service exits\r\n * can be overridden\r\n * @returns {undefined} - no returns\r\n */\r\n beforeStop() {\r\n _.noop();\r\n }\r\n\r\n get ScenarioContext() {\r\n return this.scenarioContext;\r\n }\r\n}\r\n","import { TraceLogger } from './loggers/trace-logger';\r\nimport { PerfLogger } from './loggers/perf-logger';\r\nimport { ErrorLogger } from './loggers/error-logger';\r\nimport { AjaxLogger } from './loggers/ajax-logger';\r\nimport { ScenarioProcessor } from './processors/scenario-processor';\r\nimport { SubstrateLogger } from './loggers/substrate-logger';\r\n\r\nexport function getDefaultConfig() {\r\n // default loggers\r\n const traceLogger = new TraceLogger();\r\n const perfLogger = new PerfLogger();\r\n const errorLogger = new ErrorLogger();\r\n const ajaxLogger = new AjaxLogger();\r\n const substrateLogger = new SubstrateLogger();\r\n\r\n // default processors\r\n const scenarioProcessor = new ScenarioProcessor();\r\n\r\n return {\r\n isDebugMode: false,\r\n loggers: {\r\n traceLogger, errorLogger, perfLogger, ajaxLogger, substrateLogger,\r\n },\r\n processors: { scenarioProcessor },\r\n listeners: {},\r\n };\r\n}\r\n\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Default Trace Logger\r\n */\r\nexport class TraceLogger extends Logger {\r\n /**\r\n * trace - logs passed in args as trace logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the trace log method\r\n * @returns {undefined} - no returns\r\n */\r\n trace(scenario, activity, parentScenario, [message, api, requestId, httpMethod, logLevel]) {\r\n super.log({\r\n api,\r\n message,\r\n requestId,\r\n httpMethod,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.TRACE,\r\n logLevel: logLevel || constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['trace'];\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__29__;","export const constants = {\r\n IMPACTUSER: {\r\n True: true,\r\n False: false,\r\n NA: null,\r\n },\r\n LOGLEVEL: {\r\n INFO: {\r\n name: 'Info',\r\n value: 0,\r\n },\r\n DEBUG: {\r\n name: 'Debug',\r\n value: 1,\r\n },\r\n VERBOSE: {\r\n name: 'Verbose',\r\n value: 2,\r\n },\r\n },\r\n LOGCATEGORY: {\r\n PERFORMANCE: 'ClientPerf',\r\n ERROR: 'ApplicationErrorClientScript',\r\n TRACE: 'ClientTrace',\r\n SUBSTRATE: 'Substrate',\r\n },\r\n ENTRYTYPE: {\r\n SCENARIO: 'Scenario',\r\n ACTIVITY: 'Activity',\r\n AJAX: 'Ajax',\r\n AJAXRENDER: 'AjaxRender',\r\n METHOD: 'Method',\r\n MESSAGE: 'Message',\r\n },\r\n};\r\n","/**\r\n * Base Logger\r\n */\r\nexport class Logger {\r\n /**\r\n * log - transmits logs to the log transmitter\r\n * @param {object} rawLogs - raw logs to be transmitted\r\n * @returns {undefined} - no returns\r\n */\r\n log(rawLogs) {\r\n this.transmitter.transmit(rawLogs);\r\n }\r\n\r\n getLogMethods() {\r\n throw new Error('Not Implemented');\r\n }\r\n\r\n set logTransmitter(logTransmitter) {\r\n this.transmitter = logTransmitter;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { getUtcTime, getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Default Perf Logger\r\n */\r\nexport class PerfLogger extends Logger {\r\n /**\r\n * start - used to measure start of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - api of activity\r\n * @returns {undefined} - no returns\r\n */\r\n start(scenario, activity, parentScenario, [api]) {\r\n super.log({\r\n api,\r\n isMethodEnter: true,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n /**\r\n * stop - used to measure stop of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - result and api of activity\r\n * @returns {undefined} - no returns\r\n */\r\n stop(scenario, activity, parentScenario, [result, api]) {\r\n super.log({\r\n api,\r\n isMethodEnter: false,\r\n timeStamp: getUtcTime(),\r\n pass: _.isUndefined(result) ? true : result,\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n /**\r\n * monitor - can be used to monitor and measure the duration of a function\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - function that is to be monitored and duration measured\r\n * @returns {undefined} - no returns\r\n */\r\n monitor(scenario, activity, parentScenario, [func, context]) {\r\n const originalFunc = context[func];\r\n\r\n if (!_.isFunction(originalFunc)) {\r\n return;\r\n }\r\n\r\n context[func] = (...args) => { // eslint-disable-line no-param-reassign\r\n const t0 = getTimestamp();\r\n\r\n const result = originalFunc.apply(context, args);\r\n\r\n const timeTaken = getTimestamp() - t0;\r\n\r\n super.log({\r\n api: originalFunc.name,\r\n timeTaken,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n\r\n return result;\r\n };\r\n }\r\n\r\n /**\r\n * monitorAsync - can be used to measure the duration of a promise\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - function that is async and returns a promise\r\n * @returns {undefined} - returns a promise with perf markers\r\n */\r\n monitorAsync(scenario, activity, parentScenario, [promise]) {\r\n const t0 = getTimestamp();\r\n\r\n // log monitor start\r\n super.log({\r\n isMethodEnter: true,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n\r\n const onPromiseDone = () => {\r\n const timeTaken = getTimestamp() - t0;\r\n\r\n // log monitor stop\r\n super.log({\r\n isMethodEnter: false,\r\n timeTaken,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.METHOD,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n };\r\n\r\n promise.then(onPromiseDone, onPromiseDone);\r\n return promise;\r\n }\r\n\r\n /**\r\n * perf - logs passed in args as perf logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the perf log method\r\n * @returns {undefined} - no returns\r\n */\r\n perf(scenario, activity, parentScenario, [message, api]) {\r\n super.log({\r\n api,\r\n message,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['start', 'stop', 'monitor', 'monitorAsync', 'perf'];\r\n }\r\n}\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * Default Error Logger\r\n */\r\nexport class ErrorLogger extends Logger {\r\n /**\r\n * error - logs passed in args as error logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the error log method\r\n * @returns {undefined} - no returns\r\n */\r\n error(scenario, activity, parentScenario, [message, api, requestId, impactUser, httpMethod, logLevel]) {\r\n super.log({\r\n api,\r\n message,\r\n requestId,\r\n impactUser: impactUser || constants.IMPACTUSER.NA,\r\n httpMethod,\r\n timeStamp: getUtcTime(),\r\n logCategory: constants.LOGCATEGORY.ERROR,\r\n logLevel: logLevel || constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.MESSAGE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['error'];\r\n }\r\n}\r\n","import { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Ajax Logger - internal logger that can used by for logging Ajax calls\r\n */\r\nexport class AjaxLogger extends Logger {\r\n /**\r\n * ajax - logs passed in args as ajax logs\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} args - args passed in to the ajax log method\r\n * @returns {undefined} - no returns\r\n */\r\n ajax(scenario, activity, parentScenario, [requestId, api,\r\n isMethodEnter, httpMethod, timeTaken, pass, message, entityCount, includeRendering]) {\r\n super.log({\r\n requestId,\r\n api,\r\n isMethodEnter,\r\n httpMethod,\r\n timeTaken,\r\n pass,\r\n message,\r\n entityCount,\r\n entryType: includeRendering === true ?\r\n constants.ENTRYTYPE.AJAXRENDER :\r\n constants.ENTRYTYPE.AJAX,\r\n timeStamp: getUtcTime(),\r\n logLevel: constants.LOGLEVEL.INFO,\r\n logCategory: constants.LOGCATEGORY.PERFORMANCE,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n });\r\n }\r\n\r\n getLogMethods() {\r\n return ['ajax'];\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * ScenarioProcessor class responsible for enriching logs with scenario/activity information\r\n */\r\nexport class ScenarioProcessor {\r\n process(rawLogs) {\r\n if (!_.has(rawLogs, 'scenario')) {\r\n return rawLogs;\r\n }\r\n\r\n let logs = _.extend(rawLogs, {\r\n activityId: rawLogs.activity.id,\r\n activityName: rawLogs.activity.value,\r\n scenarioId: rawLogs.scenario.id,\r\n scenarioName: rawLogs.scenario.value,\r\n parentScenarioId: rawLogs.parentScenario && rawLogs.parentScenario.id,\r\n parentScenarioName: rawLogs.parentScenario && rawLogs.parentScenario.value,\r\n });\r\n\r\n // drop activity/scenario/parentScenarioScenario since we've already extracted the needed info\r\n logs = _.omit(logs, 'activity', 'scenario', 'parentScenario');\r\n\r\n return logs;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { constants } from './../constants';\r\nimport { Logger } from './logger';\r\n\r\n/**\r\n * Substrate Logger to log events for user behavior analysis\r\n * Key data entries include\r\n * Sn: scenario name\r\n * SceId: scenario id, this is re-generated whenever a scenario is created\r\n * An: activity name\r\n * ActId: activity id, this is re-generated when an activity is created\r\n * Mes: a custom message for the signal\r\n * Dur: time taken for the signal\r\n */\r\nexport class SubstrateLogger extends Logger {\r\n /**\r\n * startSignal - used to measure start of a signal\r\n * @param {object} scenario - scenario that defines the activity\r\n * @param {object} activity - activity that invoked the log method\r\n * @returns {undefined} - no returns\r\n */\r\n startSignal(scenario, activity) {\r\n if (!scenario || !activity) {\r\n return;\r\n }\r\n activity.startTime = new Date();\r\n }\r\n\r\n /**\r\n * stopSignal - used to measure stop of an activity\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {boolean} trackDuration - indicate if the signal needs to track time taken\r\n * @param {object} message - a custom message for the activity itself\r\n * @returns {undefined} - no returns\r\n */\r\n stopSignal(scenario, activity, parentScenario, [message, api, trackDuration = true]) {\r\n if (!scenario || !activity || (trackDuration && !activity.startTime)) {\r\n return;\r\n }\r\n\r\n const endTime = new Date();\r\n super.log({\r\n timeStamp: trackDuration ? activity.startTime.toJSON() : endTime.toJSON(),\r\n timeTaken: trackDuration ? (endTime - activity.startTime) : 0,\r\n logCategory: constants.LOGCATEGORY.SUBSTRATE,\r\n logLevel: constants.LOGLEVEL.INFO,\r\n entryType: constants.ENTRYTYPE.ACTIVITY,\r\n activity,\r\n scenario,\r\n parentScenario,\r\n message,\r\n api,\r\n });\r\n }\r\n\r\n /**\r\n * signal - an atomic signal that has start and stop paired automatically\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} message - a custom message for the activity itself\r\n * @returns {undefined} - no returns\r\n */\r\n signal(scenario, activity, parentScenario, [message, api]) {\r\n this.stopSignal(scenario, activity, parentScenario, [message, api, false]);\r\n }\r\n\r\n /**\r\n * withSignalSync - caller provides a function\r\n * start and stop are measure at start and stop of the function\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} action - caller provided function as the signal\r\n * action may return message as custom message\r\n * @returns {undefined} - no returns\r\n */\r\n withSignalSync(scenario, activity, parentScenario, [action]) {\r\n this.startSignal(scenario, activity);\r\n const actionReturn = action();\r\n this.stopSignal(\r\n scenario,\r\n activity,\r\n parentScenario,\r\n actionReturn ? [actionReturn.message, actionReturn.api] : []\r\n );\r\n return actionReturn;\r\n }\r\n\r\n /**\r\n * withSignalAsync - async version of withSignalAsync, caller provides a promise\r\n * start and stop are measure at start and stop of the prmoise\r\n * @param {object} scenario - scenario of activity that invoked log method\r\n * @param {object} activity - activity that invoked the log method\r\n * @param {object} parentScenario - parent of the scenario\r\n * @param {object} prmoise - caller provided promise as the signal\r\n * @returns {undefined} - no returns\r\n */\r\n withSignalAsync(scenario, activity, parentScenario, [promise]) {\r\n this.startSignal(scenario, activity);\r\n const onPromiseDone = (promiseReturn) => {\r\n this.stopSignal(\r\n scenario,\r\n activity,\r\n parentScenario,\r\n promiseReturn ? [promiseReturn.message, promiseReturn.api] : []\r\n );\r\n };\r\n\r\n promise.then(onPromiseDone, onPromiseDone);\r\n return promise;\r\n }\r\n\r\n getLogMethods() {\r\n return ['startSignal', 'stopSignal', 'signal', 'withSignalSync', 'withSignalAsync'];\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { ScenarioFactory } from './scenario-factory';\r\n\r\n/**\r\n * LoggingService class responsible for setting up scenarioFactories\r\n */\r\nexport class LoggingService {\r\n /**\r\n * @param {object} options - contains the loggers/debugMode to be used\r\n */\r\n constructor(options) {\r\n this.loggers = options.loggers;\r\n this.isDebugMode = options.isDebugMode;\r\n // Record (scenario, activity) map for duplication check in debug mode\r\n this.registry = this.isDebugMode ? {} : undefined;\r\n }\r\n\r\n checkSchemaDuplication(scenarios) {\r\n /* eslint-disable no-restricted-syntax */\r\n if (this.isDebugMode && this.registry !== undefined) {\r\n for (const scenario of scenarios) {\r\n const { name: scenarioName, activity: activities } = scenario;\r\n // eslint-disable-next-line no-undef\r\n this.registry[scenarioName] = this.registry[scenarioName] || new Set();\r\n\r\n for (const { name: activityName } of activities) {\r\n if (this.registry[scenarioName].has(activityName)) {\r\n throw new Error(`[Debug] Scenario: ${scenarioName} Activity: ${activityName} already registered.`);\r\n }\r\n this.registry[scenarioName].add(activityName);\r\n }\r\n }\r\n }\r\n /* eslint-enable no-restricted-syntax */\r\n }\r\n\r\n parseSchema(scenarioSchema) {\r\n const scenarios = scenarioSchema.scenario;\r\n this.checkSchemaDuplication(scenarios);\r\n const scenarioFactories = {};\r\n _.each(scenarios, (scenario) => {\r\n scenarioFactories[scenario.name] = new ScenarioFactory(scenario, this.loggers);\r\n });\r\n return scenarioFactories;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { ActivityFactory } from './activity-factory';\r\n\r\n/**\r\n * Scenario class to create an instance of a Scenario\r\n */\r\nclass Scenario {\r\n constructor(scenarioSchema, loggers, parentScenario) {\r\n this.value = scenarioSchema.value;\r\n this.name = scenarioSchema.name;\r\n this.id = generateGuid();\r\n this.setting = scenarioSchema.setting;\r\n this.loggers = loggers;\r\n this.parentScenario = parentScenario;\r\n\r\n const activities = scenarioSchema.activity;\r\n _.each(activities, (activity) => {\r\n this[(typeof activity === 'string') ? activity : activity.name] = new ActivityFactory(this, activity, loggers, parentScenario);\r\n });\r\n }\r\n\r\n createActivity(activityName) {\r\n return new ActivityFactory(this, activityName, this.loggers, this.parentScenario).create();\r\n }\r\n}\r\n\r\n/**\r\n* ScenarioFactory class responsible for creating Scenario\r\n*/\r\nexport class ScenarioFactory {\r\n /**\r\n * @param {object} scenarioSchema - schema of scenario to be created\r\n * @param {object} loggers - available loggers\r\n */\r\n constructor(scenarioSchema, loggers) {\r\n this.scenarioSchema = scenarioSchema;\r\n this.loggers = loggers;\r\n }\r\n\r\n create(parentScenario) {\r\n return new Scenario(this.scenarioSchema, this.loggers, parentScenario);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/**\r\n * Activity class to create an instance of an Activity\r\n */\r\nclass Activity {\r\n constructor(scenario, activitySchema, loggers, parentScenario) {\r\n const simpleActivity = (typeof activitySchema === 'string');\r\n this.name = simpleActivity ? activitySchema : activitySchema.name;\r\n this.value = simpleActivity ? activitySchema : activitySchema.value;\r\n this.setting = simpleActivity ? undefined : activitySchema.setting;\r\n this.id = generateGuid();\r\n\r\n // Add logger methods on the activity\r\n _.each(loggers, (logger) => {\r\n const logMethods = logger.getLogMethods();\r\n _.each(logMethods, (logMethod) => {\r\n this[logMethod] = (...args) => logger[logMethod](scenario, this, parentScenario, args);\r\n });\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * ActivityFactory class responsible for creating Activity\r\n */\r\nexport class ActivityFactory {\r\n /**\r\n * @param {object} scenario - scenario the activity belongs to\r\n * @param {object} activitySchema - schema of scenario to be created\r\n * @param {object} loggers - available loggers\r\n * @param {object} parentScenario - parentScenario of the scenario\r\n */\r\n constructor(scenario, activitySchema, loggers, parentScenario) {\r\n this.scenario = scenario;\r\n this.activitySchema = activitySchema;\r\n this.parentScenario = parentScenario;\r\n this.loggers = loggers;\r\n }\r\n\r\n create() {\r\n return new Activity(this.scenario, this.activitySchema, this.loggers, this.parentScenario);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * LogTransmitter class responsible for transmitting logs to listeners\r\n */\r\nexport class LogTransmitter {\r\n /**\r\n * @param {object} options - has listeners, optional processors and scenarioContext\r\n */\r\n constructor(options = {}) {\r\n this.listeners = options.listeners;\r\n this.processors = options.processors;\r\n this.scenarioContext = options.scenarioContext;\r\n }\r\n\r\n /**\r\n * Updates shared scenario context every time we write, so it can be read(as parentScenario)\r\n * by internal activities when writing logs\r\n * @param {object} rawLogs - the raw logs being transmitted to the listeners\r\n * @returns {undefined} - no returns\r\n */\r\n updateScenarioContext(rawLogs) {\r\n // Scenario is marked hidden for non user defined scenarios\r\n const isHiddenScenario = _.result(rawLogs.scenario.setting, 'hidden');\r\n if (!isHiddenScenario) {\r\n this.scenarioContext.id = rawLogs.scenario.id;\r\n this.scenarioContext.value = rawLogs.scenario.value;\r\n }\r\n }\r\n\r\n transmit(rawLogs) {\r\n if (this.stopped) {\r\n return;\r\n }\r\n\r\n if (_.has(rawLogs, 'scenario')) {\r\n this.updateScenarioContext(rawLogs);\r\n }\r\n\r\n // Pass the rawLogs through each procesor to enrich them\r\n let processedLogs = rawLogs;\r\n _.each(this.processors, (processor) => {\r\n processedLogs = processor.process(processedLogs);\r\n });\r\n\r\n _.each(this.listeners, listener => listener.write(processedLogs));\r\n }\r\n\r\n /**\r\n * Stop the log transmitter service by tearing down the listeners\r\n * @returns {undefined} - no returns\r\n */\r\n stop() {\r\n _.each(this.listeners, (listener) => {\r\n listener.teardown();\r\n });\r\n this.stopped = true;\r\n }\r\n}\r\n","export const Mode = {\r\n Expanded: 'expanded',\r\n Collapsed: 'collapsed',\r\n Hidden: 'hidden',\r\n};\r\n","import _ from 'underscore';\r\nimport { Mode } from './mode';\r\n\r\n// these components have logic themselves to dynamically change layout\r\nconst dynamicComponents = {\r\n topBanner: {\r\n mode: Mode.Collapsed,\r\n },\r\n promotionBanner: {\r\n mode: Mode.Collapsed,\r\n },\r\n};\r\n\r\nconst staticComponents = {\r\n header: {\r\n mode: Mode.Collapsed,\r\n },\r\n panelContainer: {\r\n mode: Mode.Collapsed,\r\n },\r\n nav: {\r\n mode: Mode.Expanded,\r\n },\r\n menu: {\r\n mode: Mode.Expanded,\r\n },\r\n status: {\r\n mode: Mode.Expanded,\r\n },\r\n tab: {\r\n mode: Mode.Collapsed,\r\n },\r\n subTab: {\r\n mode: Mode.Hidden,\r\n },\r\n content: {\r\n mode: Mode.Expanded,\r\n },\r\n};\r\n\r\nconst base = { ...staticComponents, ...dynamicComponents };\r\n\r\nconst immersive = _.defaults({\r\n nav: {\r\n mode: Mode.Collapsed,\r\n },\r\n}, staticComponents);\r\n\r\nconst fullScreen = _.defaults({\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n menu: {\r\n mode: Mode.Hidden,\r\n },\r\n status: {\r\n mode: Mode.Hidden,\r\n },\r\n tab: {\r\n mode: Mode.Hidden,\r\n },\r\n}, staticComponents);\r\n\r\nconst withoutDate = {\r\n tab: {\r\n mode: Mode.Collapsed,\r\n showDatePicker: false,\r\n },\r\n};\r\n\r\nconst withDisabledDate = {\r\n tab: {\r\n mode: Mode.Collapsed,\r\n showDisabledDatePicker: true,\r\n showDatePicker: false,\r\n },\r\n};\r\n\r\nconst withHistoryButton = {\r\n tab: {\r\n mode: Mode.Collapsed,\r\n showDatePicker: false,\r\n showHistoryButton: true,\r\n },\r\n};\r\n\r\nconst dateWithoutCompare = {\r\n tab: {\r\n mode: Mode.Collapsed,\r\n disableCompare: true,\r\n },\r\n};\r\n\r\nconst fullScreenWithSummaryBar = _.defaults({\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n menu: {\r\n mode: Mode.Hidden,\r\n },\r\n tab: {\r\n mode: Mode.Hidden,\r\n },\r\n}, staticComponents);\r\n\r\nconst fullScreenWithSummaryBarAndTab = _.defaults({\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n menu: {\r\n mode: Mode.Hidden,\r\n },\r\n}, staticComponents);\r\n\r\nconst withoutNav = _.defaults({\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n}, staticComponents);\r\n\r\nconst accountSummary = {\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n};\r\n\r\nconst accountSummaryWithoutDate = {\r\n ...accountSummary,\r\n ...withoutDate,\r\n};\r\n\r\nconst withMenuOnly = {\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n tab: {\r\n mode: Mode.Hidden,\r\n },\r\n};\r\n\r\nconst withoutMenu = {\r\n menu: {\r\n mode: Mode.Hidden,\r\n },\r\n};\r\n\r\nconst withSingleTab = {\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n tab: {\r\n singleTabMode: true,\r\n },\r\n};\r\n\r\nconst withCollapsedMenuOnly = _.defaults({\r\n nav: {\r\n // Main menu\r\n mode: Mode.Collapsed,\r\n },\r\n menu: {\r\n // Page menu\r\n mode: Mode.Hidden,\r\n },\r\n status: {\r\n // Top bar containing 'Back' button and page title\r\n mode: Mode.Hidden,\r\n },\r\n tab: {\r\n // Horizontal tabs on top of page bearing page titles\r\n mode: Mode.Hidden,\r\n showDatePicker: false,\r\n },\r\n}, staticComponents);\r\n\r\nconst withCollapsedMenuAndNav = _.defaults({\r\n nav: {\r\n // Main menu\r\n mode: Mode.Collapsed,\r\n },\r\n menu: {\r\n // Page menu\r\n mode: Mode.Expanded,\r\n },\r\n status: {\r\n // Top bar containing 'Back' button and page title\r\n mode: Mode.Expanded,\r\n },\r\n tab: {\r\n // Horizontal tabs on top of page bearing page titles\r\n mode: Mode.Hidden,\r\n showDatePicker: false,\r\n },\r\n}, staticComponents);\r\n\r\nconst withTabAndSubTab = {\r\n tab: {\r\n mode: Mode.Collapsed,\r\n },\r\n subTab: {\r\n mode: Mode.Expanded,\r\n },\r\n};\r\n\r\nconst signupScreen = _.defaults({\r\n header: {\r\n mode: Mode.Expanded,\r\n },\r\n nav: {\r\n mode: Mode.Hidden,\r\n },\r\n menu: {\r\n mode: Mode.Hidden,\r\n },\r\n status: {\r\n mode: Mode.Hidden,\r\n },\r\n tab: {\r\n mode: Mode.Hidden,\r\n },\r\n}, base);\r\n\r\nexport const layoutConfigs = {\r\n default: base,\r\n immersive,\r\n fullScreen,\r\n withoutDate,\r\n withDisabledDate,\r\n withoutNav,\r\n withSingleTab,\r\n fullScreenWithSummaryBar,\r\n fullScreenWithSummaryBarAndTab,\r\n accountSummary,\r\n accountSummaryWithoutDate,\r\n withMenuOnly,\r\n withCollapsedMenuOnly,\r\n withCollapsedMenuAndNav,\r\n withoutMenu,\r\n dateWithoutCompare,\r\n withTabAndSubTab,\r\n withHistoryButton,\r\n signupScreen,\r\n};\r\n","import _ from 'underscore';\r\nimport React from 'react';\r\nimport { layoutConfigs } from './layout-configs';\r\n\r\nexport const LayoutContext = React.createContext({\r\n config: layoutConfigs.default,\r\n change: _.noop,\r\n});\r\n","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import _ from 'underscore';\r\nimport { Constants } from '@bingads-webui-theme-2018/theme-fluent';\r\n\r\nconst { ZIndexShellComponents } = Constants;\r\n\r\nconst shared = {\r\n position: 'absolute',\r\n display: 'block',\r\n};\r\n\r\nconst hidden = _.defaults({\r\n display: 'none',\r\n}, shared);\r\n\r\nconst header = {\r\n expanded: _.defaults({\r\n get height() {\r\n return window.surveyHeight + 60 || 60;\r\n },\r\n right: 0,\r\n zIndex: ZIndexShellComponents.Header,\r\n }, shared),\r\n collapsed: _.defaults({\r\n height: 60,\r\n right: 0,\r\n zIndex: ZIndexShellComponents.Header,\r\n }, shared),\r\n hidden,\r\n};\r\n\r\nconst panelContainer = {\r\n expanded: _.defaults({\r\n right: 0,\r\n bottom: 0,\r\n zIndex: ZIndexShellComponents.Panel,\r\n }, shared),\r\n hidden,\r\n collapsed: hidden,\r\n};\r\n\r\nconst nav = {\r\n expanded: _.defaults({\r\n width: 180,\r\n bottom: 0,\r\n zIndex: ZIndexShellComponents.Nav,\r\n }, shared),\r\n collapsed: _.defaults({\r\n width: 36,\r\n bottom: 0,\r\n zIndex: ZIndexShellComponents.Nav,\r\n }, shared),\r\n hidden,\r\n};\r\n\r\nconst content = {\r\n expanded: _.defaults({\r\n right: 0,\r\n bottom: 0,\r\n display: 'flex',\r\n flexDirection: 'column',\r\n zIndex: ZIndexShellComponents.Content,\r\n }, shared),\r\n};\r\n\r\nconst topBanner = {\r\n expanded: _.defaults({\r\n height: 37,\r\n right: 0,\r\n display: 'block',\r\n zIndex: ZIndexShellComponents.TopBanner,\r\n }, shared),\r\n hidden,\r\n collapsed: hidden,\r\n};\r\n\r\nconst promotionBanner = {\r\n expanded: _.defaults({\r\n height: 60,\r\n right: 0,\r\n zIndex: ZIndexShellComponents.PromotionBanner,\r\n }, shared),\r\n hidden,\r\n collapsed: hidden,\r\n};\r\n\r\nconst status = {\r\n expanded: _.defaults({\r\n height: 45,\r\n right: 0,\r\n zIndex: ZIndexShellComponents.Status,\r\n }, shared),\r\n hidden,\r\n};\r\n\r\nconst menu = {\r\n expanded: _.defaults({\r\n width: 164,\r\n bottom: 0,\r\n zIndex: ZIndexShellComponents.Menu,\r\n }, shared),\r\n hidden,\r\n hotelCenterMenu: cfg => ({\r\n ...cfg,\r\n width: 180,\r\n }),\r\n};\r\n\r\nconst tab = {\r\n optimizationScore: _.defaults({\r\n height: 139,\r\n right: 0,\r\n zIndex: ZIndexShellComponents.Tab,\r\n }, shared),\r\n expanded: _.defaults({\r\n height: 72,\r\n right: 0,\r\n zIndex: ZIndexShellComponents.Tab,\r\n }, shared),\r\n collapsed: _.defaults({\r\n height: 58,\r\n right: 0,\r\n zIndex: ZIndexShellComponents.Tab,\r\n }, shared),\r\n hidden,\r\n /*\r\n * advanced processor to handle config like below:\r\n * {\r\n * tab: {\r\n * mode: 'collapsed' or 'expanded',\r\n * showExperimentScoreCard: true,\r\n * },\r\n * }\r\n * For more details, see ./styles-container.js\r\n */\r\n showExperimentScoreCard: cfg => ({\r\n ...cfg,\r\n height: cfg.height + 176,\r\n }),\r\n};\r\n\r\nconst subTab = {\r\n expanded: _.defaults({\r\n height: 58,\r\n right: 0,\r\n zIndex: ZIndexShellComponents.SubTab,\r\n }, shared),\r\n hidden,\r\n};\r\n\r\nexport const components = {\r\n header,\r\n panelContainer,\r\n topBanner,\r\n promotionBanner,\r\n nav,\r\n status,\r\n menu,\r\n tab,\r\n subTab,\r\n content,\r\n};\r\n\r\nexport const names = _.mapObject(components, (value, name) => name);\r\n","/* eslint-disable max-len */\r\nimport _ from 'underscore';\r\nimport { jss } from 'react-jss';\r\nimport { components, names } from './components';\r\n\r\nconst calcQueue = [\r\n names.header,\r\n names.panelContainer,\r\n names.nav,\r\n names.content,\r\n];\r\n\r\nconst getSelection = config => _.mapObject(config, ({ mode, ...advancedOptions }, key) => {\r\n let result = _.result(components[key], mode, {});\r\n\r\n // i.e. advancedOptions = { showExperimentScoreCard: true }\r\n _.each(advancedOptions, (advancedOptionValue, advancedOptionName) => {\r\n const advancedProcessor = components[key][advancedOptionName];\r\n if (advancedOptionValue && _.isFunction(advancedProcessor)) {\r\n result = advancedProcessor(result);\r\n }\r\n });\r\n\r\n return result;\r\n});\r\n\r\nexport class StylesContainer {\r\n constructor(config) {\r\n const selected = getSelection(config);\r\n this.styles = _.mapObject(selected, (item, key) =>\r\n jss.createStyleSheet({ [key]: style => style }, { link: true }).attach());\r\n this.update(config);\r\n }\r\n\r\n update(config) {\r\n const selected = getSelection(config);\r\n const startPos = { top: 0, left: 0 };\r\n\r\n _.each(calcQueue, (key) => {\r\n const component = selected[key];\r\n this.styles[key].update(_.extend(component, startPos));\r\n startPos.top += _.result(component, 'height', 0);\r\n startPos.left += _.result(component, 'width', 0);\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { merge, cloneDeep } from '@bingads-webui-universal/primitive-utilities';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { layoutConfigs } from './layout-configs';\r\nimport { LayoutContext } from './layout-context';\r\nimport { StylesContainer } from './styles-container';\r\nimport { names } from './components';\r\nimport { Mode } from './mode';\r\n\r\nexport class LayoutContainer extends React.PureComponent {\r\n static propTypes = {\r\n children: PropTypes.node.isRequired,\r\n persistConfig: PropTypes.objectOf(PropTypes.shape({\r\n mode: PropTypes.oneOf(_.values(Mode)),\r\n })),\r\n pageConfig: PropTypes.objectOf(PropTypes.shape({\r\n mode: PropTypes.oneOf(_.values(Mode)),\r\n })),\r\n controlledByProps: PropTypes.bool,\r\n };\r\n\r\n static defaultProps = {\r\n persistConfig: layoutConfigs.default,\r\n pageConfig: layoutConfigs.default,\r\n controlledByProps: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.stylesContainer = new StylesContainer(props.persistConfig);\r\n this.state = {\r\n persistConfig: props.persistConfig,\r\n pageConfig: props.pageConfig,\r\n controlledByProps: props.controlledByProps,\r\n };\r\n }\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (!prevState.controlledByProps) {\r\n return null;\r\n }\r\n if (prevState.ownUpdate) {\r\n // getDerivedStateFromProps is triggered before each render.\r\n // need to ensure that we dont override changes from its own update\r\n return { ownUpdate: false };\r\n } else if (!_.isEqual(nextProps.pageConfig, prevState.pageConfig)) {\r\n return { pageConfig: nextProps.pageConfig };\r\n }\r\n return null;\r\n }\r\n\r\n componentDidUpdate(prevProps, prevState) {\r\n if (!_.isEqual(this.state.pageConfig, prevState.pageConfig)) {\r\n this.updatePage();\r\n }\r\n }\r\n\r\n changeLayout = (\r\n updates,\r\n isPageConfig,\r\n isPageConfigPartialUpdate = false,\r\n afterChangeLayout = _.noop\r\n ) => {\r\n if (_.find(updates, (item, key) => !_.has(names, key))) {\r\n throw new Error('Invalid layout configs');\r\n }\r\n\r\n if (isPageConfig) {\r\n this.setState((state) => {\r\n const pageConfig = isPageConfigPartialUpdate ?\r\n merge(cloneDeep(state.pageConfig), updates) :\r\n merge(cloneDeep(state.persistConfig), updates);\r\n return {\r\n pageConfig: _.isEqual(pageConfig, state.pageConfig) ? state.pageConfig : pageConfig,\r\n ownUpdate: true,\r\n };\r\n }, () => {\r\n this.updatePage(afterChangeLayout);\r\n });\r\n } else {\r\n this.setState((state) => {\r\n const persistConfig = merge(cloneDeep(state.persistConfig), updates);\r\n const pageConfig = merge(cloneDeep(state.pageConfig), updates);\r\n return {\r\n persistConfig: _.isEqual(persistConfig, state.persistConfig) ?\r\n state.persistConfig :\r\n persistConfig,\r\n pageConfig: _.isEqual(pageConfig, state.pageConfig) ? state.pageConfig : pageConfig,\r\n ownUpdate: true,\r\n };\r\n }, () => {\r\n this.updatePage(afterChangeLayout);\r\n });\r\n }\r\n };\r\n\r\n updatePage(afterChangeLayout = _.noop) {\r\n this.stylesContainer.update(this.state.pageConfig);\r\n afterChangeLayout();\r\n }\r\n\r\n render() {\r\n return (\r\n <LayoutContext.Provider value={{\r\n config: this.state.pageConfig,\r\n styles: this.stylesContainer.styles,\r\n change: this.changeLayout,\r\n }}\r\n >\r\n {this.props.children}\r\n </LayoutContext.Provider>\r\n );\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport React, { useContext } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LayoutContext } from './layout-context';\r\n\r\nexport const Layout = (props) => {\r\n const Component = props.component;\r\n const itemName = props.item;\r\n const {\r\n config, styles, change: changeLayout,\r\n } = useContext(LayoutContext);\r\n\r\n const componentProps = { ...(_.result(config, itemName)), changeLayout };\r\n const { classes } = _.result(styles, itemName);\r\n\r\n return (\r\n <div className={`app-shell-${itemName} ${_.result(classes, itemName)}`}>\r\n <Component {..._.defaults(componentProps, props)} />\r\n </div>\r\n );\r\n};\r\n\r\nLayout.propTypes = {\r\n component: PropTypes.elementType.isRequired,\r\n item: PropTypes.string.isRequired,\r\n};\r\n","/* eslint-disable react/forbid-prop-types */\r\n/* eslint-disable max-len */\r\nimport _ from 'underscore';\r\nimport React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { LayoutContext } from './layout-context';\r\nimport { layoutConfigs } from './layout-configs';\r\n\r\nclass LayoutHoC extends React.Component {\r\n static propTypes = {\r\n componentProps: PropTypes.objectOf(PropTypes.any).isRequired,\r\n changeLayout: PropTypes.func.isRequired,\r\n component: PropTypes.elementType.isRequired,\r\n toLayout: PropTypes.objectOf(PropTypes.any).isRequired,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n props.changeLayout(props.toLayout, true);\r\n }\r\n\r\n shouldComponentUpdate(nextProps) {\r\n const { component, componentProps } = nextProps;\r\n if (!_.isEqual(component, this.props.component) || !_.isEqual(componentProps, this.props.componentProps)) {\r\n this.props.changeLayout(nextProps.toLayout, true);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n render() {\r\n const { componentProps, component: Component } = this.props;\r\n return <Component changeLayout={this.props.changeLayout} {...componentProps} />;\r\n }\r\n}\r\n\r\n\r\nexport function withFullScreenLayout(Component) {\r\n return props => (\r\n <LayoutContext.Consumer>\r\n {({ change }) => (<LayoutHoC component={Component} toLayout={layoutConfigs.fullScreen} changeLayout={change} componentProps={props} />)}\r\n </LayoutContext.Consumer>\r\n );\r\n}\r\n\r\nexport function withLayout(Component, toLayout) {\r\n return props => (\r\n <LayoutContext.Consumer>\r\n {({ change }) => (<LayoutHoC component={Component} toLayout={toLayout} changeLayout={change} componentProps={props} />)}\r\n </LayoutContext.Consumer>\r\n );\r\n}\r\n\r\nexport function withMenuLayout(Component) {\r\n return props => (\r\n <LayoutContext.Consumer>\r\n {({ config }) => (<Component {...props} {...config.menu} />)}\r\n </LayoutContext.Consumer>\r\n );\r\n}\r\n\r\nexport function withDefaultLayout(Component) {\r\n return props => (\r\n <LayoutContext.Consumer>\r\n {({ change }) => (<LayoutHoC component={Component} toLayout={{}} changeLayout={change} componentProps={props} />)}\r\n </LayoutContext.Consumer>\r\n );\r\n}\r\n\r\nexport function withCollapsedMenuOnly(Component) {\r\n return props => (\r\n <LayoutContext.Consumer>\r\n {({ change }) => (<LayoutHoC component={Component} toLayout={layoutConfigs.withCollapsedMenuOnly} changeLayout={change} componentProps={props} />)}\r\n </LayoutContext.Consumer>\r\n );\r\n}\r\n\r\nexport function withCollapsedMenuAndNav(Component) {\r\n return props => (\r\n <LayoutContext.Consumer>\r\n {({ change }) => (<LayoutHoC component={Component} toLayout={layoutConfigs.withCollapsedMenuAndNav} changeLayout={change} componentProps={props} />)}\r\n </LayoutContext.Consumer>\r\n );\r\n}\r\n\r\nexport const withMenuOnlyLayout = _.partial(withLayout, _, layoutConfigs.withMenuOnly);\r\nexport const withoutMenuLayout = _.partial(withLayout, _, layoutConfigs.withoutMenu);\r\nexport const withSingleTabLayout = _.partial(withLayout, _, layoutConfigs.withSingleTab);\r\nexport const withSummaryBarAndTabNoDateLayout = _.partial(withLayout, _, { ...layoutConfigs.fullScreenWithSummaryBarAndTab, ...layoutConfigs.withoutDate });\r\nexport const withSummaryBarAndTabAndSubTabLayout = _.partial(withLayout, _, { ...layoutConfigs.fullScreenWithSummaryBarAndTab, ...layoutConfigs.withTabAndSubTab });\r\nexport const withFullScreenWithSummaryBar = _.partial(withLayout, _, layoutConfigs.fullScreenWithSummaryBar);\r\nexport const withFullScreenWithSummaryBarAndTabLayout = _.partial(withLayout, _, { ...layoutConfigs.fullScreenWithSummaryBarAndTab });\r\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export * from './src/index';\r\n","export * from './lodash';\r\nexport * from './string';\r\nexport * from './guid';\r\nexport * from './date';\r\nexport * from './file';\r\nexport * from './promise';\r\nexport * from './color';\r\nexport * from './number';\r\nexport * from './memoize';\r\n","// TODO: Task 904718: refactor to use explicit dependency for es6 syntax rather than global variable\r\n/* global Map */\r\nimport _ from 'underscore';\r\n\r\ntype Path = string | string[];\r\n\r\nfunction castPath(value: Path, object: {}) {\r\n if (_.isArray(value)) {\r\n return value;\r\n }\r\n\r\n if (_.has(object, value)) {\r\n return [value];\r\n }\r\n\r\n return _.compact(value.split(/[[\\].]/));\r\n}\r\n\r\ninterface Map<K, V> {\r\n clear(): void;\r\n get(key: K): V | undefined;\r\n set(key: K, value: V): this;\r\n}\r\n\r\ninterface MapConstructor {\r\n new(): Map<any, any>;\r\n}\r\n\r\ndeclare var Map: MapConstructor;\r\n\r\nfunction clone<T extends TProp, TProp>(item: T, sourceCopyMap: Map<TProp, TProp>): T {\r\n if (!_.isObject(item) || _.isDate(item)) {\r\n return item;\r\n }\r\n if (!sourceCopyMap.get(item)) {\r\n const result: T = <T>(_.isArray(item) ? [] : {});\r\n sourceCopyMap.set(item, result);\r\n _.each(<_.Dictionary<TProp>><unknown>item, (value, key) => {\r\n (<_.Dictionary<TProp>><unknown>result)[key] = clone(value, sourceCopyMap);\r\n });\r\n }\r\n return <T>sourceCopyMap.get(item);\r\n}\r\n\r\n/**\r\n * defined in lodash 4.5.1\r\n * sum list with iteratee\r\n * @param {Object[]} list - array to be summed\r\n * @param {Function} invoke - function invoked per element\r\n * @returns {number} - sum value of list\r\n */\r\nexport function sumBy<T>(list: T[], invoke: string | object | ((item: T, index: string | number) => number)): number {\r\n let iteratee: any = undefined;\r\n\r\n // make separate calls to satisfy @types/underscore for iteratee\r\n if (invoke instanceof String) {\r\n iteratee = _.iteratee(invoke);\r\n } else if (invoke instanceof Object){\r\n iteratee = _.iteratee(invoke);\r\n } else {\r\n iteratee = _.iteratee(invoke);\r\n }\r\n\r\n return _.reduce(\r\n list,\r\n (currentSum, item, index, arr) => currentSum + iteratee(item, index, arr),\r\n 0\r\n );\r\n}\r\n\r\n/**\r\n * defined in lodash 0.5.0\r\n * merge two object from src to dest\r\n * @param {Object} dest - dest object\r\n * @param {Object} src - src object\r\n * @returns {Object} - merged object\r\n */\r\nexport function merge<T, TProp>(...args: T[]): T {\r\n return _.reduce(_.rest(args), (dest, src) => {\r\n _.each(<_.Dictionary<TProp>><unknown>src, (value, key) => {\r\n const destKey = (<_.Dictionary<TProp>><unknown>dest)[key];\r\n if (_.isObject(destKey) && _.isObject(value) && !_.isFunction(value)) {\r\n merge(destKey, value);\r\n } else {\r\n _.extend(dest, _.object([key], [value]));\r\n }\r\n });\r\n\r\n return dest;\r\n }, _.first(args) || <T>{});\r\n}\r\n\r\n/**\r\n * defined in lodash 4.6.1\r\n * Gets the value at path of object. If the resolved value is undefined,\r\n * the defaultValue is returned in its place.\r\n * @param {Object} object - The object to query.\r\n * @param {array|string} path - The path of the property to get.\r\n * @param {*} defaultValue - Optional, The value returned for undefined resolved values.\r\n * @returns {any} - return the value in object by path, if not exist, return default value\r\n */\r\nexport function get<T, TProp>(object: T, path: Path, defaultValue?: TProp): TProp | undefined {\r\n let sub: _.Dictionary<TProp> & TProp;\r\n let i;\r\n const keyPath = castPath(path, object);\r\n\r\n for (i = 0, sub = <_.Dictionary<TProp> & TProp><unknown>object; i < keyPath.length; i += 1) {\r\n if (!_.isObject(sub)) {\r\n return defaultValue;\r\n }\r\n\r\n sub = <_.Dictionary<TProp> & TProp>sub[keyPath[i]];\r\n\r\n if (_.isUndefined(sub)) {\r\n return defaultValue;\r\n }\r\n }\r\n\r\n return sub;\r\n}\r\n\r\n/**\r\n * lodash set, path don't support index\r\n * Sets the value at path of object. If a portion of path doesn't exist, it's created.\r\n * Arrays are created for missing index properties while\r\n * objects are created for all other missing properties.\r\n * @param {Object} object - The object to modify.\r\n * @param {string} path - The path of the property to set.\r\n * @param {*} value - The value to set.\r\n * @returns {Object} - Returns object.\r\n */\r\nexport function set<T, TProp>(object: T, path: Path, value: TProp): T {\r\n if (!_.isObject(object)) {\r\n return object;\r\n }\r\n\r\n const keyPath = castPath(path, object);\r\n let index = 0;\r\n const { length } = keyPath;\r\n const lastIndex = length - 1;\r\n let nested = <_.Dictionary<TProp> & TProp><unknown>object;\r\n\r\n while (nested != null && index < length) {\r\n const key = keyPath[index];\r\n\r\n if (index !== lastIndex) {\r\n (nested as _.Dictionary<TProp>)[key] = nested[key] || <TProp>{};\r\n nested = <_.Dictionary<TProp> & TProp>nested[key];\r\n } else {\r\n (nested as _.Dictionary<TProp>)[key] = value;\r\n }\r\n index += 1;\r\n }\r\n return object;\r\n}\r\n\r\n/**\r\n * Creates a function that returns the result of invoking the given\r\n * functions with the this binding of the created function,\r\n * where each successive invocation is supplied the return value of the previous.\r\n * lodash flow https://lodash.com/docs#flow\r\n * @param {function[]} funcs - The functions to invoke.\r\n * @returns {Function} - Returns the new composite function.\r\n */\r\nexport function flow(...funcs: Function[]): Function {\r\n return _.compose.apply(null, funcs.reverse());\r\n}\r\n\r\n/**\r\n * defined in lodash 4.0.0\r\n * Check whether value is undefined or null\r\n * @param {*} value - value to Check\r\n * @returns {boolean} - return true if value is undefined or null, otherwise, return false\r\n */\r\nexport function isNil(value: any): boolean {\r\n return _.isUndefined(value) || _.isNull(value);\r\n}\r\n\r\n/**\r\n * deep clone object\r\n * @param {array|Object} item - source item to be copied\r\n * @return {array|Object} - copied from item\r\n*/\r\nexport function cloneDeep<T>(item: T): T {\r\n return clone(item, new Map());\r\n}\r\n\r\nfunction objIsArray(obj: any): obj is any[] {\r\n return _.isArray(obj) && Boolean(obj.length);\r\n}\r\n\r\n/**\r\n * array dedup function\r\n * @param {any[]} array - the array to inspect\r\n * @param {function} comparator - comparator function to determine whether 2 elements are the same\r\n * @returns {any[]} - new duplicate free array\r\n */\r\nexport function uniqWith<T>(array: any, comparator?: (arg1: T, arg2: T) => boolean): T[] {\r\n if (!objIsArray(array)) {\r\n return [];\r\n }\r\n if (!_.isFunction(comparator)) {\r\n return _.uniq(array);\r\n }\r\n const result: T[] = [];\r\n _.each(array, (obj) => {\r\n if (_.every(result, res => !comparator(obj, res))) {\r\n result.push(obj);\r\n }\r\n });\r\n return result;\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst noMatch = /(.)^/;\r\nconst settings = {\r\n escape: noMatch,\r\n evaluate: noMatch,\r\n interpolate: /\\{\\{(.+?)\\}\\}/g,\r\n};\r\n\r\n/**\r\n * Passes constant double curly brace settings to the underscore template function.\r\n * E.g. to support templates of the format: 'The bid is {{bidAmount}}'\r\n *\r\n * @see {@link http://underscorejs.org/#template}\r\n *\r\n * @param {String} templateString - The template markup that contains double curly bracket notation.\r\n * @return {Function} The template function, which can be passed an Object model with fields that\r\n * correspond to the names marked up by the curly braces.\r\n */\r\nexport function curlyTemplate(templateString: string): (...data: any[]) => string {\r\n return _.template(templateString, settings);\r\n}\r\n\r\n/**\r\n * check whether this string include CJK charact\r\n * @param {string} str - string to check\r\n * @returns {boolean} - return true if str contains CJK, otherwise, return false\r\n */\r\nexport function hasCJK(str: string): boolean {\r\n return !!(_.isString(str) && str.match(/[\\u4E00-\\u9FCC]/));\r\n}\r\n\r\n/**\r\n * Regex Pattern for wide characters\r\n */\r\nconst wideCharPattern = new RegExp(\r\n '[\\\\u1100-\\\\u11FF]' + // IsHangulJamo\r\n '|[\\\\u2E80-\\\\u2EFF]' + // IsCJKRadicalsSupplement\r\n '|[\\\\u3000-\\\\u303F]' + // IsCJKSymbolsandPunctuation\r\n '|[\\\\u3040-\\\\u309F]' + // IsHiragana\r\n '|[\\\\u30A0-\\\\u30FF]' + // IsKatakana\r\n '|[\\\\u3130-\\\\u318F]' + // IsHangulCompatibilityJamo\r\n '|[\\\\u3200-\\\\u32FF]' + // IsEnclosedCJKLettersandMonths\r\n '|[\\\\u3300-\\\\u33FF]' + // IsCJKCompatibility\r\n '|[\\\\u3400-\\\\u4DBF]' + // IsCJKUnifiedIdeographsExtensionA\r\n '|[\\\\u4E00-\\\\u9FFF]' + // IsCJKUnifiedIdeographs\r\n '|[\\\\uAC00-\\\\uD7AF]' + // IsHangulSyllables\r\n '|[\\\\uF900-\\\\uFAFF]' + // IsCJKCompatibilityIdeographs\r\n '|[\\\\uFE30-\\\\uFE4F]' + // IsCJKCompatibilityForms\r\n '|[\\\\uFF01-\\\\uFF60]' + // Fullwidth Forms Part 1\r\n '|[\\\\uFFE0-\\\\uFFE6]' + // Fullwidth Forms Part 2\r\n '|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]' // Astral Planes\r\n , 'g'\r\n);\r\n\r\n/**\r\n * Get string length, which counting CJK character or Emojis as 2\r\n * @param {string} str - string to count\r\n * @returns {int} - length of string\r\n */\r\nexport function displayLength(str: string | null) {\r\n return _.isString(str) ? str.replace(wideCharPattern, '12').length : 0;\r\n}\r\n\r\nexport function getLength(str: string, distinguishWideChar = false) {\r\n return distinguishWideChar ? displayLength(str) : _.size(str);\r\n}\r\n\r\n// eslint-disable-next-line no-control-regex\r\nconst IsControlRegex = /[\\u0000-\\u001F\\u007F-\\u009F]/;\r\n\r\n/**\r\n * Validate if string contains controlled characters, http://unicode.org/glossary/#control_codes\r\n * @param {String} str - String to be validated\r\n * @returns {Boolean} - True if string contains controlled char.\r\n */\r\nexport const isControl = (str: string) => IsControlRegex.test(str);\r\n","/*\r\n* Create a new guid\r\n* @returns {String} - returns a guid\r\n*/\r\nexport function generateGuid() {\r\n function s4() {\r\n return Math.floor((1 + Math.random()) * 0x10000)\r\n .toString(16)\r\n .substring(1);\r\n }\r\n return `${s4()}${s4()}-${s4()}-${s4()}-${s4()}-${s4()}${s4()}${s4()}`;\r\n}\r\n","/* eslint-env browser */\r\nimport _ from 'underscore';\r\n\r\n/*\r\n* Returns a copy of the passed in Date with hours/minutes/seconds/milliseconds set to zero.\r\n* @param {Date} date - Date to remove time information from\r\n* @returns {Date} - Copy of passed in date\r\n*/\r\nexport function withoutTime(date: any) {\r\n if (!date) {\r\n return date;\r\n }\r\n\r\n const returnDate = new Date(date.valueOf());\r\n returnDate.setHours(0, 0, 0, 0);\r\n return returnDate;\r\n}\r\n\r\n/**\r\n * Validates if the date range passed in is incorrect. It ignores the time values.\r\n * @param { Date } [minDate] - The minimum date that can be selected.\r\n * @param { Date } [maxDate] - The maximum date that can be selected.\r\n * @param { Date } [selectedDate] - The date to pre-select in the datepicker.\r\n * @returns {String[]} - Array of error strings.\r\n * @throws Will throw if passed in date range is not valid.\r\n */\r\nexport function validateDateRange(minDate: any, maxDate: any, selectedDate: any): string[] {\r\n const selected = withoutTime(selectedDate);\r\n const min = withoutTime(minDate);\r\n const max = withoutTime(maxDate);\r\n\r\n const errors = [];\r\n\r\n if (min && max && min > max) {\r\n errors.push('MinDateLaterThanMaxDate');\r\n }\r\n\r\n if (selected && min && selected < min) {\r\n errors.push('MinDateLaterThanSelectedDate');\r\n }\r\n\r\n if (selected && max && selected > max) {\r\n errors.push('SelectedDateLaterThanMaxDate');\r\n }\r\n\r\n return errors;\r\n}\r\n\r\n/**\r\n * Private function to check if date is valid\r\n * @param {Object} date - Object to check\r\n * @returns {Boolean} - True if object is a valid date\r\n * @private\r\n*/\r\nfunction isValidDate(date: object): date is Date {\r\n return _.isDate(date);\r\n}\r\n\r\n/**\r\n * Get the date N days ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackDays=0] - Number of days to remove\r\n * @returns {Date} - date object with new parameters, null if date is invalid\r\n */\r\nexport function lastNDate(dateTime: any, lookBackDays: number = 0): Date | null {\r\n return isValidDate(dateTime) ?\r\n new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate() - lookBackDays) : null;\r\n}\r\n\r\n/**\r\n * Get first date of the month N months ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackMonths=0] - Number of months to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function firstDateNMonthsAgo(dateTime: any, lookBackMonths: number = 0): Date | null {\r\n return isValidDate(dateTime) ?\r\n new Date(dateTime.getFullYear(), dateTime.getMonth() - lookBackMonths, 1) : null;\r\n}\r\n\r\n/**\r\n * Get last date of the month N months ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackMonths=0] - Number of months to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function lastDateNMonthsAgo(dateTime: any, lookBackMonths: number = 0): Date | null {\r\n return isValidDate(dateTime) ?\r\n lastNDate(<Date>firstDateNMonthsAgo(dateTime, lookBackMonths - 1), 1) : null;\r\n}\r\n\r\n/**\r\n * Get today for N years ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackYears=0] - Number of years to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function todayNYearsAgo(dateTime: any, lookBackYears: number = 0): Date | null {\r\n return isValidDate(dateTime) ? new Date(\r\n dateTime.getFullYear() - lookBackYears,\r\n dateTime.getMonth(), dateTime.getDate()\r\n ) : null;\r\n}\r\n\r\n/**\r\n * Get first date of the year N years ago\r\n * @param {Date} dateTime - The input date object\r\n * @param {Number} [lookBackYears=0] - Number of years to remove\r\n * @returns {Date} - Date object with new parameters\r\n */\r\nexport function firstDateNYearsAgo(dateTime: Date, lookBackYears: number = 0): Date | null {\r\n return isValidDate(dateTime) ? new Date(dateTime.getFullYear() - lookBackYears, 0, 1) : null;\r\n}\r\n\r\n/**\r\n * Get the current UTC time\r\n * @returns {String} - the current utc datetime\r\n */\r\nexport function getUtcTime(): string {\r\n return new Date().toJSON();\r\n}\r\n\r\n/**\r\n * Get the current timestamp\r\n * @returns {number} - the timestamp since epoch in milliseconds\r\n */\r\nexport function getTimestamp(): number {\r\n // TODO: this method should not be here, as it depends on Web API performance\r\n if (window.performance && window.performance.now && window.performance.timing) {\r\n return window.performance.timing.navigationStart + window.performance.now();\r\n }\r\n\r\n return Date.now();\r\n}\r\n\r\ntype ComparisonDateRange = {\r\n start: Date,\r\n end: Date\r\n};\r\n\r\ntype DateRange = {\r\n start?: Date,\r\n end?: Date,\r\n key?: string,\r\n compared?: ComparisonDateRange | null\r\n};\r\n\r\n/**\r\n * Check if the given two date ranges equal\r\n * @param {Object} firstRange - The first input range\r\n * @param {Object} secondRange - The second input range\r\n * @returns {Boolean} - Two ranges equal\r\n */\r\nexport function dateRangeEquals(firstRange?: null | DateRange, secondRange?: null | DateRange): boolean {\r\n function convertForComparison(range: DateRange) {\r\n const dates = _.pick(range, 'start', 'end', 'key');\r\n\r\n if (range.compared) {\r\n _.extend(dates, {\r\n comparedStart: range.compared.start,\r\n comparedEnd: range.compared.end,\r\n });\r\n }\r\n return dates;\r\n }\r\n\r\n if (!firstRange || !secondRange) {\r\n return false;\r\n }\r\n\r\n return JSON.stringify(convertForComparison(firstRange)) ===\r\n JSON.stringify(convertForComparison(secondRange));\r\n}\r\n\r\ntype TimeZone = string;\r\ntype TimeZoneOption = TimeZone | null;\r\ntype DateMethodsOptions = { timeZone?: TimeZoneOption };\r\n\r\ntype I18nModel = {\r\n formatDate: (date: Date, options: DateMethodsOptions) => string,\r\n parseDate: (strDate: string, options: DateMethodsOptions) => Date | null,\r\n};\r\n\r\nexport function convertDateBetweenTimeZones(date: Date, i18n: I18nModel, {\r\n from,\r\n to,\r\n}: {\r\n from?: TimeZone | null,\r\n to?: TimeZone | null\r\n} = {}) {\r\n const dateString = i18n.formatDate(date, {\r\n timeZone: from,\r\n });\r\n\r\n return i18n.parseDate(dateString, {\r\n timeZone: to,\r\n });\r\n}\r\n\r\nexport function convertMachineDateToUTCDate(date: Date, i18n: any) {\r\n return convertDateBetweenTimeZones(date, i18n, { from: null, to: 'UTC' });\r\n}\r\n\r\nexport function convertUTCDateToMachineDate(date: Date, i18n: any) {\r\n return convertDateBetweenTimeZones(date, i18n, { from: 'UTC', to: null });\r\n}\r\n","/* eslint-env browser */\r\n// this file depends on Web API atob, Blob, File, it should not be in this project\r\nimport _ from 'underscore';\r\n\r\nexport function dataURItoBlob(dataURI: string) {\r\n const reg = /:(.+?);/;\r\n const arrs = dataURI.split(',');\r\n const header = <string>_.first(arrs);\r\n const content = <string>_.last(arrs);\r\n let type = 'image/png';\r\n\r\n const byteString = atob(content);\r\n const array = new Uint8Array(byteString.length);\r\n\r\n for (let i = 0; i < byteString.length; i += 1) {\r\n array[i] = byteString.charCodeAt(i);\r\n }\r\n if (reg.test(header)) {\r\n ({ 1: type } = <string[]>header.match(reg));\r\n }\r\n return new Blob([array], { type });\r\n}\r\n\r\n/**\r\n * Convert image string to File object\r\n * @param {string} img image string to be convertImage2File\r\n * @param {string} name file name of image\r\n * @returns {File} File object\r\n */\r\nexport function convertImage2File(img: string, name: string): File {\r\n const blob = dataURItoBlob(img);\r\n const postfix = _.last(blob.type.split('/'));\r\n return new File([blob], `${name}.${postfix}`, { type: blob.type, lastModified: Date.now() });\r\n}\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\n\r\ntype WithLastPromiseOptions<T> = {\r\n promiseFactory: (...args: any[]) => Promise<T>,\r\n finish: (result?: T) => void,\r\n cancel?: () => void,\r\n fail?: (error: Error) => void\r\n};\r\n\r\n/**\r\n * This function returns a new \"guarded\" function. The guarded function behaves like this:\r\n * - everytime it is called it is going to call the promiseFactory function to\r\n * generate a new promise and remember it as the last promise;\r\n * - the guarded function returns a process handle object, which has the cancel function,\r\n * which can be used to ignore the results of the last promise, and, instead trigger\r\n * the cancel() callback;\r\n * - when the \"last promise\" finishes either finish or fail callback will be triggered,\r\n * depending on the outcome\r\n * of the last promise.\r\n * @param {Object} options - the options object\r\n * @param {Function} options.promiseFactory - the function that returns a new promise.\r\n * The factory will be called with the arguments passed to the guarded function.\r\n * @param {Function} options.finish - the function that will be called when the last\r\n * promise is resolved. The only argument to this function is the value the value from\r\n * the last promise.\r\n * @param {Function} options.fail - a function that is called when the last promise is\r\n * failed. The only\r\n * argument to this function is the error from the last promise.\r\n * @param {Function} options.cancel - a function that is called when the last promise is canceled.\r\n * No arguments are passed in. This function will be called not early than the next\r\n * scheduler iteration, after a call to process handle's cancel() function.\r\n * @returns {Function} - the \"guarded\" function. See description.\r\n */\r\nexport function withLastPromise<T>(options: WithLastPromiseOptions<T>): (...args: any[]) => { cancel: () => void } {\r\n const {\r\n promiseFactory, finish, cancel = _.noop, fail = _.noop,\r\n } = options;\r\n let lastPromise: Promise<T>;\r\n let lastPromiseCanceled = false;\r\n\r\n const finishProcess = (error: Error | undefined, result?: T) => {\r\n if (lastPromiseCanceled) {\r\n cancel();\r\n } else if (error) {\r\n fail(error);\r\n } else {\r\n finish(result);\r\n }\r\n };\r\n\r\n const guardedFunction = (...factoryArgs: any[]) => {\r\n lastPromise = promiseFactory(...factoryArgs);\r\n lastPromiseCanceled = false;\r\n const processHandle = ((promise: Promise<T>) => {\r\n promise.then((result) => {\r\n if (promise === lastPromise) {\r\n finishProcess(undefined, result);\r\n }\r\n\r\n // skipping the results, since a new promise has started since\r\n // or the last one was canceled\r\n }, (error) => {\r\n if (promise === lastPromise) {\r\n finishProcess(error);\r\n }\r\n\r\n // skipping the error, since a new promise has started since\r\n // or the last one was canceled\r\n });\r\n\r\n return {\r\n cancel() {\r\n lastPromiseCanceled = true;\r\n },\r\n };\r\n })(lastPromise);\r\n\r\n return processHandle;\r\n };\r\n\r\n return guardedFunction;\r\n}\r\n\r\nenum ASYNC_STATUS {\r\n SUCCESS = 'SUCCESS',\r\n ERROR = 'ERROR',\r\n CANCELLED = 'CANCELLED',\r\n};\r\n\r\ntype Callbacks<T> = {\r\n onSuccess?: (result: T) => void,\r\n onError?: (err: Error) => void,\r\n onCancel?: () => void,\r\n};\r\n\r\ntype PromiseChainItem<T> = {\r\n resolve: (result: T) => Promise<T>,\r\n reject: null | ((result: Error) => Promise<T>)\r\n};\r\n\r\ntype Resolvable<R> = R | PromiseLike<R>;\r\n\r\ntype Options = {\r\n cancelCallback?: () => void,\r\n};\r\n\r\n/**\r\n * This function returns an async token, which allows the caller to cancel a promise.\r\n * The token behaves in the following way:\r\n * - The token is created using the function, however needs to be finalizes with .on().\r\n * - Only one of the callbacks will ever be called (onCancel, onSuccess, onError)\r\n * - If the token is cancelled, as long as the promise hasn't been resolved,\r\n * onCancel will be synchronously called and all references will be released.\r\n * @param {Object} promise - the promise\r\n * @param {Object} options - the options to create async token\r\n * @param {Function} options.cancelCallback\r\n * This callback is intended to be provided by a component that returns async token\r\n * from one of its interface method, and helps handle cancellation specific to the component\r\n * @returns {Object} asyncToken - the cancelable async token\r\n * @returns {Function} asyncToken.chain - (resolve, reject)\r\n * Allows the user to chain more async tasks,\r\n * similar to .then(resolve, reject), however will be cancelable by the token.\r\n * @returns {Function} asyncToken.on - ({onCancel, onSuccess, onError})\r\n * finalizes the token with three callbacks.\r\n * Only one will ever be called. If no onError function is submitted, it will re-throw any errors.\r\n * the last promise.\r\n * @returns {Function} asyncToken.cancel - if promise has resolved, will be a noop.\r\n * Otherwise will stop any more tasks or callbacks from being called,\r\n * and will synchronously call onCancel callback.\r\n */\r\nexport function createAsyncToken<T>(promise: null | PromiseLike<T>, options?: Options) {\r\n if (!promise) {\r\n throw new Error('promise is a required parameter');\r\n }\r\n\r\n // declare scoped variables\r\n let currentPromise: null | PromiseLike<T> = promise;\r\n let promiseChain: PromiseChainItem<T>[] = [];\r\n let callbacks: Callbacks<T> | null = null;\r\n\r\n // Implement functions\r\n function queueNextWork() {\r\n (<Promise<T>>currentPromise).then((result) => {\r\n finishProcess(ASYNC_STATUS.SUCCESS, result);\r\n }, (error) => {\r\n finishProcess(ASYNC_STATUS.ERROR, error);\r\n });\r\n };\r\n\r\n function dequeuePromise(status: ASYNC_STATUS, result?: T | Error) {\r\n const { resolve, reject } = <PromiseChainItem<T>>promiseChain.shift();\r\n\r\n if (status === ASYNC_STATUS.ERROR) {\r\n if (reject) {\r\n currentPromise = reject(<Error>result);\r\n } else {\r\n // if no reject function was provided, rerun finishProcess, don't call queueNextWork\r\n finishProcess(status, result);\r\n return;\r\n }\r\n } else {\r\n currentPromise = resolve(<T>result);\r\n }\r\n\r\n queueNextWork();\r\n };\r\n\r\n function finishProcess(status: ASYNC_STATUS, result?: T | Error) {\r\n if (callbacks == null) {\r\n // Noop\r\n return;\r\n }\r\n const {\r\n onSuccess = _.noop,\r\n onError = (err: Error) => { throw err; },\r\n onCancel = _.noop,\r\n } = callbacks;\r\n\r\n if (status === ASYNC_STATUS.CANCELLED) {\r\n cleanup();\r\n onCancel();\r\n } else if (!_.isEmpty(promiseChain)) {\r\n dequeuePromise(status, result);\r\n } else if (status === ASYNC_STATUS.ERROR) {\r\n cleanup();\r\n onError(<Error>result);\r\n } else {\r\n cleanup();\r\n onSuccess(<T>result);\r\n }\r\n }\r\n\r\n function cleanup() {\r\n // cleanup all scoped references to unblock garbage collector\r\n callbacks = null;\r\n promiseChain = [];\r\n currentPromise = null;\r\n }\r\n\r\n const asyncToken = {\r\n chain(resolve: () => Resolvable<T>, reject: null | (() => Resolvable<T>) = null) {\r\n if (!_.isNull(callbacks)) {\r\n throw new Error('Cannot call .chain after calling .on');\r\n }\r\n\r\n // wrap callbacks to allow async\r\n promiseChain.push({\r\n resolve: Promise.method<T>(resolve),\r\n reject: reject == null ? null : Promise.method<T>(reject),\r\n });\r\n return asyncToken;\r\n },\r\n on({\r\n onSuccess,\r\n onError,\r\n onCancel,\r\n }: Callbacks<T>) {\r\n if (!_.isNull(callbacks)) {\r\n throw new Error('Cannot call .on multiple times');\r\n }\r\n\r\n callbacks = {\r\n onSuccess,\r\n onError,\r\n onCancel,\r\n };\r\n\r\n // .on will finalize the token, begin work\r\n queueNextWork();\r\n return asyncToken;\r\n },\r\n cancel() {\r\n options && options.cancelCallback && options.cancelCallback();\r\n finishProcess(ASYNC_STATUS.CANCELLED);\r\n return asyncToken;\r\n }\r\n };\r\n\r\n return asyncToken;\r\n}\r\n","/* eslint-disable no-bitwise */\r\n\r\nfunction numberToRgb(rgbInteger: number) {\r\n return {\r\n red: (rgbInteger & 0xff0000) >> 16,\r\n green: (rgbInteger & 0x00ff00) >> 8,\r\n blue: rgbInteger & 0x0000ff,\r\n };\r\n}\r\n\r\n/**\r\n * Converts an RGB color to its grayscale equivalent. Useful for determining if a color should be\r\n * contrasted against white or black.\r\n * @see {@link https://www.w3.org/TR/AERT/#color-contrast}\r\n * @param {Number} rgbInteger - Number that represents an RGB color, e.g. 15792383.\r\n * @returns {Number} Grayscale value of the number, e.g. 246.\r\n */\r\nexport function colorToGrayscale(rgbInteger: number): number {\r\n const rgb = numberToRgb(rgbInteger);\r\n\r\n // calculate grayscale value based on how humans perceive luminance in RBG\r\n return Math.round((0.299 * rgb.red) + (0.587 * rgb.green) + (0.114 * rgb.blue));\r\n}\r\n\r\n/**\r\n * Returns black if the grayscale equivalent of given color is <50% gray, otherwise returns white.\r\n * @param {Number} rgbInteger - Number that represents an RGB color, e.g. 15792383.\r\n * @returns {Number} Number that represents RGB black or RGB white.\r\n */\r\nexport function contrastColor(rgbInteger: number): number {\r\n const grayscale = colorToGrayscale(rgbInteger);\r\n\r\n return grayscale >= 256 / 2 ? 0 : 0xffffff;\r\n}\r\n\r\n/**\r\n * Convert a RGB hexadecimal color value into decimal.\r\n * @param {String} color - RGB 6-digit hexademical color, e.g. '#ff0000'\r\n * @returns {Number} Decimal representation, e.g. 16711680.\r\n */\r\nexport function toDec(color: string): number {\r\n return parseInt(color.substr(1), 16);\r\n}\r\n\r\n/**\r\n * Convert a decimal number into 6-digit hexademical.\r\n * @param {Number} color - Number value of an RGB color, e.g. 15792383\r\n * @returns {String} 6-digital hexademical representation, e.g. 'f0f9ff'\r\n */\r\nexport function toHex(color: number): string {\r\n return `000000${color.toString(16)}`.substr(-6);\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_+';\r\n\r\n/**\r\n * translate int to base-64 representation\r\n * @param {Number} integer None negative integer to translate\r\n * @returns {String} encoded base-64 string\r\n */\r\nexport function toStringBase64(integer: number): string {\r\n if (!_.isNumber(integer) || integer % 1 !== 0 || integer < 0) {\r\n throw new Error('unknown data type, none negative integer only');\r\n }\r\n\r\n if (integer === 0) {\r\n return map[0];\r\n }\r\n\r\n let result = '';\r\n let dividend = integer;\r\n\r\n while (dividend > 0) {\r\n const remainder = dividend % 64;\r\n\r\n result = map[remainder].concat(result);\r\n dividend = Math.floor(dividend / 64);\r\n }\r\n\r\n return result;\r\n}\r\n\r\n/**\r\n *\r\n * @param {String} code, string output of toStringBase64\r\n * @returns {Number} the original integer number\r\n */\r\nexport function parseIntBase64(code: string): number {\r\n let result = 0;\r\n let remain = code.slice();\r\n\r\n while (remain.length > 0) {\r\n result = (result * 64) + map.indexOf(remain[0]);\r\n remain = remain.slice(1);\r\n }\r\n\r\n return result;\r\n}\r\n","class Cache {\r\n max: number;\r\n lruTrigger: number;\r\n cache: Map<any, any>;\r\n\r\n constructor(max: number = 200) {\r\n this.max = max;\r\n this.lruTrigger = max / 2;\r\n this.cache = new window.Map();\r\n }\r\n\r\n get(key: any) {\r\n const item = this.cache.get(key);\r\n if (this.cache.size > this.lruTrigger && item) {\r\n // refresh key\r\n this.cache.delete(key);\r\n this.cache.set(key, item);\r\n }\r\n return item;\r\n }\r\n\r\n set(key: any, val: any) {\r\n if (this.cache.size > this.lruTrigger) {\r\n // refresh key\r\n if (this.cache.has(key)) {\r\n this.cache.delete(key);\r\n } else if (this.cache.size == this.max) {\r\n this.cache.delete(this.first());\r\n }\r\n }\r\n this.cache.set(key, val);\r\n }\r\n\r\n first() {\r\n return this.cache.keys().next().value;\r\n }\r\n}\r\n\r\nfunction resolveFromCache(args: any[], index: number, cache: Cache, func:(...args: any[]) => any): any {\r\n const key = args[index];\r\n const result = cache.get(key);\r\n if (index >= args.length - 1) { // reached last of arg\r\n if (result && !(result instanceof Cache)) {\r\n return result; // found actual result\r\n }\r\n // no result found, save the result as new entry\r\n const toCache = func.apply(undefined, args);\r\n cache.set(key, toCache);\r\n return toCache;\r\n }\r\n // not finished searching yet\r\n if (result instanceof Cache) {\r\n return resolveFromCache(args, index + 1, result, func); // found nested Map, go deeper\r\n }\r\n // create nested Cache with key and continue\r\n const nestedCache = new Cache();\r\n cache.set(key, nestedCache);\r\n return resolveFromCache(args, index + 1, nestedCache, func);\r\n}\r\n\r\nexport function memoize(func: (...args: any[]) => any) {\r\n const memoized = function (...args: any[]) {\r\n return resolveFromCache(args, 0, memoized.cache, func);\r\n };\r\n memoized.cache = new Cache();\r\n return memoized;\r\n}\r\n","import arrayWithHoles from \"./arrayWithHoles\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit\";\nimport nonIterableRest from \"./nonIterableRest\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nexport default function _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}","export default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}","export default function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export { I18nModel } from './src/index';\r\n","import _ from 'underscore';\r\nimport Promise from 'bluebird';\r\nimport Globalize from 'globalize';\r\nimport { LocaleManager } from './locale';\r\nimport { Resource } from './resource';\r\n\r\nconst localeManager = new LocaleManager();\r\n\r\nconst dynamicLocaleInstances = [];\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {String} key localization key\r\n * @returns {void}\r\n * @private\r\n */\r\nfunction assertReady(key) {\r\n if (!this.isReady()) {\r\n const debugInfo = `name-${this.name},culture-${this.locale},key-${key}`;\r\n\r\n throw new Error(`The resource is not yet ready(${debugInfo}). Please either call sync APIs only when the promise is fulfilled, or switch to use async APIs.`);\r\n }\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {String} key localization key\r\n * @returns {Resource} Current synchronous resource\r\n * @private\r\n */\r\nfunction synchronousResource(key) {\r\n assertReady.call(this, key);\r\n return this.p$data.value().resource;\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @returns {Globalize} Current synchronous globalize\r\n * @private\r\n */\r\nfunction synchronousGlobalize() {\r\n assertReady.call(this);\r\n return this.p$data.value().globalize;\r\n}\r\n\r\n/**\r\n * If the given object is thenable\r\n * @param {any} object - The object to be tested\r\n * @returns {bool} Current synchronous globalize\r\n * @private\r\n */\r\nfunction isThenable(object) {\r\n return object && _.isFunction(object.then);\r\n}\r\n\r\n/**\r\n * @this I18nModel\r\n * @param {string} locale - the locale used to load data\r\n * @returns {Promise} Promise of translation resource and globalize\r\n * @private\r\n */\r\nfunction loadData(locale) {\r\n const translationData = this.loadTranslationData(locale);\r\n const cldrData = this.loadCLDRData(locale);\r\n\r\n if (isThenable(translationData) || isThenable(cldrData)) {\r\n return Promise.props({\r\n locale,\r\n resource: Promise.resolve(translationData).then(data => new Resource({ data, failFast: this.failFast })),\r\n globalize: Promise.resolve(cldrData).then(cldr => new Globalize(cldr)),\r\n });\r\n }\r\n\r\n return Promise.resolve({\r\n locale,\r\n resource: new Resource({\r\n data: translationData,\r\n failFast: this.failFast,\r\n }),\r\n globalize: new Globalize(cldrData),\r\n });\r\n}\r\n\r\n/* @this I18nModel */\r\nfunction dateMethodOptions({\r\n skeleton,\r\n date,\r\n time,\r\n datetime,\r\n raw,\r\n timeZone = this.timeZone,\r\n} = {}) {\r\n return _.pick({\r\n skeleton,\r\n date,\r\n time,\r\n datetime,\r\n raw,\r\n timeZone,\r\n }, Boolean);\r\n}\r\n\r\n/* @this I18nModel */\r\nfunction withSignWrapper(withSign, method) {\r\n switch (withSign) {\r\n case 'auto':\r\n return value => method(value);\r\n case 'never':\r\n return value => method(Math.abs(value));\r\n case 'always': {\r\n const cldr = this.getCldr();\r\n const minusSign = cldr.main('numbers/symbols-numberSystem-latn/minusSign');\r\n const plusSign = cldr.main('numbers/symbols-numberSystem-latn/plusSign');\r\n\r\n return (value) => {\r\n if (value < 0) {\r\n return method(value);\r\n }\r\n // Same as described in CLDR ticket\r\n // see: http://unicode.org/cldr/trac/ticket/8732\r\n // Note: 0 will have no sign\r\n return method(-value).replace(\r\n // only support latn for now\r\n minusSign,\r\n plusSign\r\n );\r\n };\r\n }\r\n default:\r\n throw new RangeError(`'withSign' option should be one of 'auto', 'never' or 'always', but being ${withSign}`);\r\n }\r\n}\r\n\r\n/**\r\n * Return a function synchronously format a number with given options.\r\n * @param {string} [withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @return {Function} The function formatting number\r\n * @private\r\n */\r\nfunction numberFormatterWithSign(withSign, options) {\r\n const globalizeFormatter = synchronousGlobalize.call(this).numberFormatter(options);\r\n // SignificantDigits related param override IntegerDigits/FractionDigits related param\r\n // pick Boolean to remove them if they're not passed in\r\n return withSignWrapper.call(this, withSign, value => globalizeFormatter(value));\r\n}\r\n\r\n/**\r\n * Return a function synchronously format a currency with given options.\r\n * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {string} [withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @return {Function} The function formatting number\r\n * @private\r\n */\r\nfunction currencyFormatterWithSign(currency, withSign = 'auto', options) {\r\n if (!currency) {\r\n return () => '0';\r\n }\r\n\r\n const globalizeFormatter = synchronousGlobalize.call(this).currencyFormatter(currency, options);\r\n // SignificantDigits related param override IntegerDigits/FractionDigits related param\r\n // pick Boolean to remove them if they're not passed in\r\n return withSignWrapper.call(this, withSign, value => globalizeFormatter(value));\r\n}\r\n\r\nfunction currencyFormatterWithSymbol(currency, withSign = 'auto', withSymbol = true, options) {\r\n if (!currency) {\r\n return () => '0';\r\n }\r\n\r\n if (withSymbol) {\r\n return currencyFormatterWithSign.call(this, currency, withSign, options);\r\n }\r\n\r\n const globalizeFormatter = synchronousGlobalize.call(this)\r\n .currencyToPartsFormatter(currency, options);\r\n const formatter = (value) => {\r\n const parts = globalizeFormatter(value);\r\n const newParts = _.map(parts, (part) => {\r\n if (part.type === 'integer'\r\n || part.type === 'group'\r\n || part.type === 'decimal'\r\n || part.type === 'fraction'\r\n ) {\r\n return part.value;\r\n }\r\n return '';\r\n });\r\n const finalValue = newParts.join('');\r\n\r\n return finalValue;\r\n };\r\n\r\n\r\n return withSignWrapper.call(this, withSign, formatter);\r\n}\r\n\r\nfunction withGlobalizeCache(fnName, i18nModel) {\r\n const realMethod = i18nModel[fnName];\r\n\r\n function createCache() {\r\n const cache = {};\r\n cache.size = 0;\r\n\r\n return cache;\r\n }\r\n\r\n return function wrappedGlobalizeMethod(...args) {\r\n const cache = i18nModel.parserFormatterCache;\r\n if (!cache[fnName]) {\r\n cache[fnName] = createCache();\r\n }\r\n\r\n let specificMethodCache = cache[fnName];\r\n\r\n const key = JSON.stringify(args);\r\n if (specificMethodCache[key]) {\r\n return specificMethodCache[key];\r\n }\r\n\r\n /* Just a precaution, don't expect cache to grow this large */\r\n if (specificMethodCache.size > 100) {\r\n cache[fnName] = createCache();\r\n specificMethodCache = cache[fnName];\r\n }\r\n\r\n specificMethodCache[key] = realMethod.apply(this, args);\r\n specificMethodCache.size += 1;\r\n\r\n return specificMethodCache[key];\r\n };\r\n}\r\n\r\n/**\r\n * I18n Model.\r\n */\r\nexport class I18nModel {\r\n static defaultFailFast = false;\r\n\r\n /**\r\n * Set global locale used for all i18n model as default locale.\r\n * @param {string} locale - should be in format of IETF language tag {@link http://www.langtag.net/}.\r\n * @returns {Promise.<I18nModel[]>} resolved when all dynamic locale i18n models are ready\r\n */\r\n static setGlobalLocale(locale) {\r\n localeManager.setGlobalLocale(locale);\r\n return Promise.all(_.map(dynamicLocaleInstances, instance => instance.setLocale(locale)));\r\n }\r\n\r\n /**\r\n * Load CLDR data for Globalize.js.\r\n * Helper function which makes Globalize transparent to users.\r\n * Then user don't need to import it explictly.\r\n * @param {JSON[]} data - CLDR data.\r\n * @returns {void}\r\n */\r\n static loadCLDRData(...data) {\r\n Globalize.load(...data);\r\n }\r\n\r\n /**\r\n * Load time zone data for Globalize.js.\r\n * Helper function which makes Globalize transparent to users.\r\n * Then user don't need to import it explictly.\r\n * @param {JSON} data - Time zone data.\r\n * @returns {void}\r\n */\r\n static loadTimeZoneData(data) {\r\n Globalize.loadTimeZone(data);\r\n }\r\n\r\n /**\r\n * Sets the default failfast value for every i18nmodel\r\n *\r\n * @returns {void}\r\n * @param {string|bool} failfast when key missing\r\n * true - i18n throws error and crashes current execution\r\n * \"SAFE\" - i18n throws error asyncrounously but continues execution\r\n */\r\n static setDefaultFailFast(failfast) {\r\n I18nModel.defaultFailFast = failfast;\r\n }\r\n\r\n /**\r\n * @callback loadCLDRData\r\n * @param {string} locale - the locale used to load CLDR data\r\n * @returns {Promise.<CldrJs>|Promise.<string>|CldrJs|string}\r\n * The CLDR data or the locale name linked to already loaded CLDR data\r\n */\r\n\r\n /**\r\n * @callback loadTranslationData\r\n * @param {string} locale - the locale used to load translation data\r\n * @returns {Promise.<Object.<string, string>>|Object.<string, string>}\r\n * key value pairs as tranlation data\r\n */\r\n /**\r\n * Create a model.\r\n * When both options.loadCLDRData and options.loadTranslationData returns raw data instead\r\n * of Promise, and locale is neither 'current' nor 'dynamic', the model created is surely\r\n * ready for use synchronously.\r\n * @param {Object} options - The initialization options\r\n * @param {string} [options.name] - The name of the i18n package\r\n * @param {string} [options.locale=current] - The locale of this i18n model; could be a\r\n * specific locale (e.g. 'en-us'), 'dynamic' or 'current' (default)\r\n * @param {string} [options.timeZone] - The default timeZone used by formatDate\r\n * @param {string} [options.currency] - The default currency used by formatCurrency\r\n * @param {loadCLDRData} options.loadCLDRData - a function which accepts locale as param and\r\n * returns a promise which resolves after coresponding CLDR data loaded, and with value\r\n * the CLDR.js instance or the locale name as [Globalize constructor]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/core/constructor.md} requires\r\n * @param {loadTranslationData} options.loadTranslationData - a function which accepts locale\r\n * as param and returns a promise which resolves with a translation data object\r\n * @param {string|bool} options.failFast - when key missing\r\n * true - i18n throws error and crashes current execution\r\n * \"SAFE\" - i18n throws error asyncrounously but continues execution\r\n *\r\n * @constructs I18nModel\r\n */\r\n constructor({\r\n name,\r\n locale = 'current',\r\n timeZone,\r\n currency,\r\n loadCLDRData,\r\n loadTranslationData,\r\n failFast = I18nModel.defaultFailFast,\r\n }) {\r\n this.locale = locale;\r\n this.name = name;\r\n this.timeZone = timeZone;\r\n this.currency = currency;\r\n\r\n this.loadCLDRData = loadCLDRData;\r\n this.loadTranslationData = loadTranslationData;\r\n this.missingKeys = {};\r\n this.failFast = failFast;\r\n this.parserFormatterCache = {};\r\n\r\n /* These methods return parsers and formatters that can be safely cached.\r\n (they don't have any functions as a parameter). Globalize recommends caching\r\n parsers and formatters as generating them can be very expensive */\r\n ['decimalParser',\r\n 'percentParser',\r\n 'dateFormatter',\r\n 'dateToPartsFormatter',\r\n 'dateParser',\r\n ].forEach((fnName) => {\r\n this[fnName] = withGlobalizeCache(fnName, this);\r\n });\r\n\r\n if (locale === 'dynamic') {\r\n // If dynamic, reload resource on locale change\r\n dynamicLocaleInstances.push(this);\r\n }\r\n\r\n if (locale === 'current' || locale === 'dynamic') {\r\n // Wait for initial locale to be set and then load the resource\r\n const p$globalLocale = localeManager.p$globalLocale();\r\n\r\n // when global locale is synced ready, make p$data synced ready too\r\n if (p$globalLocale.isFulfilled()) {\r\n this.p$data = loadData.call(this, p$globalLocale.value());\r\n } else {\r\n this.p$data = localeManager.p$globalLocale()\r\n .then(globalLocale => loadData.call(this, globalLocale));\r\n }\r\n } else {\r\n this.setLocale(locale);\r\n }\r\n }\r\n\r\n /**\r\n * Set locale used for this model, will reuse other data.\r\n * @param {string} locale - should be in format of IETF language tag {@link http://www.langtag.net/}.\r\n * @returns {Promise.<I18nModel>} resolved when all resource for this model loaded\r\n */\r\n setLocale(locale) {\r\n this.p$data = loadData.call(this, locale);\r\n this.parserFormatterCache = {};\r\n\r\n return this.ready();\r\n }\r\n\r\n /**\r\n * Get a promise that resolves to this object when the resource is ready.\r\n * @return {Promise.<I18nModel>} This object\r\n */\r\n ready() {\r\n return this.p$data.return(this);\r\n }\r\n\r\n /**\r\n * Check whether the resource is ready.\r\n * @return {boolean} Whether the resource is ready\r\n */\r\n isReady() {\r\n return this.p$data.isFulfilled();\r\n }\r\n\r\n // Sync API\r\n // All these methods only work when isReady().\r\n // If isReady() === false, these methods would throw error.\r\n\r\n /**\r\n * Synchronously get locale used for this model.\r\n * @returns {string} locale used for this model.\r\n */\r\n getLocale() {\r\n assertReady.call(this);\r\n return this.p$data.value().locale;\r\n }\r\n\r\n /**\r\n * Synchronously get Cldrjs instance.\r\n * @return {Cldrjs} The Cldrjs instance.\r\n * @see [cldr.js - Simple CLDR traverser]{@link https://github.com/rxaviers/cldrjs}\r\n */\r\n getCldr() {\r\n return synchronousGlobalize.call(this).cldr;\r\n }\r\n\r\n /**\r\n * Synchronously get first day of week.\r\n * @param {Object} [options] - options\r\n * @param {String} [options.alt] - undefined or 'variant'.\r\n * @return {string} The weekday as first day of week. One of 'mon', 'fri', 'sat', sun'.\r\n */\r\n getFirstDayOfWeek({\r\n alt,\r\n } = {}) {\r\n const cldr = this.getCldr();\r\n\r\n const defaultRegionKey = cldr.attributes.region;\r\n const key = alt ? `${defaultRegionKey}-alt-${alt}` : defaultRegionKey;\r\n\r\n return cldr.supplemental(`weekData/firstDay/${key}`) ||\r\n cldr.supplemental(`weekData/firstDay/${defaultRegionKey}`) ||\r\n // 001 means the world\r\n // see: http://cldr.unicode.org/index/cldr-spec/reasons-for-decisions\r\n cldr.supplemental('weekData/firstDay/001');\r\n }\r\n\r\n /**\r\n * Synchronously get today as CivilDate.\r\n * Note: for not introducing temporal for now,\r\n * this method only returns an object with same structure instead of a real CivilDate.\r\n * @param {Object} [options] - options\r\n * @param {String} [options.timeZone] - Time zone name under tz database format.\r\n * @return {CivilDate} Today as CivilDate.\r\n * @see [List of tz database time zones]{@link https://en.wikipedia.org/wiki/List_of_tz_database_time_zones}\r\n */\r\n getToday({\r\n timeZone = this.timeZone,\r\n } = {}) {\r\n const [\r\n { value: year },\r\n { value: month },\r\n { value: day },\r\n ] = this.formatDateToParts(new Date(), {\r\n raw: 'yyyyMMdd',\r\n timeZone,\r\n });\r\n\r\n return {\r\n year: Number(year),\r\n month: Number(month),\r\n day: Number(day),\r\n toString() { return `${year}-${month}-${day}`; },\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously get and evaluate a localized string template (or the string as-is if it's\r\n * not a template).\r\n * If key not found, \"undefined\" will be returned, client code should check this for themselves.\r\n * @param {string} key - The key of the string resource\r\n * @param {Object} [model] - The model for the string template (if needed)\r\n * @return {string} The template evaluation result\r\n */\r\n getString(key, ...args) {\r\n let str = synchronousResource.call(this, key).getString(key, ...args);\r\n if (_.isUndefined(str)) { // key is not surrounded by fixture _TL_\r\n this.missingKeys[key] = true;\r\n if (this.failFast) {\r\n try {\r\n throw new RangeError(`i18n.getString: key is missing _TL_ fixture - \"${key}\"`);\r\n } catch (error) {\r\n if (this.failFast !== 'SAFE') {\r\n throw error;\r\n } else {\r\n _.defer(() => { throw error; });\r\n str = key;\r\n }\r\n }\r\n }\r\n }\r\n return str;\r\n }\r\n\r\n /**\r\n * Synchronously get all the localized string data object passed to Resource from onload.\r\n * @return {Object} An object of i18n key-localized value pair\r\n */\r\n getData() {\r\n return {\r\n ...synchronousResource.call(this, 'getData').data,\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously get quarter's translation.\r\n * @param {Number} quarter - An integer from 1 to 4 which matches with 1st to 4th quarter\r\n * @param {Object} [options] - options\r\n * @param {String} [options.style=wide] - 'abbreviated', 'narrow' or 'wide'\r\n * @return {String} The quarter's translation\r\n */\r\n getQuarter(quarter, {\r\n style = 'wide',\r\n } = {}) {\r\n return this.getCldr().main(`dates/calendars/gregorian/quarters/stand-alone/${style}/${quarter}`);\r\n }\r\n\r\n /**\r\n * Synchronously get month's translation.\r\n * @param {Number} month - An integer from 1 to 12 which matches with January to December\r\n * @param {Object} [options] - options\r\n * @param {String} [options.style=wide] - 'abbreviated', 'narrow' or 'wide'\r\n * @return {String} The month's translation\r\n */\r\n getMonth(month, {\r\n style = 'wide',\r\n } = {}) {\r\n return this.getCldr().main(`dates/calendars/gregorian/months/stand-alone/${style}/${month}`);\r\n }\r\n\r\n /**\r\n * Synchronously get day's translation.\r\n * @param {String} day - 'sun', 'mon', 'tue', 'wed', 'thu', 'fri' or 'sat'\r\n * @param {Object} [options] - options\r\n * @param {String} [options.style=wide] - 'abbreviated', 'narrow', 'short' or 'wide'\r\n * @return {String} The day's translation\r\n */\r\n getDay(day, {\r\n style = 'wide',\r\n } = {}) {\r\n return this.getCldr().main(`dates/calendars/gregorian/days/stand-alone/${style}/${day}`);\r\n }\r\n\r\n /**\r\n * Alias of [getDay]{@link I18nModel#getDay}\r\n * @param {String} dayOfWeek - 'sun', 'mon', 'tue', 'wed', 'thu', 'fri' or 'sat'\r\n * @param {Object} [options] - options\r\n * @param {String} [options.style=wide] - 'abbreviated', 'narrow', 'short' or 'wide'\r\n * @return {String} The day's translation\r\n */\r\n getDayOfWeek(dayOfWeek, options) {\r\n return this.getDay(dayOfWeek, options);\r\n }\r\n\r\n /**\r\n * Synchronously get currency's display name.\r\n * @param {String} [currency=this.currency] - currency code under [ISO 4217]{@link https://www.iso.org/iso-4217-currency-codes.html}\r\n * @return {String} The currency's display name\r\n */\r\n getCurrency(currency = this.currency) {\r\n return this.getCldr().main(`numbers/currencies/${currency}/displayName`);\r\n }\r\n\r\n /**\r\n * Synchronously get currency's symbol.\r\n * @param {String} [currency=this.currency] - currency code under [ISO 4217]{@link https://www.iso.org/iso-4217-currency-codes.html}\r\n * @param {Object} [options] - options\r\n * @param {String} [options.alt] - undefined, 'narrow' or 'variant'.\r\n * 'narrow' or 'variant' won't exist for sure.\r\n * when the data missing, it will fallback to the default symbol.\r\n * As an example:\r\n * for TRY (Turkish Lira), default symbol is 'TRY', narrow alt is '₺', variant alt is 'TL'\r\n * @return {String} The currency's symbol\r\n */\r\n getCurrencySymbol(currency = this.currency, {\r\n alt,\r\n } = {}) {\r\n const defaultSymbolKey = 'symbol';\r\n const key = alt ? `symbol-alt-${alt}` : defaultSymbolKey;\r\n\r\n return this.getCldr().main(`numbers/currencies/${currency}/${key}`) ||\r\n this.getCldr().main(`numbers/currencies/${currency}/${defaultSymbolKey}`);\r\n }\r\n\r\n /**\r\n * The object contains all patterns\r\n * @typedef {Object} Patterns\r\n * @property {string} [full] The full format pattern\r\n * @property {string} [long] The long format pattern\r\n * @property {string} [medium] The medium format pattern\r\n * @property {string} [short] The short format pattern\r\n */\r\n\r\n /**\r\n * The DateFormats contains date/dateTime/time format patterns\r\n * @typedef {Object} DateFormats\r\n * @property {string} [default] The default date format pattern\r\n * @property {Patterns} [date] The date patterns\r\n * @property {Patterns} [dateTime] The dateTime patterns\r\n * @property {Patterns} [time] The time patterns\r\n */\r\n\r\n /**\r\n * Synchronously get date format patterns for user's culture\r\n * @return {DateFormats} The date format patterns object\r\n */\r\n getDateFormats() {\r\n const calendar = this.getCldr().main('dates/calendars/gregorian');\r\n const defaultProperties = ['full', 'long', 'medium', 'short'];\r\n\r\n return {\r\n default: calendar.dateTimeFormats.availableFormats.yMd, // Globalize will use yMd as the default date format pattern. https://github.com/globalizejs/globalize/blob/d5e98d1e3047ac722cce5817f8168268dd22ddf4/src/date.js#L136\r\n date: _.pick(calendar.dateFormats, defaultProperties),\r\n dateTime: _.pick(calendar.dateTimeFormats, defaultProperties),\r\n time: _.pick(calendar.timeFormats, defaultProperties),\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously format decimal number with given options.\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted decimal number\r\n */\r\n formatDecimal(number, options) {\r\n return this.decimalFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format decimal number with given options.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting decimal number\r\n */\r\n decimalFormatter({\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n minimumSignificantDigits,\r\n maximumSignificantDigits,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return numberFormatterWithSign.call(this, withSign, {\r\n style: 'decimal',\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n minimumSignificantDigits,\r\n maximumSignificantDigits,\r\n round,\r\n useGrouping,\r\n compact,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously format decimal number to fixed-point as toFixed(digits) with given options.\r\n * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - options\r\n * @param {number} [options.digits=2] - The number of fraction digits\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted decimal number\r\n */\r\n formatDecimalToFixed(number, options) {\r\n return this.decimalToFixedFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format decimal number to fixed-point as toFixed(digits).\r\n * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {Object} [options] - options\r\n * @param {number} [options.digits=2] - The number of fraction digits\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting decimal number\r\n */\r\n decimalToFixedFormatter({\r\n digits = 2,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return this.decimalFormatter({\r\n minimumFractionDigits: digits,\r\n maximumFractionDigits: digits,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously format decimal number to integer as toFixed(0) with given options.\r\n * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - options\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted decimal number\r\n */\r\n formatDecimalToInteger(number, options) {\r\n return this.decimalToIntegerFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format decimal number to integer as toFixed(0).\r\n * This method is only a shortcut built on top of formatDecimal, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {Object} [options] - options\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting decimal number\r\n */\r\n decimalToIntegerFormatter({\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return this.decimalToFixedFormatter({\r\n digits: 0,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously parse decimal number.\r\n * @param {string} value - The number string to be parsed\r\n * @return {string} The parsed decimal number, NaN is value is invalid\r\n */\r\n parseDecimal(value) {\r\n return this.decimalParser()(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously parse decimal number.\r\n * @return {Function} The function parsing decimal number\r\n */\r\n decimalParser() {\r\n return synchronousGlobalize.call(this).numberParser({\r\n style: 'decimal',\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously validate decimal number, a simple wrapper of parseDecimal.\r\n * @param {string} value - The number string to be validate\r\n * @return {boolean} If value is string and valid.\r\n * Note: number is not valid too, as this method is for strings.\r\n */\r\n isValidDecimal(value) {\r\n return this.decimalValidator()(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously validate decimal number.\r\n * @return {Function} The function validating decimal number\r\n */\r\n decimalValidator() {\r\n const parser = this.decimalParser();\r\n\r\n return value => _.isString(value) && !_.isNaN(parser(value));\r\n }\r\n\r\n /**\r\n * Synchronously format percent number with given options.\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted percent number\r\n */\r\n formatPercent(number, options) {\r\n return this.percentFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format percent number with given options.\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting percent number\r\n */\r\n percentFormatter({\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n minimumSignificantDigits,\r\n maximumSignificantDigits,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return numberFormatterWithSign.call(this, withSign, {\r\n style: 'percent',\r\n minimumIntegerDigits,\r\n minimumFractionDigits,\r\n maximumFractionDigits,\r\n minimumSignificantDigits,\r\n maximumSignificantDigits,\r\n round,\r\n useGrouping,\r\n compact,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously format percent number to fixed-point as toFixed(digits) with given options.\r\n * This method is only a shortcut built on top of formatPercent, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {number} number - The number to be formatted\r\n * @param {Object} [options] - options\r\n * @param {number} [options.digits=0] - The number of fraction digits\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {string} The formatted percent number\r\n */\r\n formatPercentToFixed(number, options) {\r\n return this.percentToFixedFormatter(options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format percent number to fixed-point as toFixed(digits).\r\n * This method is only a shortcut built on top of percentFormatter, it isn't in i18n interface\r\n * and shouldn't be used by shared components.\r\n * @see [Number.prototype.toFixed()]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed}\r\n * @param {Object} [options] - options\r\n * @param {number} [options.digits=0] - The number of fraction digits\r\n * @param {boolean} [options.round] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {boolean} [options.useGrouping] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/number/number-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @return {Function} The function formatting percent number\r\n */\r\n percentToFixedFormatter({\r\n digits = 0,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign = 'auto',\r\n } = {}) {\r\n return this.percentFormatter({\r\n minimumFractionDigits: digits,\r\n maximumFractionDigits: digits,\r\n round,\r\n useGrouping,\r\n compact,\r\n withSign,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously parse percent number.\r\n * @param {string} value - The number string to be parsed\r\n * @return {string} The parsed percent number, NaN when value is invalid\r\n */\r\n parsePercent(value) {\r\n return this.percentParser()(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously parse percent number.\r\n * @return {Function} The function parsing percent number\r\n */\r\n percentParser() {\r\n return synchronousGlobalize.call(this).numberParser({\r\n style: 'percent',\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously validate percent number, a simple wrapper of parsePercent.\r\n * @param {string} value - The number string to be validate\r\n * @return {boolean} If value is string and valid\r\n */\r\n isValidPercent(value) {\r\n return this.percentValidator()(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously validate percent number.\r\n * @return {Function} The function validating percent number\r\n */\r\n percentValidator() {\r\n const parser = this.percentParser();\r\n\r\n return value => _.isString(value) && !_.isNaN(parser(value));\r\n }\r\n\r\n /**\r\n * Synchronously format currency with given options.\r\n * @param {number} number - The number to be formatted\r\n * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {string} [options.withSymbol=true] - Show currency symbol or not.\r\n * @return {string} The formatted currency\r\n */\r\n formatCurrency(number, currency = this.currency, options) {\r\n return this.currencyFormatter(currency, options)(number);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format currency with given options.\r\n * @param {string} currency - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/currency/currency-formatter.md}\r\n * @param {string} [options.withSign=auto] - Show positive/negative sign or not.\r\n * Could be 'always', 'auto' or 'never'. 'auto' means show sign for negative but not positive.\r\n * @param {string} [options.withSymbol=true] - Show currency symbol or not.\r\n * @return {Function} The function formatting currency\r\n */\r\n currencyFormatter(currency = this.currency, options = {}) {\r\n // Didn't do argument destructuring for options,\r\n // due to currencyFormatter dose not format floating point correctly\r\n // with some of the options undefined.\r\n const { withSign, withSymbol } = options;\r\n\r\n return currencyFormatterWithSymbol.call(this, currency, withSign, withSymbol, _.omit(options, 'withSign', 'withSymbol'));\r\n }\r\n\r\n /**\r\n * Synchronously format date with given options.\r\n * @param {Date} value - The date to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {string} The formatted date\r\n */\r\n formatDate(value, options) {\r\n return this.dateFormatter(options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format date with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Function} The function formatting date\r\n */\r\n dateFormatter(options) {\r\n return synchronousGlobalize.call(this)\r\n .dateFormatter(dateMethodOptions.call(this, options));\r\n }\r\n\r\n /**\r\n * Synchronously format date into parts tokens with given options.\r\n * @param {Date} value - The date to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Object[]} The formatted date parts\r\n */\r\n formatDateToParts(value, options) {\r\n return this.dateToPartsFormatter(options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format date into parts tokens with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Function} The function formatting date to parts\r\n */\r\n dateToPartsFormatter(options) {\r\n return synchronousGlobalize.call(this)\r\n .dateToPartsFormatter(dateMethodOptions.call(this, options));\r\n }\r\n\r\n /**\r\n * Synchronously parse date.\r\n * @param {string} value - The date string to be parsed\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-parser.md}\r\n * @return {string} The parsed date, null when value is invalid\r\n */\r\n parseDate(value, options) {\r\n return _.isString(value) ? this.dateParser(options)(value) : null;\r\n }\r\n\r\n /**\r\n * Return a function synchronously parse date with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Function} The function parsing date\r\n */\r\n dateParser(options) {\r\n return synchronousGlobalize.call(this)\r\n .dateParser(dateMethodOptions.call(this, options));\r\n }\r\n\r\n /**\r\n * Synchronously validate date, a simple wrapper of parseDate.\r\n * @param {string} value - The date string to be validate\r\n * @param {Object} [options] - Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-parser.md}\r\n * @return {boolean} If value is string and valid\r\n */\r\n isValidDate(value, options) {\r\n return this.dateValidator(options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously validate date with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * @return {Function} The function validating date\r\n */\r\n dateValidator(options) {\r\n const parser = this.dateParser(options);\r\n\r\n return value => _.isString(value) && !_.isNull(parser(value));\r\n }\r\n\r\n /**\r\n * Synchronously format civil date to localized string.\r\n * @param {CivilDate} civilDate - The civil date to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * except for 'timeZone', time', and 'datetime'.\r\n * As CivilDate doesn't have timeZone/time infomation.\r\n * @return {string} The formatted civil date\r\n * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n */\r\n formatCivilDate(civilDate, options) {\r\n return this.civilDateFormatter(options)(civilDate);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format civil date into string with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * except for 'timeZone', time', and 'datetime'.\r\n * As CivilDate doesn't have timeZone/time infomation.\r\n * @return {Function} The function formatting civil date to string\r\n * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n */\r\n civilDateFormatter(options) {\r\n const dateFormatter = this.dateFormatter(_.defaults({\r\n // we create a date under machine time zone from civilDate\r\n timeZone: null,\r\n }, _.omit(options, 'datetime', 'time')));\r\n\r\n return civilDate => dateFormatter(new Date(civilDate.year, civilDate.month - 1, civilDate.day));\r\n }\r\n\r\n /**\r\n * Synchronously parse civil date.\r\n * @param {string} value - The date string to be parsed\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * except for 'timeZone', time', and 'datetime'.\r\n * As CivilDate doesn't have timeZone/time infomation.\r\n * @return {string} The parsed civil date, null when value is invalid\r\n * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n */\r\n parseCivilDate(value, options) {\r\n return this.civilDateParser(options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously parse civil date with given options.\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/date/date-formatter.md}\r\n * except for 'timeZone', time', and 'datetime'.\r\n * As CivilDate doesn't have timeZone/time infomation.\r\n * @return {Function} The function parsing civil date\r\n * @see [Temporal Proposal]{@link https://github.com/tc39/proposal-temporal}\r\n */\r\n civilDateParser(options) {\r\n const dateParser = this.dateParser(_.defaults({\r\n // we create a date under machine time zone from civilDate\r\n timeZone: 'UTC',\r\n }, _.omit(options, 'datetime', 'time')));\r\n\r\n return (value) => {\r\n const date = dateParser(value);\r\n // for now, we don't want introduce temporal as dependency of this package\r\n return _.isDate(date) ? {\r\n year: date.getUTCFullYear(),\r\n month: date.getUTCMonth() + 1,\r\n day: date.getUTCDate(),\r\n toString() { return date.toISOString().substr(0, 10); },\r\n } : null;\r\n };\r\n }\r\n\r\n /**\r\n * Synchronously format unit with given options.\r\n * @param {number} value - The number to be formatted\r\n * @param {string} unit - The unit to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/unit/unit-formatter.md}\r\n * @return {string} The formatted unit\r\n */\r\n formatUnit(value, unit, options) {\r\n return this.unitFormatter(unit, options)(value);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format unit with given options.\r\n * @param {string} unit - The unit to be formatted\r\n * @param {Object} [options] Same options as [Globalize.js]{@link https://github.com/globalizejs/globalize/blob/master/doc/api/unit/unit-formatter.md}\r\n * @return {Function} The function formatting unit\r\n */\r\n unitFormatter(unit, {\r\n form,\r\n numberFormatter = this.decimalFormatter(),\r\n } = {}) {\r\n return synchronousGlobalize.call(this).unitFormatter(unit, {\r\n form,\r\n numberFormatter,\r\n });\r\n }\r\n\r\n /**\r\n * Synchronously format list with given options.\r\n * @param {string[]} list - The list to be formatted\r\n * @param {Object} [options] Same options as [Intl.ListFormat stage 2 proposal]{@link https://github.com/zbraniecki/proposal-intl-list-format}\r\n * @param {Object} [options.style=regular] Could be one of \"regular\", \"regular-long\",\r\n * \"regular-short\", \"unit\", \"unit-long\", \"unit-short\", \"unit-narrow\"\r\n * @return {string} The formatted list\r\n */\r\n formatList(list, options) {\r\n return this.listFormatter(options)(list);\r\n }\r\n\r\n /**\r\n * Return a function synchronously format list with given options.\r\n * @param {Object} [options] Same options as [Intl.ListFormat stage 2 proposal]{@link https://github.com/zbraniecki/proposal-intl-list-format}\r\n * @param {Object} [options.style=regular] Could be one of \"regular\", \"regular-long\",\r\n * \"regular-short\", \"unit\", \"unit-long\", \"unit-short\", \"unit-narrow\"\r\n * @return {Function} The function formatting list\r\n */\r\n listFormatter({\r\n style = 'regular',\r\n } = {}) {\r\n const [type, variant] = style.split('-');\r\n const cldr = this.getCldr();\r\n const cldrTypeName = _.compact([\r\n type === 'regular' ? 'standard' : type,\r\n variant === 'long' ? null : variant,\r\n ]).join('-');\r\n const listPattern = cldr.main(`listPatterns/listPattern-type-${cldrTypeName}`);\r\n const template = pattern => ([first, second]) => pattern.replace('{0}', first).replace('{1}', second);\r\n const twoTemplate = template(listPattern['2']);\r\n const middleTemplate = template(listPattern.middle);\r\n const startTemplate = template(listPattern.start);\r\n const endTemplate = template(listPattern.end);\r\n\r\n return (list) => {\r\n const size = _.size(list);\r\n\r\n if (size === 0) {\r\n return '';\r\n } else if (size === 1) {\r\n return list[0];\r\n }\r\n\r\n if (size === 2) {\r\n return twoTemplate(list);\r\n }\r\n\r\n const [first, second, ...rest] = list;\r\n const middle = _.reduce(\r\n _.initial(rest),\r\n (memo, item) => middleTemplate([memo, item]),\r\n second\r\n );\r\n\r\n return startTemplate([\r\n first,\r\n endTemplate([\r\n middle,\r\n _.last(list),\r\n ]),\r\n ]);\r\n };\r\n }\r\n\r\n // Async API\r\n\r\n /**\r\n * Asynchronously get and evaluate a localized string template (or the string as-is if it's\r\n * not a template).\r\n * @param {string} key - The key of the string resource\r\n * @param {Object} [model] - The model for the string template (if needed)\r\n * @return {Promise.<string>} A promise that resolves to the template evaluation result\r\n */\r\n fetchString(key, ...args) {\r\n return this.p$data.then(({ resource }) => {\r\n const str = resource.getString(key, ...args);\r\n if (!str) {\r\n this.missingKeys[key] = true;\r\n }\r\n return str;\r\n });\r\n }\r\n\r\n /**\r\n * Asynchronously get locale used for this model.\r\n * @returns {Promise.<string>} locale used for this model.\r\n */\r\n fetchLocale() {\r\n return this.p$data.then(data => data.locale);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8__;","import Promise from 'bluebird';\r\n\r\n/**\r\n * A helper to handle set/get global locale asynchronously.\r\n * @private\r\n */\r\nexport class LocaleManager {\r\n constructor() {\r\n this.p$global = new Promise((resolve) => {\r\n this.resolveGlobalLocale = resolve;\r\n });\r\n }\r\n\r\n /**\r\n * Get global locale promise.\r\n * @returns {Promise.<string>} promise of global locale\r\n * @private\r\n */\r\n p$globalLocale() {\r\n return this.p$global;\r\n }\r\n\r\n /**\r\n * Set global locale.\r\n * @param {string} locale - global locale to set.\r\n * @returns {Promise.<string>} promise of global locale\r\n * @private\r\n */\r\n setGlobalLocale(locale) {\r\n if (this.p$global.isFulfilled()) {\r\n // has been inited\r\n this.p$global = Promise.resolve(locale);\r\n } else {\r\n // first init\r\n this.resolveGlobalLocale(locale);\r\n }\r\n\r\n return this.p$globalLocale();\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/**\r\n * Translation resource.\r\n * @private\r\n */\r\nexport class Resource {\r\n /**\r\n * Creates an instance of Resource.\r\n * @param {Object} options - options\r\n * @param {Object.<string, string>} data - key -> translation pairs.\r\n * @param {string|bool} failFast - when got errors\r\n * \"SAFE\" - ignore errors and try to recover by using keys\r\n * else - throw errors and crash current execution\r\n * @constructs Resource\r\n * @private\r\n */\r\n constructor({\r\n data,\r\n failFast,\r\n }) {\r\n if (!_.isObject(data)) {\r\n throw new Error('Localization data must be an Object');\r\n }\r\n\r\n this.data = data;\r\n this.failFast = failFast;\r\n }\r\n\r\n /**\r\n * Get translation of given key.\r\n * When translation is Mustache.js-style template string, model will be filled in.\r\n * @param {string} key - key of the message translated.\r\n * @param {Object.<string, string>} [model] - model to be filled into the template string.\r\n * @param {Function} [preprocess] - Function to use on the template before running curlyTemplate.\r\n * @returns {string} the translation.\r\n * @private\r\n */\r\n getString(key, model, {\r\n preprocess = _.identity,\r\n } = {}) {\r\n if (!_.isString(key)) {\r\n throw new Error('Localization key must be a String');\r\n }\r\n\r\n let ret = putil.get(this.data, key);\r\n\r\n if (_.isNull(ret)) { // translation is not ready, use English text instead\r\n ret = key;\r\n }\r\n\r\n if (ret) {\r\n try {\r\n ret = preprocess(ret);\r\n } catch (ex) {\r\n if (this.failFast === 'SAFE') {\r\n // maybe there are some errors in the translated strings, try to recover by using the key\r\n ret = preprocess(key);\r\n } else {\r\n throw ex;\r\n }\r\n }\r\n\r\n if (!_.isString(ret)) {\r\n throw new Error(`Preprocess function must return a String. ${key}`);\r\n }\r\n\r\n if (model) {\r\n try {\r\n const compiled = putil.curlyTemplate(ret);\r\n ret = compiled(model);\r\n } catch (ex) {\r\n if (this.failFast === 'SAFE') {\r\n // maybe there are some errors in the translated strings, try to recover by using the key\r\n const compiled = putil.curlyTemplate(key);\r\n ret = compiled(model);\r\n } else {\r\n throw ex;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","\r\n\r\nexport * from './src/index';\r\n","export * from './fixed-i18n-mock';\r\nexport * from './model-i18n-mock';\r\nexport * from './static-i18n-mock';\r\nexport * from './static-i18n-model-mock';\r\n","import _ from 'underscore';\r\nimport * as putil from '@bingads-webui-universal/primitive-utilities';\r\nimport { staticI18nMock } from './static-i18n-mock';\r\n\r\nconst {\r\n isValidDecimal,\r\n parseDecimal,\r\n formatDecimal,\r\n} = staticI18nMock;\r\n\r\nclass FixedI18nMock {\r\n constructor(dictionary) {\r\n this.dictionary = dictionary;\r\n }\r\n\r\n getString(key, model) {\r\n if (!_.isString(key)) {\r\n throw new Error('Localization key must be a String');\r\n }\r\n\r\n if (!_.has(this.dictionary, key)) {\r\n return key;\r\n }\r\n\r\n let ret = this.dictionary[key];\r\n\r\n if (ret && model) {\r\n const compiled = putil.curlyTemplate(ret);\r\n\r\n ret = compiled(model);\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n\r\n_.extend(FixedI18nMock.prototype, {\r\n isValidDecimal,\r\n parseDecimal,\r\n formatDecimal,\r\n});\r\n\r\nexport { FixedI18nMock };\r\n","import _ from 'underscore';\r\n\r\nexport const staticI18nMock = {\r\n getString: _.identity,\r\n isValidDecimal: value => !_.isNaN(parseFloat(value)),\r\n parseDecimal: str => parseFloat(str),\r\n formatDecimal: float => `${float}`,\r\n};\r\n","import _ from 'underscore';\r\nimport Globalize from 'globalize';\r\nimport core from '@bingads-webui-universal/i18n-cldr-data-modern/core.json';\r\nimport enLocale from '@bingads-webui-universal/i18n-cldr-data-modern/locales/en.json';\r\nimport { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport { ModuleI18nShim } from './shims/module-i18n-shim';\r\nimport { ComponentI18nShim } from './shims/component-i18n-shim';\r\n\r\nconst currency = 'USD';\r\nconst locale = 'en-US';\r\nI18nModel.setGlobalLocale(locale);\r\n\r\nGlobalize.load(core, enLocale);\r\n// eslint-disable-next-line\r\nGlobalize.loadTimeZone(require('iana-tz-data')); // JSON data\r\n\r\nexport const modelI18nMock = ({ dictionary = {}, options = {} } = {}) =>\r\n // Initializeing the I18nModel in the synchronous mode\r\n new I18nModel(_.extendOwn({\r\n locale,\r\n loadCLDRData: () => locale,\r\n loadTranslationData: () => dictionary,\r\n currency,\r\n }, options));\r\n\r\n// mocks 'component/i18n/loader'\r\nexport const modelComponentI18nMock = ({ dictionary = {}, options = {} } = {}) =>\r\n new ComponentI18nShim(modelI18nMock({ dictionary, options }));\r\n\r\n// mocks 'module/extension/requirejs/i18n'\r\nexport const modelModuleI18nMock = ({ dictionary = {}, options = {} } = {}) =>\r\n new ModuleI18nShim(modelI18nMock({ dictionary, options }));\r\n\r\n// Generates the object to mock such calls:\r\n// var i18n = window.globalLegacyI18n.get('component/i18n/loader!component/upgraded-url');\r\n//\r\n// Usage example:\r\n// const globalLegacyI18n = modelGlobalLegacyI18n({ options: { failFast: 'SAFE' }, dictionary: strings });\r\n// window.globalLegacyI18n = globalLegacyI18n;\r\n// ...\r\n// export const StyledApp = withI18n(withDefaultStyles(App, getAppStyles), globalLegacyI18n.main);\r\nexport const modelGlobalLegacyI18n = ({ dictionary = {}, options = {} } = {}) => (modelI18n => ({\r\n get(i18nRequireRequest) {\r\n const loaderName = i18nRequireRequest.split('!')[0];\r\n if (loaderName === 'component/i18n/loader') {\r\n return new ComponentI18nShim(modelI18n);\r\n } else if (loaderName === 'module/extension/requirejs/i18n') {\r\n return new ModuleI18nShim(modelI18n);\r\n }\r\n return modelI18n;\r\n },\r\n\r\n main: modelI18n,\r\n}))(modelI18nMock({ dictionary, options }));\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","module.exports = __WEBPACK_EXTERNAL_MODULE__10__;","module.exports = __WEBPACK_EXTERNAL_MODULE__11__;","import _ from 'underscore';\r\nimport { safeGetString } from './string-utils';\r\n\r\n/* eslint-disable no-throw-literal, prefer-rest-params, no-plusplus, prefer-spread */\r\nexport class ModuleI18nShim {\r\n constructor(realI18n) {\r\n this.realI18n = realI18n;\r\n }\r\n\r\n getString(key) {\r\n if (!_.isString(key)) {\r\n throw 'Localization key was not a String';\r\n }\r\n\r\n let res = safeGetString(this.realI18n, key) || '';\r\n\r\n if (res) {\r\n if (arguments.length > 1) {\r\n for (let i = 1; i < arguments.length; i++) {\r\n const regex = new RegExp(`\\\\{${i - 1}\\\\}`, 'gi');\r\n\r\n res = res.replace(regex, arguments[i]);\r\n }\r\n }\r\n }\r\n\r\n return res || '';\r\n }\r\n\r\n getStringOrDefault(key, defValue) {\r\n if (!_.isString(key)) {\r\n throw 'Localization key was not a String';\r\n }\r\n\r\n if (!_.isString(defValue)) {\r\n throw 'The default value must be specified and must be a String';\r\n }\r\n\r\n const args = _.toArray(arguments);\r\n args.splice(1, 1);\r\n\r\n return this.getString.apply(this, args) || defValue;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function checkKey(key) {\r\n return !_.isString(key);\r\n}\r\n\r\nexport const safeGetString = (realI18n, key) => {\r\n if (key === '') {\r\n return '';\r\n }\r\n\r\n try {\r\n return realI18n.getString(key);\r\n } catch (e) {\r\n if (e.name === 'RangeError') {\r\n return undefined;\r\n }\r\n throw e;\r\n }\r\n};\r\n","import { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\nimport { checkKey, safeGetString } from './string-utils';\r\n\r\nexport class ComponentI18nShim {\r\n constructor(realI18n) {\r\n this.realI18n = realI18n;\r\n }\r\n\r\n getString(key, ...args) {\r\n if (checkKey(key)) return '';\r\n\r\n let res = safeGetString(this.realI18n, key) || '';\r\n\r\n if (res) {\r\n // eslint-disable-next-line\r\n for (const i in args) {\r\n const regex = new RegExp(`\\\\{${i}\\\\}`, 'gi');\r\n\r\n res = res.replace(regex, args[i]);\r\n }\r\n }\r\n\r\n return res || '';\r\n }\r\n\r\n get(key, model /* , options */) {\r\n if (checkKey(key)) return '';\r\n\r\n let ret = safeGetString(this.realI18n, key);\r\n\r\n if (ret) {\r\n if (model) {\r\n const compiled = curlyTemplate(ret);\r\n\r\n ret = compiled(model);\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__15__;","import _ from 'underscore';\r\nimport core from '@bingads-webui-universal/i18n-cldr-data-modern/core.json';\r\nimport enLocale from '@bingads-webui-universal/i18n-cldr-data-modern/locales/en.json';\r\nimport timeZoneData from 'iana-tz-data/iana-tz-data.json';\r\nimport { I18nModel } from '@bingads-webui-universal/i18n-model';\r\nimport { curlyTemplate } from '@bingads-webui-universal/primitive-utilities';\r\n\r\nI18nModel.setGlobalLocale('en-US');\r\nI18nModel.loadCLDRData(core);\r\nI18nModel.loadCLDRData(enLocale);\r\nI18nModel.loadTimeZoneData(timeZoneData);\r\n\r\nconst staticI18nModelMock = new I18nModel({\r\n loadCLDRData: loc => loc,\r\n loadTranslationData: () => ({}),\r\n failFast: true,\r\n});\r\n\r\nstaticI18nModelMock.ready();\r\nstaticI18nModelMock.getString = (key, model, { preprocess = _.identity } = {}) => {\r\n let ret = key;\r\n if (ret) {\r\n ret = preprocess(ret);\r\n\r\n if (model) {\r\n const compiled = curlyTemplate(ret);\r\n\r\n ret = compiled(model);\r\n }\r\n }\r\n\r\n return ret;\r\n};\r\n\r\nexport { staticI18nModelMock };\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__17__;","module.exports = __WEBPACK_EXTERNAL_MODULE__28__;","\r\n\r\nexport * from './src/index';\r\n","import _ from 'underscore';\r\nimport $ from 'jquery';\r\nimport URI from 'urijs';\r\nimport topDomainList from './top-domain';\r\n\r\nexport function join(first: string, ...frags: string[]) {\r\n return frags.reduce((memo, frag) => {\r\n if (_.isEmpty(frag)) {\r\n return memo;\r\n }\r\n const eSlash = /\\/$/.test(memo);\r\n const sSlash = /^\\//.test(frag);\r\n\r\n if (!eSlash && !sSlash) {\r\n return `${memo}/${frag}`;\r\n } else if (eSlash && sSlash) {\r\n return memo + frag.substring(1);\r\n }\r\n return memo + frag;\r\n }, first);\r\n}\r\n\r\ntype QueryObject = any[] | JQuery.PlainObject | JQuery;\r\n\r\nexport function queryify(url: string, data: QueryObject, serializeParam = (originalData: QueryObject) => $.param(originalData)) {\r\n const startOfRoute = url.indexOf('#');\r\n let route = '';\r\n let pathAndQuery = url;\r\n\r\n if (startOfRoute !== -1) {\r\n route = url.substring(startOfRoute);\r\n pathAndQuery = url.substring(0, startOfRoute);\r\n }\r\n\r\n // $.param is not supported by node, so use custom param serialization function\r\n return pathAndQuery + (pathAndQuery.indexOf('?') === -1 ? '?' : '&') + serializeParam(data) + route;\r\n}\r\n\r\nexport function mailto(recipient: string, subject: string, body: string) {\r\n return `mailto:${recipient}?subject=${subject}&body=${body}`;\r\n}\r\n\r\nexport function setUrlParameter(name: string, value: string, url = window.location.href, options = { keepSqBrackets: false }) {\r\n const keepSqBrackets = !!options.keepSqBrackets;\r\n\r\n const setQueryStringParam = function (innerUrl: string, originalN: string, v: string, replaceOnly: boolean) {\r\n let n = originalN;\r\n if (!keepSqBrackets) {\r\n n = n.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n }\r\n const regex = new RegExp(`([\\\\?&])${n}=.*?(&|$|#)`);\r\n if (innerUrl.match(regex)) {\r\n return innerUrl.replace(regex, `$1${n}=${v}$2`);\r\n }\r\n if (!replaceOnly) {\r\n let qs = '';\r\n const position = innerUrl.indexOf('?');\r\n if (position > -1) {\r\n if (position + 1 < innerUrl.length) {\r\n qs = '&';\r\n }\r\n } else {\r\n qs = '?';\r\n }\r\n return `${innerUrl + qs + n}=${v}`;\r\n }\r\n return innerUrl;\r\n };\r\n\r\n const pound = url.lastIndexOf('#');\r\n if (pound > -1) {\r\n return setQueryStringParam(url.slice(0, pound), name, value, false)\r\n + setQueryStringParam(url.slice(pound), name, value, true);\r\n }\r\n\r\n return setQueryStringParam(url, name, value, false);\r\n}\r\n\r\n// Gets the url parameter value by parameter name.\r\nexport function getParameter(originalName: string, url = window.location.href) {\r\n const name = originalName.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n const value = (RegExp(`[\\\\?&]${name}=([^&#]*)`).exec(url) || [null, null])[1];\r\n if (value) return decodeURIComponent(value);\r\n return value;\r\n}\r\n\r\n// Update the url parameter by parameter name and value.\r\nexport function updateParameter(key: string, value: string, originalUrl: string) {\r\n const re = new RegExp(`([?|&])${key}=.*?(&|#|$)`, 'i');\r\n let url = originalUrl;\r\n if (url.match(re)) {\r\n return url.replace(re, `$1${key}=${value}$2`);\r\n }\r\n\r\n let hash = '';\r\n if (url.indexOf('#') !== -1) {\r\n hash = url.replace(/.*#/, '#');\r\n url = url.replace(/#.*/, '');\r\n }\r\n const separator = url.indexOf('?') !== -1 ? '&' : '?';\r\n return `${url + separator + key}=${value}${hash}`;\r\n}\r\n\r\nexport function hasScheme(url: string) {\r\n const urlRegex = new RegExp('^(http|https|ftp)(://)(.+)', 'i');\r\n return urlRegex.test(url);\r\n}\r\n\r\nexport function hasProtocol(url: string) {\r\n const urlRegex = new RegExp('^(http|https|ftp)(://)', 'i');\r\n return urlRegex.test(url);\r\n}\r\n\r\nexport function extendPath(url: string, path: string) {\r\n const queryIndex = url.indexOf('?');\r\n if (queryIndex === -1) {\r\n return join(url, path);\r\n }\r\n\r\n return join(url.slice(0, queryIndex), path) + url.slice(queryIndex);\r\n}\r\n\r\nexport function getDomain(originalUrl: string) {\r\n let url = originalUrl;\r\n if (!_.isString(url) || _.isEmpty(url.trim())) {\r\n return '';\r\n }\r\n\r\n url = url.trim();\r\n const a = document.createElement('a');\r\n let domain = '';\r\n a.href = hasProtocol(url) ? url : (`http://${url}`);\r\n\r\n try {\r\n const { hostname } = a;\r\n const startIndex = url.toLowerCase().indexOf(hostname);\r\n\r\n domain = (startIndex === -1 ? '' : url.substring(startIndex, hostname.length + startIndex));\r\n } catch (err) {\r\n domain = '';\r\n }\r\n\r\n return domain;\r\n}\r\n\r\nexport function isRelativeUrl(url: string) {\r\n return _.isString(url) && (url.indexOf('/') === 0);\r\n}\r\n\r\nexport function isInternalUrl(url: string, domainsToCheck = ['ads.microsoft.com', 'ads-int.microsoft.com', 'corp.microsoft.com']) {\r\n if (isRelativeUrl(url)) {\r\n return true;\r\n }\r\n\r\n const domain = getDomain(url).toLowerCase();\r\n\r\n return (domain === 'localhost') ||\r\n _.any(domainsToCheck, toCheck => domain.indexOf(toCheck.toLowerCase()) > -1);\r\n}\r\n\r\nexport function getUrlWithProtocol(website: string) {\r\n const site = website.trim();\r\n const uri = new URI(site);\r\n\r\n if (uri.protocol()) {\r\n return uri.toString();\r\n }\r\n\r\n return URI(site).protocol('https').toString();\r\n}\r\n\r\nexport function isValidUrlWithValidTopDomain(url: string) {\r\n const regex = /^https?:\\/\\/([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.([a-z]{2,63})(?=$|\\/|\\?)/i;\r\n const matchs = url.match(regex);\r\n const topLevelDomain = _.result(matchs, '2');\r\n return _.isString(url) && regex.test(url) &&\r\n topLevelDomain && _.contains(topDomainList, topLevelDomain.toUpperCase());\r\n}\r\n\r\n// Regular expressions used to determine if a URL starts with a valid domain name.\r\n// Similar regex to Microsoft.Ads.Mca.Implementation.Ads.EO.ValidationHelper.ValidateWebsite\r\nexport const UrlRegex = /^https?:\\/\\/([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.[a-z]{2,63}(?=$|\\/|\\?)/i;\r\nexport const UrlRegexWithOptionalProtocol = /^(?:http(s)?:\\/\\/)?([a-z0-9-_]+\\.)*[a-z0-9-_]+\\.[a-z]{2,63}(?=$|\\/|\\?)/i;\r\n\r\n/**\r\n * Validate a HTTP or HTTPS URL.\r\n * @param {String} url - Fully qualified URL, including the prefix. E.g. http://www.example.com/foo\r\n * @returns {Boolean} - True if the URL is valid.\r\n */\r\nexport function isValidUrl(url: string) {\r\n return _.isString(url) && UrlRegex.test(url);\r\n}\r\n\r\n/**\r\n * Extracts the protocol and domain from a URL, with no trailing slash.\r\n * @param {String} url - URL to extract from, e.g. 'https://abc-123.com/foo.html'\r\n * @returns {String} - Protocol and domain name, or null if url could not be parsed.\r\n */\r\nexport function getUrlProtocolAndDomain(url: string) {\r\n const matches = url.match(UrlRegex);\r\n if (matches) {\r\n const result = _.first(matches);\r\n return result || '';\r\n }\r\n return '';\r\n}\r\n","// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\r\n// # Version 2022101900, Last Updated Wed Oct 19 07:07:01 2022 UTC\r\n\r\nexport default [\r\n 'AAA',\r\n 'AARP',\r\n 'ABARTH',\r\n 'ABB',\r\n 'ABBOTT',\r\n 'ABBVIE',\r\n 'ABC',\r\n 'ABLE',\r\n 'ABOGADO',\r\n 'ABUDHABI',\r\n 'AC',\r\n 'ACADEMY',\r\n 'ACCENTURE',\r\n 'ACCOUNTANT',\r\n 'ACCOUNTANTS',\r\n 'ACO',\r\n 'ACTOR',\r\n 'AD',\r\n 'ADAC',\r\n 'ADS',\r\n 'ADULT',\r\n 'AE',\r\n 'AEG',\r\n 'AERO',\r\n 'AETNA',\r\n 'AF',\r\n 'AFL',\r\n 'AFRICA',\r\n 'AG',\r\n 'AGAKHAN',\r\n 'AGENCY',\r\n 'AI',\r\n 'AIG',\r\n 'AIRBUS',\r\n 'AIRFORCE',\r\n 'AIRTEL',\r\n 'AKDN',\r\n 'AL',\r\n 'ALFAROMEO',\r\n 'ALIBABA',\r\n 'ALIPAY',\r\n 'ALLFINANZ',\r\n 'ALLSTATE',\r\n 'ALLY',\r\n 'ALSACE',\r\n 'ALSTOM',\r\n 'AM',\r\n 'AMAZON',\r\n 'AMERICANEXPRESS',\r\n 'AMERICANFAMILY',\r\n 'AMEX',\r\n 'AMFAM',\r\n 'AMICA',\r\n 'AMSTERDAM',\r\n 'ANALYTICS',\r\n 'ANDROID',\r\n 'ANQUAN',\r\n 'ANZ',\r\n 'AO',\r\n 'AOL',\r\n 'APARTMENTS',\r\n 'APP',\r\n 'APPLE',\r\n 'AQ',\r\n 'AQUARELLE',\r\n 'AR',\r\n 'ARAB',\r\n 'ARAMCO',\r\n 'ARCHI',\r\n 'ARMY',\r\n 'ARPA',\r\n 'ART',\r\n 'ARTE',\r\n 'AS',\r\n 'ASDA',\r\n 'ASIA',\r\n 'ASSOCIATES',\r\n 'AT',\r\n 'ATHLETA',\r\n 'ATTORNEY',\r\n 'AU',\r\n 'AUCTION',\r\n 'AUDI',\r\n 'AUDIBLE',\r\n 'AUDIO',\r\n 'AUSPOST',\r\n 'AUTHOR',\r\n 'AUTO',\r\n 'AUTOS',\r\n 'AVIANCA',\r\n 'AW',\r\n 'AWS',\r\n 'AX',\r\n 'AXA',\r\n 'AZ',\r\n 'AZURE',\r\n 'BA',\r\n 'BABY',\r\n 'BAIDU',\r\n 'BANAMEX',\r\n 'BANANAREPUBLIC',\r\n 'BAND',\r\n 'BANK',\r\n 'BAR',\r\n 'BARCELONA',\r\n 'BARCLAYCARD',\r\n 'BARCLAYS',\r\n 'BAREFOOT',\r\n 'BARGAINS',\r\n 'BASEBALL',\r\n 'BASKETBALL',\r\n 'BAUHAUS',\r\n 'BAYERN',\r\n 'BB',\r\n 'BBC',\r\n 'BBT',\r\n 'BBVA',\r\n 'BCG',\r\n 'BCN',\r\n 'BD',\r\n 'BE',\r\n 'BEATS',\r\n 'BEAUTY',\r\n 'BEER',\r\n 'BENTLEY',\r\n 'BERLIN',\r\n 'BEST',\r\n 'BESTBUY',\r\n 'BET',\r\n 'BF',\r\n 'BG',\r\n 'BH',\r\n 'BHARTI',\r\n 'BI',\r\n 'BIBLE',\r\n 'BID',\r\n 'BIKE',\r\n 'BING',\r\n 'BINGO',\r\n 'BIO',\r\n 'BIZ',\r\n 'BJ',\r\n 'BLACK',\r\n 'BLACKFRIDAY',\r\n 'BLOCKBUSTER',\r\n 'BLOG',\r\n 'BLOOMBERG',\r\n 'BLUE',\r\n 'BM',\r\n 'BMS',\r\n 'BMW',\r\n 'BN',\r\n 'BNPPARIBAS',\r\n 'BO',\r\n 'BOATS',\r\n 'BOEHRINGER',\r\n 'BOFA',\r\n 'BOM',\r\n 'BOND',\r\n 'BOO',\r\n 'BOOK',\r\n 'BOOKING',\r\n 'BOSCH',\r\n 'BOSTIK',\r\n 'BOSTON',\r\n 'BOT',\r\n 'BOUTIQUE',\r\n 'BOX',\r\n 'BR',\r\n 'BRADESCO',\r\n 'BRIDGESTONE',\r\n 'BROADWAY',\r\n 'BROKER',\r\n 'BROTHER',\r\n 'BRUSSELS',\r\n 'BS',\r\n 'BT',\r\n 'BUILD',\r\n 'BUILDERS',\r\n 'BUSINESS',\r\n 'BUY',\r\n 'BUZZ',\r\n 'BV',\r\n 'BW',\r\n 'BY',\r\n 'BZ',\r\n 'BZH',\r\n 'CA',\r\n 'CAB',\r\n 'CAFE',\r\n 'CAL',\r\n 'CALL',\r\n 'CALVINKLEIN',\r\n 'CAM',\r\n 'CAMERA',\r\n 'CAMP',\r\n 'CANON',\r\n 'CAPETOWN',\r\n 'CAPITAL',\r\n 'CAPITALONE',\r\n 'CAR',\r\n 'CARAVAN',\r\n 'CARDS',\r\n 'CARE',\r\n 'CAREER',\r\n 'CAREERS',\r\n 'CARS',\r\n 'CASA',\r\n 'CASE',\r\n 'CASH',\r\n 'CASINO',\r\n 'CAT',\r\n 'CATERING',\r\n 'CATHOLIC',\r\n 'CBA',\r\n 'CBN',\r\n 'CBRE',\r\n 'CBS',\r\n 'CC',\r\n 'CD',\r\n 'CENTER',\r\n 'CEO',\r\n 'CERN',\r\n 'CF',\r\n 'CFA',\r\n 'CFD',\r\n 'CG',\r\n 'CH',\r\n 'CHANEL',\r\n 'CHANNEL',\r\n 'CHARITY',\r\n 'CHASE',\r\n 'CHAT',\r\n 'CHEAP',\r\n 'CHINTAI',\r\n 'CHRISTMAS',\r\n 'CHROME',\r\n 'CHURCH',\r\n 'CI',\r\n 'CIPRIANI',\r\n 'CIRCLE',\r\n 'CISCO',\r\n 'CITADEL',\r\n 'CITI',\r\n 'CITIC',\r\n 'CITY',\r\n 'CITYEATS',\r\n 'CK',\r\n 'CL',\r\n 'CLAIMS',\r\n 'CLEANING',\r\n 'CLICK',\r\n 'CLINIC',\r\n 'CLINIQUE',\r\n 'CLOTHING',\r\n 'CLOUD',\r\n 'CLUB',\r\n 'CLUBMED',\r\n 'CM',\r\n 'CN',\r\n 'CO',\r\n 'COACH',\r\n 'CODES',\r\n 'COFFEE',\r\n 'COLLEGE',\r\n 'COLOGNE',\r\n 'COM',\r\n 'COMCAST',\r\n 'COMMBANK',\r\n 'COMMUNITY',\r\n 'COMPANY',\r\n 'COMPARE',\r\n 'COMPUTER',\r\n 'COMSEC',\r\n 'CONDOS',\r\n 'CONSTRUCTION',\r\n 'CONSULTING',\r\n 'CONTACT',\r\n 'CONTRACTORS',\r\n 'COOKING',\r\n 'COOKINGCHANNEL',\r\n 'COOL',\r\n 'COOP',\r\n 'CORSICA',\r\n 'COUNTRY',\r\n 'COUPON',\r\n 'COUPONS',\r\n 'COURSES',\r\n 'CPA',\r\n 'CR',\r\n 'CREDIT',\r\n 'CREDITCARD',\r\n 'CREDITUNION',\r\n 'CRICKET',\r\n 'CROWN',\r\n 'CRS',\r\n 'CRUISE',\r\n 'CRUISES',\r\n 'CU',\r\n 'CUISINELLA',\r\n 'CV',\r\n 'CW',\r\n 'CX',\r\n 'CY',\r\n 'CYMRU',\r\n 'CYOU',\r\n 'CZ',\r\n 'DABUR',\r\n 'DAD',\r\n 'DANCE',\r\n 'DATA',\r\n 'DATE',\r\n 'DATING',\r\n 'DATSUN',\r\n 'DAY',\r\n 'DCLK',\r\n 'DDS',\r\n 'DE',\r\n 'DEAL',\r\n 'DEALER',\r\n 'DEALS',\r\n 'DEGREE',\r\n 'DELIVERY',\r\n 'DELL',\r\n 'DELOITTE',\r\n 'DELTA',\r\n 'DEMOCRAT',\r\n 'DENTAL',\r\n 'DENTIST',\r\n 'DESI',\r\n 'DESIGN',\r\n 'DEV',\r\n 'DHL',\r\n 'DIAMONDS',\r\n 'DIET',\r\n 'DIGITAL',\r\n 'DIRECT',\r\n 'DIRECTORY',\r\n 'DISCOUNT',\r\n 'DISCOVER',\r\n 'DISH',\r\n 'DIY',\r\n 'DJ',\r\n 'DK',\r\n 'DM',\r\n 'DNP',\r\n 'DO',\r\n 'DOCS',\r\n 'DOCTOR',\r\n 'DOG',\r\n 'DOMAINS',\r\n 'DOT',\r\n 'DOWNLOAD',\r\n 'DRIVE',\r\n 'DTV',\r\n 'DUBAI',\r\n 'DUNLOP',\r\n 'DUPONT',\r\n 'DURBAN',\r\n 'DVAG',\r\n 'DVR',\r\n 'DZ',\r\n 'EARTH',\r\n 'EAT',\r\n 'EC',\r\n 'ECO',\r\n 'EDEKA',\r\n 'EDU',\r\n 'EDUCATION',\r\n 'EE',\r\n 'EG',\r\n 'EMAIL',\r\n 'EMERCK',\r\n 'ENERGY',\r\n 'ENGINEER',\r\n 'ENGINEERING',\r\n 'ENTERPRISES',\r\n 'EPSON',\r\n 'EQUIPMENT',\r\n 'ER',\r\n 'ERICSSON',\r\n 'ERNI',\r\n 'ES',\r\n 'ESQ',\r\n 'ESTATE',\r\n 'ET',\r\n 'ETISALAT',\r\n 'EU',\r\n 'EUROVISION',\r\n 'EUS',\r\n 'EVENTS',\r\n 'EXCHANGE',\r\n 'EXPERT',\r\n 'EXPOSED',\r\n 'EXPRESS',\r\n 'EXTRASPACE',\r\n 'FAGE',\r\n 'FAIL',\r\n 'FAIRWINDS',\r\n 'FAITH',\r\n 'FAMILY',\r\n 'FAN',\r\n 'FANS',\r\n 'FARM',\r\n 'FARMERS',\r\n 'FASHION',\r\n 'FAST',\r\n 'FEDEX',\r\n 'FEEDBACK',\r\n 'FERRARI',\r\n 'FERRERO',\r\n 'FI',\r\n 'FIAT',\r\n 'FIDELITY',\r\n 'FIDO',\r\n 'FILM',\r\n 'FINAL',\r\n 'FINANCE',\r\n 'FINANCIAL',\r\n 'FIRE',\r\n 'FIRESTONE',\r\n 'FIRMDALE',\r\n 'FISH',\r\n 'FISHING',\r\n 'FIT',\r\n 'FITNESS',\r\n 'FJ',\r\n 'FK',\r\n 'FLICKR',\r\n 'FLIGHTS',\r\n 'FLIR',\r\n 'FLORIST',\r\n 'FLOWERS',\r\n 'FLY',\r\n 'FM',\r\n 'FO',\r\n 'FOO',\r\n 'FOOD',\r\n 'FOODNETWORK',\r\n 'FOOTBALL',\r\n 'FORD',\r\n 'FOREX',\r\n 'FORSALE',\r\n 'FORUM',\r\n 'FOUNDATION',\r\n 'FOX',\r\n 'FR',\r\n 'FREE',\r\n 'FRESENIUS',\r\n 'FRL',\r\n 'FROGANS',\r\n 'FRONTDOOR',\r\n 'FRONTIER',\r\n 'FTR',\r\n 'FUJITSU',\r\n 'FUN',\r\n 'FUND',\r\n 'FURNITURE',\r\n 'FUTBOL',\r\n 'FYI',\r\n 'GA',\r\n 'GAL',\r\n 'GALLERY',\r\n 'GALLO',\r\n 'GALLUP',\r\n 'GAME',\r\n 'GAMES',\r\n 'GAP',\r\n 'GARDEN',\r\n 'GAY',\r\n 'GB',\r\n 'GBIZ',\r\n 'GD',\r\n 'GDN',\r\n 'GE',\r\n 'GEA',\r\n 'GENT',\r\n 'GENTING',\r\n 'GEORGE',\r\n 'GF',\r\n 'GG',\r\n 'GGEE',\r\n 'GH',\r\n 'GI',\r\n 'GIFT',\r\n 'GIFTS',\r\n 'GIVES',\r\n 'GIVING',\r\n 'GL',\r\n 'GLASS',\r\n 'GLE',\r\n 'GLOBAL',\r\n 'GLOBO',\r\n 'GM',\r\n 'GMAIL',\r\n 'GMBH',\r\n 'GMO',\r\n 'GMX',\r\n 'GN',\r\n 'GODADDY',\r\n 'GOLD',\r\n 'GOLDPOINT',\r\n 'GOLF',\r\n 'GOO',\r\n 'GOODYEAR',\r\n 'GOOG',\r\n 'GOOGLE',\r\n 'GOP',\r\n 'GOT',\r\n 'GOV',\r\n 'GP',\r\n 'GQ',\r\n 'GR',\r\n 'GRAINGER',\r\n 'GRAPHICS',\r\n 'GRATIS',\r\n 'GREEN',\r\n 'GRIPE',\r\n 'GROCERY',\r\n 'GROUP',\r\n 'GS',\r\n 'GT',\r\n 'GU',\r\n 'GUARDIAN',\r\n 'GUCCI',\r\n 'GUGE',\r\n 'GUIDE',\r\n 'GUITARS',\r\n 'GURU',\r\n 'GW',\r\n 'GY',\r\n 'HAIR',\r\n 'HAMBURG',\r\n 'HANGOUT',\r\n 'HAUS',\r\n 'HBO',\r\n 'HDFC',\r\n 'HDFCBANK',\r\n 'HEALTH',\r\n 'HEALTHCARE',\r\n 'HELP',\r\n 'HELSINKI',\r\n 'HERE',\r\n 'HERMES',\r\n 'HGTV',\r\n 'HIPHOP',\r\n 'HISAMITSU',\r\n 'HITACHI',\r\n 'HIV',\r\n 'HK',\r\n 'HKT',\r\n 'HM',\r\n 'HN',\r\n 'HOCKEY',\r\n 'HOLDINGS',\r\n 'HOLIDAY',\r\n 'HOMEDEPOT',\r\n 'HOMEGOODS',\r\n 'HOMES',\r\n 'HOMESENSE',\r\n 'HONDA',\r\n 'HORSE',\r\n 'HOSPITAL',\r\n 'HOST',\r\n 'HOSTING',\r\n 'HOT',\r\n 'HOTELES',\r\n 'HOTELS',\r\n 'HOTMAIL',\r\n 'HOUSE',\r\n 'HOW',\r\n 'HR',\r\n 'HSBC',\r\n 'HT',\r\n 'HU',\r\n 'HUGHES',\r\n 'HYATT',\r\n 'HYUNDAI',\r\n 'IBM',\r\n 'ICBC',\r\n 'ICE',\r\n 'ICU',\r\n 'ID',\r\n 'IE',\r\n 'IEEE',\r\n 'IFM',\r\n 'IKANO',\r\n 'IL',\r\n 'IM',\r\n 'IMAMAT',\r\n 'IMDB',\r\n 'IMMO',\r\n 'IMMOBILIEN',\r\n 'IN',\r\n 'INC',\r\n 'INDUSTRIES',\r\n 'INFINITI',\r\n 'INFO',\r\n 'ING',\r\n 'INK',\r\n 'INSTITUTE',\r\n 'INSURANCE',\r\n 'INSURE',\r\n 'INT',\r\n 'INTERNATIONAL',\r\n 'INTUIT',\r\n 'INVESTMENTS',\r\n 'IO',\r\n 'IPIRANGA',\r\n 'IQ',\r\n 'IR',\r\n 'IRISH',\r\n 'IS',\r\n 'ISMAILI',\r\n 'IST',\r\n 'ISTANBUL',\r\n 'IT',\r\n 'ITAU',\r\n 'ITV',\r\n 'JAGUAR',\r\n 'JAVA',\r\n 'JCB',\r\n 'JE',\r\n 'JEEP',\r\n 'JETZT',\r\n 'JEWELRY',\r\n 'JIO',\r\n 'JLL',\r\n 'JM',\r\n 'JMP',\r\n 'JNJ',\r\n 'JO',\r\n 'JOBS',\r\n 'JOBURG',\r\n 'JOT',\r\n 'JOY',\r\n 'JP',\r\n 'JPMORGAN',\r\n 'JPRS',\r\n 'JUEGOS',\r\n 'JUNIPER',\r\n 'KAUFEN',\r\n 'KDDI',\r\n 'KE',\r\n 'KERRYHOTELS',\r\n 'KERRYLOGISTICS',\r\n 'KERRYPROPERTIES',\r\n 'KFH',\r\n 'KG',\r\n 'KH',\r\n 'KI',\r\n 'KIA',\r\n 'KIDS',\r\n 'KIM',\r\n 'KINDER',\r\n 'KINDLE',\r\n 'KITCHEN',\r\n 'KIWI',\r\n 'KM',\r\n 'KN',\r\n 'KOELN',\r\n 'KOMATSU',\r\n 'KOSHER',\r\n 'KP',\r\n 'KPMG',\r\n 'KPN',\r\n 'KR',\r\n 'KRD',\r\n 'KRED',\r\n 'KUOKGROUP',\r\n 'KW',\r\n 'KY',\r\n 'KYOTO',\r\n 'KZ',\r\n 'LA',\r\n 'LACAIXA',\r\n 'LAMBORGHINI',\r\n 'LAMER',\r\n 'LANCASTER',\r\n 'LANCIA',\r\n 'LAND',\r\n 'LANDROVER',\r\n 'LANXESS',\r\n 'LASALLE',\r\n 'LAT',\r\n 'LATINO',\r\n 'LATROBE',\r\n 'LAW',\r\n 'LAWYER',\r\n 'LB',\r\n 'LC',\r\n 'LDS',\r\n 'LEASE',\r\n 'LECLERC',\r\n 'LEFRAK',\r\n 'LEGAL',\r\n 'LEGO',\r\n 'LEXUS',\r\n 'LGBT',\r\n 'LI',\r\n 'LIDL',\r\n 'LIFE',\r\n 'LIFEINSURANCE',\r\n 'LIFESTYLE',\r\n 'LIGHTING',\r\n 'LIKE',\r\n 'LILLY',\r\n 'LIMITED',\r\n 'LIMO',\r\n 'LINCOLN',\r\n 'LINDE',\r\n 'LINK',\r\n 'LIPSY',\r\n 'LIVE',\r\n 'LIVING',\r\n 'LK',\r\n 'LLC',\r\n 'LLP',\r\n 'LOAN',\r\n 'LOANS',\r\n 'LOCKER',\r\n 'LOCUS',\r\n 'LOFT',\r\n 'LOL',\r\n 'LONDON',\r\n 'LOTTE',\r\n 'LOTTO',\r\n 'LOVE',\r\n 'LPL',\r\n 'LPLFINANCIAL',\r\n 'LR',\r\n 'LS',\r\n 'LT',\r\n 'LTD',\r\n 'LTDA',\r\n 'LU',\r\n 'LUNDBECK',\r\n 'LUXE',\r\n 'LUXURY',\r\n 'LV',\r\n 'LY',\r\n 'MA',\r\n 'MACYS',\r\n 'MADRID',\r\n 'MAIF',\r\n 'MAISON',\r\n 'MAKEUP',\r\n 'MAN',\r\n 'MANAGEMENT',\r\n 'MANGO',\r\n 'MAP',\r\n 'MARKET',\r\n 'MARKETING',\r\n 'MARKETS',\r\n 'MARRIOTT',\r\n 'MARSHALLS',\r\n 'MASERATI',\r\n 'MATTEL',\r\n 'MBA',\r\n 'MC',\r\n 'MCKINSEY',\r\n 'MD',\r\n 'ME',\r\n 'MED',\r\n 'MEDIA',\r\n 'MEET',\r\n 'MELBOURNE',\r\n 'MEME',\r\n 'MEMORIAL',\r\n 'MEN',\r\n 'MENU',\r\n 'MERCKMSD',\r\n 'MG',\r\n 'MH',\r\n 'MIAMI',\r\n 'MICROSOFT',\r\n 'MIL',\r\n 'MINI',\r\n 'MINT',\r\n 'MIT',\r\n 'MITSUBISHI',\r\n 'MK',\r\n 'ML',\r\n 'MLB',\r\n 'MLS',\r\n 'MM',\r\n 'MMA',\r\n 'MN',\r\n 'MO',\r\n 'MOBI',\r\n 'MOBILE',\r\n 'MODA',\r\n 'MOE',\r\n 'MOI',\r\n 'MOM',\r\n 'MONASH',\r\n 'MONEY',\r\n 'MONSTER',\r\n 'MORMON',\r\n 'MORTGAGE',\r\n 'MOSCOW',\r\n 'MOTO',\r\n 'MOTORCYCLES',\r\n 'MOV',\r\n 'MOVIE',\r\n 'MP',\r\n 'MQ',\r\n 'MR',\r\n 'MS',\r\n 'MSD',\r\n 'MT',\r\n 'MTN',\r\n 'MTR',\r\n 'MU',\r\n 'MUSEUM',\r\n 'MUSIC',\r\n 'MUTUAL',\r\n 'MV',\r\n 'MW',\r\n 'MX',\r\n 'MY',\r\n 'MZ',\r\n 'NA',\r\n 'NAB',\r\n 'NAGOYA',\r\n 'NAME',\r\n 'NATURA',\r\n 'NAVY',\r\n 'NBA',\r\n 'NC',\r\n 'NE',\r\n 'NEC',\r\n 'NET',\r\n 'NETBANK',\r\n 'NETFLIX',\r\n 'NETWORK',\r\n 'NEUSTAR',\r\n 'NEW',\r\n 'NEWS',\r\n 'NEXT',\r\n 'NEXTDIRECT',\r\n 'NEXUS',\r\n 'NF',\r\n 'NFL',\r\n 'NG',\r\n 'NGO',\r\n 'NHK',\r\n 'NI',\r\n 'NICO',\r\n 'NIKE',\r\n 'NIKON',\r\n 'NINJA',\r\n 'NISSAN',\r\n 'NISSAY',\r\n 'NL',\r\n 'NO',\r\n 'NOKIA',\r\n 'NORTHWESTERNMUTUAL',\r\n 'NORTON',\r\n 'NOW',\r\n 'NOWRUZ',\r\n 'NOWTV',\r\n 'NP',\r\n 'NR',\r\n 'NRA',\r\n 'NRW',\r\n 'NTT',\r\n 'NU',\r\n 'NYC',\r\n 'NZ',\r\n 'OBI',\r\n 'OBSERVER',\r\n 'OFFICE',\r\n 'OKINAWA',\r\n 'OLAYAN',\r\n 'OLAYANGROUP',\r\n 'OLDNAVY',\r\n 'OLLO',\r\n 'OM',\r\n 'OMEGA',\r\n 'ONE',\r\n 'ONG',\r\n 'ONL',\r\n 'ONLINE',\r\n 'OOO',\r\n 'OPEN',\r\n 'ORACLE',\r\n 'ORANGE',\r\n 'ORG',\r\n 'ORGANIC',\r\n 'ORIGINS',\r\n 'OSAKA',\r\n 'OTSUKA',\r\n 'OTT',\r\n 'OVH',\r\n 'PA',\r\n 'PAGE',\r\n 'PANASONIC',\r\n 'PARIS',\r\n 'PARS',\r\n 'PARTNERS',\r\n 'PARTS',\r\n 'PARTY',\r\n 'PASSAGENS',\r\n 'PAY',\r\n 'PCCW',\r\n 'PE',\r\n 'PET',\r\n 'PF',\r\n 'PFIZER',\r\n 'PG',\r\n 'PH',\r\n 'PHARMACY',\r\n 'PHD',\r\n 'PHILIPS',\r\n 'PHONE',\r\n 'PHOTO',\r\n 'PHOTOGRAPHY',\r\n 'PHOTOS',\r\n 'PHYSIO',\r\n 'PICS',\r\n 'PICTET',\r\n 'PICTURES',\r\n 'PID',\r\n 'PIN',\r\n 'PING',\r\n 'PINK',\r\n 'PIONEER',\r\n 'PIZZA',\r\n 'PK',\r\n 'PL',\r\n 'PLACE',\r\n 'PLAY',\r\n 'PLAYSTATION',\r\n 'PLUMBING',\r\n 'PLUS',\r\n 'PM',\r\n 'PN',\r\n 'PNC',\r\n 'POHL',\r\n 'POKER',\r\n 'POLITIE',\r\n 'PORN',\r\n 'POST',\r\n 'PR',\r\n 'PRAMERICA',\r\n 'PRAXI',\r\n 'PRESS',\r\n 'PRIME',\r\n 'PRO',\r\n 'PROD',\r\n 'PRODUCTIONS',\r\n 'PROF',\r\n 'PROGRESSIVE',\r\n 'PROMO',\r\n 'PROPERTIES',\r\n 'PROPERTY',\r\n 'PROTECTION',\r\n 'PRU',\r\n 'PRUDENTIAL',\r\n 'PS',\r\n 'PT',\r\n 'PUB',\r\n 'PW',\r\n 'PWC',\r\n 'PY',\r\n 'QA',\r\n 'QPON',\r\n 'QUEBEC',\r\n 'QUEST',\r\n 'RACING',\r\n 'RADIO',\r\n 'RE',\r\n 'READ',\r\n 'REALESTATE',\r\n 'REALTOR',\r\n 'REALTY',\r\n 'RECIPES',\r\n 'RED',\r\n 'REDSTONE',\r\n 'REDUMBRELLA',\r\n 'REHAB',\r\n 'REISE',\r\n 'REISEN',\r\n 'REIT',\r\n 'RELIANCE',\r\n 'REN',\r\n 'RENT',\r\n 'RENTALS',\r\n 'REPAIR',\r\n 'REPORT',\r\n 'REPUBLICAN',\r\n 'REST',\r\n 'RESTAURANT',\r\n 'REVIEW',\r\n 'REVIEWS',\r\n 'REXROTH',\r\n 'RICH',\r\n 'RICHARDLI',\r\n 'RICOH',\r\n 'RIL',\r\n 'RIO',\r\n 'RIP',\r\n 'RO',\r\n 'ROCHER',\r\n 'ROCKS',\r\n 'RODEO',\r\n 'ROGERS',\r\n 'ROOM',\r\n 'RS',\r\n 'RSVP',\r\n 'RU',\r\n 'RUGBY',\r\n 'RUHR',\r\n 'RUN',\r\n 'RW',\r\n 'RWE',\r\n 'RYUKYU',\r\n 'SA',\r\n 'SAARLAND',\r\n 'SAFE',\r\n 'SAFETY',\r\n 'SAKURA',\r\n 'SALE',\r\n 'SALON',\r\n 'SAMSCLUB',\r\n 'SAMSUNG',\r\n 'SANDVIK',\r\n 'SANDVIKCOROMANT',\r\n 'SANOFI',\r\n 'SAP',\r\n 'SARL',\r\n 'SAS',\r\n 'SAVE',\r\n 'SAXO',\r\n 'SB',\r\n 'SBI',\r\n 'SBS',\r\n 'SC',\r\n 'SCA',\r\n 'SCB',\r\n 'SCHAEFFLER',\r\n 'SCHMIDT',\r\n 'SCHOLARSHIPS',\r\n 'SCHOOL',\r\n 'SCHULE',\r\n 'SCHWARZ',\r\n 'SCIENCE',\r\n 'SCOT',\r\n 'SD',\r\n 'SE',\r\n 'SEARCH',\r\n 'SEAT',\r\n 'SECURE',\r\n 'SECURITY',\r\n 'SEEK',\r\n 'SELECT',\r\n 'SENER',\r\n 'SERVICES',\r\n 'SES',\r\n 'SEVEN',\r\n 'SEW',\r\n 'SEX',\r\n 'SEXY',\r\n 'SFR',\r\n 'SG',\r\n 'SH',\r\n 'SHANGRILA',\r\n 'SHARP',\r\n 'SHAW',\r\n 'SHELL',\r\n 'SHIA',\r\n 'SHIKSHA',\r\n 'SHOES',\r\n 'SHOP',\r\n 'SHOPPING',\r\n 'SHOUJI',\r\n 'SHOW',\r\n 'SHOWTIME',\r\n 'SI',\r\n 'SILK',\r\n 'SINA',\r\n 'SINGLES',\r\n 'SITE',\r\n 'SJ',\r\n 'SK',\r\n 'SKI',\r\n 'SKIN',\r\n 'SKY',\r\n 'SKYPE',\r\n 'SL',\r\n 'SLING',\r\n 'SM',\r\n 'SMART',\r\n 'SMILE',\r\n 'SN',\r\n 'SNCF',\r\n 'SO',\r\n 'SOCCER',\r\n 'SOCIAL',\r\n 'SOFTBANK',\r\n 'SOFTWARE',\r\n 'SOHU',\r\n 'SOLAR',\r\n 'SOLUTIONS',\r\n 'SONG',\r\n 'SONY',\r\n 'SOY',\r\n 'SPA',\r\n 'SPACE',\r\n 'SPORT',\r\n 'SPOT',\r\n 'SR',\r\n 'SRL',\r\n 'SS',\r\n 'ST',\r\n 'STADA',\r\n 'STAPLES',\r\n 'STAR',\r\n 'STATEBANK',\r\n 'STATEFARM',\r\n 'STC',\r\n 'STCGROUP',\r\n 'STOCKHOLM',\r\n 'STORAGE',\r\n 'STORE',\r\n 'STREAM',\r\n 'STUDIO',\r\n 'STUDY',\r\n 'STYLE',\r\n 'SU',\r\n 'SUCKS',\r\n 'SUPPLIES',\r\n 'SUPPLY',\r\n 'SUPPORT',\r\n 'SURF',\r\n 'SURGERY',\r\n 'SUZUKI',\r\n 'SV',\r\n 'SWATCH',\r\n 'SWISS',\r\n 'SX',\r\n 'SY',\r\n 'SYDNEY',\r\n 'SYSTEMS',\r\n 'SZ',\r\n 'TAB',\r\n 'TAIPEI',\r\n 'TALK',\r\n 'TAOBAO',\r\n 'TARGET',\r\n 'TATAMOTORS',\r\n 'TATAR',\r\n 'TATTOO',\r\n 'TAX',\r\n 'TAXI',\r\n 'TC',\r\n 'TCI',\r\n 'TD',\r\n 'TDK',\r\n 'TEAM',\r\n 'TECH',\r\n 'TECHNOLOGY',\r\n 'TEL',\r\n 'TEMASEK',\r\n 'TENNIS',\r\n 'TEVA',\r\n 'TF',\r\n 'TG',\r\n 'TH',\r\n 'THD',\r\n 'THEATER',\r\n 'THEATRE',\r\n 'TIAA',\r\n 'TICKETS',\r\n 'TIENDA',\r\n 'TIFFANY',\r\n 'TIPS',\r\n 'TIRES',\r\n 'TIROL',\r\n 'TJ',\r\n 'TJMAXX',\r\n 'TJX',\r\n 'TK',\r\n 'TKMAXX',\r\n 'TL',\r\n 'TM',\r\n 'TMALL',\r\n 'TN',\r\n 'TO',\r\n 'TODAY',\r\n 'TOKYO',\r\n 'TOOLS',\r\n 'TOP',\r\n 'TORAY',\r\n 'TOSHIBA',\r\n 'TOTAL',\r\n 'TOURS',\r\n 'TOWN',\r\n 'TOYOTA',\r\n 'TOYS',\r\n 'TR',\r\n 'TRADE',\r\n 'TRADING',\r\n 'TRAINING',\r\n 'TRAVEL',\r\n 'TRAVELCHANNEL',\r\n 'TRAVELERS',\r\n 'TRAVELERSINSURANCE',\r\n 'TRUST',\r\n 'TRV',\r\n 'TT',\r\n 'TUBE',\r\n 'TUI',\r\n 'TUNES',\r\n 'TUSHU',\r\n 'TV',\r\n 'TVS',\r\n 'TW',\r\n 'TZ',\r\n 'UA',\r\n 'UBANK',\r\n 'UBS',\r\n 'UG',\r\n 'UK',\r\n 'UNICOM',\r\n 'UNIVERSITY',\r\n 'UNO',\r\n 'UOL',\r\n 'UPS',\r\n 'US',\r\n 'UY',\r\n 'UZ',\r\n 'VA',\r\n 'VACATIONS',\r\n 'VANA',\r\n 'VANGUARD',\r\n 'VC',\r\n 'VE',\r\n 'VEGAS',\r\n 'VENTURES',\r\n 'VERISIGN',\r\n 'VERSICHERUNG',\r\n 'VET',\r\n 'VG',\r\n 'VI',\r\n 'VIAJES',\r\n 'VIDEO',\r\n 'VIG',\r\n 'VIKING',\r\n 'VILLAS',\r\n 'VIN',\r\n 'VIP',\r\n 'VIRGIN',\r\n 'VISA',\r\n 'VISION',\r\n 'VIVA',\r\n 'VIVO',\r\n 'VLAANDEREN',\r\n 'VN',\r\n 'VODKA',\r\n 'VOLKSWAGEN',\r\n 'VOLVO',\r\n 'VOTE',\r\n 'VOTING',\r\n 'VOTO',\r\n 'VOYAGE',\r\n 'VU',\r\n 'VUELOS',\r\n 'WALES',\r\n 'WALMART',\r\n 'WALTER',\r\n 'WANG',\r\n 'WANGGOU',\r\n 'WATCH',\r\n 'WATCHES',\r\n 'WEATHER',\r\n 'WEATHERCHANNEL',\r\n 'WEBCAM',\r\n 'WEBER',\r\n 'WEBSITE',\r\n 'WED',\r\n 'WEDDING',\r\n 'WEIBO',\r\n 'WEIR',\r\n 'WF',\r\n 'WHOSWHO',\r\n 'WIEN',\r\n 'WIKI',\r\n 'WILLIAMHILL',\r\n 'WIN',\r\n 'WINDOWS',\r\n 'WINE',\r\n 'WINNERS',\r\n 'WME',\r\n 'WOLTERSKLUWER',\r\n 'WOODSIDE',\r\n 'WORK',\r\n 'WORKS',\r\n 'WORLD',\r\n 'WOW',\r\n 'WS',\r\n 'WTC',\r\n 'WTF',\r\n 'XBOX',\r\n 'XEROX',\r\n 'XFINITY',\r\n 'XIHUAN',\r\n 'XIN',\r\n 'XN--11B4C3D',\r\n 'XN--1CK2E1B',\r\n 'XN--1QQW23A',\r\n 'XN--2SCRJ9C',\r\n 'XN--30RR7Y',\r\n 'XN--3BST00M',\r\n 'XN--3DS443G',\r\n 'XN--3E0B707E',\r\n 'XN--3HCRJ9C',\r\n 'XN--3PXU8K',\r\n 'XN--42C2D9A',\r\n 'XN--45BR5CYL',\r\n 'XN--45BRJ9C',\r\n 'XN--45Q11C',\r\n 'XN--4DBRK0CE',\r\n 'XN--4GBRIM',\r\n 'XN--54B7FTA0CC',\r\n 'XN--55QW42G',\r\n 'XN--55QX5D',\r\n 'XN--5SU34J936BGSG',\r\n 'XN--5TZM5G',\r\n 'XN--6FRZ82G',\r\n 'XN--6QQ986B3XL',\r\n 'XN--80ADXHKS',\r\n 'XN--80AO21A',\r\n 'XN--80AQECDR1A',\r\n 'XN--80ASEHDB',\r\n 'XN--80ASWG',\r\n 'XN--8Y0A063A',\r\n 'XN--90A3AC',\r\n 'XN--90AE',\r\n 'XN--90AIS',\r\n 'XN--9DBQ2A',\r\n 'XN--9ET52U',\r\n 'XN--9KRT00A',\r\n 'XN--B4W605FERD',\r\n 'XN--BCK1B9A5DRE4C',\r\n 'XN--C1AVG',\r\n 'XN--C2BR7G',\r\n 'XN--CCK2B3B',\r\n 'XN--CCKWCXETD',\r\n 'XN--CG4BKI',\r\n 'XN--CLCHC0EA0B2G2A9GCD',\r\n 'XN--CZR694B',\r\n 'XN--CZRS0T',\r\n 'XN--CZRU2D',\r\n 'XN--D1ACJ3B',\r\n 'XN--D1ALF',\r\n 'XN--E1A4C',\r\n 'XN--ECKVDTC9D',\r\n 'XN--EFVY88H',\r\n 'XN--FCT429K',\r\n 'XN--FHBEI',\r\n 'XN--FIQ228C5HS',\r\n 'XN--FIQ64B',\r\n 'XN--FIQS8S',\r\n 'XN--FIQZ9S',\r\n 'XN--FJQ720A',\r\n 'XN--FLW351E',\r\n 'XN--FPCRJ9C3D',\r\n 'XN--FZC2C9E2C',\r\n 'XN--FZYS8D69UVGM',\r\n 'XN--G2XX48C',\r\n 'XN--GCKR3F0F',\r\n 'XN--GECRJ9C',\r\n 'XN--GK3AT1E',\r\n 'XN--H2BREG3EVE',\r\n 'XN--H2BRJ9C',\r\n 'XN--H2BRJ9C8C',\r\n 'XN--HXT814E',\r\n 'XN--I1B6B1A6A2E',\r\n 'XN--IMR513N',\r\n 'XN--IO0A7I',\r\n 'XN--J1AEF',\r\n 'XN--J1AMH',\r\n 'XN--J6W193G',\r\n 'XN--JLQ480N2RG',\r\n 'XN--JLQ61U9W7B',\r\n 'XN--JVR189M',\r\n 'XN--KCRX77D1X4A',\r\n 'XN--KPRW13D',\r\n 'XN--KPRY57D',\r\n 'XN--KPUT3I',\r\n 'XN--L1ACC',\r\n 'XN--LGBBAT1AD8J',\r\n 'XN--MGB9AWBF',\r\n 'XN--MGBA3A3EJT',\r\n 'XN--MGBA3A4F16A',\r\n 'XN--MGBA7C0BBN0A',\r\n 'XN--MGBAAKC7DVF',\r\n 'XN--MGBAAM7A8H',\r\n 'XN--MGBAB2BD',\r\n 'XN--MGBAH1A3HJKRD',\r\n 'XN--MGBAI9AZGQP6J',\r\n 'XN--MGBAYH7GPA',\r\n 'XN--MGBBH1A',\r\n 'XN--MGBBH1A71E',\r\n 'XN--MGBC0A9AZCG',\r\n 'XN--MGBCA7DZDO',\r\n 'XN--MGBCPQ6GPA1A',\r\n 'XN--MGBERP4A5D4AR',\r\n 'XN--MGBGU82A',\r\n 'XN--MGBI4ECEXP',\r\n 'XN--MGBPL2FH',\r\n 'XN--MGBT3DHD',\r\n 'XN--MGBTX2B',\r\n 'XN--MGBX4CD0AB',\r\n 'XN--MIX891F',\r\n 'XN--MK1BU44C',\r\n 'XN--MXTQ1M',\r\n 'XN--NGBC5AZD',\r\n 'XN--NGBE9E0A',\r\n 'XN--NGBRX',\r\n 'XN--NODE',\r\n 'XN--NQV7F',\r\n 'XN--NQV7FS00EMA',\r\n 'XN--NYQY26A',\r\n 'XN--O3CW4H',\r\n 'XN--OGBPF8FL',\r\n 'XN--OTU796D',\r\n 'XN--P1ACF',\r\n 'XN--P1AI',\r\n 'XN--PGBS0DH',\r\n 'XN--PSSY2U',\r\n 'XN--Q7CE6A',\r\n 'XN--Q9JYB4C',\r\n 'XN--QCKA1PMC',\r\n 'XN--QXA6A',\r\n 'XN--QXAM',\r\n 'XN--RHQV96G',\r\n 'XN--ROVU88B',\r\n 'XN--RVC1E0AM3E',\r\n 'XN--S9BRJ9C',\r\n 'XN--SES554G',\r\n 'XN--T60B56A',\r\n 'XN--TCKWE',\r\n 'XN--TIQ49XQYJ',\r\n 'XN--UNUP4Y',\r\n 'XN--VERMGENSBERATER-CTB',\r\n 'XN--VERMGENSBERATUNG-PWB',\r\n 'XN--VHQUV',\r\n 'XN--VUQ861B',\r\n 'XN--W4R85EL8FHU5DNRA',\r\n 'XN--W4RS40L',\r\n 'XN--WGBH1C',\r\n 'XN--WGBL6A',\r\n 'XN--XHQ521B',\r\n 'XN--XKC2AL3HYE2A',\r\n 'XN--XKC2DL3A5EE0H',\r\n 'XN--Y9A3AQ',\r\n 'XN--YFRO4I67O',\r\n 'XN--YGBI2AMMX',\r\n 'XN--ZFR164B',\r\n 'XXX',\r\n 'XYZ',\r\n 'YACHTS',\r\n 'YAHOO',\r\n 'YAMAXUN',\r\n 'YANDEX',\r\n 'YE',\r\n 'YODOBASHI',\r\n 'YOGA',\r\n 'YOKOHAMA',\r\n 'YOU',\r\n 'YOUTUBE',\r\n 'YT',\r\n 'YUN',\r\n 'ZA',\r\n 'ZAPPOS',\r\n 'ZARA',\r\n 'ZERO',\r\n 'ZIP',\r\n 'ZM',\r\n 'ZONE',\r\n 'ZUERICH',\r\n 'ZW',\r\n];\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__32__;","export { PerfMarkerFactory } from './src/index';\r\nexport { functionWithPerfMarker, asyncFunctionWithPerfMarker } from './src/helpers';\r\nexport { perfMarkerPropTypes } from './src/proptypes';\r\n","import { createActivity } from './activity';\r\nimport { PerfMarker } from './marker';\r\n\r\nlet instrumentation;\r\nconst filesFetched = [];\r\n\r\nexport class PerfMarkerFactory {\r\n static init(instr) {\r\n instrumentation = instr;\r\n }\r\n\r\n static createMarker(\r\n name,\r\n markerOptions = { autoEnd: false, isActiveChild: true },\r\n activity = createActivity(instrumentation),\r\n parentMarker = {}\r\n ) {\r\n const isFileFetched = filesFetched.indexOf(name) > -1;\r\n\r\n if (!isFileFetched) {\r\n filesFetched.push(name);\r\n }\r\n\r\n return new PerfMarker(name, markerOptions, isFileFetched, activity, parentMarker);\r\n }\r\n\r\n static isPerfMarker(obj) {\r\n return obj instanceof PerfMarker;\r\n }\r\n\r\n static isInit() {\r\n return instrumentation !== null && instrumentation !== undefined;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst schema = {\r\n scenario: [\r\n {\r\n name: 'perfMarker',\r\n value: 'PerfMarker',\r\n setting: {},\r\n activity: [\r\n {\r\n name: 'sendLog',\r\n value: 'SendLog',\r\n },\r\n ],\r\n },\r\n ],\r\n};\r\n\r\nlet perfScenario = null;\r\n\r\nfunction getScenario(instrumentation) {\r\n if (_.isEmpty(perfScenario)) {\r\n instrumentation.addScenario(schema);\r\n perfScenario = instrumentation.perfMarker.create();\r\n }\r\n\r\n return perfScenario;\r\n}\r\n\r\nexport function createActivity(instrumentation) {\r\n const scenario = getScenario(instrumentation);\r\n\r\n return scenario.sendLog.create();\r\n}\r\n","import _ from 'underscore';\r\nimport { PageReady } from '@bingads-webui/page-ready';\r\nimport { PerfMarkerFactory } from './index';\r\n\r\nlet isPageReadyFulfilled = false;\r\n\r\nPageReady.afterPageReady().then(() => {\r\n isPageReadyFulfilled = true;\r\n});\r\n\r\nfunction markTime() {\r\n return {\r\n time: performance.now(),\r\n activeTime: _.result(performance, 'activeTime', NaN),\r\n };\r\n}\r\n\r\nfunction isMarkerValid({ time, activeTime } = {}) {\r\n return _.isNumber(time) && time >= 0 &&\r\n _.isNumber(activeTime) && activeTime >= 0;\r\n}\r\n\r\nfunction getUrl() {\r\n return (window.location.pathname || '') + (window.location.search || '') + (window.location.hash || '');\r\n}\r\n\r\n/**\r\n * Do not access PerfMarker class directly, use PerfMarker Factory\r\n */\r\nexport class PerfMarker {\r\n constructor(name, markerOptions, isFileFetched, activity, parentMarker) {\r\n this.markers = {};\r\n this.InitUrl = getUrl();\r\n this.isFileFetched = isFileFetched; // is js file already downloaded or not\r\n this.name = name;\r\n this.parentMarker = parentMarker;\r\n this.hierarchy = this.parentMarker.hierarchy ? `${this.parentMarker.hierarchy}.${this.name}` : this.name;\r\n this.activity = activity;\r\n this.isDone = false;\r\n this.autoEnd = markerOptions.autoEnd;\r\n this.isActiveChild = markerOptions.isActiveChild;\r\n this.activeChildren = [];\r\n this.data = markerOptions.data || {};\r\n this.doneCallback = null;\r\n }\r\n\r\n createChild(name, markerOptions = { autoEnd: false, isActiveChild: true }) {\r\n const childMarker = PerfMarkerFactory.createMarker(name, markerOptions, this.activity, this);\r\n\r\n if (childMarker && childMarker.isActiveChild !== false) {\r\n this.activeChildren.push(childMarker);\r\n }\r\n\r\n return childMarker;\r\n }\r\n\r\n willFetchFile() {\r\n this.markers.timeFetchFile = markTime();\r\n\r\n this.markConsole('willFetchFile');\r\n }\r\n\r\n willFetchData() {\r\n this.markers.timeFetchData = markTime();\r\n\r\n this.markConsole('willFetchData');\r\n }\r\n\r\n willInit() {\r\n this.markers.timeInit = markTime();\r\n\r\n this.markConsole('willInit');\r\n }\r\n\r\n willRender() {\r\n this.markers.timeRender = markTime();\r\n\r\n this.markConsole('willRender');\r\n }\r\n\r\n onChildDone(childMarker) {\r\n this.activeChildren = _.reject(this.activeChildren, activeChild => activeChild === childMarker);\r\n\r\n if (this.autoEnd &&\r\n !this.isDone &&\r\n _.isEmpty(this.activeChildren)) {\r\n this.done();\r\n }\r\n }\r\n\r\n done(additionalMessage = {}) {\r\n this.markers.timeDone = markTime();\r\n this.markConsole('done');\r\n\r\n this.additionalMessage = additionalMessage;\r\n\r\n // If marker already done, do not log again\r\n if (this.isDone) {\r\n return;\r\n }\r\n\r\n this.send();\r\n\r\n this.isDone = true;\r\n\r\n if (this.doneCallback && _.isFunction(this.doneCallback)) {\r\n this.doneCallback();\r\n }\r\n\r\n if (this.parentMarker.onChildDone) {\r\n this.parentMarker.onChildDone(this);\r\n }\r\n }\r\n\r\n markConsole(markerPoint) {\r\n if (console.timeStamp) {\r\n console.timeStamp(`PerfMarker ${this.name} ${markerPoint}`);\r\n }\r\n }\r\n\r\n send() {\r\n const message = this.parseMarkers();\r\n\r\n if (_.isEmpty(message)) {\r\n return;\r\n }\r\n\r\n this.activity.perf(JSON.stringify(message), this.hierarchy);\r\n }\r\n\r\n parseMarkers() {\r\n // Calling willFetchFile is optional. If not called, clear file fetching flag\r\n if (!isMarkerValid(this.markers.timeFetchFile)) {\r\n this.isFileFetched = true;\r\n }\r\n\r\n if (_.some([this.markers.timeInit, this.markers.timeDone], marker => !isMarkerValid(marker))) {\r\n return null; // init and done markers should be valid\r\n }\r\n\r\n const doneUrl = getUrl();\r\n const didUrlChange = this.InitUrl !== doneUrl;\r\n\r\n return {\r\n Version: 'perf-marker@0.2.0',\r\n Name: this.name,\r\n ParentName: this.parentMarker.name,\r\n Data: this.data,\r\n IsParentDone: this.parentMarker.isDone,\r\n IsPageReadyFulfilled: isPageReadyFulfilled,\r\n IsFileFetched: this.isFileFetched,\r\n FileFetchStartTime: _.result(this.markers.timeFetchFile, 'time', 0),\r\n FileFetchActiveStartTime: _.result(this.markers.timeFetchFile, 'activeTime', 0),\r\n DataFetchStartTime: _.result(this.markers.timeFetchData, 'time', 0),\r\n DataFetchActiveStartTime: _.result(this.markers.timeFetchData, 'activeTime', 0),\r\n RenderStartTime: _.result(this.markers.timeRender, 'time', 0),\r\n RenderActiveStartTime: _.result(this.markers.timeRender, 'activeTime', 0),\r\n InitStartTime: this.markers.timeInit.time,\r\n InitActiveStartTime: this.markers.timeInit.activeTime,\r\n DoneStartTime: this.markers.timeDone.time,\r\n DoneActiveStartTime: this.markers.timeDone.activeTime,\r\n DidUrlChange: didUrlChange,\r\n InitUrl: didUrlChange ? this.InitUrl : '',\r\n DoneUrl: didUrlChange ? doneUrl : '',\r\n AdditionalMessage: this.additionalMessage,\r\n };\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__52__;","\r\nimport _ from 'underscore';\r\n\r\nconst functionWithPerfMarker = function (perfMarker, func, context) {\r\n if (!_.isFunction(func)) {\r\n return null;\r\n }\r\n\r\n const newFunc = function (...args) {\r\n perfMarker.willInit();\r\n\r\n const result = func.apply(context || this, args);\r\n\r\n perfMarker.done();\r\n\r\n return result;\r\n };\r\n\r\n return newFunc;\r\n};\r\n\r\nconst asyncFunctionWithPerfMarker = function (perfMarker, asyncFunc, context) {\r\n if (!_.isFunction(asyncFunc)) {\r\n return null;\r\n }\r\n\r\n const newAsyncFunc = function (...args) {\r\n perfMarker.willInit();\r\n\r\n return asyncFunc.apply(context || this, args).then((result) => {\r\n perfMarker.done();\r\n\r\n return result;\r\n });\r\n };\r\n\r\n return newAsyncFunc;\r\n};\r\n\r\nexport { functionWithPerfMarker, asyncFunctionWithPerfMarker };\r\n","import PropTypes from 'prop-types';\r\n\r\nexport const perfMarkerPropTypes = PropTypes.shape({\r\n createChild: PropTypes.func.isRequired,\r\n willFetchFile: PropTypes.func.isRequired,\r\n willFetchData: PropTypes.func.isRequired,\r\n willInit: PropTypes.func.isRequired,\r\n willRender: PropTypes.func.isRequired,\r\n done: PropTypes.func.isRequired,\r\n});\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__55__;","module.exports = __WEBPACK_EXTERNAL_MODULE__22__;","import { include } from 'underscore.string';\r\n\r\nconst TOKENS = {\r\n // NewTenantTest database for local debugging\r\n Local: 'c2048c8ee1c7466fa53ff77880fc797c-3d99112e-5e15-4022-b9a5-f53983937f76-6526',\r\n // Test: SI/TIP\r\n Aria3: 'f37eb78c41a442f4ba7e4d0b3660d938-954f8a2a-10e1-4c9b-b467-6a966e9994c9-7308',\r\n // PROD\r\n Aria07: '9cf7b68164b34e7e995562121503c72a-72856c17-5747-49e6-bd96-fde5bb08a4f4-7006',\r\n // AdInsight\r\n AdInsight: '2b2318c0ebbf44808a5e789256fab332-cd52b35b-3679-4c06-8958-fae3a1646c7c-7279',\r\n};\r\n\r\nconst allTokens = {\r\n // Local\r\n 'ccui.devdev.bingads.microsoft.com': TOKENS.Local,\r\n 'redmond.corp.microsoft.com': TOKENS.Local,\r\n\r\n // Test\r\n 'app1.ads-int.microsoft.com': TOKENS.Aria3,\r\n 'ui.si.bingads.microsoft.com': TOKENS.Aria3,\r\n 'ui.beta.si.bingads.microsoft.com': TOKENS.Aria3,\r\n 'ui.ads-int.microsoft.com': TOKENS.Aria3,\r\n 'ui.beta.ads-int.microsoft.com': TOKENS.Aria3,\r\n 'ui.tip.bingads.microsoft.com': TOKENS.Aria3,\r\n 'ui.tip.ads.microsoft.com': TOKENS.Aria3,\r\n 'si.bingads.microsoft.com': TOKENS.Aria3,\r\n 'beta.si.bingads.microsoft.com': TOKENS.Aria3,\r\n 'ads-int.microsoft.com': TOKENS.Aria3,\r\n 'beta.ads-int.microsoft.com': TOKENS.Aria3,\r\n 'tip.bingads.microsoft.com': TOKENS.Aria3,\r\n 'tip.ads.microsoft.com': TOKENS.Aria3,\r\n\r\n 'ui.sandbox.bingads.microsoft.com': TOKENS.Aria3,\r\n 'ui.sandbox.ads.microsoft.com': TOKENS.Aria3,\r\n\r\n // Prod\r\n 'ui.bingads.microsoft.com': TOKENS.Aria07,\r\n 'ui.beta.bingads.microsoft.com': TOKENS.Aria07,\r\n 'ui.ads.microsoft.com': TOKENS.Aria07,\r\n 'ui.beta.ads.microsoft.com': TOKENS.Aria07,\r\n 'bingads.microsoft.com': TOKENS.Aria07,\r\n 'beta.bingads.microsoft.com': TOKENS.Aria07,\r\n 'ads.microsoft.com': TOKENS.Aria07,\r\n 'beta.ads.microsoft.com': TOKENS.Aria07,\r\n\r\n\r\n // AdLibrary\r\n 'adlibraryui-test.azureedge.net': TOKENS.Aria3,\r\n 'adlibrary.ads.microsoft.com': TOKENS.Aria07,\r\n\r\n // AdInsight\r\n // TODO: move out once adinsights use shared listener\r\n adInsightOppTracking: TOKENS.AdInsight,\r\n};\r\n\r\nconst defaultConfig = {\r\n // Note: keeping this for backward compatability\r\n tokens: {\r\n 'ui.si.bingads.microsoft.com': TOKENS.Aria3,\r\n 'ui.beta.si.bingads.microsoft.com': TOKENS.Aria3,\r\n 'ui.bingads.microsoft.com': TOKENS.Aria07,\r\n 'ui.beta.bingads.microsoft.com': TOKENS.Aria07,\r\n 'ui.tip.bingads.microsoft.com': TOKENS.Aria3,\r\n adInsightOppTracking: TOKENS.AdInsight, // TODO: move out once adinsights use shared listener\r\n 'redmond.corp.microsoft.com': TOKENS.Local,\r\n // Rebranded domain mappings\r\n 'ui.ads-int.microsoft.com': TOKENS.Aria3,\r\n 'ui.beta.ads-int.microsoft.com': TOKENS.Aria3,\r\n 'ui.ads.microsoft.com': TOKENS.Aria07,\r\n 'ui.beta.ads.microsoft.com': TOKENS.Aria07,\r\n 'ui.tip.ads.microsoft.com': TOKENS.Aria3,\r\n 'ui.sandbox.bingads.microsoft.com': TOKENS.Aria3,\r\n 'ui.sandbox.ads.microsoft.com': TOKENS.Aria3,\r\n // AdLibrary\r\n 'adlibraryui-test.azureedge.net': TOKENS.Aria3,\r\n 'adlibrary.ads.microsoft.com': TOKENS.Aria07,\r\n },\r\n flushInterval: 3000,\r\n batchSize: 40,\r\n};\r\n\r\nexport function getTokensForSmartPage(env, token) {\r\n let spToken = token;\r\n if (include(env, 'biz.site') || include(env, 'beta.smartpage.microsoft.com')) {\r\n spToken = TOKENS.Aria07;\r\n } else if (include(env, 'si.smartpage.microsoft.com')) {\r\n spToken = TOKENS.Aria3;\r\n } else if (include(env, 'ci.smartpage.microsoft.com')) {\r\n spToken = TOKENS.Local;\r\n }\r\n\r\n return spToken;\r\n}\r\n\r\nexport default function getAriaConfig(env = null) {\r\n let token = allTokens[env];\r\n if (include(env, 'redmond.corp.microsoft.com')) {\r\n token = TOKENS.Local;\r\n } else if (include(env, 'biz.site') || include(env, 'smartpage')) {\r\n token = getTokensForSmartPage(env, token);\r\n }\r\n\r\n return {\r\n token,\r\n ...defaultConfig,\r\n };\r\n}\r\n","import { constants } from '@bingads-webui/instrumentation';\r\n\r\nexport default {\r\n logTableNames: {\r\n [constants.LOGCATEGORY.ERROR]: {\r\n name: 'clienterr',\r\n priority: 1,\r\n },\r\n [constants.LOGCATEGORY.PERFORMANCE]: {\r\n name: 'clientperf',\r\n priority: 2,\r\n },\r\n [constants.LOGCATEGORY.TRACE]: {\r\n name: 'clienttrace',\r\n priority: 3,\r\n },\r\n [constants.LOGCATEGORY.SUBSTRATE]: {\r\n name: 'substrate1',\r\n priority: 3,\r\n },\r\n },\r\n defaultLogCategory: constants.LOGCATEGORY.TRACE,\r\n};\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__490__;","import { constants } from '@bingads-webui/instrumentation';\r\n\r\nexport default {\r\n logTableNames: {\r\n [constants.LOGCATEGORY.ERROR]: {\r\n name: 'OpportunityEvent',\r\n priority: 1,\r\n },\r\n [constants.LOGCATEGORY.PERFORMANCE]: {\r\n name: 'OpportunityEvent',\r\n priority: 2,\r\n },\r\n [constants.LOGCATEGORY.TRACE]: {\r\n name: 'OpportunityEvent',\r\n priority: 3,\r\n },\r\n },\r\n defaultLogCategory: constants.LOGCATEGORY.TRACE,\r\n};\r\n","import _ from 'underscore';\r\n\r\nexport class ContextProcessor {\r\n constructor(options) {\r\n this.pageContext = _.defaults(options.pageContext || {}, {\r\n CurrentCustomer: { Id: -1 },\r\n CurrentAccount: { Id: -1 },\r\n CurrentUser: {\r\n Id: -1, Locale: '', Market: '', UserRole: '', ManagedBy: '', LocaleID: '',\r\n },\r\n });\r\n }\r\n\r\n get CustomerId() {\r\n return this.pageContext.CurrentCustomer.Id;\r\n }\r\n\r\n get AccountId() {\r\n return _.result(this.pageContext.CurrentAccount, 'Id', -1);\r\n }\r\n\r\n get UserId() {\r\n return this.pageContext.CurrentUser.Id;\r\n }\r\n\r\n get Lcid() {\r\n return this.pageContext.CurrentUser.Locale || this.pageContext.CurrentUser.LocaleID;\r\n }\r\n\r\n get CustomerMarket() {\r\n return this.pageContext.CurrentUser.Market;\r\n }\r\n\r\n get UserRole() {\r\n const role = (this.pageContext &&\r\n this.pageContext.Permissions &&\r\n this.pageContext.Permissions.IsInternalUser) ? '(Internal)' : '';\r\n return `${this.pageContext.CurrentUser.UserRole}${role}`;\r\n }\r\n\r\n get CustomerManagedBy() {\r\n return this.pageContext.CurrentUser.ManagedBy;\r\n }\r\n\r\n get SessionId() {\r\n return (this.pageContext.Omniture || {}).SessionId || '';\r\n }\r\n\r\n get PageTrackingId() {\r\n return this.pageContext.PageTrackingId;\r\n }\r\n\r\n get PageVersion() {\r\n return this.pageContext.Version;\r\n }\r\n\r\n get Pilots() {\r\n return 'grid';\r\n }\r\n\r\n process(rawLogs) {\r\n return _.extend(rawLogs, {\r\n customerId: this.CustomerId,\r\n accountId: this.AccountId,\r\n userId: this.UserId,\r\n lcid: this.Lcid,\r\n sessionId: this.SessionId,\r\n pageTrackingId: this.PageTrackingId,\r\n pageVersion: this.PageVersion,\r\n market: this.CustomerMarket,\r\n userRole: this.UserRole,\r\n managedBy: this.CustomerManagedBy,\r\n pilots: this.Pilots,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport class DebugProcessor {\r\n constructor({ isDebugMode }) {\r\n this.isDebugMode = isDebugMode;\r\n }\r\n\r\n process(rawLogs) {\r\n return _.extend(rawLogs, {\r\n isDebugMode: this.isDebugMode,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport class PerfTimingProcessor {\r\n constructor({ landingPageUrl = '' }) {\r\n this.landingPageUrl = landingPageUrl;\r\n }\r\n\r\n process(rawLogs) {\r\n return _.extend(rawLogs, {\r\n href: window.location.href,\r\n referrer: document.referrer,\r\n landingPg: this.landingPageUrl,\r\n });\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\nimport { getParameter, updateParameter } from '@bingads-webui/url-util';\r\nimport { getUtcTime } from '@bingads-webui-universal/primitive-utilities';\r\nimport { safeParseInteger } from './format-utilities';\r\n\r\nexport class BasicFormatter extends Formatter {\r\n constructor(options = {}) {\r\n super();\r\n this.applicationSystem = options.applicationSystem;\r\n this.applicationSubSystem = options.applicationSubSystem;\r\n }\r\n\r\n getPFlagsProps(rawLog) {\r\n let pflags = '';\r\n\r\n if (_.isString(rawLog.api)) {\r\n let apiString = rawLog.api.trim();\r\n // hide all token / code related values due to privacy issue.\r\n if (getParameter('authCode', apiString)) {\r\n apiString = updateParameter('authCode', 'authCodePlaceholder', apiString);\r\n } else if (getParameter('accessToken', apiString)) {\r\n apiString = updateParameter('accessToken', 'accessTokenPlaceholder', apiString);\r\n }\r\n pflags += `rUrl:${apiString};`;\r\n }\r\n if (rawLog.parentScenarioName && rawLog.parentScenarioId) {\r\n pflags += `pScenario:${rawLog.parentScenarioName};pScenarioId:${rawLog.parentScenarioId};`;\r\n }\r\n return pflags;\r\n }\r\n\r\n getEventType(rawLog) {\r\n if (rawLog.message && JSON.stringify(rawLog.message).indexOf('perf-marker@') !== -1) {\r\n return 'perfmarker';\r\n }\r\n return rawLog.entryType;\r\n }\r\n\r\n format(rawLog) {\r\n const log = {\r\n Sn: rawLog.scenarioName || '',\r\n SceID: rawLog.scenarioId || '',\r\n RID: rawLog.requestId || '',\r\n Api: _.isString(rawLog.api) ? rawLog.api.trim().toLowerCase() : '',\r\n Pass: _.isUndefined(rawLog.pass) ? '' : rawLog.pass,\r\n Dur: safeParseInteger(rawLog.timeTaken),\r\n Ime: _.isUndefined(rawLog.isMethodEnter) ? '' : rawLog.isMethodEnter,\r\n Hm: rawLog.httpMethod || '',\r\n Timestamp: rawLog.timeStamp || getUtcTime(),\r\n SesID: rawLog.sessionId || '',\r\n Url: (window.location.pathname || '') + (window.location.search || '') + (window.location.hash || ''),\r\n UID: rawLog.userId || '',\r\n CID: rawLog.customerId || '',\r\n AID: rawLog.accountId || '',\r\n LCID: rawLog.lcid || '',\r\n Mes: JSON.stringify(rawLog.message),\r\n Lc: _.isArray(rawLog.logCategory) ?\r\n rawLog.logCategory.join(',') : rawLog.logCategory,\r\n Ll: rawLog.logLevel ? rawLog.logLevel.name : '',\r\n Env: window.location.hostname,\r\n As: this.applicationSystem || '',\r\n Asub: this.applicationSubSystem || '',\r\n An: rawLog.activityName || '',\r\n ActID: rawLog.activityId || '',\r\n Et: this.getEventType(rawLog) || '',\r\n Loc: rawLog.market || '',\r\n Role: rawLog.userRole || '',\r\n MgdBy: rawLog.managedBy || '',\r\n PFlags: this.getPFlagsProps(rawLog) || '',\r\n Iu: rawLog.impactUser || null,\r\n Ec: safeParseInteger(rawLog.entityCount),\r\n UserAgent: (window.navigator || {}).userAgent || '',\r\n PgID: rawLog.pageTrackingId || '',\r\n PgVer: rawLog.pageVersion || '',\r\n DbgMode: rawLog.isDebugMode || false,\r\n };\r\n\r\n return log;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nexport function safeParseInteger(number, defaultValue = 0) {\r\n const parsedNum = Number(number);\r\n\r\n if (_.isNaN(parsedNum) || parsedNum < 0) {\r\n return defaultValue;\r\n }\r\n return Math.round(parsedNum);\r\n}\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nconst bracketedParamsRegex = new RegExp(/\\([^)]*\\)/g);\r\n\r\nexport class ApiFormatter extends Formatter {\r\n /* eslint-disable no-param-reassign */\r\n convertAbsoluteToRelativePath(log) {\r\n const path = log.Api.toLowerCase();\r\n\r\n if ((path.indexOf('http://') !== 0) && (path.indexOf('https://') !== 0)) {\r\n return log;\r\n }\r\n\r\n const a = document.createElement('a');\r\n\r\n a.href = path;\r\n log.Api = a.pathname;\r\n if (log.Api.indexOf('/') === 0 && log.Api.length > 1) {\r\n log.Api = log.Api.substring(1);\r\n }\r\n\r\n return log;\r\n }\r\n\r\n removeQueryParameters(log) {\r\n [log.Api] = log.Api.split('?');\r\n return log;\r\n }\r\n\r\n removeDotMExtension(log) {\r\n log.Api = log.Api.replace('.m/', '/');\r\n if (log.Api.substr(-2) === '.m') {\r\n log.Api = log.Api.substr(0, log.Api.length - 2);\r\n }\r\n return log;\r\n }\r\n\r\n removeBracketedParameters(log) {\r\n log.Api = log.Api.replace(bracketedParamsRegex, '');\r\n return log;\r\n }\r\n\r\n removeApplicationNameFromApi(log) {\r\n const appName = `${log.As}/`.toLowerCase();\r\n\r\n if (log.Api.toLowerCase().indexOf(appName.toLowerCase()) === 0) {\r\n log.Api = log.Api.substring(appName.length);\r\n }\r\n return log;\r\n }\r\n\r\n format(log) {\r\n if (!_.isEmpty(log.Api)) {\r\n log = _.chain(log)\r\n .tap(this.removeQueryParameters)\r\n .tap(this.removeDotMExtension)\r\n .tap(this.convertAbsoluteToRelativePath)\r\n .tap(this.removeBracketedParameters)\r\n .tap(this.removeApplicationNameFromApi)\r\n .value();\r\n }\r\n return log;\r\n }\r\n}\r\n","/**\r\n * @file\r\n * AdInsight Opportunity Log Spec:\r\n * https://microsoft.sharepoint.com/:w:/r/teams/stcaadinsights/Shared%20Documents/AdvertiserIntelligence/Log%20Requirements.docx?d=w0e50147bfce943a6a1325bfb995c9902&csf=1&e=aZkNhs\r\n */\r\n\r\nimport _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class AdInsightOpportunityLogFormatter extends Formatter {\r\n format(rawLog) {\r\n let clientName = 'CampaignWebUI';\r\n let environment;\r\n let Action;\r\n const logApi = _.result(rawLog, 'api');\r\n const channel = _.result(rawLog.message, 'channel');\r\n const logApiClientNameMapper = {\r\n OverviewOpportunityTile: 'Opportunities[Overview]',\r\n MCCOverviewOpportunityTile: 'bingadsweb[mccoverviewpage]',\r\n };\r\n\r\n if (_.has(logApiClientNameMapper, logApi)) {\r\n clientName = _.result(logApiClientNameMapper, logApi);\r\n } else if (!_.isUndefined(channel)) {\r\n clientName = `bingadsweb[${channel}]`;\r\n }\r\n\r\n if (document.domain === 'ui.bingads.microsoft.com' || document.domain === 'ui.ads.microsoft.com') {\r\n environment = 'Production';\r\n } else if (document.domain === 'ui.si.bingads.microsoft.com' || document.domain === 'ui.ads-int.microsoft.com') {\r\n environment = 'SI';\r\n } else {\r\n environment = document.domain;\r\n }\r\n\r\n if (rawLog.message.action) {\r\n Action = rawLog.message.action;\r\n } else {\r\n Action = rawLog.message.isClick ? 'Click' : 'View';\r\n }\r\n\r\n const isMCC = clientName === 'bingadsweb[mccrecommendationpage]';\r\n\r\n return {\r\n RequestId: rawLog.requestId,\r\n OpportunityId: rawLog.message.id,\r\n OpportunityType: rawLog.message.type,\r\n OpportunityTypeId: rawLog.message.typeId,\r\n Action,\r\n UserId: rawLog.userId,\r\n CustomerId: rawLog.customerId,\r\n AccountId: isMCC\r\n ? rawLog.message.accountId || null\r\n : rawLog.accountId,\r\n CampaignId: rawLog.message.campaignId,\r\n ClientName: clientName,\r\n Environment: environment,\r\n Source: document.URL,\r\n GUID: rawLog.message.guid,\r\n Position: rawLog.message.position,\r\n UserFeedback: rawLog.message.input,\r\n Context: rawLog.message.context,\r\n };\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\nimport { safeParseInteger } from './format-utilities';\r\n\r\nexport class ReportingApiFormatter extends Formatter {\r\n format(log) {\r\n if (log.As === 'campaign' && log.Api.indexOf('reporting/syncdata/') > -1) {\r\n /* eslint-disable no-param-reassign */\r\n log.As = 'reporting';\r\n const apiChunks = this.getValidatedApiChunks(log.Api.split('/'));\r\n\r\n if (apiChunks.length > 5) {\r\n const operationId = safeParseInteger(apiChunks[5], -1);\r\n\r\n if ((operationId >= 0 && operationId <= 4) || operationId === 23) {\r\n log.Api = 'sync/trendchart';\r\n } else if (operationId === 5) {\r\n log.Api = 'sync/kdg';\r\n } else if ((operationId >= 24 && operationId <= 26) || operationId === 6) {\r\n log.Api = 'sync/changehistorygrid';\r\n } else if (operationId !== -1) {\r\n log.Api = 'sync/dimensiongrid';\r\n }\r\n }\r\n }\r\n return log;\r\n }\r\n\r\n // make sure that the first element of the rawChunks is the string 'reporting'\r\n // if not we'll strip all the elements before the 'reporting' element\r\n getValidatedApiChunks(rawChunks) {\r\n if (_.isUndefined(rawChunks) || !_.isArray(rawChunks) || rawChunks.length === 0 || rawChunks[0] === 'reporting') {\r\n return rawChunks;\r\n }\r\n\r\n const index = _.indexOf(rawChunks, 'reporting');\r\n\r\n if (index > 0) {\r\n return rawChunks.slice(index);\r\n }\r\n\r\n return rawChunks;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class UetTagHelperFormatter extends Formatter {\r\n format(log) {\r\n if (log.As === 'campaign' && log.Api.indexOf('campaignext/uettagassistant/') > -1) {\r\n log.As = 'campaignExt';\r\n log.Asub = 'UetTagAssistant';\r\n }\r\n return log;\r\n }\r\n}\r\n","/* eslint-disable no-param-reassign */\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class ImportApiFormatter extends Formatter {\r\n format(log) {\r\n if (log.Api.indexOf('api/v1/bingads/hasplaceholderstores') !== -1) {\r\n // remove extra customer id appended after this api to reduce false alarm for api availability\r\n log.Api = log.Api.substring(0, log.Api.indexOf('hasplaceholderstores') + 20);\r\n }\r\n\r\n return log;\r\n }\r\n}\r\n","import { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class ConsoleFormatter extends Formatter {\r\n format(log) {\r\n const logMessage = JSON.stringify(log.message);\r\n\r\n return logMessage;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\n// Values from window.performance.timing and firstPaintTime\r\nconst pageNavigationColumns = ['navigationStart', 'unloadEventStart', 'unloadEventEnd', 'redirectStart', 'redirectEnd',\r\n 'fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'secureConnectionStart', 'requestStart',\r\n 'responseStart', 'responseEnd', 'domLoading', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd',\r\n 'domComplete', 'loadEventStart', 'loadEventEnd', 'navigationStart', 'unloadEventStart', 'unloadEventEnd', 'redirectStart',\r\n 'redirectEnd', 'redirectCount', 'fetchStart', 'firstPaintTime', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd', 'secureConnectionStart',\r\n 'requestStart', 'responseStart', 'responseEnd', 'domLoading', 'domInteractive', 'domContentLoadedEventStart', 'domContentLoadedEventEnd',\r\n 'domComplete', 'loadEventStart', 'loadEventEnd', 'landingPg', 'inactiveTime'];\r\n\r\n// Values from window.perfromance.getEntries('resource')\r\nconst resourceTimingColumns = ['unloadEventStart', 'unloadEventEnd', 'domInteractive',\r\n 'domContentLoadedEventStart', 'domContentLoadedEventEnd', 'domComplete', 'loadEventStart',\r\n 'loadEventEnd', 'type', 'redirectCount', 'initiatorType', 'workerStart', 'redirectStart',\r\n 'redirectEnd', 'fetchStart', 'domainLookupStart', 'domainLookupEnd', 'connectStart', 'connectEnd',\r\n 'secureConnectionStart', 'requestStart', 'responseStart', 'responseEnd', 'transferSize', 'encodedBodySize',\r\n 'decodedBodySize', 'name', 'entryType', 'startTime', 'duration'];\r\n\r\nexport class PerformanceLogsFormatter extends Formatter {\r\n format(log) {\r\n const columns = log.isPageNavigationLog ? pageNavigationColumns : resourceTimingColumns;\r\n\r\n let formattedLogs = _.pick(log, columns);\r\n\r\n formattedLogs = _.extend(formattedLogs, {\r\n uid: log.userId,\r\n aid: log.accountId,\r\n cid: log.customerId,\r\n mkt: log.market,\r\n href: log.href,\r\n referrer: log.referrer,\r\n dbgMode: log.isDebugMode,\r\n pgId: log.pageTrackingId || null,\r\n pgVer: log.pageVersion || null,\r\n });\r\n\r\n return formattedLogs;\r\n }\r\n}\r\n","import { constants } from '@bingads-webui/instrumentation';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nexport class LogLevelFilter extends Filter {\r\n check(logMessage) {\r\n const appLogLevel = constants.LOGLEVEL.INFO;\r\n\r\n if (logMessage.logLevel) {\r\n return logMessage.logLevel.value > appLogLevel.value;\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { constants } from '@bingads-webui/instrumentation';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nconst ignoredApis = [\r\n 'http://help',\r\n 'https://help',\r\n 'g.bing.com/clientsdk',\r\n 'api/updates/get',\r\n];\r\n\r\nexport class ApiFilter extends Filter {\r\n check(logMessage) {\r\n let shouldFilter = false;\r\n\r\n // If API is in ignored API list, only log it if log category is error.\r\n if (_.isString(logMessage.api)) {\r\n const isErrorLog = logMessage.logCategory === constants.LOGCATEGORY.ERROR;\r\n const isIgnoreApi = _.any(\r\n ignoredApis,\r\n ignoredApi => logMessage.api.toLowerCase().indexOf(ignoredApi) > -1\r\n );\r\n\r\n shouldFilter = !isErrorLog && isIgnoreApi;\r\n }\r\n\r\n return shouldFilter;\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nexport class AdInsightOpportunityApiFilter extends Filter {\r\n check(rawLog) {\r\n const allowedApiList = [\r\n 'competitionpage',\r\n 'recommendationpage',\r\n 'Recommendations',\r\n 'OverviewOpportunityTile',\r\n 'MCCOverviewOpportunityTile',\r\n 'incontextcard',\r\n 'searchinsight',\r\n ];\r\n const logApi = _.result(rawLog, 'api');\r\n\r\n return !(\r\n rawLog.entryType === 'Message' &&\r\n _.isObject(rawLog.message) &&\r\n _.isString(_.chain(rawLog).result('message').result('type').value()) &&\r\n ((logApi === 'ViewInlineOpportunity' &&\r\n _.chain(rawLog).result('message').result('id').value() &&\r\n _.isNumber(_.chain(rawLog).result('message').result('campaignId').value())\r\n ) || _.contains(allowedApiList, logApi)));\r\n }\r\n}\r\n","import { constants } from '@bingads-webui/instrumentation';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nexport class ConsoleFilter extends Filter {\r\n check(logMessage) {\r\n const category = logMessage.logCategory || '';\r\n const api = logMessage.api || '';\r\n\r\n // log only error logs from window.onerror\r\n if (api === 'onerror' && category === constants.LOGCATEGORY.ERROR) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { Filter } from '@bingads-webui/listener';\r\n\r\nexport class UnloadLogFilter extends Filter {\r\n check(log) {\r\n return !(log.activityName === 'RunAriaV2UnloadHandler' &&\r\n log.scenarioName === 'PageUnload' &&\r\n !log.excludeFromLocalStorage);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport { Filter } from '@bingads-webui/listener';\r\n\r\nconst campaignEnvs = [\r\n 'ui.bingads.microsoft.com',\r\n 'ui.tip.bingads.microsoft.com',\r\n 'ui.si.bingads.microsoft.com',\r\n 'ui.ads.microsoft.com',\r\n 'ui.tip.ads.microsoft.com',\r\n 'ui.ads-int.microsoft.com',\r\n 'adlibraryui-test.azureedge.net',\r\n 'adlibrary.ads.microsoft.com',\r\n];\r\n\r\nconst signupEnvs = [\r\n 'bingads.microsoft.com',\r\n 'tip.bingads.microsoft.com',\r\n 'si.bingads.microsoft.com',\r\n 'ads.microsoft.com',\r\n 'tip.ads.microsoft.com',\r\n 'ads-int.microsoft.com',\r\n];\r\n\r\nconst allowedEnvs = [...campaignEnvs, ...signupEnvs];\r\n\r\nconst exlcudeResources = [\r\n '/campaign/API/Updates/get',\r\n '/root/keepalive',\r\n 'aria.microsoft.com',\r\n 'liveperson.net',\r\n];\r\n\r\nexport class PerformanceLogsFilter extends Filter {\r\n check(log) {\r\n if (!_.contains(allowedEnvs, document.domain) || log.isDebugMode) {\r\n return true;\r\n }\r\n\r\n if (log.isPageNavigationLog) {\r\n return false;\r\n }\r\n\r\n const resourceName = log.name;\r\n\r\n return _.any(exlcudeResources, excludedResource => resourceName && resourceName.search(new RegExp(excludedResource, 'i')) > 0);\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * OdataErrorMapper - Maps ajax errors from odata calls to known user errors\r\n */\r\nexport class OdataErrorMapper {\r\n /**\r\n * @param {object} errorCodes - odata user error codes\r\n */\r\n constructor(errorCodes) {\r\n this.errorCodes = errorCodes || [];\r\n }\r\n\r\n /**\r\n * Checks if an ajax error is a known user error\r\n * @param {object} ajaxData - data related to the current ajax call\r\n * @returns {bool} - if the error maps to a known error or not\r\n */\r\n check(ajaxData) {\r\n const errorString = ajaxData.error;\r\n\r\n return _.any(this.errorCodes, errorCode => errorString.toUpperCase().indexOf(errorCode) >= 0);\r\n }\r\n}\r\n","/**\r\n * CampaignApiErrorMapper - Maps ajax errors from campaign/api to known user errors\r\n */\r\nexport class CampaignApiErrorMapper {\r\n /**\r\n * @param {object} errorCodes - campaign api user error codes\r\n */\r\n constructor(errorCodes) {\r\n this.knownUserErrorCodes = errorCodes || [];\r\n }\r\n\r\n /**\r\n * Checks if an ajax error is a known user error\r\n * @param {object} ajaxData - data related to the current ajax call\r\n * @param {object} jqXHR - jqXHR of the ajax call\r\n * @returns {bool} - if the error maps to a known error or not\r\n */\r\n check(ajaxData, jqXHR) {\r\n const urlString = ajaxData.url;\r\n const { responseText } = jqXHR;\r\n\r\n if (!urlString) {\r\n return false;\r\n }\r\n\r\n if (urlString.toUpperCase().indexOf('/CAMPAIGN/API/') >= 0) {\r\n try {\r\n const errorCode = JSON.parse(responseText).Errors[0].Code;\r\n\r\n if (this.knownUserErrorCodes.indexOf(errorCode) >= 0) {\r\n return true;\r\n }\r\n } catch (e) {\r\n // ignore any parse exceptions\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\n/**\r\n * UrlErrorMapper - Maps ajax errors from known invalid domains as user errors\r\n */\r\nexport class UrlErrorMapper {\r\n /**\r\n * @param {object} domains - known invalid domains\r\n */\r\n constructor(domains) {\r\n this.domains = domains || [];\r\n }\r\n\r\n /**\r\n * Checks if the url is of a known invalid domain\r\n * @param {object} ajaxData - data related to the current ajax call\r\n * @returns {bool} - if the url maps to a known invalid domain or not\r\n */\r\n check(ajaxData) {\r\n const ajaxUrlString = ajaxData.url;\r\n\r\n return _.isString(ajaxUrlString) &&\r\n _.any(this.domains, domain => ajaxUrlString.toUpperCase().indexOf(domain.toUpperCase()) >= 0);\r\n }\r\n}\r\n","\r\nconst prodEnvs = [\r\n // CMUI\r\n 'ui.bingads.microsoft.com',\r\n 'ui.beta.bingads.microsoft.com',\r\n 'ui.ads.microsoft.com',\r\n 'ui.beta.ads.microsoft.com',\r\n // CCUI\r\n 'bingads.microsoft.com',\r\n 'beta.bingads.microsoft.com',\r\n 'ads.microsoft.com',\r\n 'beta.ads.microsoft.com',\r\n // AdLibrary\r\n 'adlibrary.ads.microsoft.com',\r\n];\r\n\r\nexport function isTestEnvironment(envToCheck) {\r\n return prodEnvs.indexOf(envToCheck) === -1;\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst logKeyPrefix = 'localStorageListener';\r\n\r\n/**\r\n * Retrieves logs stored in local storage using the LocalStorageListener\r\n * @param {Object} options - options for log retrieval\r\n * @param {bool} [options.deleteAfterRetrieval = false] - True to delete\r\n * the log after it is retrieved\r\n * @returns {Object[]} - Array of log objects stored in local storage\r\n */\r\nexport function retrieveLocalStorageLogs({ deleteAfterRetrieval = false }) {\r\n const storage = window.localStorage;\r\n\r\n if (!storage) {\r\n return [];\r\n }\r\n\r\n return _.keys(storage).reduce((retrievedLogs, key) => {\r\n if (key.indexOf(logKeyPrefix) === 0) {\r\n try {\r\n const parsedLog = JSON.parse(storage.getItem(key));\r\n\r\n retrievedLogs.push(parsedLog);\r\n if (deleteAfterRetrieval) {\r\n storage.removeItem(key);\r\n }\r\n } catch (e) {\r\n console.error(e); // eslint-disable-line no-console\r\n }\r\n }\r\n return retrievedLogs;\r\n }, []);\r\n}\r\n","// specify odata error codes that represent user errors\r\nconst odataErrorCodes = [\r\n 'ACCOUNTIDCOLUMNNOTFOUND',\r\n 'ACCOUNTIDINVALID',\r\n 'ACCOUNTNOTINPILOTFORPORTFOLIOBIDSTRATEGY',\r\n 'ACCOUNTNUMBERSMAXLIMITEXCEEDED',\r\n 'ADDESTINATIONURLINVALID',\r\n 'ADEXTENSIONASSOCIATIONSLIMITEXCEEDEDPERENTITYTYPE',\r\n 'ADEXTENSIONCITYNAMENULLOREMPTY',\r\n 'ADEXTENSIONPHONENUMBERINVALID',\r\n 'ADEXTENSIONPHONENUMBERTOOLONG',\r\n 'ADGROUPCRITERIONIDINVALID',\r\n 'ADGROUPCRITERIONSENTITYLIMITEXCEEDED',\r\n 'ADGROUPEXPIRED',\r\n 'ADGROUPIDINVALID',\r\n 'ADGROUPINEXPIREDSTATECANNOTBEUPDATED',\r\n 'ADGROUPISDELETED',\r\n 'ADIDINVALID',\r\n 'ADTEXTINVALID',\r\n 'ADTITLEINVALID',\r\n 'ADTYPEINVALIDFORCUSTOMER',\r\n 'ADTYPENOTSUPPORTEDFORDISCLAIMERCAMPAIGN', // Added from legacy error file\r\n 'ADULTADVERTISERERR',\r\n 'ALREADYHASPENDINGFEED',\r\n 'APPADEXTENSIONAPPSTOREIDINVALID',\r\n 'APPADEXTENSIONDESTINATIONURLINVALID',\r\n 'APPEALQUOTAEXCEEDED',\r\n 'ASSETDATAENCODINGINVALID',\r\n 'ASSETDATAINVALID',\r\n 'ASSETDATAINVALIDASPECT',\r\n 'ASSETDATAINVALIDHEIGHT',\r\n 'ASSETDATAINVALIDWIDTH',\r\n 'ASSETISALREADYDELETED',\r\n 'ASSETISUSED',\r\n 'ASSOCIATIONSLIMITEXCEEDEDPERADEXTENSIONTYPE',\r\n 'ASSOCIATIONSLIMITEXCEEDEDPERADEXTENSIONTYPEFORENTITY',\r\n 'ATTRIBUTENAMELENGTHEXCEEDED',\r\n 'ATTRIBUTEVALUELENGTHEXCEEDED',\r\n 'ATTRIBUTEVALUESTRINGTOOLONG',\r\n 'AUDIENCESHOULDNOTBEACCOUNTLEVEL',\r\n 'BASECAMPAIGNBUDGETTYPEINVALID',\r\n 'BOTHDESTINATIONURLANDFINALURLNOTALLOWED',\r\n 'BUDGETAMOUNTISABOVELIMIT',\r\n 'BUDGETAMOUNTISBELOWLIMIT',\r\n 'BUDGETIDINVALID',\r\n 'BULKFILEEXPIRED',\r\n 'BULKFILENOTPRESENT',\r\n 'BULKFILESCANNOTBEMULTIPLE',\r\n 'CAMPAIGNADGROUPNOTMATCHED',\r\n 'CAMPAIGNOREXPERIMENTWITHNAMEALREADYEXISTS',\r\n 'CAMPAIGNSERVICECANNOTADDCRITERIONTOCAMPAIGNWITHOUTDYNAMICSEARCHSETTINGS',\r\n 'CAMPAIGNSERVICEEXPANDEDTEXTADDEFAULTTEXTREQUIREDFORKEYWORD',\r\n 'CAMPAIGNSERVICEEXPERIMENTDOESNOTSUPPORTMIXEDMODECAMPAIGN',\r\n 'CAMPAIGNSERVICERESPONSIVESEARCHADDESCRIPTIONSLESSTHANMINREQUIRED',\r\n 'CAMPAIGNSERVICERESPONSIVESEARCHADHEADLINESLESSTHANMINREQUIRED',\r\n 'CAMPAIGNSERVICERESPONSIVESEARCHADPATH1INVALID',\r\n 'CAMPAIGNSERVICERESPONSIVESEARCHADPATH2INVALID',\r\n 'CAMPAIGNWITHNAMEALREADYEXISTS',\r\n 'CANNOTUPDATEACCOUNTPROPERTYBYCUSTOMERIDFORTHISPROPERTYNAME',\r\n 'CANNOTUSESTANDARDFEEDATTRIBUTENAME',\r\n 'CANNOTUSETARGETINGFEEDATTRIBUTENAME',\r\n 'COOPINVALIDCOOPERR',\r\n 'COUNTDOWNDAYSBEFOREOUTOFRANGE',\r\n 'COUNTDOWNINVALIDDATETIME',\r\n 'COUNTDOWNINVALIDDAYSBEFORE',\r\n 'COUNTDOWNINVALIDDEFAULTTEXT',\r\n 'COUNTDOWNINVALIDLANGUAGECODE',\r\n 'COUNTDOWNINVALIDPARAMETERS',\r\n 'COUNTDOWNPASTDATETIME',\r\n 'CREATESTOREWITHFRAUDDOMAINERR',\r\n 'CUSTOMERNOTELIGIBLEFORDYNAMICDATAFEED',\r\n 'CUSTOMERUNDERMIGRATION',\r\n 'CUSTOMIDATTRIBUTESHOULDBEOFSTRINGTYPE',\r\n 'DEFAULTHOTELGROUPUPDATENOTALLOWED',\r\n 'DESTINATIONGOALURLSTRINGHASINVALIDCHARACTERS',\r\n 'DESTINATIONGOALURLSTRINGTOOLONG',\r\n 'DESTINATIONURLPROTOCOLINVALID',\r\n 'DOWNLOADFILTEREXPRESSIONSCOUNTEXCEEDED',\r\n 'DUPLICATEASSETSUNDERFOLDER',\r\n 'DUPLICATEAUDIENCEID', // when trying to create audience with the same ID\r\n 'DUPLICATEAUDIENCENAME',\r\n 'DUPLICATEDOMAINNAMEERR',\r\n 'DUPLICATEENTITY', // duplicate folder created (user error)\r\n 'DUPLICATEFEEDATTRIBUTENAME',\r\n 'DUPLICATEFEEDFILENAMEERR',\r\n 'DUPLICATEFEEDNAME',\r\n 'DUPLICATEFEEDNAMEERR',\r\n 'DUPLICATEFOLDERNAME',\r\n 'DUPLICATEIMAGE',\r\n 'DUPLICATELISTITEMINLIST',\r\n 'DUPLICATEPRODUCTAUDIENCE', // when trying to create audience with same audience setting(tag, type)\r\n 'DUPLICATESHAREDLISTNAME',\r\n 'DUPLICATESOURCEPULLURLERR',\r\n 'DUPLICATESTORENAMEERR',\r\n 'DUPLICATETAGID', // when creating tag for the audience with same ID\r\n 'DUPLICATEVALUES', // when creating hotel center length of stay with same value in different stay length\r\n 'DYNAMICSEARCHADPATH1INVALID', // Added from legacy error file\r\n 'DYNAMICSEARCHADTEXTPART2INVALID',\r\n 'EDITORIALADDESTINATIONURLBLANKACROSSALLASSOCIATIONS',\r\n 'EDITORIALADTEXTBLANKACROSSALLASSOCIATIONS',\r\n 'EDITORIALADTITLEBLANKACROSSALLASSOCIATIONS',\r\n 'EDITORIALAPPEALCREATIONQUOTAEXCEEDED',\r\n 'EDITORIALAPPEALCREATIONQUOTAEXCEEDEDFORLAST24HOURS',\r\n 'EDITORIALAPPEALENTITYALREADYAPPEALED',\r\n 'EDITORIALERROR',\r\n 'EDITORIALSYNTAXERRORINTITLE',\r\n 'EDITORIALTOOMUCHADTEXTINDESTINATIONURL',\r\n 'EDITORIALTOOMUCHADTEXTINTEXT',\r\n 'EDITORIALTOOMUCHADTEXTINTEXTACROSSALLASSOCIATIONS',\r\n 'EDITORIALTOOMUCHADTEXTINTITLE',\r\n 'EDITORIALTOOMUCHADTEXTINTITLEACROSSALLASSOCIATIONS',\r\n 'ENDEDEXPERIMENTCANNOTBECHANGED',\r\n 'ENTITYALREADYEXISTS',\r\n 'EXPANDEDTEXTADCOMBINEDTITLETOOLONG',\r\n 'EXPANDEDTEXTADCOUNTDOWNDAYSBEFOREOUTOFRANGE',\r\n 'EXPANDEDTEXTADCOUNTDOWNINVALIDDATETIME',\r\n 'EXPANDEDTEXTADCOUNTDOWNINVALIDDAYSBEFORE',\r\n 'EXPANDEDTEXTADCOUNTDOWNINVALIDDEFAULTTEXT',\r\n 'EXPANDEDTEXTADCOUNTDOWNINVALIDLANGUAGECODE',\r\n 'EXPANDEDTEXTADCOUNTDOWNINVALIDPARAMETERS',\r\n 'EXPANDEDTEXTADCOUNTDOWNPASTDATETIME',\r\n 'EXPANDEDTEXTADDEFAULTTEXTREQUIREDFORKEYWORDPARAMETER',\r\n 'EXPANDEDTEXTADDISPLAYURLDOMAINEXTRACTIONFAILED',\r\n 'EXPANDEDTEXTADDISPLAYURLDOMAININVALID',\r\n 'EXPANDEDTEXTADFINALURLDOMAINTOOLONG',\r\n 'EXPANDEDTEXTADINVALIDFUNCTIONFORMAT',\r\n 'EXPANDEDTEXTADMISSINGDELIMITERBETWEENFUNCTIONS',\r\n 'EXPANDEDTEXTADPATH1INVALID',\r\n 'EXPANDEDTEXTADPATH2INVALID',\r\n 'EXPANDEDTEXTADTEXTPART1INVALID',\r\n 'EXPANDEDTEXTADTEXTPART1TOOLONG',\r\n 'EXPANDEDTEXTADTEXTPART2INVALID',\r\n 'EXPANDEDTEXTADTEXTPART2TOOLONG',\r\n 'EXPANDEDTEXTADTITLEPART1INVALID',\r\n 'EXPANDEDTEXTADTITLEPART1TOOLONG',\r\n 'EXPANDEDTEXTADTITLEPART2INVALID',\r\n 'EXPANDEDTEXTADTITLEPART2TOOLONG',\r\n 'EXPANDEDTEXTADTITLEPART3INVALID',\r\n 'EXPANDEDTEXTADTITLEPART3TOOLONG',\r\n 'EXPANDEDTEXTADUNKNOWNFUNCTION',\r\n 'EXPERIMENTCAMPAIGNCANNOTBEUPDATED',\r\n 'EXPERIMENTENDDATELESSTHANTODAY',\r\n 'EXPERIMENTIDINVALID',\r\n 'EXPERIMENTNAMEISSAMEASBASECAMPAIGNNAME',\r\n 'EXPERIMENTNOTSUPPORTEDFORDISCLAIMERCAMPAIGN',\r\n 'EXPERIMENTTIMEPERIODOVERLAPPING',\r\n 'EXPERIMENTTRAFFICSPLITPERCENTCANNOTBECHANGED',\r\n 'FEEDASSOCIATIONLIMITATIONREACHED',\r\n 'FEEDITEMMAXLIMITREACHED',\r\n 'FEEDNOTFOUNDERR',\r\n 'FEEDUPLOADSCHEDULEINVALIDURL',\r\n 'FEEDUPLOADSCHEDULEUNABLETOFETCHFILE',\r\n 'FEEDUPLOADSCHEDULEUSERNAMEREQUIREDFORPASSWORD',\r\n 'FILEFETCHAUTHENTICATIONERROR',\r\n 'FILEFETCHCONNECTIONERROR',\r\n 'FILEFETCHFILEPATHNOTFOUND',\r\n 'FILEFETCHPERMISSIONLEVELERROR',\r\n 'FILEFORMATNOTSUPPORTED',\r\n 'FILESIZEEXCEEDED',\r\n 'FINALURLREQUIREDWHENUSINGTRACKINGURLTEMPLATEORURLCUSTOMPARAMETER',\r\n 'FOLDERHASASSETS',\r\n 'FOLDERHASSUBFOLDERS',\r\n 'FORMATVERSIONNOTSUPPORTED',\r\n 'FORMATVERSIONREQUIRED',\r\n 'FTPSETTINGSUSERNAMEINVALIDCHARACTERS',\r\n 'FTPSETTINGSUSERNAMETOOLONG',\r\n 'FTPSETTINGSUSERNAMETOOSHORT',\r\n 'FTPSETTINGUSERNAMEALREADYUSED',\r\n 'GOALWITHSAMENAMEALREADYEXISTSUNDERTAG',\r\n 'GOOGLEIMPORTCANNOTRETRIEVEREFRESHTOKEN',\r\n 'GOOGLEIMPORTCONTENTAPIINSUFFICIENTAUTHSCOPE',\r\n 'GOOGLESYNCACCOUNTNOTSETUP',\r\n 'GOOGLESYNCNOTADWORDSUSER',\r\n 'GOOGLESYNCOAUTHTOKENREVOKED',\r\n 'GOOGLESYNCTWOSTEPVERIFICATIONNOTENROLLED',\r\n 'GOOGLESYNCUSERISNOTAUTHORIZED',\r\n 'GOOGLESYNCUSERPERMISSIONDENIED',\r\n 'IFFUNCTIONAUDIENCESEXCEEDSMAXFIELDLENGTH',\r\n 'IFFUNCTIONCUSTOMERNOTINPILOT',\r\n 'IFFUNCTIONDUPLICATEAUDIENCES',\r\n 'IFFUNCTIONINVALIDAUDIENCE',\r\n 'IFFUNCTIONINVALIDSYNTAX',\r\n 'IFFUNCTIONNESTINGNOTALLOWED',\r\n 'IFFUNCTIONNUMAUDIENCESEXCEEDSMAXFORAD',\r\n 'IFFUNCTIONSOMEHAVEDEFAULTVALUEBUTNOTALL',\r\n 'IFFUNCTIONSPECIALCHARACTERSARENOTESCAPED',\r\n 'IFFUNCTIONSPECIALCHARACTERSNOTALLOWED',\r\n 'IMAGESLIMITEXCEEDEDPERACCOUNT',\r\n 'IMAGEDOESNTFITASPECTRATIO',\r\n 'IMPORTEXCEEDGOOGLESTORECOUNTLIMIT',\r\n 'IMPORTFEEDTYPENOTSUPPORTED',\r\n 'IMPORTINVALIDEXCELFILEFORMATHAVINGMULTIPLEWORKSHEETS',\r\n 'IMPORTINVALIDFILEFORMAT',\r\n 'IMPORTMARKETALREADYEXISTS',\r\n 'IMPORTSTATUSINVALID',\r\n 'INVALIDADEXTENSIONSTATUS',\r\n 'INVALIDAUDIENCEDESCRIPTION',\r\n 'INVALIDAUDIENCEID',\r\n 'INVALIDAUDIENCELOOKBACKWINDOW',\r\n 'INVALIDAUDIENCENAME',\r\n 'INVALIDCATEGORYFORGOALTYPE',\r\n 'INVALIDCHARACTERSINKEY',\r\n 'INVALIDCHARACTERSINVALUE',\r\n 'INVALIDDATETIMEFEEDITEMATTRIBUTEVALUE',\r\n 'INVALIDDURATION',\r\n 'INVALIDEMAILADDRESSERR',\r\n 'INVALIDENDDATEATTRIBUTEVALUE',\r\n 'INVALIDFEEDATTRIBUTE',\r\n 'INVALIDFEEDATTRIBUTETYPEINCOUNTDOWN',\r\n 'INVALIDFEEDFILENAMEERR',\r\n 'INVALIDFEEDITEMATTRIBUTEVALUE',\r\n 'INVALIDFEEDNAME',\r\n 'INVALIDFEEDNAMEERR',\r\n 'INVALIDFEEDUPLOADFILE',\r\n 'INVALIDFILTERLINKTEXTCHARACTER',\r\n 'INVALIDFOLDERNAME',\r\n 'INVALIDFUNCTIONFORMAT',\r\n 'INVALIDGEOGRAPHICALLOCATIONSEARCHSTRING',\r\n 'INVALIDGOALID',\r\n 'INVALIDGRIDDATAPARAMETERS',\r\n 'INVALIDID',\r\n 'INVALIDINT64FEEDITEMATTRIBUTEVALUE',\r\n 'INVALIDPAGEFEEDLABEL',\r\n 'INVALIDPAGEFEEDURL',\r\n 'INVALIDPRICEFEEDITEMATTRIBUTEVALUE',\r\n 'INVALIDPULLUSERNAMEERR',\r\n 'INVALIDSTARTDATEATTRIBUTEVALUE',\r\n 'INVALIDSTOREDESCRIPTIONERR',\r\n 'INVALIDTAG',\r\n 'INVALIDTAGDESCRIPTION',\r\n 'INVALIDTAGNAME',\r\n 'INVALIDTARGETADGROUPATTRIBUTEVALUE',\r\n 'INVALIDTARGETAUDIENCEIDATTRIBUTEVALUE',\r\n 'INVALIDTARGETCAMPAIGNATTRIBUTEVALUE',\r\n 'INVALIDTARGETKEYWORDTEXTATTRIBUTEVALUE',\r\n 'INVALIDURL',\r\n 'INVALIDURLFEEDITEMATTRIBUTEVALUE',\r\n 'INVALIDVALUE',\r\n 'KEYFEEDITEMATTRIBUTEVALUECONFLICTION',\r\n 'KEYWORDANDMATCHTYPECOMBINATIONALREADYEXISTS',\r\n 'KEYWORDIDINVALID',\r\n 'KEYWORDSUBSTITUTIONNOTSUPPORTED',\r\n 'LABELNAMEDUPLICATE',\r\n 'LANGUAGEMISMATCHUSERAD',\r\n 'LISTINGADGROUPNOTMATCHED',\r\n 'LOCATIONFUNCTIONINVALIDPARAMETERS',\r\n 'MAXADSLIMITEXCEEDED',\r\n 'MAXAUDIENCECRITERIONSPERACCOUNTLIMITREACHED',\r\n 'MAXAUDIENCESPERACCOUNTLIMITREACHED',\r\n 'MAXAUDIENCESPERCUSTOMERLIMITREACHED',\r\n 'MAXFEEDLIMITREACHEDERR',\r\n 'MAXINMARKETAUDIENCEEXCLUSIONPERACCOUNTLIMITREACHED',\r\n 'MAXLISTITEMLIMITEXCEEDEDFORLIST',\r\n 'MAXMMAADSLIMITREACHEDINADGROUP',\r\n 'MAXRSAADSLIMITREACHEDINADGROUP',\r\n 'MEDIAFORMATNOTSUPPORTED',\r\n 'MISSINGDELIMITERBETWEENFUNCTIONS',\r\n 'MISSINGLANDINGPAGEURLTAG',\r\n 'MOBILEFINALURLNOTALLOWEDWITHMOBILEDEVICEPREFERENCE',\r\n 'MULTIACCOUNTBULKUPLOADACCOUNTCOUNTEXCEEDED',\r\n 'MULTIACCOUNTUPLOADMISSINGFILENAME',\r\n 'MULTIACCOUNTUPLOADUNSUPPORTEDFILETYPE',\r\n 'NAMECOLLISION',\r\n 'NEGATIVEKEYWORDDUPLICATE',\r\n 'NEGATIVEKEYWORDHASINVALIDCHARS',\r\n 'NEGATIVEKEYWORDTOOLONG',\r\n 'NEGATIVESITECANNOTBEOWNEDOROPERATEDSITE',\r\n 'NEGATIVESITEURLEXCEEDMAXSUBDIRECTORIES',\r\n 'NEGATIVESITEURLEXCEEDMAXSUBDOMAINS',\r\n 'NEGATIVESITEURLINVALID',\r\n 'NEGATIVESITEURLTOOLONG',\r\n 'NESTEDPARAMETERINCUSTOMATTRIBUTENOTSUPPORTED',\r\n 'NOENOUGHCONVERSIONFORMAXCONVERSIONSBIDDINGSCHEME',\r\n 'NOENOUGHCONVERSIONFORTARGETCPABIDDINGSCHEME',\r\n 'OFFLINECONVERSIONADDITIONCOLUMNSNOTEXPECTEDINHEADER',\r\n 'OFFLINECONVERSIONADJUSTMENTCOLUMNSNOTEXPECTEDINHEADER',\r\n 'OFFLINECONVERSIONCOLUMNCONVERSIONCURRENCYNOTFOUND',\r\n 'OFFLINECONVERSIONCOLUMNCONVERSIONNAMENOTFOUND',\r\n 'OFFLINECONVERSIONCOLUMNCONVERSIONTIMENOTFOUND',\r\n 'OFFLINECONVERSIONCOLUMNCONVERSIONVALUENOTFOUND',\r\n 'OFFLINECONVERSIONCOLUMNMICROSOFTCLICKIDNOTFOUND',\r\n 'OFFLINECONVERSIONFILEFORMATINVALID',\r\n 'OFFLINECONVERSIONHEADERSROWNOTFOUND',\r\n 'OFFLINECONVERSIONTIMEZONEINVALID',\r\n 'OFFLINECONVERSIONUPLOADACCOUNTIDCOLUMNNOTFOUND',\r\n 'OFFLINECONVERSIONUPLOADFILESIZEEXCEEDED',\r\n 'OFFLINECONVERSIONUPLOADMULTIPLEFILESINZIPFILE',\r\n 'OFFLINECONVERSIONUPLOADZIPFILEEMPTY',\r\n 'ONLYONEACTIVENODEISALLOWED',\r\n 'PAGEFEEDLABELTOOLONG',\r\n 'PORTFOLIOBIDSTRATEGYIDINVALID',\r\n 'PORTFOLIOBIDSTRATEGYISASSOCIATEDWITHACTIVECAMPAIGNS',\r\n 'PROMOTIONCANNOTBEUPDATEDATCURRENTSTATE',\r\n 'PROMOTIONIDALREADYUSED',\r\n 'REQUESTFAILED',\r\n 'REQUESTIDINVALID',\r\n 'RESPONSIVESEARCHADDEFAULTTEXTREQUIREDFORKEYWORDPARAMETER', // Added from legacy error file\r\n 'RESPONSIVESEARCHADDESCRIPTIONSLESSTHANMINREQUIRED',\r\n 'RESPONSIVESEARCHADFINALURLDOMAINTOOLONG',\r\n 'RESPONSIVESEARCHADHEADLINESLESSTHANMINREQUIRED',\r\n 'RESPONSIVESEARCHADPATH1INVALID',\r\n 'RESPONSIVESEARCHADSBOTHCOUNTDOWNANDGLOBALCOUNTDOWN',\r\n 'RESPONSIVESEARCHADSDESCRIPTIONSLESSTHANMINREQUIRED',\r\n 'RESPONSIVESEARCHADSDUPLICATEHEADLINES',\r\n 'RESPONSIVESEARCHADSHEADLINESLESSTHANMINREQUIRED',\r\n 'RETURNPOLICYINVALIDURLERR',\r\n 'ROWCOUNTEXCEEDED',\r\n 'RSAADCUSTOMIZERATTRIBUTECOUNTMORETHANLIMIT',\r\n 'RSAADCUSTOMIZERATTRIBUTETYPECHANGEDINUPDATE',\r\n 'SCHEDULEDAYSNOTINDATERANGE',\r\n 'SHAREDENTITIESWITHACTIVEASSOCIATIONSCANNOTBEDELETED',\r\n 'SHAREDENTITYASSOCIATIONDOESNOTEXIST',\r\n 'SHAREDENTITYASSOCIATIONSBATCHLIMITEXCEEDED',\r\n 'SHAREDENTITYLIMITEXCEEDED',\r\n 'SHAREDENTITYNAMEINVALID',\r\n 'SHAREDLISTIDINVALID',\r\n 'SHAREDLISTITEMBATCHLIMITEXCEEDED',\r\n 'SHAREDLISTITEMIDSLIMITEXCEEDED',\r\n 'SHAREDLISTITEMNOTINLIST',\r\n 'SHIPPINGSETTINGSDUPLICATELABELNAMEUSED',\r\n 'SITELINKDESCRIPTION1INVALID',\r\n 'SITELINKDESCRIPTION1TOOLONG',\r\n 'SITELINKDESCRIPTION2INVALID',\r\n 'SITELINKDESCRIPTION2TOOLONG',\r\n 'SITELINKDESTINATIONURLNULLOREMPTY',\r\n 'SITELINKDISPLAYTEXTINVALID',\r\n 'SITELINKDISPLAYTEXTTOOLONG',\r\n 'SMARTPAGECONCURRENTUPDATINGISNOTALLOWED',\r\n 'SMARTPAGEGETFBPAGEOAUTHERROR',\r\n 'SMARTPAGEGETFBPAGEUSERERROR',\r\n 'SMARTPAGEINVALIDSTATUS',\r\n 'SMARTPAGEINVALIDSUBDOMAIN',\r\n 'SMARTPAGESUBDOMAINISNOTAVAILABLE',\r\n 'SMARTPAGEURLISREJECTEDBYEDITORIAL',\r\n 'STARTDATECOMESAFTERENDDATE',\r\n 'STOCKIMAGELIMITEXCEEDEDPERCUSTOMER', // Added from legacy error file\r\n 'STORENOTCOMPLIANTERR',\r\n 'STORENOTFOUNDERR',\r\n 'TAGWITHSAMENAMEALREADYEXISTSUNDERCUSTOMER',\r\n 'TARGETFEEDSTATUSINVALID',\r\n 'TASKSCHEDULINGINVALID',\r\n 'TOKENEXPIRED',\r\n 'TOOMANAYCUSTOMBIDSINADGROUP',\r\n 'TOOMANYADEXTENSIONSPERACCOUNT',\r\n 'TOOMANYCUSTOMBIDSINADGROUP',\r\n 'TOOMANYPAGEFEEDLABELS',\r\n 'TOOMANYVALUES',\r\n 'TOOMUCHDATAFORINLINEDOWNLOAD',\r\n 'TOOMUCHDATATODOWNLOAD',\r\n 'TOOMUCHEXCELDATATODOWNLOAD',\r\n 'UNKNOWNFUNCTION',\r\n 'URLNOTACCESSIBLE',\r\n 'VALUETOOLONG',\r\n 'VIDEOEXTENSIONINVALIDASPECTRATIO',\r\n 'VIDEOEXTENSIONINVALIDIMAGEFORMAT',\r\n 'VIDEOEXTENSIONINVALIDVIDEODURATION',\r\n 'VIDEOEXTENSIONINVALIDVIDEOID',\r\n 'VIDEOEXTENSIONTHUMBNAILTOOSMALL',\r\n 'VIDEOEXTENSIONVIDEOPROCESSINGFAILED',\r\n 'VIDEOEXTENSIONVIDEOTOOSMALL', // Added from legacy error file\r\n 'VIDEOOVERWEIGHT',\r\n 'WEBPAGECRITERIONALREADYEXISTS',\r\n 'GOALLEVELCANNOTBEDOWNGRADED',\r\n 'CUSTOMERNOTELIGIBLEFORENHANCEDCONVERSIONS',\r\n 'CONVERSIONEMAILADDRESSISNOTHASHED', // The conversion email address value is not hashed.\r\n 'CONVERSIONPHONENUMBERISNOTHASHED', // The conversion phone number value is not hashed.\r\n 'ONLINECONVERSIONHASHEDEMAILADDRESSNOTEXPECTED', // Invalid column HashedEmailAddress in online conversion file\r\n 'ONLINECONVERSIONHASHEDPHONENUMBERNOTEXPECTED', // Invalid column HashedPhoneNumber in online conversion file\r\n 'GOOGLEMYBUSINESSIMPORTUSERERROR',\r\n 'SHAREDLIBRARYUSERPERMISSIONDENIED',\r\n 'LOGOEXTENSIONLOGONOTSQUARE',\r\n 'IMAGEADEXTENSIONALTERNATIVETEXTINVALID',\r\n];\r\n\r\n// specify campaign api error codes that represent user errors\r\nconst campaignApiErrorCodes = [\r\n 276, // EditorialError\r\n 9028, // AssetIsUsed\r\n 2512, // AdGroupIdInvalid\r\n 9017, // AssetDataInvalid\r\n 9021, // AssetDataInvalidWidth\r\n 9022, // AssetDataInvalidHeight\r\n 9023, // AssetDataInvalidAspect\r\n 9045, // InvalidDuration\r\n 9046, // VideoOverweight\r\n 35305, // ImageAdExtensionAlternativeTextInvalid\r\n 35307, // ImageAdExtensionDestinationUrlInvalid\r\n 35310, // InvalidImageExtensionDescription\r\n];\r\n\r\n// specify unsupported domains that result in failed requests\r\nconst invalidDomains = [\r\n 'www.googletagmanager.com',\r\n 'cdn.optimizely.com',\r\n 'tracker.marinsm.com',\r\n 'lptag.liveperson.net',\r\n];\r\n\r\nexport { odataErrorCodes, campaignApiErrorCodes, invalidDomains };\r\n\r\n","export const defaultSchema = {\r\n scenario: [{\r\n name: 'defaultScenario',\r\n value: 'Ad Library Default Scenario',\r\n activity: [{\r\n name: 'logError',\r\n value: 'Ad Library Custom Error',\r\n }, {\r\n name: 'logTrace',\r\n value: 'Ad Library Custom Trace',\r\n }, {\r\n name: 'logMetrics',\r\n value: 'Ad Library Metrics',\r\n }],\r\n }],\r\n};\r\n\r\nexport const fetchEventSchema = {\r\n scenario: [\r\n {\r\n name: 'fetchEvent',\r\n value: 'Fetch Event Scenario',\r\n activity: [\r\n {\r\n name: 'fetchTrace',\r\n value: 'Fetch Event Trace',\r\n },\r\n {\r\n name: 'fetchError',\r\n value: 'Fetch Event Error',\r\n },\r\n ],\r\n },\r\n ],\r\n};\r\n\r\nexport const globalErrorSchema = {\r\n scenario: [{\r\n name: 'appReactGlobalError',\r\n value: 'Log application global react error',\r\n activity: [{\r\n name: 'logError',\r\n value: 'Log Error Info',\r\n }],\r\n }],\r\n};\r\n","import _ from 'underscore';\r\nimport {\r\n getInstrumentation as getInstrumentationInstance,\r\n InstrumentationSchema,\r\n} from '@bingads-webui-campaign/instrumentation-setup';\r\nimport {\r\n OdataErrorMapper,\r\n CampaignApiErrorMapper,\r\n UrlErrorMapper,\r\n odataErrorCodes,\r\n campaignApiErrorCodes,\r\n invalidDomains,\r\n} from '@bingads-webui-campaign/instrumentation';\r\nimport { isInternalUrl } from '@bingads-webui/url-util';\r\nimport { AjaxStub, AjaxEventHandler, ErrorStub } from '@bingads-webui/instrumentation-stubs';\r\nimport { defaultSchema } from './instrumentation-schema';\r\n\r\nconst errorMappers = {\r\n odataErrorMapper: new OdataErrorMapper(odataErrorCodes),\r\n campaignApiErrorMapper: new CampaignApiErrorMapper(campaignApiErrorCodes),\r\n urlErrorMapper: new UrlErrorMapper(invalidDomains),\r\n};\r\n\r\nconst formatNameValue = (name, value) => {\r\n if (_.isEmpty(value)) {\r\n return `${name}`;\r\n } else if (_.isObject(value)) {\r\n return `${name}|${JSON.stringify(value)}|NetworkIsOnline:${window.navigator.onLine}`;\r\n }\r\n return `${name}|${value}`;\r\n};\r\n\r\nfunction stub(instrumentation, serverContext) {\r\n const stubOptions = {\r\n pageTrackingId: serverContext && serverContext.PageTrackingId,\r\n lcid: serverContext && serverContext.CurrentUser && serverContext.CurrentUser.Locale,\r\n };\r\n\r\n const shouldAddHeaders = ajaxContext => isInternalUrl(ajaxContext.url);\r\n const eventHandler = new AjaxEventHandler({\r\n errorMappers,\r\n shouldAddHeaders,\r\n });\r\n\r\n const ajaxStub = new AjaxStub({\r\n stubOptions,\r\n eventHandler,\r\n instrumentation,\r\n });\r\n\r\n const errorStub = new ErrorStub({\r\n instrumentation,\r\n });\r\n\r\n ajaxStub.init();\r\n errorStub.init();\r\n}\r\n\r\nexport const getInstrumentation = ({ serverContext }) => {\r\n const {\r\n CurrentCustomer,\r\n CurrentAccount,\r\n CurrentUser,\r\n } = serverContext;\r\n\r\n const userContext = {\r\n CurrentCustomer: CurrentCustomer || {},\r\n CurrentAccount: CurrentAccount || {},\r\n CurrentUser: CurrentUser || {},\r\n };\r\n\r\n return getInstrumentationInstance({\r\n pageTrackingId: serverContext.PageTrackingId,\r\n errorMappers,\r\n isInDevelopmentMode: process.env.NODE_ENV === 'development',\r\n userContext,\r\n applicationName: {\r\n systemName: 'adlibrary',\r\n subSystemName: 'ui',\r\n },\r\n serverContext: {\r\n ...serverContext,\r\n ...userContext,\r\n },\r\n objectsToStub: [],\r\n });\r\n};\r\n\r\nexport const getInstrumentationService = ({ instrumentation, serverContext, scenario = 'defaultScenario' }) => {\r\n instrumentation.addScenario({\r\n scenario: [\r\n ...defaultSchema.scenario,\r\n ...InstrumentationSchema.scenario,\r\n ],\r\n });\r\n\r\n const defaultScenario = instrumentation[scenario].create();\r\n const logError = defaultScenario.logError.create();\r\n const logTrace = defaultScenario.logTrace.create();\r\n const logMetrics = defaultScenario.logMetrics.create();\r\n\r\n stub(instrumentation, serverContext);\r\n\r\n return {\r\n instrumentation,\r\n logError: (name, value = '') => {\r\n logError.error(formatNameValue(name, value));\r\n },\r\n logTrace: (name, value = '') => {\r\n logTrace.trace(formatNameValue(name, value));\r\n },\r\n logMetrics: (name, value = '') => {\r\n logMetrics.trace(formatNameValue(name, value));\r\n },\r\n };\r\n};\r\n","import _ from 'underscore';\r\nimport React, { useContext } from 'react';\r\n\r\nexport const InstrumentationServiceContext = React.createContext({\r\n logError: _.noop,\r\n logTrace: _.noop,\r\n logMetrics: _.noop,\r\n instrumentation: {},\r\n});\r\n\r\nexport const useInstrumentationServiceContext = () => {\r\n const context = useContext(InstrumentationServiceContext);\r\n return context;\r\n};\r\n","export { getInstrumentation } from './src/instrumentation';\r\nexport { InstrumentationSchema } from './src/instrumentation-schema';\r\n","import { Instrumentation } from '@bingads-webui/instrumentation';\r\n\r\nimport { PerformanceTimingLogger } from '@bingads-webui/performance-timing-logger';\r\nimport { PerfMarkerFactory } from '@bingads-webui/performance-marker';\r\nimport { getListeners } from './listeners';\r\nimport { getProcessors } from './processors';\r\nimport { setStub } from './set-stub';\r\nimport getPerfLogListeners from './perf-timing-config';\r\n\r\nexport function getInstrumentation({\r\n pageTrackingId,\r\n errorMappers,\r\n isInDevelopmentMode,\r\n userContext,\r\n applicationName,\r\n serverContext,\r\n ajaxStubOptions,\r\n ariaConfig = {},\r\n objectsToStub = [window.$],\r\n}) {\r\n const processors = getProcessors({\r\n isInDevelopmentMode,\r\n pageTrackingId,\r\n userContext,\r\n serverContext,\r\n });\r\n\r\n const instrumentationForPerfTiming = new Instrumentation({\r\n listeners: getPerfLogListeners({ ariaConfig }),\r\n processors,\r\n });\r\n\r\n const perfTimingLogger = new PerformanceTimingLogger({\r\n instrumentation: instrumentationForPerfTiming,\r\n });\r\n perfTimingLogger.init();\r\n\r\n const instrumentation = new Instrumentation({\r\n listeners: getListeners({ pageTrackingId, applicationName, ariaConfig }),\r\n processors: {\r\n contextProcessor: processors.contextProcessor,\r\n debugProcessor: processors.debugProcessor,\r\n },\r\n });\r\n\r\n setStub({\r\n instrumentation,\r\n pageTrackingId,\r\n errorMappers,\r\n objectsToStub,\r\n ajaxStubOptions,\r\n lcid: userContext.CurrentUser.Locale,\r\n });\r\n\r\n // init Perf Marker Factory\r\n PerfMarkerFactory.init(instrumentation);\r\n\r\n window.vNextInstrumentation = instrumentation;\r\n\r\n return instrumentation;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__521__;","module.exports = __WEBPACK_EXTERNAL_MODULE__522__;","import _ from 'underscore';\r\nimport { AriaListener } from '@bingads-webui/aria-listener';\r\nimport { ConsoleListener } from '@bingads-webui/console-listener';\r\nimport { LocalStorageListener } from '@bingads-webui/local-storage-listener';\r\nimport { InMemoryListener, InMemorySink } from '@bingads-webui/in-memory-listener';\r\nimport {\r\n getAriaConfig,\r\n campaignLogTableConfig,\r\n adInsightLogTableConfig,\r\n BasicFormatter,\r\n ApiFormatter,\r\n AdInsightOpportunityLogFormatter,\r\n ReportingApiFormatter,\r\n ConsoleFormatter,\r\n LogLevelFilter,\r\n ApiFilter,\r\n AdInsightOpportunityApiFilter,\r\n ConsoleFilter,\r\n UnloadLogFilter,\r\n isTestEnvironment,\r\n} from '@bingads-webui-campaign/instrumentation';\r\n\r\nexport function getListeners({\r\n pageTrackingId,\r\n applicationName,\r\n ariaConfig: applicationAriaConfig = {},\r\n}) {\r\n const currentEnv = document.domain;\r\n const ariaConfig = {\r\n ...getAriaConfig(currentEnv),\r\n ...applicationAriaConfig,\r\n };\r\n\r\n const applicationSystem = applicationName && applicationName.systemName ?\r\n applicationName.systemName : 'campaign';\r\n const applicationSubSystem = applicationName && applicationName.subSystemName ?\r\n applicationName.subSystemName : 'webui';\r\n\r\n // init log formatters\r\n const basicFormatter = new BasicFormatter({\r\n applicationSystem,\r\n applicationSubSystem,\r\n });\r\n const apiFormatter = new ApiFormatter();\r\n const reportingApiFormatter = new ReportingApiFormatter();\r\n const consoleFormatter = new ConsoleFormatter();\r\n // init log filters\r\n const logLevelFilter = new LogLevelFilter();\r\n const apiFilter = new ApiFilter();\r\n const consoleFilter = new ConsoleFilter();\r\n const unloadLogFilter = new UnloadLogFilter();\r\n\r\n const localStorageListener = new LocalStorageListener({\r\n formatters: {},\r\n filters: {\r\n unloadLogFilter,\r\n },\r\n uniquePageId: pageTrackingId,\r\n });\r\n\r\n localStorageListener.init();\r\n\r\n const campaignAriaListener = new AriaListener({\r\n tenantToken: ariaConfig.token,\r\n flushInterval: ariaConfig.flushInterval,\r\n batchSize: ariaConfig.batchSize,\r\n logTableNames: campaignLogTableConfig.logTableNames,\r\n defaultLogCategory: campaignLogTableConfig.defaultLogCategory,\r\n formatters: {\r\n basicFormatter,\r\n apiFormatter,\r\n reportingApiFormatter,\r\n },\r\n filters: {\r\n logLevelFilter,\r\n apiFilter,\r\n },\r\n });\r\n\r\n campaignAriaListener.init();\r\n campaignAriaListener.registerForTeardown();\r\n\r\n const adInsightLogFormatter = new AdInsightOpportunityLogFormatter();\r\n const adInsightApiFilter = new AdInsightOpportunityApiFilter();\r\n\r\n const adInsightAriaListener = new AriaListener({\r\n tenantToken: ariaConfig.tokens.adInsightOppTracking,\r\n flushInterval: ariaConfig.flushInterval,\r\n batchSize: ariaConfig.batchSize,\r\n logTableNames: adInsightLogTableConfig.logTableNames,\r\n defaultLogCategory: adInsightLogTableConfig.defaultLogCategory,\r\n formatters: {\r\n adInsightLogFormatter,\r\n },\r\n filters: {\r\n adInsightApiFilter,\r\n },\r\n });\r\n\r\n adInsightAriaListener.init();\r\n adInsightAriaListener.registerForTeardown();\r\n\r\n const consoleListener = new ConsoleListener({\r\n filters: {\r\n consoleFilter,\r\n },\r\n formatters: {\r\n consoleFormatter,\r\n },\r\n });\r\n\r\n consoleListener.init();\r\n\r\n const listeners = {\r\n localStorageListener,\r\n campaignAriaListener,\r\n adInsightAriaListener,\r\n consoleListener,\r\n };\r\n\r\n if (isTestEnvironment(currentEnv)) {\r\n window.seleniumLogsSink = new InMemorySink({ maxSize: 1000 });\r\n const inMemoryListener = new InMemoryListener({\r\n sink: window.seleniumLogsSink,\r\n formatters: {\r\n basicFormatter,\r\n apiFormatter,\r\n },\r\n filters: {\r\n logLevelFilter,\r\n apiFilter,\r\n },\r\n });\r\n\r\n inMemoryListener.init();\r\n\r\n _.extend(listeners, { inMemoryListener });\r\n }\r\n\r\n return listeners;\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__524__;","module.exports = __WEBPACK_EXTERNAL_MODULE__525__;","module.exports = __WEBPACK_EXTERNAL_MODULE__526__;","module.exports = __WEBPACK_EXTERNAL_MODULE__527__;","module.exports = __WEBPACK_EXTERNAL_MODULE__528__;","import {\r\n ContextProcessor,\r\n DebugProcessor,\r\n PerfTimingProcessor\r\n} from '@bingads-webui-campaign/instrumentation';\r\n\r\nexport function getProcessors({\r\n isInDevelopmentMode,\r\n pageTrackingId,\r\n userContext,\r\n serverContext,\r\n}) {\r\n const pageContext = serverContext || Object.assign({}, userContext, {\r\n Version: '0.0.0',\r\n PageTrackingId: pageTrackingId,\r\n });\r\n const contextProcessor = new ContextProcessor({ pageContext });\r\n const debugProcessor = new DebugProcessor({\r\n isDebugMode: isInDevelopmentMode,\r\n });\r\n const perfTimingProcessor = new PerfTimingProcessor({\r\n landingPageUrl: window.location.href,\r\n });\r\n\r\n const processors = {\r\n contextProcessor,\r\n debugProcessor,\r\n perfTimingProcessor,\r\n };\r\n\r\n return processors;\r\n}\r\n","import { AjaxStub, ErrorStub, AjaxEventHandler } from '@bingads-webui/instrumentation-stubs';\r\nimport { isInternalUrl } from '@bingads-webui/url-util';\r\nimport _ from 'underscore';\r\n\r\nexport function setStub({\r\n instrumentation,\r\n pageTrackingId,\r\n errorMappers,\r\n objectsToStub,\r\n ajaxStubOptions,\r\n lcid,\r\n}) {\r\n // If the application pulls in jQuery, stub it for ajax call.\r\n const filteredObjectsToStub = _.compact(objectsToStub);\r\n if (!_.isEmpty(filteredObjectsToStub)) {\r\n const shouldAddHeaders = ajaxContext => isInternalUrl(ajaxContext.url);\r\n const eventHandler = new AjaxEventHandler({ errorMappers, shouldAddHeaders });\r\n const ajaxStub = new AjaxStub({\r\n stubOptions: {\r\n filteredObjectsToStub,\r\n pageTrackingId,\r\n lcid,\r\n ajaxStubOptions,\r\n },\r\n eventHandler,\r\n instrumentation,\r\n });\r\n\r\n ajaxStub.init();\r\n }\r\n\r\n const errorStub = new ErrorStub({\r\n instrumentation,\r\n });\r\n errorStub.init();\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__531__;","import { AriaListener } from '@bingads-webui/aria-listener';\r\nimport {\r\n getAriaConfig,\r\n PerformanceLogsFormatter,\r\n PerformanceLogsFilter,\r\n} from '@bingads-webui-campaign/instrumentation';\r\n\r\nexport default function getPerfLogListeners(props) {\r\n const { ariaConfig: applicationAriaConfig = {} } = props || {};\r\n const currentEnv = document.domain;\r\n const ariaConfig = {\r\n ...getAriaConfig(currentEnv),\r\n ...applicationAriaConfig,\r\n };\r\n\r\n // init log formatters\r\n const performanceLogsFormatter = new PerformanceLogsFormatter();\r\n\r\n // init log filters\r\n const performanceLogsFilter = new PerformanceLogsFilter();\r\n\r\n const ariaListener = new AriaListener({\r\n tenantToken: ariaConfig.token,\r\n flushInterval: ariaConfig.flushInterval,\r\n batchSize: ariaConfig.batchSize,\r\n logTableNames: {\r\n resourcetiming: {\r\n name: 'resourcetiming',\r\n },\r\n },\r\n defaultLogCategory: 'resourcetiming',\r\n formatters: {\r\n performanceLogsFormatter,\r\n },\r\n filters: {\r\n performanceLogsFilter,\r\n },\r\n });\r\n\r\n ariaListener.init();\r\n ariaListener.registerForTeardown();\r\n\r\n const listeners = {\r\n ariaListener,\r\n };\r\n\r\n return listeners;\r\n}\r\n","export const InstrumentationSchema = {\r\n scenario: [\r\n {\r\n name: 'appScenario',\r\n value: 'app scenario',\r\n activity: [\r\n {\r\n name: 'appActivity',\r\n value: 'app Activity',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'preInstrumentationInitializeScenario',\r\n value: 'pre instrumentation start',\r\n activity: [\r\n {\r\n name: 'perfActivity',\r\n value: 'perf activity',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'globalSearchScenario',\r\n value: 'global search scenario',\r\n activity: [\r\n {\r\n name: 'searchActivity',\r\n value: 'search Activity',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'datePicker',\r\n value: 'datePicker',\r\n activity: [\r\n {\r\n name: 'dateRangePicked',\r\n value: 'dateRangePicked',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'mainMenuScenario',\r\n value: 'main menu scenario',\r\n activity: [\r\n {\r\n name: 'changeScopeActivity',\r\n value: 'change scope Activity',\r\n },\r\n {\r\n name: 'toggleMainMenuActivity',\r\n value: 'toggle mainMenu Activity',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'summaryBarScenario',\r\n value: 'summary bar scenario',\r\n activity: [\r\n {\r\n name: 'changeScopeActivity',\r\n value: 'change scope Activity',\r\n },\r\n {\r\n name: 'summaryBarBudgetActivity',\r\n value: 'update campaign summary bar budget Activity',\r\n },\r\n {\r\n name: 'summaryBarBidActivity',\r\n value: 'update ad group summary bar bid Activity',\r\n },\r\n {\r\n name: 'summaryBarExperimentCampaignActivity',\r\n value: 'update experiment campaign summary bar items Activity',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'globalMenuEntityBarScenario',\r\n value: 'global menu entity bar scenario',\r\n activity: [\r\n {\r\n name: 'changeScopeActivity',\r\n value: 'change scope Activity',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'newUINavigation',\r\n value: 'new UI navigation',\r\n activity: [\r\n 'preferenceSet',\r\n ],\r\n },\r\n {\r\n name: 'urlChange',\r\n value: 'url change',\r\n activity: [\r\n 'routeChange',\r\n 'paramChange',\r\n ],\r\n },\r\n {\r\n name: 'feedbackScenario',\r\n value: 'feedback scenario',\r\n activity: [\r\n 'feedbackActivity',\r\n ],\r\n },\r\n {\r\n name: 'globalMenuScenario',\r\n value: 'global menu scenario',\r\n activity: [\r\n 'globalMenuActivity',\r\n ],\r\n },\r\n {\r\n name: 'newUIShortcuts',\r\n value: 'new UI shortcuts',\r\n activity: [\r\n 'shortcutSet',\r\n ],\r\n },\r\n {\r\n name: 'nkllPage',\r\n value: 'nkllPage',\r\n activity: [\r\n 'nkllPageLifeCycle',\r\n ],\r\n },\r\n {\r\n name: 'newUISmartShoppingCampaignCreationScenario',\r\n value: 'newUISmartShoppingCampaignCreationScenario',\r\n activity: [\r\n 'SSCCreationActivity',\r\n ],\r\n },\r\n {\r\n name: 'newUICreateCampaignImportIntegration',\r\n value: 'newUICreateCampaignImportIntegration',\r\n activity: [\r\n 'createCampaign',\r\n 'importIntegration',\r\n ],\r\n },\r\n ],\r\n};\r\n","export { AjaxStub } from './src/ajax-stub/ajax-stub';\r\nexport { AjaxEventHandler } from './src/ajax-stub/ajax-event-handler';\r\nexport { ErrorStub } from './src/error-stub/error-stub';\r\n","import _ from 'underscore';\r\nimport { AjaxInterceptor } from './ajax-interceptor';\r\nimport { defaultConfig } from './default-config';\r\nimport { schema } from './ajax-stub-schema';\r\n\r\n/**\r\n * AjaxStub class - Creates an ajax stub that can be used by Instrumentation to stub ajax calls\r\n */\r\nexport class AjaxStub {\r\n /**\r\n * @param {object} options - contains instrumentation and optionally stubOptions, AjaxEventhandler\r\n */\r\n constructor(options = {}) {\r\n this.stubOptions = _.defaults(options.stubOptions || {}, defaultConfig.stubOptions);\r\n this.handler = options.eventHandler || defaultConfig.eventHandler;\r\n\r\n // create scenario for logging\r\n this.setupScenario(options.instrumentation);\r\n\r\n this.interceptor = new AjaxInterceptor(this.stubOptions, this.handler, this.ajaxStubScenario);\r\n }\r\n\r\n init() {\r\n _.each(this.stubOptions.objectsToStub, (objectToStub) => {\r\n this.interceptor.intercept(objectToStub);\r\n });\r\n }\r\n\r\n setupScenario(instr) {\r\n instr.addScenario(schema);\r\n this.ajaxStubScenario = instr.ajaxStubScenario.create(instr.ScenarioContext);\r\n }\r\n}\r\n","import _ from 'underscore';\r\nimport urijs from 'urijs';\r\nimport { generateGuid } from '@bingads-webui-universal/primitive-utilities';\r\nimport { AjaxEventInterceptor } from './ajax-event-interceptor';\r\n\r\n// We only want one ajax intercept, however instrumentation can be created a second time\r\n// e.g. after creating a CID during signup\r\nlet globalInterceptInstance = null;\r\n\r\n/**\r\n * AjaxInterceptor - Provides functionality to intercept ajax calls\r\n */\r\nexport class AjaxInterceptor {\r\n /**\r\n * @param {object} stubOptions - stub options to be used in ajax logging\r\n * @param {object} eventHandler - handler for ajax events\r\n * @param {object} scenario - scenario to be used by the stub\r\n * @param {function} generateRid - optional: overwrites the function that generates an RID\r\n */\r\n constructor(stubOptions, eventHandler, scenario, generateRid) {\r\n this.stubOptions = stubOptions;\r\n this.eventHandler = eventHandler;\r\n this.scenario = scenario;\r\n this.generateRid = generateRid || generateGuid;\r\n }\r\n\r\n /* eslint-disable no-param-reassign */\r\n intercept(jQuery) {\r\n const originalAjax = jQuery.ajax;\r\n const intercept = (url, options) => {\r\n options = options || {};\r\n\r\n if (_.isObject(url)) {\r\n options = url;\r\n } else if (_.isString(url)) {\r\n options.url = url;\r\n }\r\n\r\n // add requestId to url\r\n const requestId = this.generateRid();\r\n if (this.shouldAddRequestId(options.dataType, options.url)) {\r\n options.url = urijs(options.url).setQuery('ReqId', requestId).toString();\r\n }\r\n\r\n const activity = this.scenario.ajaxStubActivity.create();\r\n const ajaxEventInterceptor = new AjaxEventInterceptor(\r\n options,\r\n requestId,\r\n this.stubOptions,\r\n this.eventHandler,\r\n activity\r\n );\r\n ajaxEventInterceptor.triggerEventInterceptors();\r\n\r\n return originalAjax.call(jQuery, options);\r\n };\r\n\r\n globalInterceptInstance = intercept;\r\n\r\n jQuery.ajax = (url, options) => (globalInterceptInstance === intercept ?\r\n intercept(url, options) :\r\n originalAjax.call(jQuery, url, options));\r\n }\r\n\r\n shouldAddRequestId(dataType, url) {\r\n const urlInLowerCase = _.isString(url) ? url.toLowerCase() : '';\r\n\r\n return _.isString(url) &&\r\n urlInLowerCase.indexOf('reqid') === -1 &&\r\n (_.isUndefined(dataType) || dataType !== 'script') &&\r\n urlInLowerCase.indexOf('scripts/') === -1;\r\n }\r\n}\r\n","import _ from 'underscore';\r\n\r\nconst event = {\r\n BEFORESEND: 'beforeSend', SUCCESS: 'success', COMPLETE: 'complete', ERROR: 'error',\r\n};\r\n\r\n/**\r\n * AjaxInterceptor - Intercepts ajax events (beforeSend, success, error, complete)\r\n */\r\nexport class AjaxEventInterceptor {\r\n /**\r\n * @param {object} options - options from ajax call\r\n * @param {object} requestId - request id\r\n * @param {object} stubOptions - stub options to be used in ajax logging\r\n * @param {object} eventHandler - handler for ajax events\r\n * @param {object} activity - activity to be used by the ajax logging calls\r\n */\r\n constructor(options, requestId, stubOptions, eventHandler, activity) {\r\n this.options = options;\r\n this.requestId = requestId;\r\n this.stubOptions = stubOptions;\r\n this.eventHandler = eventHandler;\r\n this.activity = activity;\r\n }\r\n\r\n triggerEventInterceptors() {\r\n const pageTrackingId = _.result(this.stubOptions, 'pageTrackingId');\r\n const ajaxContext = {\r\n stubOptions: this.stubOptions,\r\n url: this.options.url,\r\n requestId: this.requestId,\r\n pageTrackingId,\r\n requestResult: true,\r\n httpMethod: this.options.type,\r\n error: '',\r\n ajaxStartTime: 0,\r\n ajaxRenderStartTime: 0,\r\n entityCount: this.stubOptions.getPageSize(this.options.data),\r\n activity: this.activity,\r\n };\r\n\r\n if (this.eventHandler.beforeSendHandler) this.interceptBeforeSend(this.options, ajaxContext);\r\n if (this.eventHandler.successHandler) this.interceptSuccess(this.options, ajaxContext);\r\n if (this.eventHandler.errorHandler) this.interceptError(this.options, ajaxContext);\r\n if (this.eventHandler.completeHandler) this.interceptComplete(this.options, ajaxContext);\r\n }\r\n\r\n /* eslint-disable no-param-reassign */\r\n interceptBeforeSend(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.BEFORESEND])) {\r\n ajaxOptions[event.BEFORESEND] = (...args) => {\r\n context.eventHandler.beforeSendHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.BEFORESEND])) {\r\n const originalEventHandler = ajaxOptions[event.BEFORESEND];\r\n ajaxOptions[event.BEFORESEND] = function onBeforeSend(...args) {\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n context.eventHandler.beforeSendHandler(ajaxContext, args);\r\n if (originalRet && _.isFunction(originalRet.onBeforeSendDone)) {\r\n return originalRet.onBeforeSendDone(ajaxContext, args);\r\n }\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptSuccess(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.SUCCESS])) {\r\n ajaxOptions[event.SUCCESS] = (...args) => {\r\n context.eventHandler.successHandler(ajaxContext, args);\r\n if (context.eventHandler.successRenderHandler) {\r\n context.eventHandler.successRenderHandler(ajaxContext, args);\r\n }\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.SUCCESS])) {\r\n const originalEventHandler = ajaxOptions[event.SUCCESS];\r\n ajaxOptions[event.SUCCESS] = function onSuccess(...args) {\r\n context.eventHandler.successHandler(ajaxContext, args);\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n if (context.eventHandler.successRenderHandler) {\r\n context.eventHandler.successRenderHandler(ajaxContext, args);\r\n }\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptError(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.ERROR])) {\r\n ajaxOptions[event.ERROR] = (...args) => {\r\n context.eventHandler.errorHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.ERROR])) {\r\n const originalEventHandler = ajaxOptions[event.ERROR];\r\n ajaxOptions[event.ERROR] = function onError(...args) {\r\n context.eventHandler.errorHandler(ajaxContext, args);\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n interceptComplete(ajaxOptions, ajaxContext) {\r\n const context = this;\r\n\r\n if (_.isUndefined(ajaxOptions[event.COMPLETE])) {\r\n ajaxOptions[event.COMPLETE] = (...args) => {\r\n context.eventHandler.completeHandler(ajaxContext, args);\r\n };\r\n } else if (_.isFunction(ajaxOptions[event.COMPLETE])) {\r\n const originalEventHandler = ajaxOptions[event.COMPLETE];\r\n ajaxOptions[event.COMPLETE] = function onComplete(...args) {\r\n const wrappedFunc = context.constructor.handleException(\r\n originalEventHandler,\r\n context.options.url,\r\n context.requestId,\r\n context.activity\r\n );\r\n const originalRet = wrappedFunc.apply(this, args);\r\n context.eventHandler.completeHandler(ajaxContext, args);\r\n return originalRet;\r\n };\r\n }\r\n }\r\n\r\n static handleException(func, api, requestId, activity, message) {\r\n return function wrappedFunc(...args) {\r\n const context = this;\r\n let error = !_.isUndefined(message) ? `${message}: ` : '';\r\n try {\r\n return func.apply(context, args);\r\n } catch (ex) {\r\n if (!ex.message) {\r\n error += ex.toString();\r\n } else if (!ex.stack) {\r\n error += ex.message;\r\n } else {\r\n error += `${ex.message}\\tStackTrace: ${ex.stack}`;\r\n }\r\n activity.error(error, api, requestId);\r\n\r\n throw ex;\r\n }\r\n };\r\n }\r\n}\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { AjaxEventHandler } from './ajax-event-handler';\r\n\r\nconst defaultStubOptions = {\r\n objectsToStub: [$],\r\n serverErrorCodes: [-1],\r\n detectError(respData, serverErrorCodes) {\r\n const result = {\r\n pass: true,\r\n };\r\n\r\n if (respData &&\r\n respData.Errors &&\r\n respData.Errors[0] &&\r\n respData.Errors[0].Code &&\r\n _.isArray(serverErrorCodes) &&\r\n _.contains(serverErrorCodes, respData.Errors[0].Code)) {\r\n result.pass = false;\r\n result.message = respData.Errors[0].Message;\r\n result.impactUser = true;\r\n }\r\n return result;\r\n },\r\n getEntityCount(respData) {\r\n if (respData && respData.Records) {\r\n return respData.Records.RowCount;\r\n }\r\n return -1;\r\n },\r\n getPageSize(requestData) {\r\n const pageSizeParam = '.PageSize';\r\n if (_.isObject(requestData) && requestData.BiDateRange) {\r\n const keys = _.keys(requestData);\r\n const pageSizeProp = _.find(keys, key => key.length > pageSizeParam.length &&\r\n key.substr(key.length - pageSizeParam.length) === pageSizeParam);\r\n return requestData[pageSizeProp];\r\n }\r\n return -1;\r\n },\r\n};\r\n\r\n// default ajax event handler\r\nconst ajaxEventHandler = new AjaxEventHandler();\r\n\r\nexport const defaultConfig = {\r\n stubOptions: defaultStubOptions,\r\n eventHandler: ajaxEventHandler,\r\n};\r\n\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\nimport { getTimestamp } from '@bingads-webui-universal/primitive-utilities';\r\n\r\n/* eslint-disable max-len */\r\n\r\n/**\r\n * AjaxEventHandler - contains event handlers for ajax events (beforeSend, success, error, complete)\r\n * The consuming application can override the handlers here by extending from this base handler\r\n * and pass in a custom AjaxEventHandler when instantiating the AjaxStub\r\n */\r\nexport class AjaxEventHandler {\r\n constructor(options = {}) {\r\n this.errorMappers = options.errorMappers || [];\r\n this.shouldAddHeaders = options.shouldAddHeaders || _.constant(true);\r\n }\r\n\r\n /**\r\n * Handler for the ajax beforeSend event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the beforeSend ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n beforeSendHandler(ajaxContext, [jqXHR]) {\r\n /* eslint-disable no-param-reassign */\r\n ajaxContext.ajaxStartTime = getTimestamp();\r\n\r\n if (this.shouldAddHeaders(ajaxContext) === true) {\r\n const applicationName = _.result(ajaxContext.stubOptions.ajaxStubOptions, 'applicationName', 'bingadsweb');\r\n\r\n jqXHR.setRequestHeader('x-ms-requestid', ajaxContext.requestId);\r\n // eslint-disable-next-line no-unused-expressions\r\n ajaxContext.pageTrackingId && jqXHR.setRequestHeader('x-ms-pagetrackingid', ajaxContext.pageTrackingId);\r\n jqXHR.setRequestHeader('x-ms-applicationname', applicationName);\r\n jqXHR.setRequestHeader('x-ms-lcid', ajaxContext.stubOptions.lcid);\r\n jqXHR.setRequestHeader('lcid', ajaxContext.stubOptions.lcid);\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n true,\r\n ajaxContext.httpMethod,\r\n 0,\r\n true,\r\n '',\r\n ajaxContext.entityCount\r\n );\r\n }\r\n\r\n /**\r\n * Handler for the ajax success event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the success ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n successHandler(ajaxContext, [data, textStatus, jqXHR]) { // eslint-disable-line no-unused-vars\r\n const ajaxTimeTaken = getTimestamp() - ajaxContext.ajaxStartTime;\r\n const result = ajaxContext.stubOptions.detectError(data);\r\n\r\n if (!result.pass) {\r\n ajaxContext.requestResult = false;\r\n ajaxContext.error = result.message;\r\n\r\n ajaxContext.activity.error(\r\n ajaxContext.error,\r\n ajaxContext.url,\r\n ajaxContext.requestId,\r\n result.impactUser,\r\n ajaxContext.httpMethod\r\n );\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n ajaxTimeTaken,\r\n ajaxContext.requestResult,\r\n this.constructor.getServerPerf(jqXHR),\r\n ajaxContext.entityCount\r\n );\r\n\r\n ajaxContext.entityCount = ajaxContext.stubOptions.getEntityCount(data);\r\n ajaxContext.ajaxRenderStartTime = getTimestamp();\r\n }\r\n\r\n /**\r\n * Handler to execute after the ajax success callback.\r\n * It's only purpose is to measure ajaxRender time.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @returns {undefined} - no returns\r\n */\r\n successRenderHandler(ajaxContext) {\r\n if (ajaxContext.requestResult === true) {\r\n const renderTimeTaken = getTimestamp() - ajaxContext.ajaxRenderStartTime;\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n renderTimeTaken,\r\n ajaxContext.requestResult,\r\n '',\r\n ajaxContext.entityCount,\r\n true\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Handler for the ajax error event.\r\n * This may need to be overriden by the application to handle expected errors.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the error ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n errorHandler(ajaxContext, [jqXHR, textStatus, errorThrown]) {\r\n const ajaxTimeTaken = getTimestamp() - ajaxContext.ajaxStartTime;\r\n\r\n if (jqXHR.status !== 0) {\r\n ajaxContext.requestResult = false;\r\n\r\n ajaxContext.error = `Ajax error [${jqXHR.status}]`;\r\n\r\n if (textStatus && $.trim(textStatus) !== '') {\r\n ajaxContext.error += (`, ${textStatus}`);\r\n // Log jqXHR.responseText when it is not 200 (which means will enter errorHandler)\r\n if (jqXHR.responseText && $.trim(jqXHR.responseText) !== '') {\r\n ajaxContext.error += (`, ${jqXHR.responseText}`);\r\n } else if (jqXHR.responseXML && $.trim(jqXHR.responseXML) !== '') {\r\n ajaxContext.error += (`, ${jqXHR.responseXML}`);\r\n }\r\n }\r\n\r\n if (errorThrown && $.trim(errorThrown) !== '') {\r\n ajaxContext.error += (`, ${errorThrown}`);\r\n }\r\n\r\n switch (jqXHR.status) {\r\n case 400:\r\n case 404:\r\n // If error maps to a user error, log at trace level\r\n if (this.isUserError(ajaxContext, jqXHR, textStatus, errorThrown)) {\r\n ajaxContext.requestResult = true;\r\n }\r\n break;\r\n case 401:\r\n // Log 401 unauthorized error at trace level\r\n ajaxContext.requestResult = true;\r\n break;\r\n default:\r\n ajaxContext.requestResult = false;\r\n }\r\n\r\n if (ajaxContext.requestResult === false) {\r\n ajaxContext.activity.error(ajaxContext.error, ajaxContext.url, ajaxContext.requestId, '', ajaxContext.httpMethod);\r\n } else {\r\n ajaxContext.activity.trace(ajaxContext.error, ajaxContext.url, ajaxContext.requestId, ajaxContext.httpMethod);\r\n }\r\n }\r\n\r\n ajaxContext.activity.ajax(\r\n ajaxContext.requestId,\r\n ajaxContext.url,\r\n false,\r\n ajaxContext.httpMethod,\r\n ajaxTimeTaken,\r\n ajaxContext.requestResult\r\n );\r\n }\r\n\r\n /**\r\n * Handler for the ajax complete event.\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {Array} args - args passed to the beforeSend ajax callback\r\n * @returns {undefined} - no returns\r\n */\r\n completeHandler(ajaxContext, [jqXHR]) { // eslint-disable-line no-unused-vars\r\n // do nothing\r\n }\r\n\r\n /**\r\n * private method to check if ajax error maps to an user error\r\n * @param {object} ajaxContext - data related to the current ajax call\r\n * @param {object} jqXHR - jqXHR passed to the ajax callback\r\n * @param {object} textStatus - textStatus passed to the ajax callback\r\n * @param {object} errorThrown - errorThrown passed to the ajax callback\r\n * @returns {bool} - if error is an user error\r\n */\r\n isUserError(ajaxContext, jqXHR, textStatus, errorThrown) {\r\n return _.any(this.errorMappers, errorMapper => errorMapper.check(\r\n ajaxContext,\r\n jqXHR,\r\n textStatus,\r\n errorThrown\r\n ));\r\n }\r\n\r\n static getServerPerf(jqXHR) {\r\n if (jqXHR && _.isFunction(jqXHR.getResponseHeader)) {\r\n const perfTimings = jqXHR.getResponseHeader('PerfTimings');\r\n if (perfTimings) {\r\n return perfTimings;\r\n }\r\n const odataPerf = {};\r\n _.each(\r\n ['x-ms-mte2eelapsedtimems', 'x-ms-odataapie2eelapsedtimems', 'x-ms-odataapionlye2eelapsedtimems'],\r\n (header) => {\r\n const value = jqXHR.getResponseHeader(header);\r\n if (value) {\r\n odataPerf[header] = value;\r\n }\r\n }\r\n );\r\n\r\n if (jqXHR.responseJSON) {\r\n const key = '@ns.cacheobjectused';\r\n odataPerf[key] = jqXHR.responseJSON[key];\r\n\r\n const keyUnfilteredCount = '@ns.unfiltered.count';\r\n odataPerf[keyUnfilteredCount] = jqXHR.responseJSON[keyUnfilteredCount];\r\n\r\n const keyOdataCount = '@odata.count';\r\n odataPerf[keyOdataCount] = jqXHR.responseJSON[keyOdataCount];\r\n }\r\n\r\n return JSON.stringify(odataPerf);\r\n }\r\n return '';\r\n }\r\n}\r\n","/**\r\n * Pre-defined schema used for Ajax Stub\r\n */\r\nexport const schema = {\r\n scenario: [{\r\n name: 'ajaxStubScenario',\r\n value: 'Ajax Stub Scenario',\r\n setting: {\r\n hidden: true,\r\n },\r\n activity: [\r\n {\r\n name: 'ajaxStubActivity',\r\n value: 'Ajax Stub Activity',\r\n setting: {},\r\n },\r\n ],\r\n }],\r\n};\r\n","import _ from 'underscore';\r\nimport StackTrace from 'stacktrace-js';\r\nimport Promise from 'bluebird';\r\nimport { schema } from './error-stub-schema';\r\n\r\nfunction getStackStringFromStackFrames(stackFrames) {\r\n const stackLines = _.map(stackFrames, frame => [\r\n frame.getFunctionName() || '<anonymous>', ' (',\r\n frame.getFileName(), ':',\r\n frame.getLineNumber(), ':',\r\n frame.getColumnNumber(), ')',\r\n ].join('')).join('\\n');\r\n\r\n return stackLines;\r\n}\r\n\r\n// By default, stacktrace-js loads source maps synchronously. This is not good for performance.\r\nexport function asyncAjaxOverride(url) {\r\n return new Promise((resolve, reject) => {\r\n const req = new XMLHttpRequest();\r\n req.open('get', url, true); // Third parameter true for async call\r\n req.onerror = reject;\r\n req.onreadystatechange = function onreadystatechange() {\r\n if (req.readyState === 4) {\r\n if ((req.status >= 200 && req.status < 300) ||\r\n (url.substr(0, 7) === 'file://' && req.responseText)) {\r\n resolve(req.responseText);\r\n } else {\r\n reject(new Error(`HTTP status: ${req.status} retrieving ${url}`));\r\n }\r\n }\r\n };\r\n req.send();\r\n });\r\n}\r\n\r\n/**\r\n * ErrorStub class - Creates a window.onerror stub that can be used by Instrumentation\r\n */\r\nexport class ErrorStub {\r\n /**\r\n * @param {object} options - contains instrumentation for logging\r\n */\r\n constructor(options = {}) {\r\n // create scenario for logging\r\n this.setupScenario(options.instrumentation);\r\n this.logUnhandledPromiseRejections = options.logUnhandledPromiseRejections || false;\r\n this.skipStackTraceResolutionForPromiseRejections = options.skipStackTraceResolutionForPromiseRejections;\r\n\r\n this.isExpectedUnhandledPromiseError = options.isExpectedUnhandledPromiseError;\r\n this.stackTraceOptions = {\r\n ajax: asyncAjaxOverride, // by default it uses synchroneous ajax\r\n };\r\n }\r\n\r\n init() {\r\n this.intercept();\r\n }\r\n\r\n intercept() {\r\n window.onerror = (errorMsg, url, lineNumber, column, errorObj) => {\r\n const activity = this.errorStubScenario.errorStubActivity.create();\r\n\r\n this.handleError(errorMsg, url, lineNumber, column, errorObj, activity);\r\n\r\n return true;\r\n };\r\n\r\n if (this.logUnhandledPromiseRejections) {\r\n window.addEventListener('unhandledrejection', (promiseRejection) => {\r\n const activity = this.errorStubScenario.errorStubActivity.create();\r\n\r\n this.handlePromiseRejection(promiseRejection, activity);\r\n });\r\n }\r\n }\r\n\r\n handleError(errorMsg, url, lineNumber, column, errorObj, activity) {\r\n let errorMessage = `${errorMsg}\\tScript: ${url} Line: ${lineNumber}`;\r\n if (!_.isUndefined(column)) {\r\n errorMessage += ` Column: ${column}`;\r\n }\r\n return StackTrace.fromError(errorObj, this.stackTraceOptions).then((stackFrames) => {\r\n errorMessage += ` StackTrace: ${getStackStringFromStackFrames(stackFrames)}`;\r\n }).catch((ex) => {\r\n if (_.isObject(errorObj) && _.has(errorObj, 'stack')) {\r\n errorMessage += ` StackTrace: ${errorObj.stack}\\n [StackTrace Error: ${ex}]`;\r\n }\r\n }).finally(() => {\r\n errorMessage += `\\tCurrentURL: ${window.location.href}\\tPreviousURL: ${document.referrer ? document.referrer : 'Unknown'}`;\r\n\r\n const perviousRoute = window.history.state && window.history.state.state ?\r\n window.history.state.state.previousRoute : null;\r\n\r\n if (perviousRoute) {\r\n errorMessage += `\\tPreviousRoute: ${perviousRoute}`;\r\n }\r\n\r\n activity.error(errorMessage, 'onerror');\r\n });\r\n }\r\n\r\n handlePromiseRejection(promiseRejectionEvent, activity) {\r\n let errorMessage = 'Unhandled promise rejection;';\r\n\r\n const logError = (message) => {\r\n if (this.isExpectedUnhandledPromiseError && this.isExpectedUnhandledPromiseError(message)) {\r\n activity.trace(message, 'onunhandledrejection');\r\n } else {\r\n activity.error(message, 'onunhandledrejection');\r\n }\r\n return Promise.resolve();\r\n };\r\n\r\n // Bluebird stores these properties in .detail while native promise stores these properties at top level\r\n const { promise, reason } = promiseRejectionEvent.detail || promiseRejectionEvent;\r\n\r\n // Reason is an Error-like object\r\n if (reason && (reason.message || reason.stack)) {\r\n const { message, stack } = reason;\r\n if (this.skipStackTraceResolutionForPromiseRejections) {\r\n errorMessage += ` Message: ${message}; StackTrace: ${stack}`;\r\n return logError(errorMessage);\r\n }\r\n\r\n return StackTrace.fromError(reason, this.stackTraceOptions).then((stackFrames) => {\r\n errorMessage += ` Message: ${message}; StackTrace: ${getStackStringFromStackFrames(stackFrames)}`;\r\n }).catch((ex) => {\r\n errorMessage += `${message} at ${stack}\\n [StackTrace Error: ${ex}]`;\r\n }).finally(() => {\r\n logError(errorMessage);\r\n });\r\n }\r\n\r\n // Use bluebird's stack trace if available\r\n errorMessage += `Non error object thrown; Reason: ${JSON.stringify(reason)}; StackTrace: ${_.get(promise, '_trace.stack')};`;\r\n logError(errorMessage);\r\n return Promise.resolve();\r\n }\r\n\r\n setupScenario(instr) {\r\n instr.addScenario(schema);\r\n this.errorStubScenario = instr.errorStubScenario.create(instr.ScenarioContext);\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__36__;","/**\r\n * Pre-defined schema used for Error Stub\r\n */\r\nexport const schema = {\r\n scenario: [{\r\n name: 'errorStubScenario',\r\n value: 'Error Stub Scenario',\r\n setting: {\r\n hidden: true,\r\n },\r\n activity: [\r\n {\r\n name: 'errorStubActivity',\r\n value: 'Error Stub Activity',\r\n setting: {},\r\n },\r\n ],\r\n }],\r\n};\r\n","export { AriaListener } from './src/aria-listener';\r\n","import _ from 'underscore';\r\nimport { AWTLogManager, AWT_NEAR_REAL_TIME, AWTSessionState } from '@aria/webjs-sdk';\r\nimport { Listener } from '@bingads-webui/listener';\r\nimport { defaultConfig } from './default-config';\r\n\r\nconst activeListeners = [];\r\nlet flushEventAttached = false;\r\nfunction registerListener(listener) {\r\n activeListeners.push(listener);\r\n\r\n if (!flushEventAttached) {\r\n window.addEventListener('beforeunload', () => {\r\n activeListeners.forEach(l => l.flushLogs(false));\r\n AWTLogManager.flush();\r\n });\r\n\r\n flushEventAttached = true;\r\n }\r\n}\r\n\r\n/**\r\n * Create an instance of an Aria listener\r\n */\r\nexport class AriaListener extends Listener {\r\n constructor(options = {}) {\r\n super(options);\r\n this.options = _.defaults(options, {\r\n flushInterval: defaultConfig.flushInterval,\r\n batchSize: defaultConfig.batchSize,\r\n enableSessionTracking: defaultConfig.enableSessionTracking,\r\n });\r\n this.formatters = _.defaults(this.options.formatters || {}, defaultConfig.formatters);\r\n this.filters = this.options.filters || [];\r\n this.logTableNames = this.options.logTableNames;\r\n this.defaultLogCategory = this.options.defaultLogCategory;\r\n }\r\n\r\n /**\r\n * init aria listener\r\n * @returns {undefined} - no returns\r\n */\r\n init() {\r\n if (!this.options.tenantToken || this.initialized) {\r\n return;\r\n }\r\n\r\n this.logs = [];\r\n\r\n // Setup AriaTelemetry\r\n AWTLogManager.initialize(this.options.tenantToken);\r\n AWTLogManager.setTransmitProfile(AWT_NEAR_REAL_TIME);\r\n\r\n this.defaultLogger = AWTLogManager.getLogger(this.options.tenantToken);\r\n\r\n if (this.options.enableSessionTracking) {\r\n this.defaultLogger.logSession(AWTSessionState.Started);\r\n }\r\n\r\n if (!AWTLogManager.trackedListenerRefs) {\r\n AWTLogManager.trackedListenerRefs = { count: 0 };\r\n }\r\n\r\n setInterval(() => this.flushBatch(), this.options.flushInterval);\r\n registerListener(this);\r\n this.initialized = true;\r\n }\r\n\r\n /**\r\n * register instance for final flush of logs to Aria\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n registerForTeardown() {\r\n if (this.registeredForTeardown || !this.initialized) {\r\n return;\r\n }\r\n\r\n this.registeredForTeardown = true;\r\n AWTLogManager.trackedListenerRefs.count += 1;\r\n }\r\n\r\n /**\r\n * flushes logs to Aria and tears down the logger\r\n * @returns {undefined} - no returns\r\n */\r\n teardown() {\r\n if (!this.initialized) {\r\n return;\r\n }\r\n this.flushAll(false);\r\n this.initialized = false;\r\n\r\n if (this.options.enableSessionTracking) {\r\n this.defaultLogger.logSession(AWTSessionState.Ended);\r\n }\r\n\r\n if (this.registeredForTeardown) {\r\n AWTLogManager.trackedListenerRefs.count -= 1;\r\n }\r\n\r\n this.release();\r\n }\r\n\r\n /**\r\n * flushes logs to aria telemetry logger\r\n * @param {bool} batchLogs - specify if the logs should be flushed in batches\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n flushLogs(batchLogs) {\r\n const useBatching = batchLogs && (this.logs.length > this.options.batchSize);\r\n const batchSize = useBatching ? this.options.batchSize : this.logs.length;\r\n const logsToFlush = this.logs.splice(0, batchSize);\r\n _.each(logsToFlush, (log) => {\r\n this.defaultLogger.logEvent(log);\r\n });\r\n }\r\n\r\n /**\r\n * If there are no active listeners then tear down the underlying logger.\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n release() {\r\n if (AWTLogManager.trackedListenerRefs.count === 0) {\r\n AWTLogManager.flushAndTeardown();\r\n }\r\n }\r\n\r\n /**\r\n * writes logs to the listener\r\n * @param {object} logMessage - logs to be written\r\n * @returns {undefined} - no returns\r\n */\r\n write(logMessage) {\r\n if (!this.initialized || this.filterLogs(logMessage)) {\r\n return;\r\n }\r\n\r\n const categoryName = this.getCategoryName(logMessage.logCategory);\r\n const formattedMsg = this.formatLogs(logMessage);\r\n\r\n this.logs.push({\r\n name: this.logTableNames[categoryName].name,\r\n properties: formattedMsg,\r\n });\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n flushAll() {\r\n this.flushLogs(false);\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n flushBatch() {\r\n this.flushLogs(true);\r\n }\r\n\r\n /**\r\n * @private\r\n * @param {object} logCategory - logs to be written\r\n * @returns {undefined} - no returns\r\n */\r\n getCategoryName(logCategory) {\r\n const isValidLogCategory = _.has(this.logTableNames, logCategory);\r\n return isValidLogCategory ? logCategory : this.defaultLogCategory;\r\n }\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__4__;","import { AriaPropertyFormatter } from './formatters/log-property-formatter';\r\n\r\nconst propertyFormatter = new AriaPropertyFormatter();\r\n\r\nexport const defaultConfig = {\r\n formatters: { propertyFormatter },\r\n enableSessionTracking: true,\r\n flushInterval: 5000,\r\n batchSize: 50,\r\n};\r\n","import _ from 'underscore';\r\nimport { Formatter } from '@bingads-webui/listener';\r\n\r\nexport class AriaPropertyFormatter extends Formatter {\r\n format(logMessage) {\r\n return _.mapObject(logMessage, val => ({\r\n value: val,\r\n }));\r\n }\r\n}\r\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","export { LocalStorageListener } from './src/local-storage-listener';\r\n","import { Listener } from '@bingads-webui/listener';\r\n\r\nlet logCount = 0;\r\n/**\r\n * Local storage listener class. This logs to Local Storage using\r\n * the Storage API.\r\n */\r\n\r\nexport class LocalStorageListener extends Listener {\r\n constructor(options = {}) {\r\n super(options);\r\n\r\n this.formatters = options.formatters || [];\r\n this.filters = options.filters || [];\r\n this.uniquePageId = options.uniquePageId;\r\n this.storage = window.localStorage;\r\n }\r\n\r\n init() {\r\n if (this.storage && this.uniquePageId) {\r\n this.initialized = true;\r\n }\r\n }\r\n\r\n write(logMessage) {\r\n if (!this.initialized || this.filterLogs(logMessage)) {\r\n return;\r\n }\r\n\r\n const formattedMsg = this.formatLogs(logMessage);\r\n\r\n const key = this.generateKey();\r\n\r\n try {\r\n this.storage.setItem(key, JSON.stringify(formattedMsg));\r\n logCount += 1;\r\n } catch (e) {\r\n this.logError(e);\r\n }\r\n }\r\n\r\n /**\r\n * Generate key to use when putting log in local storage.\r\n * It uses the string unique page Id and total count of logs\r\n * written already to determine the key\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n generateKey() {\r\n return `localStorageListener.${this.uniquePageId}.${logCount}`;\r\n }\r\n\r\n logError(e) {\r\n console.error(e); // eslint-disable-line no-console\r\n }\r\n}\r\n","export { PerformanceTimingLogger } from './src/index';\r\n","import $ from 'jquery';\r\nimport _ from 'underscore';\r\n\r\n/**\r\n * Create an instance of Performance Timing Logger\r\n */\r\nexport class PerformanceTimingLogger {\r\n constructor(options = {}) {\r\n this.instrumentation = options.instrumentation;\r\n this.updateInterval = options.updateInterval || 2500;\r\n }\r\n\r\n /**\r\n * init performance timing logging\r\n * @returns {undefined} - no returns\r\n */\r\n init() {\r\n if (!_.isFunction(window.performance.getEntriesByType)) {\r\n return;\r\n }\r\n\r\n this.isPageLoaded = false;\r\n this.pageNavLogged = false;\r\n\r\n if (document.readyState === 'complete') {\r\n this.logOnLoad();\r\n } else {\r\n $(window).on('load', () => this.logOnLoad());\r\n }\r\n\r\n this.timer = setInterval(() => this.logOnTimer(), this.updateInterval);\r\n\r\n this.instrumentation.beforeStop = () => {\r\n this.logOnUnload();\r\n };\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n logOnLoad() {\r\n this.writeResourceTimingLogs();\r\n this.tryRecordInactiveTime();\r\n this.tryLogPageNavigation();\r\n this.isPageLoaded = true;\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n logOnTimer() {\r\n this.writeResourceTimingLogs();\r\n this.tryLogPageNavigation();\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n logOnUnload() {\r\n this.writeResourceTimingLogs();\r\n }\r\n\r\n /**\r\n * writes resource timing logs\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n writeResourceTimingLogs() {\r\n const logs = window.performance.getEntriesByType('resource');\r\n\r\n this.clearLogBuffer();\r\n\r\n if (!logs.length) {\r\n return;\r\n }\r\n\r\n _.each(logs, (log) => {\r\n _.extend(log, { pageLoaded: this.isPageLoaded });\r\n this.instrumentation.writeRawLog(log);\r\n });\r\n }\r\n\r\n /**\r\n * If supported, record the amount of time the page was in the background.\r\n * It gets the foreground time from window.performance.activeTime\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n tryRecordInactiveTime() {\r\n if (_.isFunction(window.performance.activeTime)) {\r\n this.inactiveTime = window.performance.now() - window.performance.activeTime();\r\n }\r\n }\r\n\r\n /**\r\n * try log page navigation logs\r\n * @private\r\n * @returns {bool} - if page navigation has been logged\r\n */\r\n tryLogPageNavigation() {\r\n if (!this.pageNavLogged &&\r\n window.performance.timing &&\r\n window.performance.timing.loadEventEnd > 0) {\r\n this.pageNavLogged = this.writePageNavigationLogs();\r\n }\r\n\r\n return this.pageNavLogged;\r\n }\r\n\r\n /**\r\n * writes page navigation logs\r\n * @private\r\n * @returns {bool} - if page navigation has been logged\r\n */\r\n writePageNavigationLogs() {\r\n const extensions = {\r\n isPageNavigationLog: true,\r\n };\r\n\r\n if (window.chrome && _.isFunction(window.chrome.loadTimes)) {\r\n const { firstPaintTime } = (window.chrome.loadTimes() || {});\r\n\r\n if (_.isNumber(firstPaintTime) && firstPaintTime > 0) {\r\n extensions.firstPaintTime = firstPaintTime * 1000;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n const navTimingV2Logs = window.performance.getEntriesByType('navigation');\r\n\r\n if (_.isArray(navTimingV2Logs) && _.size(navTimingV2Logs) > 0) {\r\n const navTimingV2Log = _.first(navTimingV2Logs);\r\n const colsToReplace = _.pick(\r\n navTimingV2Log,\r\n 'unloadEventStart', 'unloadEventEnd', 'redirectCount', 'redirectStart'\r\n , 'redirectEnd'\r\n );\r\n _.extend(extensions, colsToReplace);\r\n } else {\r\n extensions.redirectCount = window.performance.navigation.redirectCount;\r\n }\r\n\r\n if (this.inactiveTime) {\r\n extensions.inactiveTime = this.inactiveTime;\r\n }\r\n\r\n this.instrumentation.writeRawLog(_.extend({}, window.performance.timing, extensions));\r\n return true;\r\n }\r\n\r\n /**\r\n * @private\r\n * @returns {undefined} - no returns\r\n */\r\n clearLogBuffer() {\r\n if (_.isFunction(window.performance.clearResourceTimings)) {\r\n window.performance.clearResourceTimings();\r\n } else if (_.isFunction(window.performance.webkitClearResourceTimings)) {\r\n window.performance.webkitClearResourceTimings();\r\n }\r\n }\r\n}\r\n"],"sourceRoot":""}