{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./scripts/app/UI/UiConstants.ts","webpack:///./scripts/app/Configuration/Configuration.ts","webpack:///./scripts/app/Logging/Telemetry/Contracts.ts","webpack:///./scripts/app/Logging/Telemetry/Aria.ts","webpack:///./scripts/app/Logging/Telemetry/AriaTelemetryLogger.ts","webpack:///./scripts/app/Logging/Logging.ts","webpack:///./scripts/app/Logging/Telemetry/TelemetryLoggerFactory.ts","webpack:///./scripts/app/Logging/Constants.ts","webpack:///./scripts/app/UIStrings/UIStrings.ts","webpack:///./scripts/app/Utils.ts","webpack:///./scripts/app/UI/Utils.ts","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///./scripts/app/Constants.ts","webpack:///./scripts/app/Window/Window.ts","webpack:///src/Utils.ts","webpack:///index.ts","webpack:///src/Api/Api.ts","webpack:///./scripts/app/Configuration/IInitOptions.ts","webpack:///./scripts/app/Configuration/DynamicConfiguration.ts","webpack:///src/Api/IFloodgateStorageProvider.ts","webpack:///src/Constants.ts","webpack:///./scripts/app/FloodgateCore/FloodgateStorageProvider.ts","webpack:///src/GovernedChannel.ts","webpack:///src/Api/ISurvey.ts","webpack:///src/Api/ISurveyComponent.ts","webpack:///src/FloodgateEngine.ts","webpack:///src/Campaign/CampaignDefinitionProvider.ts","webpack:///./scripts/app/Transport/Petrol.ts","webpack:///./scripts/app/Transport/Files/Screenshot.ts","webpack:///./scripts/app/Transport/Files/Manifest.ts","webpack:///./scripts/app/Transport/Transport.ts","webpack:///src/Api/IGovernanceServiceClient.ts","webpack:///./scripts/app/Window/DomUtils.ts","webpack:///src/Surveys/SurveyDataSource.ts","webpack:///../../../src/generated/schema-object.g.ts","webpack:///./scripts/app/Screenshot.ts","webpack:///./scripts/app/CommonUI.ts","webpack:///./scripts/app/Theme.ts","webpack:///./scripts/app/CommonApp.ts","webpack:///src/Surveys/Survey.ts","webpack:///./scripts/app/Version.ts","webpack:///./scripts/app/UI/Renderer.ts","webpack:///src/Governor.ts","webpack:///./scripts/app/TargetedMessaging/TargetedMessagingCache.ts","webpack:///./scripts/app/UI/SpinnerControl.ts","webpack:///../src/index.ts","webpack:///src/ISurveyInfo.ts","webpack:///src/StateProviderHelpers.ts","webpack:///src/SurveyComponents/CommentComponent.ts","webpack:///src/SurveyComponents/PromptComponent.ts","webpack:///src/SurveyComponents/RatingComponent.ts","webpack:///src/SurveyActivityListener.ts","webpack:///src/Campaign/CampaignStateProvider.ts","webpack:///src/SurveyStatCollectionActivation.ts","webpack:///src/SurveyStatCollection.ts","webpack:///src/SurveyComponents/CVSurveyComponent.ts","webpack:///src/GovernedChannelStateProvider.ts","webpack:///src/SurveyStatCollectionEventActivity.ts","webpack:///./node_modules/@1js/html2canvas-trustedtypes/lib/index.js","webpack:///../src/constants.ts","webpack:///./scripts/app/Localization.ts","webpack:///../../src/index.ts","webpack:///./node_modules/es6-promise/auto.js","webpack:///lib/es6-promise/utils.js","webpack:///lib/es6-promise/asap.js","webpack:///lib/es6-promise/then.js","webpack:///lib/es6-promise/promise/resolve.js","webpack:///lib/es6-promise/-internal.js","webpack:///lib/es6-promise/enumerator.js","webpack:///lib/es6-promise/promise.js","webpack:///lib/es6-promise/promise/all.js","webpack:///lib/es6-promise/promise/race.js","webpack:///lib/es6-promise/promise/reject.js","webpack:///lib/es6-promise.js","webpack:///lib/es6-promise/polyfill.js","webpack:///src/Api/IActivityListener.ts","webpack:///src/Api/IFloodgateSettingIdMap.ts","webpack:///src/Campaign/CampaignManager.ts","webpack:///src/Campaign/CampaignSurveyFactory.ts","webpack:///src/SurveyEvents.ts","webpack:///src/ActivityTrackingData.ts","webpack:///src/ActivityTrackingSet.ts","webpack:///src/SurveyMetadata.ts","webpack:///src/Surveys/FpsSurvey.ts","webpack:///src/SurveyComponents/MultipleChoiceComponent.ts","webpack:///src/Surveys/GenericMessagingSurfaceSurvey.ts","webpack:///src/Surveys/InterceptSurvey.ts","webpack:///src/SurveyComponents/InterceptComponent.ts","webpack:///src/Surveys/NlqsSurvey.ts","webpack:///src/Surveys/NpsSurvey.ts","webpack:///src/FloodgateSettings.ts","webpack:///src/ActivityTracker.ts","webpack:///src/IndexedTracker.ts","webpack:///src/ActivityTrackingContract.ts","webpack:///src/GovernanceUtils.ts","webpack:///src/UserFact/UserFactHelper.ts","webpack:///src/UserFact/UserFact.ts","webpack:///./scripts/app/thirdparty/aria-webjs-compact-sdk-1.2.2.js","webpack:///../../src/annotations.ts","webpack:///../../src/tiles.ts","webpack:///../../../src/generated/annotations.g.ts","webpack:///../../../src/generated/events.g.ts","webpack:///../../../src/generated/operations.g.ts","webpack:///../../../src/generated/signals.g.ts","webpack:///../../../src/generated/tiles.g.ts","webpack:///../src/CVSurvey.ts","webpack:///../src/SurveyEmbed.ts","webpack:///./node_modules/whatwg-fetch/fetch.js","webpack:///./scripts/app/TargetedMessaging/TargetedMessagingTransport.ts","webpack:///./scripts/app/TargetedMessaging/TargetedMessagingConstants.ts","webpack:///./scripts/app/Common/UrlUtils.ts","webpack:///./scripts/app/TargetedMessaging/AugLoopHelper.ts","webpack:///./scripts/app/TargetedMessaging/TargetedMessagingClient.ts","webpack:///./scripts/app/TargetedMessaging/AssetsProvider.ts","webpack:///./scripts/app/FloodgateCore/CoachingUXLauncherFactory.ts","webpack:///./scripts/app/TargetedMessaging/LocalUserFactHelper.ts","webpack:///./scripts/app/FloodgateCore/UISurvey/UISurvey.ts","webpack:///./scripts/app/FloodgateCore/RudeSurveyLauncherFactory.ts","webpack:///./scripts/app/FloodgateCore/AdaptiveSurveyLauncherFactory.ts","webpack:///./scripts/app/FloodgateCore/TransporterFactory.ts","webpack:///./scripts/app/FloodgateCore/FloodgateEnvironmentProvider.ts","webpack:///./scripts/app/FloodgateCore/FloodgateStringProvider.ts","webpack:///./scripts/app/TargetedMessaging/TargetedMessagingCampaignDefinitionProvider.ts","webpack:///./scripts/app/TargetedMessaging/UserFactsProvider.ts","webpack:///./scripts/app/DynamicContent/DynamicContentTransport.ts","webpack:///./scripts/app/Personalizer/PersonalizerClient.ts","webpack:///./scripts/app/GovernanceService/GovernanceServiceClient.ts","webpack:///./scripts/app/CommonFloodgate.ts","webpack:///./scripts/app/UI/Toast/Events.ts","webpack:///./scripts/app/UI/ChoiceGroupControl.ts","webpack:///./scripts/app/UI/Toast/Layout.ts","webpack:///./scripts/app/UI/Toast/Toast.ts","webpack:///./scripts/app/UI/Toast/CVToast.ts","webpack:///./scripts/app/FloodgateCore/UISurvey/CustomUISurvey.ts","webpack:///./scripts/app/FloodgateCore/UISurvey/DummyUISurvey.ts","webpack:///./scripts/app/FloodgateCore/FloodgateTelemetryLogger.ts","webpack:///./scripts/app/App_Floodgate.ts","webpack:///./scripts/app/UI/BellyBand/TabFocus.ts","webpack:///./scripts/app/UI/BellyBand/Events.ts","webpack:///./scripts/app/UI/BellyBand/FormTemplates/FormTemplateType.ts","webpack:///./scripts/app/UI/CategoriesDropdown.ts","webpack:///./scripts/app/UI/RatingControl.ts","webpack:///./scripts/app/UI/BellyBand/FormTemplates/BasicFormTemplate.ts","webpack:///./scripts/app/UI/BellyBand/FormTemplates/SingleFormTemplate.ts","webpack:///./scripts/app/UI/BellyBand/Layout.ts","webpack:///./scripts/app/UI/BellyBand/PanelTemplates/ThanksPanelTemplate.ts","webpack:///./scripts/app/UI/BellyBand/FormTemplates/FeedbackPortalIdeaTemplate.ts","webpack:///./scripts/app/UI/BellyBand/BellyBand.ts","webpack:///./scripts/app/WindowProperties.ts","webpack:///./scripts/app/App_InAppFeedback.ts"],"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","Alt","AriaLabel","AriaSelected","AriaOrientation","AriaExpanded","AriaControls","AriaHasPopups","AriaModal","AriaLabelledBy","AriaDescribedBy","Class","DataHtml2CanvasIgnore","Disabled","Fill","For","Preview","Form","Height","HRef","Id","MaxLength","Name","Placeholder","Points","Rel","Role","Source","Stroke","Style","TabIndex","Target","Transform","Type","Value","ViewBox","Width","xlinkHref","X","Y","BlankWindow","Button","Dialog","Tab","TabList","TabPanel","Checkbox","Checked","False","Zero","Polite","Radio","Submit","ScreenshotPreview","Text","TextAreaMaxLength","True","Unchecked","NoReferrer","AriaOrientationValueVertical","CLCID","AriaLiveTemplate","CheckBox","FontTitle","CloseButton","FontSubtitle","FontText","FontSubText","FontSubSubText","Hidden","Link","MarginLeft60px","MarginLeft180px","NarrowLayout","PrivacyStatementLinkDiv","PrivacyStatementLinkDivEudbUx","Rtl","Spinner","SpinnerCircle","SubmitButton","CancelButton","TextInput","Visible","Rating","RatingGraphic","RatingGraphicFilled","ChoiceGroup","ChoiceGroupIcon","OverallAnchor","OverallAnchorActive","OverallImage","OverallText","SingleLayout","ShowRightBorder","SlideLeft","TextAlignLeft","FormContainer","FormWideContainer","ThanksPanelTitle","ThanksPanelMessage","FormQuestionMiddleText","FormMiddleText","FormCategoriesDropdown","FormComment","FormRatingContainer","FormRatingLabel","FormRating","FormEmailContainer","FormEmailInput","FormEmailTextBox","FormEmailCheckBox","FormEmailLabel","FormBottomContainer","FormSubmitButtonContainer","FormScreenshotContainer","FormScreenshotLabel","FormScreenshotCheckbox","FormScreenshotPreview","FormPrivacyConsentText","TFormEmailCheckbox","TFormEmailLabel","EmailCheckBoxLabel","Toast","ToastZoom","ColumnSeparatorDiv","OverallAnchorsContainer","OverallFrownAnchor","OverallFrownDiv","OverallFrownImage","OverallFrownText","OverallSmileAnchor","OverallSmileDiv","OverallSmileImage","OverallSmileText","OverallIdeaAnchor","OverallIdeaDiv","OverallIdeaImage","OverallIdeaText","OverallBugAnchor","OverallBugDiv","OverallBugImage","OverallBugText","QuestionLeftText","LeftFormContainer","LeftPanelContainer","MainContainer","MainContentHolder","MiddleFormContainer","OverlayBackground","PrivacyStatementLink","PrivacyConsentText","FirstTabbable","LastTabbable","EmailCheckBox","SingleFormContainer","SingleFormQuestionMiddleText","SingleFormCategoriesDropdown","SingleFormComment","SingleFormEmailInput","SingleFormRating","SingleFormScreenshotCheckbox","SingleFormScreenshotPreview","SingleFormSubmitButton","SingleFormCancelButton","SingleFormSubmitButtonSpinner","BasicFormContainer","BasicFormQuestionMiddleText","BasicFormCategoriesDropdown","BasicFormComment","BasicFormEmailInput","BasicFormRating","BasicFormScreenshotCheckbox","BasicFormScreenshotPreview","BasicFormSubmitButton","BasicFormCancelButton","BasicFormSubmitButtonSpinner","ThanksPanelContainer","ThanksPanelCloseButton","ThanksPanelDiscussion","ThanksPanelVerticalContainer","ThanksPanelInnerContainer","ThanksPanelParagraph","FeedbackPortalIdeaContainer","OverallFeedbackPortalIdeaAnchor","ToastContainer","ToastCancel","TPromptContainer","TPromptTitle","TPromptText","TFormContainer","TFormTitle","TFormRating","TFormRatingQuestion","TFormCommentQuestion","TFormComment","TFormEmailTextBox","TFormEmailCheckBox","TFormSubmitButton","TFormCancelButton","TFormSubmitButtonSpinner","TFormSubmitButtonContainer","Esc","Anchor","Defs","Div","FieldSet","Img","Input","Label","Legend","Option","Polygon","Select","Span","Svg","TextArea","Use","No","Yes","configuration","feedbackSubmitted","validateCategoryOptions","categories","show","customCategories","customCategory","length","getFeedbackSubmitted","this","setFeedbackSubmitted","getCommonInitOptions","commonInitOptions","getInAppFeedbackInitOptions","inAppFeedbackInitOptions","getInAppFeedbackLaunchOptions","inAppFeedbackLaunchOptions","getFloodgateInitOptions","floodgateInitOptions","getFloodgateSurvey","floodgateSurvey","getSdkSessionId","sdkSessionId","getEventSampling","eventSampling","setCommonInitOptions","passedInitOptions","initOptions","appId","applicationGroup","build","cid","environment","intlFilename","intlUrl","webSurfacesResourceBaseUrl","locale","onError","originalLocale","primaryColour","secondaryColour","sessionId","stylesUrl","telemetryGroup","userEmail","webGroup","petrolTimeout","isCommercialHost","customResourcesSetExternally","emailPolicyValue","screenshotPolicyValue","ageGroup","authenticationType","applicationSettings","webSurfacesSettings","privacyUrl","retentionDurationDays","undefined","expectedValues","Strings","Css","None","processSessionId","extendedManifestData","JSON","stringify","RegExp","test","officeBuild","hexColourRegex","err","Unauthenticated","Undefined","parseEventSamplingOption","commonPolicyAllowAADC","determineAADCPolicy","setInAppFeedbackInitOptions","bugForm","onDismiss","screenshot","showEmailAddress","transitionEnabled","isShowThanks","sendFeedbackPolicyValue","feedbackForumUrl","myFeedbackForumUrl","submitted","setInAppFeedbackLaunchOptions","launchOptions","Configuration","setFloodgateInitOptions","autoDismiss","campaignDefinitions","campaignFlights","campaignQueryParameters","onSurveyActivatedCallback","settingStorageCallback","uIStringGetter","authTokenCallback","surveyEnabled","augLoopCallback","customerVoiceSurveyParams","surveyCSSParams","governanceServiceEnabled","governanceServiceConfig","personalizerEnabled","messagingServiceSettings","isPriorityEnabled","isEudbUxEnabled","campaignId","onSurveyActivated","launcher","survey","surveyParams","launch","str","parseGovernanceServiceConfig","cvFlights","isCVSurveyEnabled","productName","uiHost","setFloodgateSurvey","checkIfSurveysEnabled","isFeedbackSurveyEnabledByAADC","getCVSurveyFlights","getProductName","getUIHost","getUIHostCVSurveyDispatcher","uiHostCVSurveyDispatcher","getCSSPosition","cssPosition","getCSSZIndex","cssZIndex","getCSSBottom","cssBottom","getCSSRight","cssRight","getCSSVarString","styleSubstrings","push","join","AAD","MinorWithParentalConsent","MinorWithoutParentalConsent","getUserConsentGroup","Adult","NotAdult","MinorNoParentalConsentRequired","samplingOptions","eventInitSampling","event","index","type","sampleRate","config","forceServicelessSurveyDisplay","retry","timeout","simpleRequestEnabled","validateFeedbackType","feedbackType","Smile","Frown","Bug","version","Error","getName","getPlatform","App","PLATFORM","getVersion","id","getId","getLocale","getSessionId","sequence","Event","ID_DELIMITER","getSource","SOURCE","getSchemaVersion","SCHEMA_VERSION","getSequence","getSampleRate","audienceGroup","getAudienceGroup","primaryIdentityHash","tenantId","trim","primaryIdentitySpace","generatePrimaryIdentitySpace","getTenantId","getPrimaryIdentityHash","getPrimaryIdentitySpace","startsWith","aria","AWT","logger","env","tenantToken","namespace","app","session","host","release","browser","device","user","initialize","oesApp","oesSession","oesHost","oesRelease","oesBrowser","oesDevice","oesUser","setApp","properties","setSession","setHost","setEvent","setRelease","setBrowser","setDevice","setUser","logEvent","eventName","customProperties","oesEvent","AriaTelemetryLogger","EVENT_NAME_DELIMITER","ariaProperties","CUSTOM_PROPERTIES_FIELD_PREFIX","InApp","UI","Picker","Shown","VALUE","SURVEY_FLOODGATE_CAMPAIGNLOAD_FAILED","SURVEY_FLOODGATE_FILEREAD_FAILED","SURVEY_FLOODGATE_FILEWRITE_FAILED","SURVEY_FLOODGATE_TRIGGERMET","SURVEY_FLOODGATE_USERSELECTED","SURVEY_UI_FORM_SHOWN","SURVEY_UI_FORM_DISPATCHER_IMPLEMENTED","SURVEY_UI_FORM_SUBMIT","SURVEY_UI_FORM_SECONDARY_SUBMIT","SURVEY_UI_FORM_SUBMIT_ERROR","SURVEY_UI_FORM_USERCLOSED","SURVEY_UI_THANKYOUPAGE_USERCLOSED","SURVEY_UI_FORM_NO_RETURN_TYPE","SURVEY_UI_PROMPT_AUTODISMISSED","SURVEY_UI_THANKYOUPAGE_AUTODISMISSED","SURVEY_UI_PROMPT_SHOWN","SURVEY_UI_PROMPT_USERCLOSED","SURVEY_UI_ADDITIONALPROMPT_USERCLOSED","SURVEY_UI_PROMPT_CLICKED","SURVEY_UI_ADDITIONALPROMPT_CLICKED","SURVEY_UI_REDIRECTIONFAILURE","GOVERNANCE_SERVICEFAILURE","GOVERNANCE_SERVICERESULT","DYNAMICTRANSPORT_POST_ERROR","FEEDBACK_SURVEYSDISABLED_AADC","SURVEY_UI_DISABLED_AADC","PERSONALIZER_SERVICEREWARDRESULT","PERSONALIZER_CLIENTFAILURE","APPDATA_JSON_PARSE_ERROR","SURVEY_RENDER_OVERRIDE_ERROR","SURVEY_RENDER_OVERRIDE_SUCCESS","SURVEY_EVENT_KEY_ERROR","Shared","Upload","Failed","Prevented","Screenshot","Render","Success","GetContent","DefaultImage","Returned","WebSurfaces","Common","Info","CampaignMetadataAggregator","Requests","SetCampaignAction","UserFacts","LocalFact","Messaging","AugLoop","Provider","isNOU","Utils","initOptionsCommon","appName","appVersion","logSessionId","samplingOption","TokenManager","getTenantToken","Session","Host","toString","Release","Browser","browserVersion","Device","deviceId","User","loggableUserId","getLogger","telemetryLogger","SAMPLING_RESULT","Math","random","eventId","logSeverity","internalSampleRate","isEventSampled","getEventSamplingRate","isConsoleLogEnabled","console","log","Logger","EVENT_NAME","ErrorMessage","EVENT_ID","isLoggingEnabled","isEventTelemetryEnabled","DEFAULT_SAMPLE_RATE","logLocal","others","getUserSamplingRate","dynamicLogSettings","toLowerCase","settingName","overrideSettings","isEnabled","e","inputLogLevel","inputSampleRate","logLevel","currentLogLevel","getCurrentLogLevel","urlParams","URLSearchParams","window","location","search","consoleLogParam","documentReferrer","document","referrer","indexOf","logLevelParam","parseInt","FloodgateStorageProvider","isStorageAvailable","tempStorageItem","read","LogLevelSettings","settingsObj","parseObject","logSettings","content","consoleLog","tempItem","parse","TENANT_TOKEN_PRODUCTION","TENANT_TOKEN_PRE_PRODUCTION","uIStrings","setUIStrings","data","getUIStrings","guid","overrideValues","isBoolean","isString","isObject","isEnumValue","isNumber","isInteger","isFinite","floor","isGuid","expectObject","expectNumber","expectString","expectBoolean","expectArray","Array","isArray","expectEnum","enumType","createTimeoutPromise","ms","promise","Promise","resolve","reject","setTimeout","clearTimeout","race","checkCssSelectorToBeSet","cssSelector","sheetIndex","styleSheets","currentStyleSheet","rulesIndex","rules","currentRule","selectorText","includes","error","isTenantIdCommercial","lowerTenantId","setElementVisibility","vis","replaceClassesById","deleteElementById","element","getElementById","parentNode","removeChild","addClassById","newClass","className","match","oldClassName","newClassName","oldClass","split","deleteClassById","setAttributeOnHtmlElement","attriName","attriValue","htmlElement","setAttribute","addEventListenerHelper","listener","addEventListener","attachEvent","removeEventListenerHelper","removeEventListener","detachEvent","registerListener","registerListenerToElement","unregisterListener","getInternetExplorerVersion","rv","ua","navigator","userAgent","exec","parseFloat","$1","isRightToLeft","getComputedStyle","documentElement","direction","ScreenshotPreviewByCheckbox","screenshotCheckboxId","screenshotPreviewId","screenshotCheckBox","screenshotCheckBoxSelected","checked","preview","performance","now","body","then","canvas","endTime","TimeMilliseconds","src","toDataURL","catch","extendStatics","b","setPrototypeOf","__proto__","__extends","TypeError","String","__","constructor","__assign","assign","arguments","apply","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","next","rejected","result","done","__generator","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","pop","FeedbackType","customerVoiceLauncherType","customerVoiceSurveyUX","WebSurfacesIntLink","WebSurfacesProdLink","TMSAppID","TULIPSAppID","SDK_VERSION_PREFIX","SDK_UXID_VERSION","w","officeBrowserFeedback","OfficeBrowserFeedback","floodgate","getGlobal","setSetUiStrings","setUiStrings","setSingleFeedback","singleFeedback","setMultiFeedback","multiFeedback","setFeedbackStatus","getFeedbackStatus","setCreateScreenshot","createScreenshot","setIsFeedbackSurveyEnabledByAADC","setFloodgateCustomUXHandler","floodgateCustomUXHandler","customUXHandler","setFloodgateShowSurvey","floodgateShowSurvey","showSurvey","setFloodgateShowFormSurvey","floodgateShowFormSurvey","showFormSurvey","setFloodgateShowCustomSurvey","floodgateShowCustomSurvey","showCustomSurvey","setFloodgateInitialize","floodgateInitialize","setFloodgateStart","floodgateStart","start","setFloodgateStop","floodgateStop","stop","setFloodgateGetEngine","floodgateGetEngine","getEngine","getSettingIdMap","floodgateSettingIdMap","isDate","input","isNaN","getTime","subtractSecondsWithoutOverflow","date","seconds","addSecondsWithoutOverflow","milliseconds","MIN_DATE_MILLISECONDS","Date","interval","units","MAX_DATE_MILLISECONDS","extractLanguageSubtag","language","matches","randomHex4","substring","subTag","extractedSubTag","substr","keys","sort","values","newDate","sourceObject","targetobject","field","pad","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","arrIn","lastNonShuffledElement","pickIndex","temp","serializedValue","defaultValue","parsedObject","definitions","hasLowerPriorityDefinitions","reduce","prev","cur","curPriority","primaryPriority","prevPriority","Api","FloodgateEngine","ISurveyInfo","IActivityListener","IFloodgateSettingIdMap","IFloodgateStorageProvider","ISurvey","ISurveyComponent","CampaignDefinition","CustomResources","AgeGroup","AuthenticationType","dynamicSettingsTmsgCache","getDynamicSetting","getItemContent","settingValue","returnValue","message","FileType","CampaignState","Deserialize","FileBasedCampaignStateProvider","Load","HostBasedCampaignStateProvider","GetStatesFromHost","Floodgate","Initialize","Start","Warning","SurveysDisabled","UserFactsLoad","UserFactsSpecDeserialization","UserFactsSpecIsAMatch","Mismatch","Summary","RenderSurvey","Unsupported","Make","StartAsync","Stopped","OnSurveyActivated","ActivationStatsSuppressedSurvey","ClosedChannelType","SurveyNotDefined","SessionSuppressedSurvey","ActivationExpiredSurvey","ActivationIrrelevantSurvey","CheckGovernanceServiceAndActivateSurvey","GovernanceServiceForceToDisplay","GovernanceServiceClientCompleted","GovernedChannelState","FileBasedGovernedChannelStateProvider","HostBasedGovernedChannelStateProvider","SurveyStatCollectionActivation","FromJson","ToJson","HostBasedSurveyActivationStatsProvider","GetSurveyStatsFromHost","SurveyStatCollectionEventActivity","SurveyActivity","LogActivity","EventsReprocessed","SurveysReprocessed","SetActivityTrackingContracts","DuplicateSurveyID","TelemetryEvent","fileTypeToKeyMap","CampaignDefinitions","CampaignStates","FloodgateSettings","GovernedChannelStates","SurveyActivationStats","SurveyEventActivityStats","TmsCache_CampaignContent","TmsCache_MessageMetadata","TmsCache_UserGovernance","Tms_DynamicSettings","DebugOverrides","x","localStorage","setItem","removeItem","DOMException","code","safeReadObject","fileType","storageKey","getItem","fileLock","fileUnlock","FileName","write","GovernedChannelType","getDefault","Standard","cooldownSeconds","cooldownStartTime","setCooldownStartTime","cooldownEndTime","getDistantPast","isOpen","isOpenAtDate","getType","getCooldownSeconds","getCooldownStartTime","getCooldownEndTime","GovernedChannel","DOM_FEEDBACKSURVEY_TAGNAME","DOM_NPS_TAGNAME","DOM_PSAT_TAGNAME","DOM_BPS_TAGNAME","DOM_FPS_TAGNAME","DOM_NLQS_TAGNAME","DOM_INTERCEPT_TAGNAME","LAUNCHER_TYPE_DEFAULT","DOM_PROMPT_TAGNAME","DOM_COMMENT_TAGNAME","DOM_RATING_TAGNAME","DOM_CVSURVEY_TAGNAME","DOM_MULTIPLECHOICE_TAGNAME","JSON_INTERCEPT_KEYNAME","JSON_INTERCEPTURL_KEYNAME","JSON_PROMPT_KEYNAME","JSON_PROMPTYESTEXT_KEYNAME","JSON_PROMPTNOTEXT_KEYNAME","JSON_COMMENT_KEYNAME","JSON_RATING_KEYNAME","JSON_CVSURVEY_KEYNAME","JSON_CVSURVEYFORMID_KEYNAME","JSON_CVSURVEYTHEME_KEYNAME","JSON_RATINGOPTIONS_KEYNAME","JSON_CVSURVEYPRODUCTNAME_KEYNAME","JSON_CVSURVEYUIHOST_KEYNAME","JSON_CVSURVEYPLATFORM_KEYNAME","JSON_TITLE_KEYNAME","JSON_QUESTION_KEYNAME","JSON_MULTIPLECHOICE_KEYNAME","JSON_APPLICATION_KEYNAME","JSON_EXTENDEDMANIFESTDATA_KEYNAME","JSON_SURVEYSTRINGS_KEYNAME","JSON_SURVEYSPECIFICDATA_KEYNAME","log_TriggerMet","surveyId","surveyType","surveyActivityInfo","additionalSurveyInfo","log_UserSelected","log_CampaignLoad_Failed","errorMessage","log_Error","log_Event","log_LocalError","defaultSurveyActivityListener","run","shouldAcceptActivity","activityName","globalSessionSurveyActivationCounts","surveyClient","activityListener","launcherFactory","storage","governor","surveyActivationStatsProvider","transporterFactory","governanceServiceClient","initializationStatus","candidateSurveys","launchedSurveys","launchedLaunchers","surveyEventSent","staleTriggeredSurveysQueue","loggedFirstStart","setPendingSurveys","clearSurveys","thisObj","setCallback","contextInfo","setTelemetryLogger","getTelemetryLogger","getTransportFactory","make","buildVersion","fileBasedStorageProvider","hostBasedStorageProvider","stringProvider","environmentProvider","campaignDefinitionProviders","userFactsProvider","governedChannelStateProvider","GovernedChannelStateProviderFactory","SurveyActivationStatsProviderFactory","campaignStateProvider","CampaignStateProviderFactory","FileSystemCampaignDefinitionProvider","CampaignManager","SurveyActivityListener","Governor","ErrorDetails","stack","getSurveyClient","mergeAndSave","saveSettings","saveSurveyActivationHistory","saveSurveyEventActivityHistory","saveCurrentState","saveChannelStates","setInitializationStatus","loadSettingsAndPriorEventCounts","channelTypes","getAvailableChannelTypes","refreshSurveyDefinitions","setPendingSurveysAndStartFloodgate","startAsync","refreshSurveyDefinitionsAsync","updateActivityListenerWithCurrentSurveyDefinitions","getActivityListener","status","writeString","toJson","floodgateSettings","previousSurveyActivationStats","load","previousSurveyEventActivityStats","fromJson","readString","stats","getStats","channels","getAvailableChannelData","forEach","channel","getAppSurveys","logActivity","FloodgateStartActivityName","updateSurveyActivationStats","surveyInfo","getSurveyInfo","ExpirationTimeUtc","getExpirationTimeUtc","ActivationTimeUtc","SurveyLaunchCount","addStats","statCollection","previousStats","updateCollection","accumulate","save","isActiveForDate","allActivities","getActivationEvent","getTrackingSet","getList","getIsAggregate","getActivity","Counts","moveSessionCountIntoBaseCount","activity","saveSessionTrackingActivity","pendingSurveys","AcceptsSurvey","getCurrentSurveyDefinitions","surveyList","allCampaignDefinitionIDs","getAllCampaignDefinitionIDs","allCandidateCampaignDefinitionIDs","getAllCandidateCampaignDefinitionIDs","allCampaignDefinitions","getCampaignDefinitions","isSurveyAllowed","isBusinessCriticalSurvey","surveyActivationStats","getBySurveyId","isMultiLaunchSurvey","hasSurveyReachedMaxLaunches","hasSurveyReachedMaxLaunchesPerSession","getBackEndId","getAdditionalSurveyInfoForTelemetry","percentageNumerator","percentageDenominator","nominationPeriodNumber","cooldownPeriodNumber","correspondingCampaignDefinition","getCampaignId","nominationScheme","nominationPeriod","asTimeIntervalSeconds","cooldownPeriod","channelType","getGovernedChannelType","contextCount","surveyLauncherType","getLauncherType","businessLevel","getBusinessLevel","maxLaunches","getMaxLaunches","maxLaunchesPerSession","getMaxLaunchesPerSession","candidateSurvey","definitionsKey","definition","trackingContractList","trackingContract","ActivityTrackingContract","setCriticalPendingSurveysAndUpdateActivityListener","activeSurveys","isCriticalSurvey","tempSurvey","governedChannelType","checkGovernanceServiceAndActivateSurvey","activateSurvey","launchSurvey","refreshChannelData","isChannelOpen","CampaignId","SurveyId","triggeredSurvey","activityTrackingString","getActivityTrackingInfo","governanceServiceClientState","getClientState","startChannelCooldown","isSurveyComplete","launchLauncher","campaignDefinition","campaignCooldown","channelCooldown","GetChannelCoolDown","checkGovernancePermitAsync","serviceResult","Message","createGorvernanceResponseTelemetry","shouldForceDisplay","permission","lastSurveyTriggerInfo","lastTriggerSurvey","lastTriggerSurveyTime","clearSurveyWithChannel","shift","makeSurveyLauncher","UpdateActivityTrackingContracts","FloodgateEngineStatus","GovernanceServiceResult","StaleTriggeredSurveysQueueCount","DefaultFloodgateTelemetryLogger","getDistantFuture","isUtcDatetimeString","stringToDate","deserialize","CampaignLanguageRangeLanguageSubtag","validate","CampaignLanguageRange","languageSubTag","isInRange","extractedLanguageSubTag","toLocaleUpperCase","isValidLanguageSubTag","CampaignScopeAny","CampaignScopeEnvironmentCrossProduct","CampaignScopeUserFactAny","CampaignScopeUserFactAll","CampaignScope","isInScope","languageRanges","Languages","readRange","setEnvironmentProvider","getLanguage","userFacts","deserializeUserFacts","setUserFactsProvider","some","userFact","rawUserFact","getUserFact","isAMatch","validateUserFacts","mismatchedFacts","filter","mismatchedNames","map","Count","CampaignDurationTimeInterval","CampaignDurationSingleBuildChange","CampaignDuration","intervalSeconds","IntervalSeconds","additionalDataRequested","CampaignAdditionalDataRequested","additionalData","CampaignDistributionRamp","CampaignDistribution","maxDelaySeconds","MaxDelaySeconds","chunks","Chunks","CampaignNominationSchemeRatioPercentage","getActiveSurveyTimeIntervalSeconds","nominationTimIntervalSeconds","fallbackSurveyDurationSeconds","calculateSurveyStartTimeFromDate","soonestStartTime","calculateSurveyExpirationTimeFromSurveyStartTime","surveyStartTime","getCampaignCooldown","didUserActivateSurvey","CampaignNominationScheme","DistributionModel","distributionModel","CooldownPeriod","NominationPeriod","FallbackSurveyDurationSeconds","PercentageDenominator","PercentageNumerator","evaluateNominationRules","rand","CampaignSurveyEventCountedActivity","CampaignSurveyEventCountedActivitySequence","CampaignSurveyEvent","Activity","count","isAggregate","IsAggregate","Sequence","readActivity","optionalComponents","CampaignSurveyContent","prompt","CampaignSurveyContentPrompt","Prompt","rating","CampaignSurveyContentRating","comment","CampaignSurveyContentComment","Question","multipleChoice","CampaignSurveyContentMultipleChoice","MultipleChoice","intercept","CampaignSurveyContentIntercept","Intercept","cvSurvey","CampaignSurveyContentCVSurvey","CVSurveyParams","question","availableOptions","AvailableOptions","minNumberOfSelectedOptions","MinNumberOfSelectedOptions","maxNumberOfSelectedOptions","MaxNumberOfSelectedOptions","customerVoiceFormId","CustomerVoiceFormId","title","Title","yesLabel","YesLabel","noLabel","NoLabel","url","Url","isZeroBased","IsZeroBased","ratingValuesAscending","RatingValuesAscending","CampaignSurveyMetadata","contentMetadata","ContentMetadata","CampaignSurveyTemplateNps5PointStatic","CampaignSurveyTemplateNps11PointStatic","CampaignSurveyTemplateFps","CampaignSurveyTemplateNlqs","CampaignSurveyTemplateNps","CampaignSurveyTemplateGenericMessagingSurface","CampaignSurveyTemplateIntercept","activationEvent","CampaignSurveyTemplate","ActivationEvent","Content","metadata","Metadata","MaxLaunches","MaxLaunchesPerSession","preferredLaunchType","PreferredLaunchType","startTime","StartTimeUtc","EndTimeUtc","launcherType","LauncherType","PrimaryPriority","tags","Tags","AdditionalDataRequested","SurveyTemplate","surveyTemplate","NominationScheme","Scope","scope","BusinessLevel","FilterValidCampaignDefinitions","badIndexes","newDefinition","readDefinitions","definitionString","loadAsync","send","isProduction","manifest","diagnostics","method","requestBody","maxRetries","onLoad","makeRequest","httpTimeout","formData","FormData","append","xhr","responseText","retries","XMLHttpRequest","open","onload","ontimeout","onerror","statusText","getContent","imgString","Logging","blobBin","atob","array","charCodeAt","Blob","Uint8Array","manifestType","submitTime","clientFeedbackId","manifestData","application","source","telemetry","sanitizeType","web","sdkVersion","Window","Version","getExtendedManifestData","setComment","setEmail","email","setCategory","category","featureArea","setAppData","appData","setExtendedManifestData","setClientFeedbackId","getClientFeedbackId","setComplianceInformation","sendSurveyPolicyValue","complianceChecks","policyAllowFeedback","policyAllowSurvey","policyAllowScreenshot","policyAllowContact","setValues","appendUxId","UxId","toISOString","ocpsEnumToString","ocpsBooleanToString","setScreenshot","getManifest","setManifestValues","submit","Data","manifestContent","screenshotContent","ClientFeedbackId","policyValue","GovernanceServiceSurveyType","GovernanceServiceClientState","loadStylesheet","link","createElement","rel","href","entry","getElementsByTagName","insertBefore","loadScript","pageOrigin","origin","script","async","readyState","onreadystatechange","crossOrigin","expirationTimeUtc","backEndIdentifier","getRawStartTimeUtc","startTimeUtc","getStartTimeUtc","parsed","getRawExpirationTimeUtc","getPreferredLaunchType","isAdditionalDataRequested","additionalDataToCheck","getMetadata","getDomElements","doc","typeElement","DOM_TYPE_TAGNAME","appendChild","createTextNode","DOM_TYPE_VALUE","idElement","DOM_ID_TAGNAME","getJsonElements","surveyObject","JSON_ID_KEYNAME","JSON_SURVEY_KEYNAME","SurveyDataSource","SurveyDataSourceData","obj","SchemaObject","getTypeName","getBaseTypes","getTypeNameFor","H_","T_","getBaseTypesFor","B_","getAllTypesFor","typeName","matchesTypesFor","types","objType","baseTypes","ctr","target","html2canvas","domElement","options","background","initialized","selector","sheet","textContent","UIStrings","transporter","makeTransporter","getPreGeneratedClientFeedbackId","Survey","elementFromJson","schema","svg","brs","tag","createElementNS","attributes","attribute","setAttributeNS","classes","concatClasses","innerText","innerHTML","children","child","DEFAULT_TEACHING_MESSAGE_COOLDOWN","channelStateProvider","loadChannels","channelData","defaultChannelData","SetDefaultChannelCoolDown","channelStates","channelState","item","loadChannelStatesFromProvider","Number","defaultData","newChannel","minute","hour","day","DefaultChannelData","Urgent","Banner","TeachingMessage","items","useLocalStorage","cachedItems","setContentItem","contentType","expiryTime","cacheItem","createItem","has","isItemExpired","expiryDate","lastRetrievedDate","updateItemInLocalStorage","floodgateStorage","initCachedItemsFromLocalStorage","contentKey","mapContentTypeToFloodgateProviderKey","tempCacheItem","parseObjectFromCache","circleObjects","spinnerId","spinner","createCirclesAndArrange","initializeOpacities","destroy","setInterval","fade","clearInterval","circleObject","angle","PI","circle","createCircle","round","parentSize","cos","clientWidth","sin","clientHeight","style","left","top","j","opacity","setOpacity","getPropertyValue","classList","add","width","height","itemCount","find","remove","ItemCollection","itemValue","beginPos","SETTING_DATA_OPEN_TAG","endPos","SETTING_DATA_CLOSE_TAG","previousStates","currentStates","stateCollections","mergedStates","toBeUpdatedStates","previousState","currentState","pos","splice","current","LastCooldownEndTimeUtc","getCooldownStartDate","LastNominationTimeUtc","currentStats","statsCollections","mergedStats","toBeUpdatedStats","previousStatsDictionary","currentStatsDictionary","currentActivationStats","toBeUpdatedStatsDictionary","toBeUpdated","userComment","CommentComponent","getQuestion","setSubmittedText","getSubmittedText","getComponentJson","CommentComponentData","yesButtonLabel","noButtonLabel","selectedButton","PromptComponent","getTitle","getYesButtonText","getNoButtonText","setButtonSelected","selected","getButtonSelected","promptButtonToString","PromptComponentData","selectedIndex","RatingComponent","getRatingValuesAscending","getSelectedRating","isRatingIndexValid","setSelectedRatingIndex","getSelectedRatingIndex","getNormalizedRatingScore","toFixed","RatingComponentData","queuedActivities","pendingActivityCount","previousTrackedActivityMap","callback","loggerCallback","activityContext","trackedActivityMap","resetSessionActivity","increment","context","logActivity_private","logActivityStartTime","logActivityStopTime","stopTime","activityTrackingContracts","baseline","duplicateCounter","newMap","trackedSurveyIds","activityTrackingContract","trackingSet","baselineStats","baselineCounts","currentIndexedTrackers","currentBaselineIndex","currentIndex","trackingData","tracker","newTracker","ActivityTracker","initCounts","generateActivityIndexList","activityIndex","indexedTracker","IndexedTracker","copyObject","getOwnPropertyNames","getCount","getIndexedTracker","getSessionCount","getSurveyIds","indexedTrackers","resetQueuedActivities","logType","timestamp","MaxPendingActivitiesQueueSize","activityNames","slice","queuedActivity","ActivityNames","Dropped","logActivity_core","indices","fyShuffle","trackerSurveyId","incrementActivity","executeCallback","lastNominationTime","lastNominationBuildNumber","deleteAfterSecondsWhenStale","ForceCandidacy","isCandidate","didCandidateTriggerSurvey","lastSurveyActivatedTime","lastSurveyId","lastSurveyStartTime","lastSurveyExpirationTime","lastCooldownEndTimeUtc","LastNominationBuildNumber","DeleteAfterSecondsWhenStale","IsCandidate","DidCandidateTriggerSurvey","LastSurveyActivatedTimeUtc","LastSurveyId","LastSurveyStartTimeUtc","LastSurveyExpirationTimeUtc","markCurrentSurveyTakenOnDate","fileBasedStorage","hostBasedStorage","fileBasedStateProvider","statesFromFile","statesFromHost","getStatesFromHost","StateProviderHelpers","MergeAndUpdateCampaignStates","campaignStates","StateCollections","state","stateValue","makeSettingItemValue","upsertSettingItem","states","settings","readSettingList","dataString","extractSettingItemValueSubString","itemObject","newState","fileData","FileData","json","readStats","other","rawStats","Surveys","newStat","SurveyStatCollection","FileBasedSurveyActivationStatsProvider","surveyStatsFromHost","getSurveyStatsFromHost","surveyStatsFromFile","MergeAndUpdateSurveyActivationStats","statsFromHost","statsCollection","itemData","newStats","deleteSettingItem","surveyStatCollectionActivation","SurveyLaunchCountPerSession","CVSurveyComponent","getFormId","CVSurveyComponentData","ChannelType","CooldownStartTimeUtc","MergeAndUpdateGovernedChannelStates","ChannelStates","ourStats","resizedCounts","val","throw","return","__spreadArray","to","from","pack","ar","concat","Bounds","h","fromClientRect","clientRect","windowBounds","fromDOMRectList","domRectList","domRect","rect","EMPTY","parseBounds","node","getBoundingClientRect","toCodePoints$1","codePoints","extra","fromCodePoint$1","_i","fromCodePoint","codeUnits","codePoint","fromCharCode","chars$2","lookup$2","i$2","chars$1$1","lookup$1$1","i$1$1","slice16$1","view","end","Uint16Array","Trie$1","Trie","initialValue","errorValue","highStart","highValueIndex","ix","UTRIE2_DATA_BLOCK_LENGTH$1","UTRIE2_INDEX_1_OFFSET$1","UTRIE2_INDEX_2_BLOCK_LENGTH$1","chars$3","lookup$3","i$3","SP","BA","HY","CL","CP","EX","IN","NS","OP","IS","NU","PO","PR","SY","AL","EB","EM","H2","H3","ID","JL","JV","JT","SA","ea_OP","UnicodeTrie$1","base64","_byteLength","buffer","encoded1","encoded2","encoded3","encoded4","bufferLength","len","ArrayBuffer","bytes","decode$1","view32","polyUint32Array$1","Uint32Array","view16","polyUint16Array$1","headerLength","ceil","createTrieFromBase64$1","ALPHABETICS","HARD_LINE_BREAKS","SPACE$1","PREFIX_POSTFIX","LINE_BREAKS","KOREAN_SYLLABLE_BLOCK","HYPHEN","isAdjacentWithSpaceIgnored","a","classTypes","previousNonSpaceClassType","_lineBreakAtIndex","indicies","forbiddenBreaks","beforeIndex","afterIndex","before","prevIndex","cssFormattedClasses","lineBreak","wordBreak","_a","classType","codePointsToCharacterClasses","isLetterNumber","letterNumber","Break","required","isDigit","isHex","isWhiteSpace","isNameStartCodePoint","isLowerCaseLetter","isUpperCaseLetter","isLetter","isNonASCIICodePoint","isNameCodePoint","isNonPrintableCodePoint","isValidEscape","c1","c2","isIdentifierStart","c3","isNumberStart","stringToNumber","sign","integers","int","fraction","fracd","frac","expsign","exponent","exp","pow","LEFT_PARENTHESIS_TOKEN","RIGHT_PARENTHESIS_TOKEN","COMMA_TOKEN","SUFFIX_MATCH_TOKEN","PREFIX_MATCH_TOKEN","COLUMN_TOKEN","DASH_MATCH_TOKEN","INCLUDE_MATCH_TOKEN","LEFT_CURLY_BRACKET_TOKEN","RIGHT_CURLY_BRACKET_TOKEN","SUBSTRING_MATCH_TOKEN","BAD_URL_TOKEN","BAD_STRING_TOKEN","CDO_TOKEN","CDC_TOKEN","COLON_TOKEN","SEMICOLON_TOKEN","LEFT_SQUARE_BRACKET_TOKEN","RIGHT_SQUARE_BRACKET_TOKEN","WHITESPACE_TOKEN","EOF_TOKEN","Tokenizer","_value","chunk","tokens","token","consumeToken","consumeCodePoint","consumeStringToken","peekCodePoint","flags","consumeName","reconsumeCodePoint","consumeNumericToken","e1","e2","e3","consumeIdentLikeToken","a1","a2","a3","u1","u2","consumeUnicodeRangeToken","consumeWhiteSpace","unshift","delta","digits","questionMarks","digit","endDigits","consumeUrlToken","stringToken","consumeBadUrlRemnants","consumeEscapedCodePoint","consumeStringSlice","amount","min","endingCodePoint","consumeNumber","repr","number","unit","hex","hexCodePoint","isSurrogateCodePoint","Parser","_tokens","tokenizer","parseValue","parseComponentValue","parseValues","parseComponentValues","SyntaxError","reconsumeToken","consumeComponentValue","consumeSimpleBlock","consumeFunction","block","isEndingTokenFor","functionToken","cssFunction","isDimensionToken","isNumberToken","isIdentToken","isStringToken","isIdentWithValue","nonWhiteSpace","nonFunctionArgSeparator","parseFunctionArgs","args","arg","isLength","isLengthPercentage","parseLengthPercentageTuple","ZERO_LENGTH","FIFTY_PERCENT","HUNDRED_PERCENT","getAbsoluteValueForTuple","tuple","getAbsoluteValue","parent","_context","isAngle","parseNamedSide","ident","deg","color$1","colorFunction","SUPPORTED_COLOR_FUNCTIONS","namedColor","COLORS","toUpperCase","TRANSPARENT","isTransparent","color","asString","alpha","blue","green","red","getTokenColorValue","max","rgb","_b","hue2rgb","t1","t2","hue","BACKGROUND_SIZE","hsl","saturation","lightness","hsla","rgba","parseColor","ALICEBLUE","ANTIQUEWHITE","AQUA","AQUAMARINE","AZURE","BEIGE","BISQUE","BLACK","BLANCHEDALMOND","BLUE","BLUEVIOLET","BROWN","BURLYWOOD","CADETBLUE","CHARTREUSE","CHOCOLATE","CORAL","CORNFLOWERBLUE","CORNSILK","CRIMSON","CYAN","DARKBLUE","DARKCYAN","DARKGOLDENROD","DARKGRAY","DARKGREEN","DARKGREY","DARKKHAKI","DARKMAGENTA","DARKOLIVEGREEN","DARKORANGE","DARKORCHID","DARKRED","DARKSALMON","DARKSEAGREEN","DARKSLATEBLUE","DARKSLATEGRAY","DARKSLATEGREY","DARKTURQUOISE","DARKVIOLET","DEEPPINK","DEEPSKYBLUE","DIMGRAY","DIMGREY","DODGERBLUE","FIREBRICK","FLORALWHITE","FORESTGREEN","FUCHSIA","GAINSBORO","GHOSTWHITE","GOLD","GOLDENROD","GRAY","GREEN","GREENYELLOW","GREY","HONEYDEW","HOTPINK","INDIANRED","INDIGO","IVORY","KHAKI","LAVENDER","LAVENDERBLUSH","LAWNGREEN","LEMONCHIFFON","LIGHTBLUE","LIGHTCORAL","LIGHTCYAN","LIGHTGOLDENRODYELLOW","LIGHTGRAY","LIGHTGREEN","LIGHTGREY","LIGHTPINK","LIGHTSALMON","LIGHTSEAGREEN","LIGHTSKYBLUE","LIGHTSLATEGRAY","LIGHTSLATEGREY","LIGHTSTEELBLUE","LIGHTYELLOW","LIME","LIMEGREEN","LINEN","MAGENTA","MAROON","MEDIUMAQUAMARINE","MEDIUMBLUE","MEDIUMORCHID","MEDIUMPURPLE","MEDIUMSEAGREEN","MEDIUMSLATEBLUE","MEDIUMSPRINGGREEN","MEDIUMTURQUOISE","MEDIUMVIOLETRED","MIDNIGHTBLUE","MINTCREAM","MISTYROSE","MOCCASIN","NAVAJOWHITE","NAVY","OLDLACE","OLIVE","OLIVEDRAB","ORANGE","ORANGERED","ORCHID","PALEGOLDENROD","PALEGREEN","PALETURQUOISE","PALEVIOLETRED","PAPAYAWHIP","PEACHPUFF","PERU","PINK","PLUM","POWDERBLUE","PURPLE","REBECCAPURPLE","RED","ROSYBROWN","ROYALBLUE","SADDLEBROWN","SALMON","SANDYBROWN","SEAGREEN","SEASHELL","SIENNA","SILVER","SKYBLUE","SLATEBLUE","SLATEGRAY","SLATEGREY","SNOW","SPRINGGREEN","STEELBLUE","TAN","TEAL","THISTLE","TOMATO","TURQUOISE","VIOLET","WHEAT","WHITE","WHITESMOKE","YELLOW","YELLOWGREEN","backgroundClip","prefix","backgroundColor","format","parseColorStop","processColorStops","stops","lineLength","first","last","processStops","previous","stop_1","absoluteValue","gapBegin","stop_2","gapLength","gapValue","calculateGradientDirection","radian","corner","centerX","centerY","atan2","getAngleFromCorner","abs","halfWidth","halfHeight","halfLineLength","yDiff","xDiff","distance","sqrt","findCorner","closest","stat","cx","cy","optimumDistance","optimumCorner","Infinity","prefixLinearGradient","angle$1","firstToken","colorStop","prefixRadialGradient","shape","size","position","isColorStop","acc","image","image_1","cache","addImage","imageFunction","SUPPORTED_IMAGE_FUNCTIONS","isAtPosition_1","backgroundImage","isSupportedImage","backgroundOrigin","backgroundPosition","backgroundRepeat","parseBackgroundRepeat","LINE_BREAK","backgroundSize","isBackgroundSizeInfoToken","borderColorForSide","side","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","borderRadiusForSide","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","borderStyleForSide","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","borderWidthForSide","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","display","bit","parseDisplayValue","float","letterSpacing","WORD_BREAK","STRICT","NORMAL","lineHeight","computeLineHeight","fontSize","listStyleImage","listStylePosition","listStyleType","marginForSide","marginTop","marginRight","marginBottom","marginLeft","overflow","overflowWrap","paddingForSide","paddingTop","paddingRight","paddingBottom","paddingLeft","textAlign","textShadow","shadow","offsetX","offsetY","blur","textTransform","transform$1","transformFunction","SUPPORTED_TRANSFORM_FUNCTIONS","matrix","matrix3d","b1","b2","a4","b4","DEFAULT_VALUE","DEFAULT","transformOrigin","origins","visibility","BREAK_ALL","KEEP_ALL","zIndex","auto","order","time","textDecorationColor","textDecorationLine","line","fontFamily","accumulator","results","fontWeight","fontVariant","fontStyle","contains","counterIncrement","increments","filtered","counter","counterReset","resets","reset","duration","quotes","open_1","close_1","close","getQuote","depth","quote","boxShadow","spread","inset","paintOrder","layers","webkitTextStrokeColor","webkitTextStrokeWidth","CSSParsedDeclaration","declaration","animationDuration","cssFloat","overflowTuple","overflowX","overflowY","textDecoration","transform","isVisible","isTransformed","isPositioned","isPositionedWithZIndex","isFloating","isInlineLevel","CSSParsedPseudoDeclaration","CSSParsedCounterDeclaration","descriptor","parser","length_1","value_1","isDebugging","elementType","getAttribute","getElementDebugType","ElementContainer","textNodes","elements","styles","isHTMLElementNode","bounds","chars$1","lookup$1","i$1","slice16","UTRIE2_DATA_BLOCK_LENGTH","UTRIE2_INDEX_1_OFFSET","UTRIE2_INDEX_2_BLOCK_LENGTH","chars","lookup","doctypePolicy","L","V","LV","LVT","UnicodeTrie","decode","polyUint32Array","polyUint16Array","createTrieFromBase64","codePointToClass","_graphemeBreakAtIndex","_codePoints","countRI","GraphemeBreaker","toCodePoints","lastEnd","graphemeBreak","isGreenPixel","createForeignObjectSVG","xmlns","foreignObject","loadSerializedSVG$1","img","Image","encodeURIComponent","XMLSerializer","serializeToString","FEATURES","createRange","range","testElement","TEST_HEIGHT","selectNode","rangeBounds","rangeHeight","testRangeBounds","SUPPORT_RANGE_BOUNDS","wordSpacing","repeat","firstChild","textList","offset","supports","every","text","setStart","setEnd","boundAhead","testIOSLineBreak","ctx","getContext","drawImage","testSVG","fetch","fillStyle","fillRect","greenImageSrc","getImageData","testForeignObject","responseType","Intl","Segmenter","TextBounds","getWrapperBounds","ownerDocument","wrapper","cloneNode","replaceChild","segmentGraphemes","SUPPORT_NATIVE_TEXT_SEGMENTATION","segmenter","granularity","segment","bk","breaker","graphemes","splitGraphemes","breakText","breakWords","segmentWords","wordSeparators","forbiddenBreakpoints","nextIndex","LineBreaker","words","_loop_1","word_1","TextContainer","textBounds","clientRects","getClientRects","subSegments","subOffset_1","subSegment","replacementNode","splitText","parseTextBounds","replace","CAPITALIZE","capitalize","p1","p2","ImageElementContainer","_super","_this","currentSrc","intrinsicWidth","naturalWidth","intrinsicHeight","naturalHeight","CanvasElementContainer","SVGElementContainer","baseVal","LIElementContainer","OLElementContainer","reversed","CHECKBOX_BORDER_RADIUS","RADIO_BORDER_RADIUS","PINPUT","InputElementContainer","placeholder","SelectElementContainer","option","TextareaElementContainer","IFrameElementContainer","iframe","contentWindow","tree","parseTree","documentBackgroundColor","bodyBackgroundColor","LIST_OWNERS","parseNodeTree","root","childNode","nextNode","nextSibling","isTextNode","isElementNode","isSlotElement","assignedNodes","container","createContainer","createsRealStackingContext","createsStackingContext","tagName","slot","shadowRoot","isTextareaElement","isSVGElement","isSelectElement","isImageElement","isCanvasElement","isLIElement","isOLElement","isInputElement","isIFrameElement","isBodyElement","nodeType","Node","TEXT_NODE","ELEMENT_NODE","isSVGElementNode","isVideoElement","isStyleElement","isCustomElement","CounterState","counters","getCounterValue","getCounterValues","canReset","counterNames","ROMAN_UPPER","ARMENIAN","HEBREW","GEORGIAN","createAdditiveCounter","symbols","fallback","suffix","createCounterText","string","integer","createCounterStyleWithSymbolResolver","codePointRangeLength","isNumeric","resolver","createCounterStyleFromRange","codePointRangeStart","codePointRangeEnd","createCounterStyleFromSymbols","createCJKCounter","numbers","multipliers","negativeSign","tmp","coefficient","appendSuffix","defaultSuffix","cjkSuffix","koreanSuffix","spaceSuffix","CJK_TEN_COEFFICIENTS","CJK_ZEROS","htmlEscape","escaped","char","createDocType","doctype","internalSubset","publicId","systemId","trustedTypes","createPolicy","createHTML","ignored","PseudoElementType","DocumentCloner","scrolledElements","referenceElement","quoteDepth","toIFrame","windowSize","createIFrameContainer","scrollX","defaultView","pageXOffset","scrollY","pageYOffset","cloneWindow","documentClone","iframeLoad","iframeLoader","onclone","restoreNodeScroll","scrollTo","warn","clonedReferenceElement","nodeName","fonts","ready","imagesReady","restoreOwnerScroll","adoptNode","createElementClone","createCanvasClone","createVideoClone","createStyleClone","clone","srcset","loading","createCustomElementClone","copyCSSStyles","cssRules","css","rule","cssText","inlineImages","info","clonedCanvas","clonedCtx","allowTaint","putImageData","gl","attribs","getContextAttributes","preserveDrawingBuffer","video","offsetWidth","offsetHeight","blankCanvas","appendChildNode","copyStyles","hasAttribute","ignoreElements","cloneChildNodes","assignedNode","transitionProperty","styleBefore","styleAfter","createPseudoHideStyles","resolvePseudoContent","BEFORE","after","AFTER","scrollTop","scrollLeft","pseudoElt","anonymousReplacedElement","attr","counterStyle","counterState","counterType","delim","counterStates","counterType_1","separator","PSEUDO_HIDE_ELEMENT_CLASS_BEFORE","PSEUDO_HIDE_ELEMENT_CLASS_AFTER","baseValue","CORNER","cloneIframeContainer","border","scrolling","imageReady","complete","all","images","childNodes","ignoredStyleProperties","setProperty","createStyles","CacheStorage","getOrigin","_link","protocol","hostname","port","isSameOrigin","_origin","setContext","Cache","_options","_cache","isBlobImage","isRenderable","loadImage","useCORS","useProxy","isInlineImage","SUPPORT_CORS_IMAGES","proxy","SUPPORT_CORS_XHR","debug","isInlineBase64Image","imageTimeout","SUPPORT_RESPONSE_TYPE","response","reader_1","FileReader","readAsDataURL","queryString","timeout_1","INLINE_SVG","INLINE_BASE64","INLINE_IMG","SUPPORT_SVG_DRAWING","isSVG","Vector","deltaX","deltaY","lerp","BezierCurve","startControl","endControl","subdivide","firstHalf","ab","bc","cd","abbc","bccd","dest","reverse","isBezierCurve","path","BoundCurves","tlh","tlv","trh","trv","_c","brh","brv","_d","blh","blv","factors","maxFactor","topWidth","rightHeight","bottomWidth","leftHeight","topLeftBorderDoubleOuterBox","getCurvePoints","TOP_LEFT","topRightBorderDoubleOuterBox","TOP_RIGHT","bottomRightBorderDoubleOuterBox","BOTTOM_RIGHT","bottomLeftBorderDoubleOuterBox","BOTTOM_LEFT","topLeftBorderDoubleInnerBox","topRightBorderDoubleInnerBox","bottomRightBorderDoubleInnerBox","bottomLeftBorderDoubleInnerBox","topLeftBorderStroke","topRightBorderStroke","bottomRightBorderStroke","bottomLeftBorderStroke","topLeftBorderBox","topRightBorderBox","bottomRightBorderBox","bottomLeftBorderBox","topLeftPaddingBox","topRightPaddingBox","bottomRightPaddingBox","bottomLeftPaddingBox","topLeftContentBox","topRightContentBox","bottomRightContentBox","bottomLeftContentBox","r1","r2","kappa","ox","oy","xm","ym","calculateBorderBoxPath","curves","calculatePaddingBoxPath","TransformEffect","ClipEffect","OpacityEffect","isClipEffect","effect","equalPath","StackingContext","inlineLevel","nonInlineLevel","negativeZIndex","zeroOrAutoZIndexOrTransformedOrOpacity","positiveZIndex","nonPositionedFloats","nonPositionedInlineLevel","ElementPaint","effects","borderBox","paddingBox","getEffects","inFlow","croplessEffects","parseStackTree","stackingContext","realStackingContext","listItems","treatAsRealStackingContext","paintContainer","listOwnerItems","parentStack","order_1","index_1","index_2","processListItems","owner","numbering","listValue","parsePathForBorder","borderSide","createPathFromCurves","createStrokePathFromCurves","outer1","outer2","inner1","inner2","contentBox","calculateBackgroundRendering","intrinsicSize","backgroundPositioningArea","calculateBackgroundPositioningArea","getBackgroundValueForIndex","backgroundPaintingArea","calculateBackgroundPaintingArea","backgroundImageSize","calculateBackgroundSize","sizeWidth","sizeHeight","calculateBackgroundRepeatPath","isAuto","AUTO","hasIntrinsicValue","intrinsicProportion","second","hasIntrinsicProportion","CONTAIN","COVER","hasIntrinsicWidth","hasIntrinsicHeight","hasIntrinsicDimensions","width_3","height_3","FontMetrics","_data","_document","parseMetrics","span","margin","padding","whiteSpace","verticalAlign","offsetTop","middle","getMetrics","Renderer","CanvasRenderer","_activeEffects","scale","fontMetrics","translate","textBaseline","applyEffects","popEffect","applyEffect","isOpacityEffect","globalAlpha","isTransformEffect","clip","restore","renderStack","renderStackContent","renderNode","paint","renderNodeBackgroundAndBorders","renderNodeContent","renderTextWithLetterSpacing","fillText","letter","measureText","createFontStyle","variant","fixIOSSystemFonts","renderTextNode","font","paintOrderLayer","textShadows","shadowColor","shadowOffsetX","shadowOffsetY","shadowBlur","strokeStyle","lineWidth","lineJoin","chrome","strokeText","renderReplacedElement","box","render","fill","beginPath","arc","isTextInputElement","canvasTextAlign","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","mask","paths","moveTo","lineTo","formatPath","closePath","point","bezierCurveTo","renderRepeat","pattern","resizeImage","renderBackgroundImage","this_1","x0","x1","y0","y1","gradient_1","top_1","rx","ry","radialGradient_1","midX","midY","invF","createPattern","createLinearGradient","addColorStop","isRadialGradient","gradient","calculateRadius","createRadialGradient","renderSolidBorder","curvePoints","renderDoubleBorder","outerPaths","innerPaths","parsePathForBorderDoubleOuter","parsePathForBorderDoubleInner","hasBackground","borders","borders_1","calculateBackgroundCurvedPaintingArea","deltaW","deltaH","borderBoxArea","maskOffset","shadowPaintingArea","renderDashedDottedBorder","strokePaths","boxPaths","startX","startY","endX","endY","dashLength","spaceLength","useLineDash","multiplier","numberOfDashes","minSpace","maxSpace","path1","path2","parsePathForBorderStroke","setLineDash","lineCap","stroke","calculateContentBoxPath","iOSBrokenFonts","fontFamilies","ForeignObjectRenderer","loadSerializedSVG","enabled","instances","Context","instanceName","instanceCount","logging","renderElement","opts","resourceOptions","contextOptions","windowOptions","foreignObjectRendering","cloneOptions","documentCloner","clonedElement","renderOptions","_q","_r","_s","_t","_u","windowWidth","innerWidth","windowHeight","innerHeight","scrollWidth","scrollHeight","parseDocumentSize","parseBackgroundColor","devicePixelRatio","removeContainer","backgroundColorOverride","defaultBackgroundColor","factory","supportedLocales","localeVariantToSupportedlocaleMap","localeUpperCase","supportedLocale","localePartOne","polyfill","isFunction","vertxNext","customSchedulerFn","asap","queue","flush","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","self","isWorker","Uint8ClampedArray","importScripts","MessageChannel","useSetTimeout","globalSetTimeout","iterations","observer","onFulfillment","onRejection","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","_resolve","nextTick","observe","characterData","port1","onmessage","port2","postMessage","vertx","Function","require","runOnLoop","runOnContext","attemptVertx","handleMaybeThenable","maybeThenable","originalThen","originalResolve","thenable","fulfill","reason","handleOwnThenable","sealed","fulfillmentHandler","rejectionHandler","tryThen","_label","handleForeignThenable","publishRejection","_onerror","publish","_subscribers","subscribers","settled","detail","hasCallback","succeeded","Enumerator","Constructor","_instanceConstructor","_remaining","_enumerate","_eachEntry","_then","didError","_settledAt","_willSettleAt","enumerator","needsResolver","initializePromise","needsNew","finally","entries","Resolve","_reject","_setScheduler","scheduleFn","_setAsap","asapFn","_asap","local","promiseToString","cast","AppLaunch","AppUsageTime","AppResume","ActivityName","RoamingSettingIdMap","stateProvider","definitionProviders","currentBuildNumber","currentDate","isStateUpForNomination","buildNumber","campaignCooldownDuration","hasBuildChangeDurationElapsed","hasTimeIntervalDurationElapsed","isDateInRange","startDate","endDate","startBuild","isCampaignInScope","isDateInRangeWithDefinition","getActiveSurveys","surveys","prioritizedCampaigns","getPrioritizedCampaigns","CampaignSurveyFactory","makeSurvey","onCampaignSurveyActivated","takenDate","getCampaignStates","getUserFacts","refreshSurveyDefinitionsPrivate","refreshSurveyDefinitionsPrivateAsync","errReason","makeArrayFromObjectValuesSortedByKeyString","needRefreshSurveyDefinitions","lastCampaignRefreshTime","loadFilterCampaigns","FilterCampaignsOnRestart","LoadFilterCampaignStates","evaluateCampaigns","thisCampaignManager","loadAndFilterCampaignDataAsync","loadedDefinitions","promises","userFactsPromise","provider","setUserFacts","FilterCampaignData","Critical","loadedDefinitionsMap","loadedStates","staleLoadedStates","shouldRemove","matchingTagCampaigns","tagId","mapKey","endsWith","findHighestPriorityDefinition","maxPriorityDefinition","maxPriority","currentPriority","dateToShortUtcString","surveyDataSource","makeSurveyDataSourceData","surveyModel","NpsSurvey","make5Point","make11Point","FpsSurvey","makeFps","NlqsSurvey","makeNlqs","makeCustom","GenericMessagingSurfaceSurvey","InterceptSurvey","makeIntercept","surveyData","makeEvent","makeMetadata","makeCountedActivityEventData","eventModel","eventData","CountedActivityEventData","makeCountedActivityEvent","CountedActivityEvent","makeCountedActivitySequenceEvent","sequenceEventData","CountedActivitySequenceEventData","CountedActivitySequenceEvent","metadataModel","SurveyMetadata","trackingDataList","ActivityTrackingData","ActivityTrackingSet","countedActivityEventData","countedActivityEvent","setCount","isOrdered","list","getIsOrdered","activitiesInfoObject","Activities","IsListOrdered","actualCount","tempActivities","ActualCount","IsDiscrete","getContentMetadata","baseData","promptData","commentData","ratingData","multipleChoiceData","MultipleChoiceComponent","cvSurveyData","sp","FpsSurveyData","getCustomString","customString","MultipleChoiceComponentData","Fps","getCommentComponent","getPromptComponent","getRatingComponent","getMultipleChoiceComponent","getCVSurveyComponent","getComponent","componentType","makeSurveyStrings","makeResponseString","getOptionSelectedStates","numberOfOptions","selectedRating","actualStrings","optionStates","getAvailableOptions","getMinNumberofSelectedOptions","getMaxNumberofSelectedOptions","setOptionSelectedStates","selectedStates","ValidateMinNumberofSelectedOptions","ValidateMaxNumberofSelectedOptions","GenericMessagingSurfaceSurveyData","GenericMessagingSurface","InterceptComponent","interceptData","InterceptSurveyData","InterceptComponentData","getInterceptComponent","getUrl","NlqsSurveyData","Nlqs","NpsSurveyData","loadStringResource","Nps","trackedActivities","activationMask","currentActivationFlags","isActivationByInitPending","currentCounts","currentStartTimes","currentSessionCounts","isValidIndex","getStartTime","sessionCount","otherTrackers","wasAlreadyActivatedThisSession","hasCountCrossedThreshold","finishActivityAtIndex","isActivated","indexList","ActivityIndex","startedLessThanThreshold","isPermittedIndexForActivationByInit","commitActivation","diff","userFactInput","UserFact","commonComparatorTypes","rawUserFactSpec","Values","validateUserFactType","LatencyType","validateLatencyType","LatencyDurationInSeconds","IntervalType","supportedComparatorTypes","getComparatorTypes","Comparator","comparator","isComparatorTypeSupported","userFactType","latency","factType","userFactValue","isLatencyAcceptable","userFactSpecValue","rawUserFactValueInBoolean","compareValues","compareBooleanValues","getValue","getComparator","rawUserFactValueInMilliseconds","isAValidNumber","userFactName","userFactSpecValueInMilliseconds","compareDateTimeUTCValues","rawUserFactValueInNumber","compareNumberValues","compareStringValues","intervalType","currentTimeInMilliseconds","currentDateDiff","compareTimeIntervalValues","getIntervalType","compareListValues","getLatencyType","getLatencyDurationInSeconds","latencyType","latencyDurationInSeconds","userFactTime","sourceDateTime","storageDateTime","clientIngestionDateTime","userFactTimeInMilliseconds","evaluateFactCandidacy","userFactRawValue","isFactValueInTargetItem","userFactTargetValues","specValue","numberValue","rawUserFactName","configurable","Int64","numberStr","low","high","Equals","UInt64","ToByte","ToUInt8","ToInt16","ToInt32","ToUInt32","AWTPiiKind","Bond","Enums_1","AWTBondSerializer","getPayloadBlob","requestDictionary","tokenCount","stream","IO","MemoryStream","writer","CompactBinaryProtocolWriter","WriteFieldBegin","BondDataType","BT_MAP","WriteMapContainerBegin","BT_STRING","BT_LIST","WriteString","dataPackage","WriteContainerBegin","BT_STRUCT","newGuid","BT_INT64","WriteInt64","numberToBondInt64","WriteBlob","WriteStructEnd","GetBuffer","getEventBlob","propsString","piiProps","pii","NotSet","BT_INT32","WriteInt32","base64Encode","Encoding","Base64","GetString","default","microsoft_bond_primitives_1","GuidRegex","bond_value","isPii","FullVersionString","AWT_1","AWT_COLLECTOR_URL_UNITED_STATES","AWT_COLLECTOR_URL_GERMANY","AWT_COLLECTOR_URL_JAPAN","AWT_COLLECTOR_URL_AUSTRALIA","AWT_COLLECTOR_URL_EUROPE","Utf8","GetBytes","inArray","num","output","paddingBytes","charAt","temp2","Varint","Varint64","Zigzag","EncodeZigzag32","EncodeZigzag64","tmpH","tmpL","res","_buffer","WriteByte","byte","Write","bond_const_1","_stream","blob","WriteUInt8","WriteUInt32","keyType","valueType","WriteUInt64","isBase","BT_STOP_BASE","BT_STOP","AWTKillSwitch","_killedTokenDictionary","setKillSwitchTenants","killTokens","killDuration","killedTokens","durationMs_1","ex","isTenantKilled","AWTBondSerializer_1","AWTRecordBatcher","_maxRequestSize","_outboundQueue","_currentBatch","_currentBatchSize","addEventToBatch","serializedEvent","flushBatch","AWTRetryPolicy","shouldRetryForStatus","httpStatusCode","getMillisToBackoffForRetry","retriesSoFar","waitDuration","randomBackoff","BaseBackoff","AWTTransmissionManager_1","EventNameAndTypeRegex","EventNameDotRegex","PropertyNameRegex","_isInitialized","_defaultTenantToken","_overrideValuesFromConfig","_config","_isDestroyed","flushAndTeardown","_sanitizeProperty","_contextProperties","typePrefix","_addContextIfAbsent","_setDefaultProperty","_getInitId","_getSequenceId","sendEvent","collectorUrl","sendingTimer","_initIdMap","_sequenceIdMap","context_1","AWTRecordBatcher_1","AWTRetryPolicy_1","AWTKillSwitch_1","AWTTransmissionManager","_inboundQueues","_recordBatcher","_newEventsAllowed","_urlString","_sendingTimer","_running","_timeout","_isCurrentlyFlushing","_batchAndSendEvents","_flushQueue","_flush","isTeardown","_sendRequest","_retryRequestIfNeeded","conn","request","apikey","retryCount","shouldRetry","_killSwitch","getResponseHeader","_handleRequestFinished","conn_1","tokenCount_1","apikey_1","_checkPrimaryInboundQueueEmpty","_checkOutboundQueueEmptyAndSent","AnnotationState","lowerIndexBound","maxNumberOfRows","maxNumberOfColumns","firstColumnName","lastColumnName","GridConstants","Annotation","M_","typeGuard","schemaObject","BinaryClassificationAnnotation","UserCommand","ItemDelta","ItemChangesDelta","Operation","OperationWithSiblingContext","AddOperation","MoveOperation","UpdateAnnotationMetaDataOperation","UpdateOperation","DeleteOperation","PurgeOperation","FocusOperation","VisibilityOperation","DeltaUpdateOperation","MicroSyncOperation","SignalOperation","Signal","Binary","TileGroup","Document","SubDocument","GridCell","GridNeighborhoodContext","DynamicContext","ContextHolder","UserContextHolder","TenantContextHolder","EventsHolder","UserCommandsHolder","global","globalThis","support","viewClasses","isArrayBufferView","isView","normalizeName","normalizeValue","iteratorFor","headers","header","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","readAsArrayBuffer","bufferClone","buf","byteLength","set","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","_bodyFormData","DataView","_bodyArrayBuffer","arrayBuffer","isConsumed","byteOffset","readAsText","readArrayBufferAsText","oldValue","methods","Request","upcased","credentials","signal","reParamSearch","form","decodeURIComponent","Response","bodyInit","ok","redirectStatuses","redirect","RangeError","init","aborted","abortXhr","abort","rawHeaders","getAllResponseHeaders","parts","responseURL","onabort","fixUrl","withCredentials","setRequestHeader","Headers","sendGetRequest","requestUrl","useTimeout","requestInit","createHeaders","timeoutFetch","sendPostRequest","requestHeaders","buildQueryParameters","keyAndValues","encodeValueAsURI","queryParamsString","sleep","getObjectProperty","targetObject","propertyName","propertyValue","getOwnPropertyDescriptor","getDelayDefinedObjectValue","currentPropertyValue","newValue","getDelayDefinedValueWithWait","retryTimes","delay","definedProperty","getAnnotationData","augLoopSession","annotationName","activateAnnotation","operation","schemaObjects","getGlobalAugLoopRuntime","loadDelay","augLoopRuntime","delayLoadTime","getAugLoopAnnotationData","getRuntimeSession","augLoopSessionPromise","augLoop","ALFactoryGlobal","getAugLoopRuntimeManager","getSession","assetsProvider","WebSurfacesScriptPromise","platform","country","campaignParameters","authType","audience","tmsgCacheIn","isInternalEnv","campaignMetadataAggregatorConfig","campaignMetadataAggregatorInt","campaignMetadataAggregatorProd","setCampaignActionConfig","setCampaignActionInt","setCampaignActionProd","campaignMetadataAggregatorPrefix","setCampaignActionPrefix","tmsgCache","TargetedMessagingCache","requestedContent","refreshItemsInCacheFromTmsService","retrieveCacheItemAndCreateContentResponse","getMultipleContents","contentResponses","bulkRefreshList","responseItem","createCachedContentResponse","getUserFactsContent","refreshItemsInCacheFromTulipsService","sendBeaconRequestToService","beaconParameters","tmsAppId","Constants","getAuthToken","authToken","puid","getUserPuid","requestStartTime","tmsQueryParams","actionName","actionUrl","sendRequest","createTelemetryData","getCachedContent","getAugLoopUserFactsContent","refreshUserFactsInCacheFromAugLoop","cachedUserFacts","Flights","addClientIngestionTimeAndNormalizeKeysInArray","augLoopError","requestStartTimestamp","serverSessionId","serverCorrelationId","SessionId","CorrelationId","HttpStatusCode","HttpStatusText","tmsgQueryParams","defaultBaseUrl","tmsgTransport","queryParamStr","tmsgBaseUrl","contentResponse","ContentResponse","appIdOrUri","getDuration","createAuthTelemetryData","retVal","contentTypes","userPuid","browserParams","pageWidth","pageHeight","screenWidth","screen","screenHeight","colorDepth","debugOverrides","replaceTmsQueryParams","campaignParams","OFC_FLIGHTS","addTmsQueryParams","sessionUserType","tmsServiceResponse","MessageMetadata","UserGovernanceRules","CampaignContent","DynamicSettings","tulipsAppId","tulipsServiceResponse","normalizedUserFacts","addClientIngestionTimeAndNormalizeKeys","currentDateTime","responseFact","fact","normalizeKeys","normalizedUserFact","isAugLoopEnabled","tmsgClient","extractCountryFromLocale","debugResponse","tmsResponse","getCachedCampaignDefinitions","getUserGovernanceRules","getMessageMetadata","userFactsResponse","timeoutMilliseconds","getAugLoopUserFacts","getSubstrateUserFacts","getCachedUserFacts","setCampaignAction","splitLocale","createwebSurfacesScriptPromise","webSurfacesConfigLink","webSurfacesDefaultLink","settingKey","DomUtils","webSurfacesIntUrl","webSurfacesProdUrl","localFactTargetObjects","toLocaleLowerCase","CoachingUXLauncherFactory","LAUNCHER_TYPE","surveyMetadata","getWebSurfacesInstance","windowInstance","OfficeWebSurfaces","renderWebSurface","uxInitOptions","officeWebSurfaces","RemoveSurface","surfaceParams","surfaceContext","surveyForm","RenderSurface","logErrorEvent","surveyActivatedCallback","uxOptions","beaconCallback","surfaceInitTime","surfaceId","renderer","renderCallback","onTeachingCampaignRender","showPrompt","showEmailRequest","isIntercept","interceptComponent","promptComponent","commentComponent","ratingComponent","cvSurveyComponent","getCVSurveyFormId","getPromptQuestion","getPromptYesButtonText","getPromptNoButtonText","getRatingQuestion","getCommentQuestion","getInterceptTitle","getInterceptQuestion","getInterceptUrl","getSurveyType","getGoverenedChannelType","rudeSurveyLauncherFactory","coachingUXLauncherFactory","AdaptiveSurveyLauncherFactory","makeGenericMessagingSurfaceLauncher","makeRudeSurveyLauncher","Transport","stringId","uiStrings","Points11Value0","Points11Value1","Points11Value2","Points11Value3","Points11Value4","Points11Value5","Points11Value6","Points11Value7","Points11Value8","Points11Value9","Points11Value10","Points5Value1","Points5Value2","Points5Value3","Points5Value4","Points5Value5","Comment","loadAsyncTriggered","campaignDefinitionsPromise","loadCampaignDefinitions","timeoutPromise","campaigns","getBrowserSettings","pageTop","pageLeft","createUserFact","factName","factValue","getLocalUserFact","userConsentGroup","feedbackEnabledByAADC","generatedFact","factNameValues","objectName","globalObject","curr","getBrowserLocalFact","nameAndUserFactMap","loadUserFacts","logUserFactInfo","tulipsIngestionTimeInterval","userFactProperties","rawItemDate","itemDate","factInfo","RefreshTime","IngestionTime","SourcesExpired","StoragesExpired","IngestionsExpired","postRequestWithRetry","thisDynamicContentTransport","requestId","createSimpleHeaders","createNormalHeaders","personalizerClient","dynamicTransport","personalizerSurveyInformationMap","setup","retryLimit","setEventIdAndOverrideValueForSurveyId","configType","configValue","newRecommendedAutoDismissValue","validateAndGetAutoDismissTime","recommendedAutoDismissValue","userAction","getOverrideValueForSurveyId","infoExistsForSurveyId","logUserActionForSurveyAsync","responseResult","actionPayload","getValidatedActionPayloadForSurveyId","timeBefore","timeAfter","AdditionalSurveyInfo","buildConfigTelemetryString","PersonalizerUserAction","UserAction","PersonalizerEventId","EventId","getEventIdForSurveyId","surveyPersonalizerInfo","objectTelemetry","lastSurveyFailedSync","clientState","clientInfo","applicationId","surveyPlatform","hostPlatform","userId","InitializationFailed","Enabled","getClientInfo","getLastSurveyFailedSync","surveyLevelCooldown","userLevelCooldown","buildSurveyInfo","buildBodyRequest","serviceCallTime","GovernanceRequestBody","GovernanceResponseText","jsonResponse","timeUntilNextSurveyAllowed","actionId","stringType","isPersonalizerEnabled","surveyTriggerTime","surveyChannel","localOffsetTime","getTimezoneOffset","client","engine","startCount","engineStartPromise","engineTmsProvider","setEngineStartPromise","startPromise","getEngineStartPromise","startInternal","loadSynchronously","customEngine","rejectAndLogError","currentTeachingCooldown","teachingCooldown","enginePromise","startError","resetEngine","isPromptUp","timerAutoDismiss","autoDismissValue","dismissAll","listenersList","removeListeners","addListener","logTelemetryEvent","isEmailPolicyEnabled","action","actualSetAutoDismissValue","SurveyType","PromptAutoDismiss","IsEmailPolicyEnabled","ActualSetAutoDismissValue","emailCheckBoxHandler","emailCheckBox","emailTextBox","disabled","toastKeyEventHandler","keyCode","preventDefault","stopPropagation","onCancelLoggingRoutine","clearAutoDismiss","toastCancelHandler","isPersonalizerEnabledHelper","promptContainerHandler","win","success","focus","showSurveyScreen","formRating","getElementsByName","ratingInputHandler","submitButtonHandler","commentElement","commentEntered","querySelector","generateRadioButton","generateRatingControl","choices","ratingValue","fieldSet","choice","createSurvey","onClose","userInterface","formSchema","eudbCompliant","promptSchema","CloseLabel","CommentPlaceholder","EmailPlaceholder","PrivacyLabel","PrivacyConsent","PrivacyStatement","Cancel","ON_DISMISS","ratingElements","querySelectorAll","overrideValue","autoDismissDuration","onDismissFlag","isPromptResponseLogValidated","isAdditionalPromptResponseLogValidated","hasSubmittedData","firstCommentResponse","firstCommentTitle","handleSurveyEvent","keyPrefix","keyBase","splitKey","formattedData","submitData","ratingQuestion","ratingsListLength","promptQuestion","promptResponse","additionalPromptQuestion","additionalPromptResponse","commentsCollection","commentTitlesCollection","insightfulQuestionOptionsCollection","insightfulQuestionAnswersCollection","isFirstCommentValidated","isFirstEmptyCommentAdded","pageInfo","currentPage","questionAnswers","questionType","answerValue","getRating","getQuestionValue","getAnswerValue","commentResponse","commentTitle","cvSurveyHasPromptPage","setCommentTitleAndValue","pageNumber","getInsightfulOptions","insightfulQuestionAnswers","getInsightfulAnswers","formatSubmitData","isPromptAnswerLogNeeded","isPromptAnswerNo","LogPromptAnswer","validateLogPromptAnswer","commentValues","commentTitles","surveyStrings","yesButtonText","noButtonText","surveySpecificData","updateExtendedManifestData","appDataValues","cvSurveyInfo","additionalInfo","SurveyDescription","Flight","updateAppData","preGeneratedId","setTransporterValues","eventType","onCVSubmit","onCVCancel","hasSurveyDispatcher","hasSurveyPromptShown","onCVLoaded","logCustomProps","logGatecrashEvent","internal","questionValue","insightfulQuestionOptions","isPromptAnswerLogged","promptMessageClicked","promptMessageClosed","CVFormId","ratingIndex","promptYesButtonText","promptNoButtonText","commentQuestion","SurveyActivityInfo","log_Local","opened","CommonApp","FloodgateTelemetryLogger","CommonUI","filteredResult","overrideUXRenderCallbackAsync","DummyUISurvey","contextParams","cvSurveyOptionalConfigParams","appPrimaryColor","appSecondaryColor","flights","userEmailConsentDefault","getContextParams","optionalConfigParams","closeButtonEnabled","cancelButtonEnabled","timeOutEnabled","getOptionalConfigParams","renderSurvey","parentElement","onSurveyEvent","surveyOptionalConfigParams","isMainContext","cycleTabFocus","focusedElement","checkVisible","useNarrowLayout","selectedFeedbackType","selectedPanelType","setAriaSelectedAttributes","anchorID","keyEventHandler","registerCommon","overlayBackgroundHandler","mainContainerHandler","tabKeyEventHandler","privacyStatementLinkHandler","basicFormInputHandler","singleFormInputHandler","which","activeElement","shiftKey","overallHandler","anchorId","PanelType","formTemplate","mainContentHolderSlideLeft","containerId","onSelect","panelType","overallSmileHandler","overallFrownHandler","overallIdeaHandler","Idea","overallBugHandler","SetVisibilityExceptFor","except","visible","feedbackPanes","currentFeedbackPane","submitButtonHandlerFactory","submitButtonId","commentInputId","emailInputId","categoriesDropdownId","emailElement","isEmailIncluded","categoryElement","IsEmailIncluded","IsScreenshotIncluded","overallThanksHandler","overallFeedbackPortalIdeaHandler","ScreenshotCheckboxClickHandler","CancelButtonHandler","FormTemplateType","generate","CategoryPlaceholder","starId","starDefinition","firstStar","secondStar","thirdStar","fourthStar","fifthStar","emptyStars","oneFilledStar","twoFilledStar","threeFilledStar","fourFilledStar","fiveFilledStar","FeedbackSubtitle","RatingLabel","isEmailEnabled","isScreenshotEnabled","ScreenshotLabel","ScreenshotImgAltText","SmileForm","FrownForm","IdeaForm","BugForm","Basic","Single","generateMultiForms","formTemplates","pushedContainers","generateMultiPanels","panelTemplates","generateOverallAnchors","generateOverallAnchor","IdeaRedirect","overallAnchorID","overallImageID","svgImage","overallTextID","uiString","makeLinkText","GetThankYouPageText","thankYouPageText","ThanksPanel","AppreciateText","IInitOptions","MyFeedbackDescription","MyFeedbackLinkText","FeedbackPortalDescription","FeedbackPortalLinkText","primaryColor","Close","ariaLabel","role","FeedbackPortalIdea","createMulti","useNarrowScreenLayout","createSingle","PANELTEMPLATES","onMainContainerRender","IsBugEnabled","feedbackTypeEnum"],"mappings":"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SAAU45C,EAAUsO,GACzB,OAAQA,GACN,IAAK,SACH,OAAO,EACT,IAAK,UACL,QACE,OAAO,KAKXqD,GAAgB,CAClBzxE,KAAM,kBACNwyD,aAAc,OACd6Y,QAAQ,EACR1yD,KAAM,EACNuN,MAAO,SAAU45C,EAAUnnD,GACzB,OAAQA,GACN,IAAK,OACH,OAAO,EACT,IAAK,SACH,OAAO,EACT,IAAK,SACH,OAAO,EACT,IAAK,UACH,OAAO,EACT,IAAK,cACH,OAAO,EACT,IAAK,uBACH,OAAO,EACT,IAAK,cACH,OAAO,EACT,IAAK,cACH,OAAO,EACT,IAAK,cACH,OAAO,EACT,IAAK,cACH,OAAO,EACT,IAAK,cACH,OAAO,GACT,IAAK,eACH,OAAO,GACT,IAAK,WACH,OAAO,GACT,IAAK,UACH,OAAO,GACT,IAAK,YACH,OAAO,GACT,IAAK,qBACH,OAAO,GACT,IAAK,oBACH,OAAO,GACT,IAAK,kBACH,OAAO,GACT,IAAK,aACH,OAAO,GACT,IAAK,mBACH,OAAO,GACT,IAAK,WACH,OAAO,GACT,IAAK,WACH,OAAO,GACT,IAAK,WAEL,IAAK,SACH,OAAO,GACT,IAAK,WACH,OAAO,GACT,IAAK,iBACH,OAAO,GACT,IAAK,kBACH,OAAO,GACT,IAAK,oBACH,OAAO,GACT,IAAK,UACH,OAAO,GACT,IAAK,WACH,OAAO,GACT,IAAK,iBACH,OAAO,GACT,IAAK,QACH,OAAO,GACT,IAAK,uBACH,OAAO,GACT,IAAK,sBACH,OAAO,GACT,IAAK,wBACH,OAAO,GACT,IAAK,MACH,OAAO,GACT,IAAK,iBACH,OAAO,GACT,IAAK,YACH,OAAO,GACT,IAAK,YACH,OAAO,GACT,IAAK,UACH,OAAO,GACT,IAAK,QACH,OAAO,GACT,IAAK,UACH,OAAO,GACT,IAAK,sBACH,OAAO,GACT,IAAK,wBACH,OAAO,GACT,IAAK,QACH,OAAO,GACT,IAAK,SACH,OAAO,GACT,IAAK,OACH,OAAO,GACT,IAAK,UACH,OAAO,GACT,IAAK,sBACH,OAAO,GACT,IAAK,wBACH,OAAO,GACT,IAAK,iBACH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OAiNdwkF,EACAG,GAEJ,KAAK,GACH,OAAOhB,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOtB,GACLhjF,EACA,EACA,MACA+iF,GACA,EACAuB,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOtB,GACLhjF,EACA,EACA,MACA8iF,GACA,EACAwB,GAEJ,KAAK,GACH,OAAOR,GACL9jF,EACA,oDAEJ,KAAK,GACH,OAAO8jF,GACL9jF,EACA,mDAEJ,KAAK,GACH,OAAO2jF,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOR,GACL9jF,EACA,mDACAukF,GAEJ,KAAK,GACH,OAAOT,GACL9jF,EACA,kDACAukF,GAEJ,KAAK,GACH,OAAOZ,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,GACH,OAAOX,GACL3jF,EACA,KACA,MACA,EACAskF,GAEJ,KAAK,EACL,QACE,OAAOX,GAA4B3jF,EAAO,GAAI,IAAI,EAAMskF,KAK1DM,GAAa,SAAUhvE,GACzB,IAAKA,EAAK,MAAO,GACjB,IAAIivE,EAAU,GAed,OAdAjvE,EAAI4T,MAAM,IAAI8Z,SAAQ,SAAUwhD,GAClB,KAARA,EACFA,EAAO,QACU,KAARA,EACTA,EAAO,SACU,KAARA,EACTA,EA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IC,EAA6B,CAChC,KACA,KACA,KACA,KACA,KACA,KACA,KACA,QACA,QACA,KACA,KACA,iBACA,WACA,KACA,KACA,KACA,KACA,KACA,QACA,KACA,QACA,KACA,KACA,KACA,KACA,MACA,KACA,QACA,KACA,KACA,KACA,KACA,aACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,QACA,KACA,KACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,QACA,KACA,KACA,QACA,KACA,KACA,KACA,MACA,QACA,QACA,MACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,aACA,aACA,aACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,aACA,KACA,UACA,WAGKC,EAA+D,CACpE,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,UACT,QAAS,WAGH,SAASh3D,EAASl6B,GACxB,IAAImxF,EAAkBnxF,EAAOu6B,oBAG7B,GAAI42D,KAAmBD,EACtB,OAAOA,EAAkCC,GAI1C,IAA4B,UAAAF,EAAA,eAAkB,CAC7C,IADQG,EAAe,MACHniC,gBAAkBkiC,EACrC,OAAOC,EAMT,IAFA,IAAIC,EAAgBF,EAAgBx4E,MAAM,KAAK,GAEnB,MAAAs4E,EAAA,eAAkB,CAAzC,IAAIG,EACR,IADQA,EAAe,MACHniC,gBAAkBoiC,EACrC,OAAOD,EAKT,MAAO,O,uZC7IR,WACA,WAGA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,Y,oECTAnjG,EAAOD,QAAU,EAAQ,IAAMsjG,Y,kDCExB,SAASC,EAAWroE,GACzB,MAAoB,mBAANA,EAOhB,IASW/S,EARPD,MAAMC,QACGD,MAAMC,QAEN,SAAU+S,GACnB,MAA6C,mBAAtCt6B,OAAOkB,UAAU4gB,SAASriB,KAAK66B,IClBtC46B,EAAM,EACN0tC,OAAY,EACZC,OAAoB,EAEbC,EAAO,SAAcj7C,EAAUmX,GACxC+jC,EAAM7tC,GAAOrN,EACbk7C,EAAM7t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","file":"officebrowserfeedback_floodgate.min.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 = 54);\n","/**\r\n * Constants.ts\r\n *\r\n * A module for all UI constants.\r\n */\r\n\r\n/**\r\n * HTML attribute names\r\n */\r\nexport class AttributeName {\r\n\tpublic static Alt: string = \"alt\";\r\n\tpublic static AriaLabel: string = \"aria-label\";\r\n\tpublic static AriaSelected: string = \"aria-selected\";\r\n\tpublic static AriaOrientation: string = \"aria-orientation\";\r\n\tpublic static AriaExpanded: string = \"aria-expanded\";\r\n\tpublic static AriaControls: string = \"aria-controls\";\r\n\tpublic static AriaHasPopups: string = \"aria-haspopup\";\r\n\tpublic static AriaModal: string = \"aria-modal\";\r\n\tpublic static AriaLabelledBy: string = \"aria-labelledby\";\r\n\tpublic static AriaDescribedBy: string = \"aria-describedby\";\r\n\tpublic static Class: string = \"class\";\r\n\tpublic static DataHtml2CanvasIgnore: string = \"data-html2canvas-ignore\";\r\n\tpublic static Disabled: string = \"disabled\";\r\n\tpublic static Fill: string = \"fill\";\r\n\tpublic static For: string = \"for\";\r\n\tpublic static Preview: string = \"preview\";\r\n\tpublic static Form: string = \"form\";\r\n\tpublic static Height: string = \"height\";\r\n\tpublic static HRef: string = \"href\";\r\n\tpublic static Id: string = \"id\";\r\n\tpublic static MaxLength: string = \"maxlength\";\r\n\tpublic static Name: string = \"name\";\r\n\tpublic static Placeholder: string = \"placeholder\";\r\n\tpublic static Points: string = \"points\";\r\n\tpublic static Rel: string = \"rel\";\r\n\tpublic static Role: string = \"role\";\r\n\tpublic static Source: string = \"src\";\r\n\tpublic static Stroke: string = \"stroke\";\r\n\tpublic static Style: string = \"style\";\r\n\tpublic static TabIndex: string = \"tabindex\";\r\n\tpublic static Target: string = \"target\";\r\n\tpublic static Transform: string = \"transform\";\r\n\tpublic static Type: string = \"type\";\r\n\tpublic static Value: string = \"value\";\r\n\tpublic static ViewBox: string = \"viewBox\";\r\n\tpublic static Width: string = \"width\";\r\n\tpublic static xlinkHref: string = \"xlink:href\";\r\n\tpublic static X: string = \"x\";\r\n\tpublic static Y: string = \"y\";\r\n}\r\n\r\n/**\r\n * HTML attribute values\r\n */\r\nexport class AttributeValue {\r\n\tpublic static BlankWindow: string = \"_blank\";\r\n\tpublic static Button: string = \"button\";\r\n\tpublic static Dialog: string = \"dialog\";\r\n\tpublic static Tab: string = \"tab\";\r\n\tpublic static TabList: string = \"tablist\";\r\n\tpublic static TabPanel: string = \"tabpanel\";\r\n\tpublic static Checkbox: string = \"checkbox\";\r\n\tpublic static Checked: string = \"checked\";\r\n\tpublic static False: string = \"false\";\r\n\tpublic static Zero: string = \"0\";\r\n\tpublic static Polite: string = \"polite\";\r\n\tpublic static Radio: string = \"radio\";\r\n\tpublic static Submit: string = \"submit\";\r\n\tpublic static ScreenshotPreview: string = \"ScreenshotPreview\";\r\n\tpublic static Text: string = \"text\";\r\n\tpublic static TextAreaMaxLength: string = \"1000\";\r\n\tpublic static True: string = \"true\";\r\n\tpublic static Unchecked: string = \"unchecked\";\r\n\tpublic static NoReferrer: string = \"noreferrer\";\r\n\tpublic static AriaOrientationValueVertical = \"vertical\";\r\n}\r\n\r\n/**\r\n * URL Parameters\r\n */\r\nexport class UrlParameters {\r\n\tpublic static CLCID: string = \"CLCID\";\r\n}\r\n\r\n/**\r\n * CSS classes\r\n */\r\nexport class Classes {\r\n\tpublic static AriaLiveTemplate: string = \"obf-AriaLiveTemplate\";\r\n\tpublic static CheckBox: string = \"obf-CheckBox\";\r\n\tpublic static FontTitle: string = \"obf-FontTitle\";\r\n\tpublic static CloseButton: string = \"obf-CloseButton\";\r\n\tpublic static FontSubtitle: string = \"obf-FontSubtitle\";\r\n\tpublic static FontText: string = \"obf-FontText\";\r\n\tpublic static FontSubText: string = \"obf-FontSubText\";\r\n\tpublic static FontSubSubText: string = \"obf-FontSubSubText\";\r\n\tpublic static Hidden: string = \"obf-Hidden\";\r\n\tpublic static Link: string = \"obf-Link\";\r\n\tpublic static MarginLeft60px: string = \"obf-MarginLeft60px\";\r\n\tpublic static MarginLeft180px: string = \"obf-MarginLeft180px\";\r\n\tpublic static NarrowLayout: string = \"obf-NarrowLayout\";\r\n\tpublic static PrivacyStatementLinkDiv: string = \"obf-PrivacyStatementLinkDiv\";\r\n\tpublic static PrivacyStatementLinkDivEudbUx: string = \"obf-PrivacyStatementLinkDivEudbUx\";\r\n\tpublic static Rtl: string = \"obf-Rtl\";\r\n\tpublic static Spinner: string = \"obf-Spinner\";\r\n\tpublic static SpinnerCircle: string = \"obf-SpinnerCircle\";\r\n\tpublic static SubmitButton: string = \"obf-SubmitButton\";\r\n\tpublic static CancelButton: string = \"obf-CancelButton\";\r\n\tpublic static TextInput: string = \"obf-TextInput\";\r\n\tpublic static Visible: string = \"obf-Visible\";\r\n\r\n\t// rating control\r\n\tpublic static Rating: string = \"obf-Rating\";\r\n\tpublic static RatingGraphic: string = \"obf-RatingGraphic\";\r\n\tpublic static RatingGraphicFilled: string = \"obf-RatingGraphic-Filled\";\r\n\r\n\t// choice group control\r\n\tpublic static ChoiceGroup: string = \"obf-ChoiceGroup\";\r\n\tpublic static ChoiceGroupIcon: string = \"obf-ChoiceGroupIcon\";\r\n\r\n\t// region BellyBand\r\n\r\n\tpublic static OverallAnchor: string = \"obf-OverallAnchor\";\r\n\tpublic static OverallAnchorActive: string = \"obf-OverallAnchorActive\";\r\n\tpublic static OverallImage: string = \"obf-OverallImage\";\r\n\tpublic static OverallText: string = \"obf-OverallText\";\r\n\tpublic static SingleLayout: string = \"obf-SingleLayout\";\r\n\tpublic static ShowRightBorder: string = \"obf-ShowRightBorder\";\r\n\tpublic static SlideLeft: string = \"obf-slideLeft\";\r\n\tpublic static TextAlignLeft: string = \"obf-TextAlignLeft\";\r\n\tpublic static FormContainer: string = \"obf-FormContainer\";\r\n\tpublic static FormWideContainer: string = \"obf-FormWideContainer\";\r\n\r\n\t// region ThanksPanel\r\n\tpublic static ThanksPanelTitle: string = \"obf-ThanksPanelTitle\";\r\n\tpublic static ThanksPanelMessage: string = \"obf-ThanksPanelMessage\";\r\n\r\n\t// form classes\r\n\tpublic static FormQuestionMiddleText: string = \"obf-FormQuestionMiddleText\";\r\n\tpublic static FormMiddleText: string = \"obf-FormMiddleText\";\r\n\tpublic static FormCategoriesDropdown: string = \"obf-FormCategoriesDropdown\";\r\n\tpublic static FormComment: string = \"obf-FormComment\";\r\n\tpublic static FormRatingContainer: string = \"obf-FormRatingContainer\";\r\n\tpublic static FormRatingLabel: string = \"obf-FormRatingLabel\";\r\n\tpublic static FormRating: string = \"obf-FormRating\";\r\n\tpublic static FormEmailContainer: string = \"obf-FormEmailContainer\";\r\n\tpublic static FormEmailInput: string = \"obf-FormEmailInput\";\r\n\tpublic static FormEmailTextBox: string = \"obf-FormEmailTextBox\";\r\n\tpublic static FormEmailCheckBox: string = \"obf-FormEmailCheckBox\";\r\n\tpublic static FormEmailLabel: string = \"obf-FormEmailLabel\";\r\n\tpublic static FormBottomContainer: string = \"obf-FormBottomContainer\";\r\n\tpublic static FormSubmitButtonContainer: string = \"obf-FormSubmitButtonContainer\";\r\n\tpublic static FormScreenshotContainer: string = \"obf-FormScreenshotContainer\";\r\n\tpublic static FormScreenshotLabel: string = \"obf-FormScreenshotLabel\";\r\n\tpublic static FormScreenshotCheckbox: string = \"obf-FormScreenshotCheckbox\";\r\n\tpublic static FormScreenshotPreview: string = \"obf-FormScreenshotPreview\";\r\n\tpublic static FormPrivacyConsentText: string = \"obf-TFormPrivacyConsentText\";\r\n\t// email textbox classes\r\n\tpublic static TFormEmailCheckbox: string = \"obf-TFormEmailCheckbox\";\r\n\tpublic static TFormEmailLabel: string = \"obf-TFormEmailLabel \";\r\n\r\n\t// email checkbox classes\r\n\tpublic static EmailCheckBoxLabel: string = \"obf-EmailCheckBoxLabel\";\r\n\r\n\t// endregion\r\n\r\n\t// region Toast\r\n\r\n\tpublic static Toast: string = \"obf-Toast\";\r\n\tpublic static ToastZoom: string = \"obf-ToastZoom\";\r\n\r\n\t// endregion\r\n}\r\n\r\n/**\r\n * HTML element ids\r\n */\r\nexport class IDs {\r\n\t// region BellyBand\r\n\tpublic static CloseButton: string = \"obf-CloseButton\";\r\n\tpublic static ColumnSeparatorDiv: string = \"obf-ColumnSeparatorDiv\";\r\n\tpublic static OverallAnchorsContainer: string = \"obf-OverallAnchorsContainer\";\r\n\tpublic static OverallFrownAnchor: string = \"obf-OverallFrownAnchor\";\r\n\tpublic static OverallFrownDiv: string = \"obf-OverallFrownDiv\";\r\n\tpublic static OverallFrownImage: string = \"obf-OverallFrownImage\";\r\n\tpublic static OverallFrownText: string = \"obf-OverallFrownText\";\r\n\tpublic static OverallSmileAnchor: string = \"obf-OverallSmileAnchor\";\r\n\tpublic static OverallSmileDiv: string = \"obf-OverallSmileDiv\";\r\n\tpublic static OverallSmileImage: string = \"obf-OverallSmileImage\";\r\n\tpublic static OverallSmileText: string = \"obf-OverallSmileText\";\r\n\tpublic static OverallIdeaAnchor: string = \"obf-OverallIdeaAnchor\";\r\n\tpublic static OverallIdeaDiv: string = \"obf-OverallIdeaDiv\";\r\n\tpublic static OverallIdeaImage: string = \"obf-OverallIdeaImage\";\r\n\tpublic static OverallIdeaText: string = \"obf-OverallIdeaText\";\r\n\tpublic static OverallBugAnchor: string = \"obf-OverallBugAnchor\";\r\n\tpublic static OverallBugDiv: string = \"obf-OverallBugDiv\";\r\n\tpublic static OverallBugImage: string = \"obf-OverallBugImage\";\r\n\tpublic static OverallBugText: string = \"obf-OverallBugText\";\r\n\tpublic static QuestionLeftText: string = \"obf-QuestionLeftText\";\r\n\tpublic static LeftFormContainer: string = \"obf-LeftFormContainer\";\r\n\tpublic static LeftPanelContainer: string = \"obf-LeftPanelContainer\";\r\n\tpublic static MainContainer: string = \"obf-MainContainer\";\r\n\tpublic static MainContentHolder: string = \"obf-MainContentHolder\";\r\n\tpublic static MiddleFormContainer: string = \"obf-MiddleFormContainer\";\r\n\tpublic static OverlayBackground: string = \"obf-OverlayBackground\";\r\n\tpublic static PrivacyStatementLink: string = \"obf-PrivacyStatementLink\";\r\n\tpublic static PrivacyConsentText: string = \"obf-PrivacyConsentText\";\r\n\tpublic static FirstTabbable: string = \"obf-FirstTabbable\";\r\n\tpublic static LastTabbable: string = \"obf-LastTabbable\";\r\n\tpublic static EmailCheckBox: string = \"obf-EmailCheckBox\";\r\n\r\n\t// Single form ids\r\n\tpublic static SingleFormContainer: string = \"obf-SingleFormContainer\";\r\n\tpublic static SingleFormQuestionMiddleText: string = \"obf-SingleFormQuestionMiddleText\";\r\n\tpublic static SingleFormCategoriesDropdown: string = \"obf-SingleFormCategoriesDropdown\";\r\n\tpublic static SingleFormComment: string = \"obf-SingleFormComment\";\r\n\tpublic static SingleFormEmailInput: string = \"obf-SingleFormEmailInput\";\r\n\tpublic static SingleFormRating: string = \"obf-SingleFormRating\";\r\n\tpublic static SingleFormScreenshotCheckbox: string = \"obf-SingleFormScreenshotCheckbox\";\r\n\tpublic static SingleFormScreenshotPreview: string = \"obf-SingleFormScreenshotPreview\";\r\n\tpublic static SingleFormSubmitButton: string = \"obf-SingleFormSubmitButton\";\r\n\tpublic static SingleFormCancelButton: string = \"obf-SingleFormCancelButton\";\r\n\tpublic static SingleFormSubmitButtonSpinner: string = \"obf-SingleFormSubmitButtonSpinner\";\r\n\r\n\t// Basic form ids\r\n\tpublic static BasicFormContainer: string = \"obf-BasicFormContainer\";\r\n\tpublic static BasicFormQuestionMiddleText: string = \"obf-BasicFormQuestionMiddleText\";\r\n\tpublic static BasicFormCategoriesDropdown: string = \"obf-BasicFormCategoriesDropdown\";\r\n\tpublic static BasicFormComment: string = \"obf-BasicFormComment\";\r\n\tpublic static BasicFormEmailInput: string = \"obf-BasicFormEmailInput\";\r\n\tpublic static BasicFormRating: string = \"obf-BasicFormRating\";\r\n\tpublic static BasicFormScreenshotCheckbox: string = \"obf-BasicFormScreenshotCheckbox\";\r\n\tpublic static BasicFormScreenshotPreview: string = \"obf-BasicFormScreenshotPreview\";\r\n\tpublic static BasicFormSubmitButton: string = \"obf-BasicFormSubmitButton\";\r\n\tpublic static BasicFormCancelButton: string = \"obf-BasicFormCancelButton\";\r\n\tpublic static BasicFormSubmitButtonSpinner: string = \"obf-BasicFormSubmitButtonSpinner\";\r\n\r\n\t// Thanks Panel ids\r\n\tpublic static ThanksPanelContainer: string = \"obf-ThanksPanelContainer\";\r\n\tpublic static ThanksPanelCloseButton: string = \"obf-ThanksPanelCloseButton\";\r\n\tpublic static ThanksPanelDiscussion: string = \"obf-ThanksPanelDiscussion\";\r\n\tpublic static ThanksPanelVerticalContainer: string = \"obf-ThanksPanelVerticalContainer\";\r\n\tpublic static ThanksPanelInnerContainer: string = \"obf-ThanksPanelInnerContainer\";\r\n\tpublic static ThanksPanelParagraph: string = \"obf-ThanksPanelParagraph\";\r\n\r\n\t// Feedback Portal Idea Id\r\n\tpublic static FeedbackPortalIdeaContainer: string = \"obf-FeedbackPortalIdeaContainer\";\r\n\tpublic static OverallFeedbackPortalIdeaAnchor: string = \"obf-OverallFeedbackPortalIdeaAnchor\";\r\n\r\n\t// endregion\r\n\r\n\t// region Toast\r\n\tpublic static ToastContainer: string = \"obf-ToastContainer\";\r\n\tpublic static ToastCancel: string = \"obf-ToastCancel\";\r\n\r\n\t// Prompt ids\r\n\tpublic static TPromptContainer: string = \"obf-TPromptContainer\";\r\n\tpublic static TPromptTitle: string = \"obf-TPromptTitle\";\r\n\tpublic static TPromptText: string = \"obf-TPromptText\";\r\n\r\n\t// Survey ids\r\n\tpublic static TFormContainer: string = \"obf-TFormContainer\";\r\n\tpublic static TFormTitle: string = \"obf-TFormTitle\";\r\n\tpublic static TFormRating: string = \"obf-TFormRating\";\r\n\tpublic static TFormRatingQuestion: string = \"obf-TFormRatingQuestion\";\r\n\tpublic static TFormCommentQuestion: string = \"obf-TFormCommentQuestion\";\r\n\tpublic static TFormComment: string = \"obf-TFormComment\";\r\n\tpublic static TFormEmailTextBox: string = \"obf-TFormEmailTextBox\";\r\n\tpublic static TFormEmailCheckBox: string = \"obf-TFormEmailCheckBox\";\r\n\tpublic static TFormEmailLabel: string = \"obf-TFormEmailLabel\";\r\n\tpublic static TFormSubmitButton: string = \"obf-TFormSubmitButton\";\r\n\tpublic static TFormCancelButton: string = \"obf-TFormCancelButton\";\r\n\tpublic static TFormSubmitButtonSpinner: string = \"obf-TFormSubmitButtonSpinner\";\r\n\tpublic static TFormSubmitButtonContainer: string = \"obf-TFormSubmitButtonContainer\";\r\n\r\n\t// endregion\r\n}\r\n\r\n/**\r\n * Keys\r\n */\r\nexport class Keys {\r\n\tpublic static Esc: number = 27;\r\n\tpublic static Tab: number = 9;\r\n}\r\n\r\n/**\r\n * HTML tags\r\n */\r\nexport class Tags {\r\n\tpublic static Anchor: string = \"A\";\r\n\tpublic static Button: string = \"button\";\r\n\tpublic static Defs: string = \"defs\";\r\n\tpublic static Div: string = \"div\";\r\n\tpublic static FieldSet: string = \"fieldset\";\r\n\tpublic static Form: string = \"form\";\r\n\tpublic static Img: string = \"img\";\r\n\tpublic static Input: string = \"input\";\r\n\tpublic static Label: string = \"label\";\r\n\tpublic static Legend: string = \"legend\";\r\n\tpublic static Option: string = \"option\";\r\n\tpublic static Polygon: string = \"polygon\";\r\n\tpublic static Select: string = \"select\";\r\n\tpublic static Span: string = \"span\";\r\n\tpublic static Svg: string = \"svg\";\r\n\tpublic static TextArea: string = \"textarea\";\r\n\tpublic static Use: string = \"use\";\r\n}\r\n\r\n/**\r\n * HTML roles\r\n */\r\nexport class Roles {\r\n\tpublic static Button: string = \"Button\";\r\n}\r\n\r\n/**\r\n * URLs\r\n */\r\nexport class Urls {\r\n\t/**\r\n\t * Link to the feedback Privacy Statement\r\n\t */\r\n\tpublic static PrivacyStatementLink: string = \"https://go.microsoft.com/fwlink/?LinkId=521839\";\r\n}\r\n\r\n/**\r\n * prompt constants\r\n */\r\nexport class PromptConstants {\r\n\tpublic static No: string = \"1\";\r\n\tpublic static Yes: string = \"2\";\r\n}\r\n","/**\r\n * Configuration.ts\r\n *\r\n * Module for logic relating to the sdk user configuration\r\n */\r\n\r\nimport * as Utils from \"./../Utils\";\r\nimport * as Constants from \"./../Constants\";\r\nimport * as Localization from \"./../Localization\";\r\nimport { ICategoryOptions } from \"./ICategoryOptions\";\r\nimport * as IInitOptions from \"./IInitOptions\";\r\nimport * as ILaunchOptions from \"./ILaunchOptions\";\r\nimport IUISurvey from \"./../FloodgateCore/UISurvey/IUISurvey\";\r\nimport { IOnSurveyActivatedCallback, ISurveyForm, ISurveyLauncher } from \"@ms-ofb/officefloodgatecore/dist/src/Api/Api\";\r\nimport { ISurveyParams } from \"@ms-ofb/officefloodgatecore/dist/src/Api/IOnSurveyActivatedCallback\";\r\nimport { Urls } from \"../UI/UiConstants\";\r\n\r\nexport * from \"./IInitOptions\";\r\nexport * from \"./ILaunchOptions\";\r\n\r\n/**\r\n * Class representing a configuration (user provided options)\r\n */\r\n\r\nexport class Configuration {\r\n\t/**\r\n\t * Validate category options, default \"show\" to false if CategoryOptions is not provided.\r\n\t * @param categories Category options\r\n\t * @returns {ICategoryOptions} the validated CategoryOptions\r\n\t */\r\n\tprivate static validateCategoryOptions(categories?: ICategoryOptions): ICategoryOptions {\r\n\t\tif (!categories) {\r\n\t\t\treturn { show: false };\r\n\t\t}\r\n\r\n\t\tUtils.expectBoolean(categories.show, \"categories.show\");\r\n\t\tif (categories.customCategories) {\r\n\t\t\tUtils.expectArray(categories.customCategories, \"categories.customCategories\");\r\n\r\n\t\t\tfor (let customCategory of categories.customCategories) {\r\n\t\t\t\tUtils.expectString(customCategory, \"custom category '\" + customCategory + \"'\");\r\n\t\t\t\tif (customCategory.length > 20) {\r\n\t\t\t\t\tthrow \"custom category '\" + customCategory + \"' too long, max 20 characters.\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn categories;\r\n\t}\r\n\r\n\tprivate commonInitOptions: IInitOptions.IInitOptionsCommon;\r\n\r\n\tprivate inAppFeedbackInitOptions: IInitOptions.IInitOptionsInAppFeedback;\r\n\tprivate inAppFeedbackLaunchOptions: ILaunchOptions.ILaunchOptionsInAppFeedback;\r\n\r\n\tprivate floodgateInitOptions: IInitOptions.IInitOptionsFloodgate;\r\n\tprivate floodgateSurvey: IUISurvey;\r\n\r\n\tprivate sdkSessionId: string;\r\n\r\n\tprivate eventSampling: IInitOptions.ISamplingInitOption;\r\n\r\n\tprivate commonPolicyAllowAADC: boolean;\r\n\r\n\tprivate feedbackSubmitted: boolean = false;\r\n\r\n\tpublic getFeedbackSubmitted(): boolean {\r\n\t\treturn this.feedbackSubmitted;\r\n\t}\r\n\r\n\tpublic setFeedbackSubmitted(value: boolean): void {\r\n\t\tthis.feedbackSubmitted = value;\r\n\t}\r\n\r\n\tpublic getCommonInitOptions(): IInitOptions.IInitOptionsCommon {\r\n\t\treturn this.commonInitOptions;\r\n\t}\r\n\r\n\tpublic getInAppFeedbackInitOptions(): IInitOptions.IInitOptionsInAppFeedback {\r\n\t\treturn this.inAppFeedbackInitOptions;\r\n\t}\r\n\r\n\tpublic getInAppFeedbackLaunchOptions(): ILaunchOptions.ILaunchOptionsInAppFeedback {\r\n\t\treturn this.inAppFeedbackLaunchOptions;\r\n\t}\r\n\r\n\tpublic getFloodgateInitOptions(): IInitOptions.IInitOptionsFloodgate {\r\n\t\treturn this.floodgateInitOptions;\r\n\t}\r\n\r\n\tpublic getFloodgateSurvey(): IUISurvey {\r\n\t\treturn this.floodgateSurvey;\r\n\t}\r\n\r\n\tpublic getSdkSessionId(): string {\r\n\t\tif (!this.sdkSessionId) {\r\n\t\t\tthis.sdkSessionId = Utils.guid();\r\n\t\t}\r\n\r\n\t\treturn this.sdkSessionId;\r\n\t}\r\n\r\n\tpublic getEventSampling(): IInitOptions.ISamplingInitOption {\r\n\t\treturn this.eventSampling;\r\n\t}\r\n\r\n\t/**\r\n\t * Set initOptions for common functionality.\r\n\t */\r\n\tpublic setCommonInitOptions(passedInitOptions: IInitOptions.IInitOptionsCommon) {\r\n\t\tUtils.expectObject(passedInitOptions, \"passedInitOptions\");\r\n\t\tlet initOptions: IInitOptions.IInitOptionsCommon = {\r\n\t\t\tappId: passedInitOptions.appId,\r\n\t\t\tapplicationGroup: passedInitOptions.applicationGroup || {},\r\n\t\t\tbuild: passedInitOptions.build,\r\n\t\t\tcid: passedInitOptions.cid,\r\n\t\t\tenvironment: passedInitOptions.environment,\r\n\t\t\tintlFilename: passedInitOptions.intlFilename,\r\n\t\t\tintlUrl: passedInitOptions.intlUrl,\r\n\t\t\twebSurfacesResourceBaseUrl: passedInitOptions.webSurfacesResourceBaseUrl,\r\n\t\t\tlocale: passedInitOptions.locale,\r\n\t\t\tonError: passedInitOptions.onError,\r\n\t\t\toriginalLocale: passedInitOptions.locale,\r\n\t\t\tprimaryColour: passedInitOptions.primaryColour,\r\n\t\t\tsecondaryColour: passedInitOptions.secondaryColour,\r\n\t\t\tsessionId: passedInitOptions.sessionId,\r\n\t\t\tstylesUrl: passedInitOptions.stylesUrl,\r\n\t\t\ttelemetryGroup: passedInitOptions.telemetryGroup || {},\r\n\t\t\tuserEmail: passedInitOptions.userEmail,\r\n\t\t\twebGroup: passedInitOptions.webGroup || {},\r\n\t\t\teventSampling: passedInitOptions.eventSampling,\r\n\t\t\tpetrolTimeout: passedInitOptions.petrolTimeout,\r\n\t\t\tisCommercialHost: passedInitOptions.isCommercialHost,\r\n\t\t\tcustomResourcesSetExternally: passedInitOptions.customResourcesSetExternally,\r\n\t\t\temailPolicyValue: passedInitOptions.emailPolicyValue,\r\n\t\t\tscreenshotPolicyValue: passedInitOptions.screenshotPolicyValue,\r\n\t\t\tageGroup: passedInitOptions.ageGroup,\r\n\t\t\tauthenticationType: passedInitOptions.authenticationType,\r\n\t\t\tapplicationSettings: passedInitOptions.applicationSettings,\r\n\t\t\twebSurfacesSettings: passedInitOptions.webSurfacesSettings,\r\n\t\t\tprivacyUrl: passedInitOptions.privacyUrl || Urls.PrivacyStatementLink,\r\n\t\t\tretentionDurationDays: passedInitOptions.retentionDurationDays,\r\n\t\t};\r\n\r\n\t\tUtils.expectNumber(initOptions.appId, \"initOptions.appId\");\r\n\t\tif (!(initOptions.appId % 1 === 0 && initOptions.appId > 0)) {\r\n\t\t\tthrow \"initOptions.appId is not a positive integer: \" + initOptions.appId;\r\n\t\t}\r\n\r\n\t\t// if defined, it should be a positive number\r\n\t\tif (initOptions.retentionDurationDays !== undefined) {\r\n\t\t\tUtils.expectNumber(initOptions.retentionDurationDays, \"initOptions.retentionDurationDays\");\r\n\t\t\tif (!(initOptions.retentionDurationDays % 1 === 0 && initOptions.retentionDurationDays > 0)) {\r\n\t\t\t\tthrow \"initOptions.retentionDurationDays is not a positive integer: \" + initOptions.retentionDurationDays;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// tslint:disable-next-line: no-bitwise\r\n\t\tconst expectedValues = IInitOptions.CustomResources.Strings | IInitOptions.CustomResources.Css;\r\n\r\n\t\tif (initOptions.customResourcesSetExternally === undefined) {\r\n\t\t\tinitOptions.customResourcesSetExternally = IInitOptions.CustomResources.None;\r\n\t\t\t// tslint:disable-next-line: no-bitwise\r\n\t\t} else if (typeof (initOptions.customResourcesSetExternally) !== \"number\" ||\r\n\t\t\t// tslint:disable-next-line: no-bitwise\r\n\t\t\t(initOptions.customResourcesSetExternally | expectedValues) !== expectedValues) {\r\n\t\t\tthrow \"initOptions.customResourcesSetExternally has an invalid value: \" + initOptions.customResourcesSetExternally;\r\n\t\t}\r\n\t\t// tslint:disable-next-line: no-bitwise\r\n\t\tif ((initOptions.customResourcesSetExternally & IInitOptions.CustomResources.Css) !== IInitOptions.CustomResources.Css) {\r\n\t\t\tUtils.expectString(initOptions.stylesUrl, \"initOptions.stylesUrl\");\r\n\t\t}\r\n\t\t// tslint:disable-next-line: no-bitwise\r\n\t\tif ((initOptions.customResourcesSetExternally & IInitOptions.CustomResources.Strings) !== IInitOptions.CustomResources.Strings) {\r\n\t\t\tUtils.expectString(initOptions.intlUrl, \"initOptions.intlUrl\");\r\n\t\t}\r\n\r\n\t\tif (initOptions.intlFilename !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.intlFilename, \"initOptions.intlFilename\");\r\n\t\t} else {\r\n\t\t\tinitOptions.intlFilename = \"officebrowserfeedbackstrings.js\";\r\n\t\t}\r\n\r\n\t\tUtils.expectNumber(initOptions.environment, \"initOptions.environment\");\r\n\t\tif (!(initOptions.environment === 1 || initOptions.environment === 0)) {\r\n\t\t\tthrow \"initOptions.environment has a bad value: \" + initOptions.environment;\r\n\t\t}\r\n\r\n\t\tif (initOptions.userEmail !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.userEmail, \"initOptions.userEmail\");\r\n\t\t} else {\r\n\t\t\tinitOptions.userEmail = \"\";\r\n\t\t}\r\n\r\n\t\tif (initOptions.sessionId !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.sessionId, \"initOptions.sessionId\");\r\n\t\t} else {\r\n\t\t\tinitOptions.sessionId = \"00000000-0000-0000-0000-000000000000\";\r\n\t\t}\r\n\r\n\t\t// Copy sessionID over to telemetryGroup\r\n\t\tinitOptions.telemetryGroup.processSessionId = initOptions.sessionId;\r\n\r\n\t\tif (initOptions.cid !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.cid, \"initOptions.cid\");\r\n\r\n\t\t\t// Copy cid over to extendedManifestData of applicationGroup\r\n\t\t\tinitOptions.applicationGroup.extendedManifestData = JSON.stringify({ cid: initOptions.cid });\r\n\t\t}\r\n\r\n\t\tif (initOptions.build !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.build, \"initOptions.build\");\r\n\t\t\tlet buildRegex = \"^[0-9]{1,9}(\\\\.[0-9]{1,9})?(\\\\.[0-9]{1,9})?(\\\\.[0-9]{1,9})?$\";\r\n\t\t\tif (!new RegExp(buildRegex).test(initOptions.build)) {\r\n\t\t\t\tinitOptions.build = \"0.0.0.0\";\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tinitOptions.build = \"0.0.0.0\";\r\n\t\t}\r\n\t\t// Copy build over to telemetryGroup\r\n\t\tinitOptions.telemetryGroup.officeBuild = initOptions.build;\r\n\r\n\t\tlet hexColourRegex = new RegExp(\"^#[0-9a-f]{3}([0-9a-f]{3})?$\", \"i\");\r\n\t\tif (initOptions.primaryColour !== undefined) {\r\n\t\t\tif (!hexColourRegex.test(initOptions.primaryColour)) {\r\n\t\t\t\tinitOptions.primaryColour = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (initOptions.secondaryColour !== undefined) {\r\n\t\t\tif (!hexColourRegex.test(initOptions.secondaryColour)) {\r\n\t\t\t\tinitOptions.secondaryColour = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (initOptions.locale !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.locale, \"initOptions.locale\");\r\n\t\t\tinitOptions.locale = Localization.validate(initOptions.locale);\r\n\t\t} else {\r\n\t\t\tinitOptions.locale = \"en\";\r\n\t\t}\r\n\r\n\t\tif (initOptions.onError === undefined) {\r\n\t\t\tinitOptions.onError = (err: string) => { return; };\r\n\t\t}\r\n\r\n\t\tif (initOptions.petrolTimeout !== undefined) {\r\n\t\t\tUtils.expectNumber(initOptions.petrolTimeout, \"initOptions.petrolTimeout\");\r\n\t\t}\r\n\r\n\t\tif (initOptions.authenticationType !== undefined) {\r\n\t\t\tUtils.expectEnum(initOptions.authenticationType, IInitOptions.AuthenticationType, \"initOptions.authenticationType\");\r\n\t\t} else {\r\n\t\t\tinitOptions.authenticationType = IInitOptions.AuthenticationType.Unauthenticated;\r\n\t\t}\r\n\r\n\t\t// For AAD or Unauthenticated, ageGroup value is unknown, so it's safe to only parse for MSA\r\n\t\tif (initOptions.ageGroup !== undefined) {\r\n\t\t\tUtils.expectEnum(initOptions.ageGroup, IInitOptions.AgeGroup, \"initOptions.ageGroup\");\r\n\t\t} else {\r\n\t\t\tinitOptions.ageGroup = IInitOptions.AgeGroup.Undefined;\r\n\t\t}\r\n\r\n\t\tthis.eventSampling = this.parseEventSamplingOption(initOptions.eventSampling);\r\n\r\n\t\tthis.commonInitOptions = initOptions;\r\n\t\tthis.commonPolicyAllowAADC = this.determineAADCPolicy(initOptions.authenticationType, initOptions.ageGroup);\r\n\r\n\t\tif (initOptions.isCommercialHost === undefined || initOptions.isCommercialHost == null) {\r\n\t\t\tinitOptions.isCommercialHost = false; // By default privacy consent is not shown. (From SDK's perspective)\r\n\t\t} else {\r\n\t\t\tUtils.expectBoolean(initOptions.isCommercialHost, \"initOptions.isCommercialHost\");\r\n\t\t}\r\n\r\n\t\tif (initOptions.emailPolicyValue === undefined) {\r\n\t\t\tinitOptions.emailPolicyValue = Constants.OCPSValues.NotConfigured;\r\n\t\t} else if (typeof (initOptions.emailPolicyValue) !== \"number\" ||\r\n\t\t\t(initOptions.emailPolicyValue !== Constants.OCPSValues.NotConfigured &&\r\n\t\t\t\tinitOptions.emailPolicyValue !== Constants.OCPSValues.Enabled &&\r\n\t\t\t\tinitOptions.emailPolicyValue !== Constants.OCPSValues.Disabled)) {\r\n\t\t\tthrow \"initOptions.emailPolicyValue has an invalid value: \" + initOptions.emailPolicyValue;\r\n\t\t}\r\n\r\n\t\tif (initOptions.screenshotPolicyValue === undefined) {\r\n\t\t\tinitOptions.screenshotPolicyValue = Constants.OCPSValues.NotConfigured;\r\n\t\t} else if (typeof (initOptions.screenshotPolicyValue) !== \"number\" ||\r\n\t\t\tinitOptions.screenshotPolicyValue !== Constants.OCPSValues.NotConfigured &&\r\n\t\t\tinitOptions.screenshotPolicyValue !== Constants.OCPSValues.Enabled &&\r\n\t\t\tinitOptions.screenshotPolicyValue !== Constants.OCPSValues.Disabled) {\r\n\t\t\tthrow \"initOptions.screenshotPolicyValue has an invalid value: \" + initOptions.screenshotPolicyValue;\r\n\t\t}\r\n\r\n\t\tif (initOptions.privacyUrl !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.privacyUrl, \"initOptions.privacyUrl\");\r\n\t\t} else {\r\n\t\t\tinitOptions.privacyUrl = Urls.PrivacyStatementLink;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Set init options for inAppFeedback\r\n\t */\r\n\tpublic setInAppFeedbackInitOptions(passedInitOptions: IInitOptions.IInitOptionsInAppFeedback) {\r\n\t\tUtils.expectObject(passedInitOptions, \"passedInitOptions\");\r\n\r\n\t\tlet initOptions: IInitOptions.IInitOptionsInAppFeedback = {\r\n\t\t\tbugForm: passedInitOptions.bugForm,\r\n\t\t\tonDismiss: passedInitOptions.onDismiss,\r\n\t\t\tscreenshot: passedInitOptions.screenshot,\r\n\t\t\tshowEmailAddress: passedInitOptions.showEmailAddress,\r\n\t\t\tuserEmail: passedInitOptions.userEmail,\r\n\t\t\ttransitionEnabled: passedInitOptions.transitionEnabled,\r\n\t\t\tisShowThanks: passedInitOptions.isShowThanks,\r\n\t\t\tsendFeedbackPolicyValue: passedInitOptions.sendFeedbackPolicyValue,\r\n\t\t\tfeedbackForumUrl: passedInitOptions.feedbackForumUrl !== undefined ?\r\n\t\t\t\tpassedInitOptions.feedbackForumUrl :\r\n\t\t\t\tundefined,\r\n\t\t\tmyFeedbackForumUrl: passedInitOptions.myFeedbackForumUrl !== undefined ?\r\n\t\t\t\tpassedInitOptions.myFeedbackForumUrl :\r\n\t\t\t\tundefined,\r\n\t\t};\r\n\r\n\t\tif (initOptions.onDismiss === undefined) {\r\n\t\t\tinitOptions.onDismiss = function (submitted: boolean) { return; };\r\n\t\t}\r\n\r\n\t\tif (initOptions.bugForm !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.bugForm, \"initOptions.bugForm\");\r\n\t\t} else {\r\n\t\t\tinitOptions.bugForm = false;\r\n\t\t}\r\n\r\n\t\tif (initOptions.userEmail !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.userEmail, \"initOptions.userEmail\");\r\n\t\t}\r\n\r\n\t\tif (initOptions.screenshot !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.screenshot, \"initOptions.screenshot\");\r\n\t\t} else {\r\n\t\t\tinitOptions.screenshot = true;\r\n\t\t}\r\n\r\n\t\tif (initOptions.showEmailAddress !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.showEmailAddress, \"initOptions.showEmailAddress\");\r\n\t\t} else {\r\n\t\t\tinitOptions.showEmailAddress = true;\r\n\t\t}\r\n\r\n\t\tif (initOptions.feedbackForumUrl !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.feedbackForumUrl, \"initOptions.feedbackForumUrl\");\r\n\t\t} else {\r\n\t\t\tinitOptions.feedbackForumUrl = undefined;\r\n\t\t}\r\n\r\n\t\tif (initOptions.isShowThanks !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.isShowThanks, \"initOptions.isShowThanks\");\r\n\t\t} else {\r\n\t\t\tinitOptions.isShowThanks = true;\r\n\t\t}\r\n\r\n\t\tif (initOptions.myFeedbackForumUrl !== undefined) {\r\n\t\t\tUtils.expectString(initOptions.myFeedbackForumUrl, \"initOptions.myFeedbackForumUrl\");\r\n\t\t} else {\r\n\t\t\tinitOptions.myFeedbackForumUrl = undefined;\r\n\t\t}\r\n\r\n\t\tif (initOptions.transitionEnabled === undefined) {\r\n\t\t\tinitOptions.transitionEnabled = true;\r\n\t\t}\r\n\r\n\t\tif (initOptions.sendFeedbackPolicyValue === undefined) {\r\n\t\t\tinitOptions.sendFeedbackPolicyValue = Constants.OCPSValues.NotConfigured;\r\n\t\t} else if (typeof (initOptions.sendFeedbackPolicyValue) !== \"number\" ||\r\n\t\t\t(initOptions.sendFeedbackPolicyValue !== Constants.OCPSValues.NotConfigured &&\r\n\t\t\t\tinitOptions.sendFeedbackPolicyValue !== Constants.OCPSValues.Enabled &&\r\n\t\t\t\tinitOptions.sendFeedbackPolicyValue !== Constants.OCPSValues.Disabled)) {\r\n\t\t\tthrow \"initOptions.sendFeedbackPolicyValue has an invalid value: \" + initOptions.sendFeedbackPolicyValue;\r\n\t\t}\r\n\r\n\t\tthis.inAppFeedbackInitOptions = initOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Set launch options for inAppFeedback\r\n\t */\r\n\tpublic setInAppFeedbackLaunchOptions(launchOptions?: ILaunchOptions.ILaunchOptionsInAppFeedback) {\r\n\t\tif (!this.commonInitOptions) {\r\n\t\t\tthrow \"commonInitOptions not set\";\r\n\t\t}\r\n\r\n\t\tif (!launchOptions) {\r\n\t\t\tlaunchOptions = {};\r\n\t\t}\r\n\r\n\t\t// Override any setting done in LaunchOptions for the metadataGroups\r\n\t\tthis.commonInitOptions.applicationGroup = Utils.overrideValues(launchOptions.applicationGroup,\r\n\t\t\tthis.commonInitOptions.applicationGroup);\r\n\t\tthis.commonInitOptions.telemetryGroup = Utils.overrideValues(launchOptions.telemetryGroup,\r\n\t\t\tthis.commonInitOptions.telemetryGroup);\r\n\t\tthis.commonInitOptions.webGroup = Utils.overrideValues(launchOptions.webGroup,\r\n\t\t\tthis.commonInitOptions.webGroup);\r\n\r\n\t\tlaunchOptions.categories = Configuration.validateCategoryOptions(launchOptions.categories);\r\n\r\n\t\tthis.inAppFeedbackLaunchOptions = launchOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Set init options for floodgate\r\n\t */\r\n\tpublic setFloodgateInitOptions(passedInitOptions: IInitOptions.IInitOptionsFloodgate) {\r\n\t\tUtils.expectObject(passedInitOptions, \"passedInitOptions\");\r\n\r\n\t\tlet initOptions: IInitOptions.IInitOptionsFloodgate = {\r\n\t\t\tautoDismiss: passedInitOptions.autoDismiss,\r\n\t\t\tcampaignDefinitions: passedInitOptions.campaignDefinitions,\r\n\t\t\tcampaignFlights: passedInitOptions.campaignFlights,\r\n\t\t\tcampaignQueryParameters: passedInitOptions.campaignQueryParameters,\r\n\t\t\tonDismiss: passedInitOptions.onDismiss,\r\n\t\t\tonSurveyActivatedCallback: passedInitOptions.onSurveyActivatedCallback,\r\n\t\t\tsettingStorageCallback: passedInitOptions.settingStorageCallback,\r\n\t\t\tuIStringGetter: passedInitOptions.uIStringGetter,\r\n\t\t\tauthTokenCallback: passedInitOptions.authTokenCallback,\r\n\t\t\tsurveyEnabled: passedInitOptions.surveyEnabled,\r\n\t\t\tshowEmailAddress: passedInitOptions.showEmailAddress,\r\n\t\t\taugLoopCallback: passedInitOptions.augLoopCallback,\r\n\t\t\tcustomerVoiceSurveyParams: passedInitOptions.customerVoiceSurveyParams,\r\n\t\t\tsurveyCSSParams: passedInitOptions.surveyCSSParams,\r\n\t\t\tgovernanceServiceEnabled: passedInitOptions.governanceServiceEnabled,\r\n\t\t\tgovernanceServiceConfig: passedInitOptions.governanceServiceConfig,\r\n\t\t\tpersonalizerEnabled: passedInitOptions.personalizerEnabled,\r\n\t\t\tmessagingServiceSettings: passedInitOptions.messagingServiceSettings,\r\n\t\t\tisPriorityEnabled: passedInitOptions.isPriorityEnabled,\r\n\t\t\tisEudbUxEnabled: passedInitOptions.isEudbUxEnabled,\r\n\t\t};\r\n\r\n\t\tif (initOptions.autoDismiss === undefined) {\r\n\t\t\tinitOptions.autoDismiss = Constants.AutoDismissValues.NoAutoDismiss;\r\n\t\t}\r\n\r\n\t\tif (initOptions.onDismiss === undefined) {\r\n\t\t\tinitOptions.onDismiss = (campaignId: string, submitted: boolean) => { return; };\r\n\t\t}\r\n\r\n\t\tif (initOptions.onSurveyActivatedCallback === undefined) {\r\n\t\t\tlet defaultOnSurveyActivatedCallback: IOnSurveyActivatedCallback = {\r\n\t\t\t\tonSurveyActivated(launcher: ISurveyLauncher, survey?: ISurveyForm, surveyParams?: ISurveyParams): void {\r\n\t\t\t\t\tlauncher.launch();\r\n\t\t\t\t},\r\n\t\t\t};\r\n\r\n\t\t\tinitOptions.onSurveyActivatedCallback = defaultOnSurveyActivatedCallback;\r\n\t\t}\r\n\r\n\t\tif (initOptions.uIStringGetter === undefined) {\r\n\t\t\tinitOptions.uIStringGetter = (str: string) => str; // By default return the string as is.\r\n\t\t}\r\n\r\n\t\tif (initOptions.surveyEnabled === undefined) {\r\n\t\t\tinitOptions.surveyEnabled = true; // By default surveys are enabled. (From SDK's perspective)\r\n\t\t} else {\r\n\t\t\tUtils.expectBoolean(initOptions.surveyEnabled, \"surveyEnabled\");\r\n\t\t}\r\n\r\n\t\tif (initOptions.showEmailAddress !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.showEmailAddress, \"initOptionsFloodgate.showEmailAddress\");\r\n\t\t} else {\r\n\t\t\tinitOptions.showEmailAddress = true; // By default email field and collection is enabled. (From SDK's perspective)\r\n\t\t}\r\n\r\n\t\tif (initOptions.governanceServiceEnabled !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.governanceServiceEnabled, \"initOptionsFloodgate.governanceServiceEnable\");\r\n\t\t} else {\r\n\t\t\tinitOptions.governanceServiceEnabled = false; // By default governanceServiceEnable is disabled\r\n\t\t}\r\n\r\n\t\tif (initOptions.governanceServiceEnabled) {\r\n\t\t\tinitOptions.governanceServiceConfig = this.parseGovernanceServiceConfig(\r\n\t\t\t\tinitOptions.governanceServiceConfig !== undefined ?\r\n\t\t\t\t\tinitOptions.governanceServiceConfig :\r\n\t\t\t\t\t{});\r\n\t\t}\r\n\r\n\t\tif (initOptions.customerVoiceSurveyParams === undefined) {\r\n\t\t\tinitOptions.customerVoiceSurveyParams = { cvFlights: \"\", isCVSurveyEnabled: true, productName: \"\", uiHost: \"\" };\r\n\t\t} else {\r\n\t\t\tif (Utils.isNOU(initOptions.customerVoiceSurveyParams.isCVSurveyEnabled)) {\r\n\t\t\t\tinitOptions.customerVoiceSurveyParams.isCVSurveyEnabled = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (initOptions.personalizerEnabled !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.personalizerEnabled, \"initOptionsFloodgate.personalizerEnabled\");\r\n\t\t} else {\r\n\t\t\tinitOptions.personalizerEnabled = false; // By default personalizerEnabled is disabled\r\n\t\t}\r\n\r\n\t\tif (initOptions.isPriorityEnabled !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.isPriorityEnabled, \"initOptionsFloodgate.isPriorityEnabled\");\r\n\t\t} else {\r\n\t\t\tinitOptions.isPriorityEnabled = true; // By default isPriorityEnabled is enabled\r\n\t\t}\r\n\r\n\t\tif (initOptions.isEudbUxEnabled !== undefined) {\r\n\t\t\tUtils.expectBoolean(initOptions.isEudbUxEnabled, \"initOptionsFloodgate.isEudbUxEnabled\");\r\n\t\t} else {\r\n\t\t\tinitOptions.isEudbUxEnabled = true; // By default isEudbUxEnabled is enabled\r\n\t\t}\r\n\r\n\t\tthis.floodgateInitOptions = initOptions;\r\n\t}\r\n\r\n\t/**\r\n\t * Set the floodgate survey\r\n\t */\r\n\tpublic setFloodgateSurvey(survey: IUISurvey): void {\r\n\t\tthis.floodgateSurvey = survey;\r\n\t}\r\n\r\n\t// Checks if the surveyEnabled policy is true or false.\r\n\tpublic checkIfSurveysEnabled(): boolean {\r\n\t\t// If no floodgateInitOptions defined, return true for surveyEnabled\r\n\t\tconst policyAllowSurvey = this.floodgateInitOptions ? this.floodgateInitOptions.surveyEnabled : true;\r\n\t\treturn policyAllowSurvey && this.commonPolicyAllowAADC;\r\n\t}\r\n\r\n\t/**\r\n\t * Return the flag the Feedback and Survey enabled by AADC.\r\n\t */\r\n\tpublic isFeedbackSurveyEnabledByAADC(): boolean {\r\n\t\treturn this.commonPolicyAllowAADC;\r\n\t}\r\n\r\n\tpublic getCVSurveyFlights(): string | null {\r\n\t\treturn this.floodgateInitOptions && this.floodgateInitOptions.customerVoiceSurveyParams ?\r\n\t\t\tthis.floodgateInitOptions.customerVoiceSurveyParams.cvFlights : \"\";\r\n\t}\r\n\r\n\tpublic isCVSurveyEnabled(): boolean {\r\n\t\treturn this.floodgateInitOptions && this.floodgateInitOptions.customerVoiceSurveyParams ?\r\n\t\t\tthis.floodgateInitOptions.customerVoiceSurveyParams.isCVSurveyEnabled : true;\r\n\t}\r\n\r\n\tpublic getProductName(): string {\r\n\t\treturn this.floodgateInitOptions && this.floodgateInitOptions.customerVoiceSurveyParams ?\r\n\t\t\tthis.floodgateInitOptions.customerVoiceSurveyParams.productName : \"\";\r\n\t}\r\n\r\n\tpublic getUIHost(): string {\r\n\t\treturn this.floodgateInitOptions && this.floodgateInitOptions.customerVoiceSurveyParams ?\r\n\t\t\tthis.floodgateInitOptions.customerVoiceSurveyParams.uiHost : \"\";\r\n\t}\r\n\r\n\tpublic getUIHostCVSurveyDispatcher(): string {\r\n\t\treturn this.floodgateInitOptions && this.floodgateInitOptions.customerVoiceSurveyParams ?\r\n\t\t\tthis.floodgateInitOptions.customerVoiceSurveyParams.uiHostCVSurveyDispatcher : \"\";\r\n\t}\r\n\r\n\tpublic getCSSPosition(): string {\r\n\t\treturn this.floodgateInitOptions &&\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams &&\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams.cssPosition ?\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams.cssPosition :\r\n\t\t\t\"\";\r\n\t}\r\n\r\n\tpublic getCSSZIndex(): string {\r\n\t\treturn this.floodgateInitOptions &&\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams &&\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams.cssZIndex ?\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams.cssZIndex :\r\n\t\t\t\"\";\r\n\t}\r\n\r\n\tpublic getCSSBottom(): string {\r\n\t\treturn this.floodgateInitOptions &&\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams &&\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams.cssBottom ?\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams.cssBottom :\r\n\t\t\t\"\";\r\n\t}\r\n\r\n\tpublic getCSSRight(): string {\r\n\t\treturn this.floodgateInitOptions &&\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams &&\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams.cssRight ?\r\n\t\t\tthis.floodgateInitOptions.surveyCSSParams.cssRight :\r\n\t\t\t\"\";\r\n\t}\r\n\r\n\tpublic getCSSVarString(): string {\r\n\t\tconst styleSubstrings: string[] = [];\r\n\t\tif (this.floodgateInitOptions && this.floodgateInitOptions.surveyCSSParams) {\r\n\t\t\tif (this.floodgateInitOptions.surveyCSSParams.cssPosition) {\r\n\t\t\t\tstyleSubstrings.push(\"--obf-position:\", this.floodgateInitOptions.surveyCSSParams.cssPosition, \";\");\r\n\t\t\t}\r\n\t\t\tif (this.floodgateInitOptions.surveyCSSParams.cssZIndex) {\r\n\t\t\t\tstyleSubstrings.push(\"--obf-zIndex:\", this.floodgateInitOptions.surveyCSSParams.cssZIndex, \";\");\r\n\t\t\t}\r\n\t\t\tif (this.floodgateInitOptions.surveyCSSParams.cssBottom) {\r\n\t\t\t\tstyleSubstrings.push(\"--obf-bottom:\", this.floodgateInitOptions.surveyCSSParams.cssBottom, \";\");\r\n\t\t\t}\r\n\t\t\tif (this.floodgateInitOptions.surveyCSSParams.cssRight) {\r\n\t\t\t\tstyleSubstrings.push(\"--obf-right:\", this.floodgateInitOptions.surveyCSSParams.cssRight, \";\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn styleSubstrings.join(\"\");\r\n\t}\r\n\r\n\t/**\r\n\t * Check AADC rule at once since Configuration cannot be set again.\r\n\t * So that we don't need to repeat the same process over again.\r\n\t */\r\n\tpublic determineAADCPolicy(authenticationType: IInitOptions.AuthenticationType,\r\n\t\tageGroup: IInitOptions.AgeGroup): boolean {\r\n\t\t// Return Based on authentication first\r\n\t\tif (authenticationType === IInitOptions.AuthenticationType.Unauthenticated ||\r\n\t\t\tauthenticationType === IInitOptions.AuthenticationType.AAD) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\t// Return based on AgeGroup\r\n\t\treturn ageGroup !== IInitOptions.AgeGroup.MinorWithParentalConsent &&\r\n\t\t\tageGroup !== IInitOptions.AgeGroup.MinorWithoutParentalConsent;\r\n\t}\r\n\r\n\t// Keep implementation in sync with %SRCROOT%\\privacy\\idconsentprovider\\IdentityBasedConsentGroupProvider.cpp\r\n\tpublic getUserConsentGroup(): IInitOptions.UserConsentGroup {\r\n\t\tconst authenticationType = this.commonInitOptions.authenticationType;\r\n\t\tif (authenticationType === IInitOptions.AuthenticationType.Unauthenticated ||\r\n\t\t\tauthenticationType === IInitOptions.AuthenticationType.AAD) {\r\n\t\t\treturn IInitOptions.UserConsentGroup.CanConsent;\r\n\t\t}\r\n\r\n\t\tconst ageGroup = this.commonInitOptions.ageGroup;\r\n\t\tswitch (ageGroup) {\r\n\t\t\tcase IInitOptions.AgeGroup.Undefined:\r\n\t\t\t\treturn IInitOptions.UserConsentGroup.CanConsent;\r\n\t\t\tcase IInitOptions.AgeGroup.MinorWithoutParentalConsent:\r\n\t\t\t\treturn IInitOptions.UserConsentGroup.CannotConsent;\r\n\t\t\tcase IInitOptions.AgeGroup.MinorWithParentalConsent:\r\n\t\t\t\treturn IInitOptions.UserConsentGroup.CannotConsent;\r\n\t\t\tcase IInitOptions.AgeGroup.Adult:\r\n\t\t\t\treturn IInitOptions.UserConsentGroup.CanConsent;\r\n\t\t\tcase IInitOptions.AgeGroup.NotAdult:\r\n\t\t\t\treturn IInitOptions.UserConsentGroup.PartialConsent;\r\n\t\t\tcase IInitOptions.AgeGroup.MinorNoParentalConsentRequired:\r\n\t\t\t\treturn IInitOptions.UserConsentGroup.CanConsent;\r\n\t\t\tdefault:\r\n\t\t\t\treturn IInitOptions.UserConsentGroup.CannotConsent;\r\n\t\t}\r\n\r\n\t\treturn IInitOptions.UserConsentGroup.CannotConsent;\r\n\t}\r\n\r\n\tprivate parseEventSamplingOption(samplingOptions: IInitOptions.ISamplingEvent[]): IInitOptions.ISamplingInitOption {\r\n\t\tlet eventInitSampling: IInitOptions.ISamplingInitOption = { event: {} };\r\n\t\tif (samplingOptions !== undefined) {\r\n\t\t\t// Iterating through init options\r\n\t\t\tfor (const index in samplingOptions) {\r\n\t\t\t\tif (samplingOptions.hasOwnProperty(index)) {\r\n\t\t\t\t\t// Check for correct Type\r\n\t\t\t\t\tswitch (samplingOptions[index].type) {\r\n\t\t\t\t\t\tcase \"Event\":\r\n\t\t\t\t\t\t\t// Parsing the Name and SampleRate\r\n\t\t\t\t\t\t\tlet sampleRate = samplingOptions[index].sampleRate;\r\n\t\t\t\t\t\t\tUtils.expectNumber(sampleRate, \"initOption.EventSampling.SampleRate\");\r\n\t\t\t\t\t\t\tUtils.expectString(samplingOptions[index].name, \"initOption.EventSampling.Name\");\r\n\t\t\t\t\t\t\t// check the range for sampling percentage\r\n\t\t\t\t\t\t\tif (sampleRate < 0 || sampleRate > 1) {\r\n\t\t\t\t\t\t\t\tthrow \"initOption.EventSampling.\" + samplingOptions[index].name + \".SampleRate is out of range\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t// finally, save the sampling event\r\n\t\t\t\t\t\t\teventInitSampling.event[samplingOptions[index].name] = sampleRate;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tthrow \"initOption.EventSampling.Type value is not recognized\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn eventInitSampling;\r\n\t}\r\n\r\n\tprivate parseGovernanceServiceConfig(config: IInitOptions.IGovernanceServiceConfig): IInitOptions.IGovernanceServiceConfig {\r\n\t\treturn {\r\n\t\t\t// by default, disable the trigger in failure\r\n\t\t\tforceServicelessSurveyDisplay: config.forceServicelessSurveyDisplay ?? false,\r\n\r\n\t\t\t// by default, no retry\r\n\t\t\tretry: config.retry ?? 1,\r\n\r\n\t\t\t// by default, timeout is 1000 miliseconds\r\n\t\t\ttimeout: config.timeout ?? 1000,\r\n\r\n\t\t\t// simple request is default to false\r\n\t\t\tsimpleRequestEnabled: config.simpleRequestEnabled ?? false,\r\n\t\t};\r\n\t}\r\n}\r\n\r\nlet configuration: Configuration = new Configuration();\r\n\r\n/**\r\n * Get the current configuration\r\n */\r\nexport function get(): Configuration {\r\n\treturn configuration;\r\n}\r\n\r\n/**\r\n * Validate feedbackType\r\n * @param feedbackType feedbackType\r\n * @returns {Constants.FeedbackType} the validated feedbackType\r\n */\r\nexport function validateFeedbackType(feedbackType: string): Constants.FeedbackType {\r\n\tUtils.expectString(feedbackType, \"feedbackType\");\r\n\r\n\tif (feedbackType === Constants.FeedbackType[Constants.FeedbackType.Smile]) {\r\n\t\treturn Constants.FeedbackType.Smile;\r\n\t} else if (feedbackType === Constants.FeedbackType[Constants.FeedbackType.Frown]) {\r\n\t\treturn Constants.FeedbackType.Frown;\r\n\t} else if (feedbackType === Constants.FeedbackType[Constants.FeedbackType.Bug]) {\r\n\t\treturn Constants.FeedbackType.Bug;\r\n\t} else {\r\n\t\tthrow \"feedbackType should be one of Smile, Frown or Bug\";\r\n\t}\r\n}\r\n","/**\r\n * Contracts enforced by OfficeEventSchema (OES)\r\n */\r\n\r\nexport class App {\r\n\tprivate static PLATFORM: string = \"Web\";\r\n\r\n\tprivate name: string;\r\n\tprivate version: string;\r\n\r\n\tpublic constructor(name: string, version: string) {\r\n\t\tif (!name) {\r\n\t\t\tthrow new Error(\"name must not be null\");\r\n\t\t}\r\n\t\tif (!version) {\r\n\t\t\tthrow new Error(\"version must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.name = name;\r\n\t\tthis.version = version;\r\n\t}\r\n\r\n\tpublic getName(): string {\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\tpublic getPlatform(): string {\r\n\t\treturn App.PLATFORM;\r\n\t}\r\n\r\n\tpublic getVersion(): string {\r\n\t\treturn this.version;\r\n\t}\r\n}\r\n\r\nexport class Session {\r\n\tprivate id: string;\r\n\r\n\tpublic constructor(id: string) {\r\n\t\tif (!id) {\r\n\t\t\tthrow new Error(\"id must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.id = id;\r\n\t}\r\n\r\n\tpublic getId(): string {\r\n\t\treturn this.id;\r\n\t}\r\n}\r\n\r\nexport class Host {\r\n\tprivate id: string;\r\n\tprivate locale: string;\r\n\tprivate sessionId: string;\r\n\tprivate version: string;\r\n\r\n\tconstructor(id: string, locale: string, sessionId: string, version: string) {\r\n\t\tthis.id = id;\r\n\t\tthis.locale = locale;\r\n\t\tthis.sessionId = sessionId;\r\n\t\tthis.version = version;\r\n\t}\r\n\r\n\tpublic getId(): string {\r\n\t\treturn this.id;\r\n\t}\r\n\r\n\tpublic getLocale(): string {\r\n\t\treturn this.locale;\r\n\t}\r\n\r\n\tpublic getSessionId(): string {\r\n\t\treturn this.sessionId;\r\n\t}\r\n\r\n\tpublic getVersion(): string {\r\n\t\treturn this.version;\r\n\t}\r\n}\r\n\r\nexport class Event {\r\n\t// Id is set to sessionIdsequence\r\n\tprivate static ID_DELIMITER = \".\";\r\n\tprivate static SOURCE: string = \"MsoThin\";\r\n\tprivate static SCHEMA_VERSION: number = 1;\r\n\r\n\tprivate name: string;\r\n\tprivate id: string;\r\n\tprivate sequence: number;\r\n\tprivate sampleRate: number;\r\n\r\n\tpublic constructor(name: string, sessionId: string, sequence: number, sampleRate: number) {\r\n\t\tif (!name) {\r\n\t\t\tthrow new Error(\"name must not be null\");\r\n\t\t}\r\n\t\tif (!sessionId) {\r\n\t\t\tthrow new Error(\"sessionId must not be null\");\r\n\t\t}\r\n\t\tif ((!sequence && sequence !== 0) || sequence < 0) {\r\n\t\t\tthrow new Error(\"sequence must not be negative\");\r\n\t\t}\r\n\r\n\t\tthis.name = name;\r\n\t\tthis.id = sessionId + Event.ID_DELIMITER + sequence;\r\n\t\tthis.sequence = sequence;\r\n\t\tthis.sampleRate = sampleRate;\r\n\t}\r\n\r\n\tpublic getName(): string {\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\tpublic getId(): string {\r\n\t\treturn this.id;\r\n\t}\r\n\r\n\tpublic getSource(): string {\r\n\t\treturn Event.SOURCE;\r\n\t}\r\n\r\n\tpublic getSchemaVersion(): number {\r\n\t\treturn Event.SCHEMA_VERSION;\r\n\t}\r\n\r\n\tpublic getSequence(): number {\r\n\t\treturn this.sequence;\r\n\t}\r\n\r\n\tpublic getSampleRate(): number {\r\n\t\treturn this.sampleRate;\r\n\t}\r\n}\r\n\r\nexport class Release {\r\n\tprivate audienceGroup: string;\r\n\r\n\tpublic constructor(audienceGroup: string) {\r\n\t\tthis.audienceGroup = audienceGroup;\r\n\t}\r\n\r\n\tpublic getAudienceGroup(): string {\r\n\t\treturn this.audienceGroup;\r\n\t}\r\n}\r\n\r\nexport class Browser {\r\n\tprivate name: string;\r\n\tprivate version: string;\r\n\r\n\tpublic constructor(name: string, version: string) {\r\n\t\tthis.name = name;\r\n\t\tthis.version = version;\r\n\t}\r\n\r\n\tpublic getName(): string {\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\tpublic getVersion(): string {\r\n\t\treturn this.version;\r\n\t}\r\n}\r\n\r\nexport class Device {\r\n\tprivate id: string;\r\n\r\n\tpublic constructor(id: string) {\r\n\t\tthis.id = id;\r\n\t}\r\n\r\n\tpublic getId(): string {\r\n\t\treturn this.id;\r\n\t}\r\n}\r\n\r\nexport class User {\r\n\tprivate primaryIdentityHash: string;\r\n\tprivate primaryIdentitySpace: string;\r\n\tprivate tenantId: string;\r\n\r\n\tpublic constructor(primaryIdentityHash: string, tenantId: string) {\r\n\t\tthis.tenantId = tenantId;\r\n\t\tthis.primaryIdentityHash = primaryIdentityHash ? primaryIdentityHash.trim() : primaryIdentityHash;\r\n\t\tthis.primaryIdentitySpace = this.generatePrimaryIdentitySpace();\r\n\t}\r\n\r\n\tpublic getTenantId(): string {\r\n\t\treturn this.tenantId;\r\n\t}\r\n\r\n\tpublic getPrimaryIdentityHash(): string {\r\n\t\treturn this.primaryIdentityHash;\r\n\t}\r\n\r\n\tpublic getPrimaryIdentitySpace(): string {\r\n\t\treturn this.primaryIdentitySpace;\r\n\t}\r\n\r\n\tprivate generatePrimaryIdentitySpace(): string {\r\n\t\tif (this.primaryIdentityHash) {\r\n\t\t\tif (this.primaryIdentityHash.startsWith(\"a:\")) {\r\n\t\t\t\treturn \"UserObjectId\";\r\n\t\t\t}\r\n\t\t\tif (this.primaryIdentityHash.startsWith(\"p:\")) {\r\n\t\t\t\treturn \"MsaPuid\";\r\n\t\t\t}\r\n\t\t\tif (this.primaryIdentityHash.startsWith(\"ap:\")) {\r\n\t\t\t\treturn \"OrgIdPuid\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\t}\r\n}\r\n","/**\r\n * Aria.ts\r\n *\r\n * Module for wrapper around Aria\r\n */\r\n\r\nlet aria: any = require(\"./../../thirdparty/aria-webjs-compact-sdk-1.2.2\");\r\n\r\nexport function AWT() { return aria.AWT; };\r\n","/**\r\n * An Aria-based logger\r\n */\r\n\r\nimport * as Aria from \"./Aria\";\r\nimport { App, Browser, Device, Event, Host, Release, Session, User } from \"./Contracts\";\r\nimport ITelemetryLogger from \"./ITelemetryLogger\";\r\n\r\nexport default class AriaTelemetryLogger implements ITelemetryLogger {\r\n\t// Event.name is set as namespaceeventName\r\n\tprivate static EVENT_NAME_DELIMITER: string = \"_\";\r\n\tprivate static CUSTOM_PROPERTIES_FIELD_PREFIX: string = \"Data.\";\r\n\r\n\tprivate static setApp(properties: any, app: App): void {\r\n\t\tproperties[\"App.Name\"] = app.getName();\r\n\t\tproperties[\"App.Platform\"] = app.getPlatform();\r\n\t\tproperties[\"App.Version\"] = app.getVersion();\r\n\t}\r\n\r\n\tprivate static setSession(properties: any, session: Session) {\r\n\t\tproperties[\"Session.Id\"] = session.getId();\r\n\t}\r\n\r\n\tprivate static setHost(properties: any, host: Host) {\r\n\t\tif (host) {\r\n\t\t\tproperties[\"Host.Id\"] = host.getId();\r\n\t\t\tproperties[\"Host.SessionId2\"] = host.getSessionId();\r\n\t\t\tproperties[\"Host.Version\"] = host.getVersion();\r\n\t\t\tproperties[\"Host.Locale\"] = host.getLocale();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static setEvent(properties: any, event: Event) {\r\n\t\tproperties[\"Event.Name\"] = event.getName();\r\n\t\tproperties[\"Event.Id\"] = event.getId();\r\n\t\tproperties[\"Event.Source\"] = event.getSource();\r\n\t\tproperties[\"Event.SchemaVersion\"] = event.getSchemaVersion();\r\n\t\tproperties[\"Event.Sequence\"] = event.getSequence();\r\n\t\tproperties[\"Event.SampleRate\"] = event.getSampleRate();\r\n\t}\r\n\r\n\tprivate static setRelease(properties: any, release: Release) {\r\n\t\tif (release) {\r\n\t\t\tproperties[\"Release.AudienceGroup\"] = release.getAudienceGroup();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static setBrowser(properties: any, browser: Browser) {\r\n\t\tif (browser) {\r\n\t\t\tproperties[\"Browser.Name\"] = browser.getName();\r\n\t\t\tproperties[\"Browser.Version\"] = browser.getVersion();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static setDevice(properties: any, device: Device) {\r\n\t\tif (device) {\r\n\t\t\tproperties[\"Device.Id\"] = device.getId();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static setUser(properties: any, user: User) {\r\n\t\tif (user) {\r\n\t\t\tproperties[\"User.PrimaryIdentityHash\"] = user.getPrimaryIdentityHash();\r\n\t\t\tproperties[\"User.PrimaryIdentitySpace\"] = user.getPrimaryIdentitySpace();\r\n\t\t\tproperties[\"User.TenantId\"] = user.getTenantId();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate oesApp: App;\r\n\tprivate oesSession: Session;\r\n\tprivate oesHost: Host;\r\n\tprivate oesRelease: Release;\r\n\tprivate oesBrowser: Browser;\r\n\tprivate oesDevice: Device;\r\n\tprivate oesUser: User;\r\n\r\n\tprivate namespace: string;\r\n\tprivate sequence: number;\r\n\r\n\tconstructor(tenantToken: string, namespace: string, app: App, session: Session, host?: Host, release?: Release,\r\n\t\tbrowser?: Browser, device?: Device, user?: User) {\r\n\r\n\t\tif (!tenantToken) {\r\n\t\t\tthrow new Error(\"tenantToken must not be null\");\r\n\t\t}\r\n\t\tif (!namespace) {\r\n\t\t\tthrow new Error(\"namespace must not be null\");\r\n\t\t}\r\n\t\tif (!app) {\r\n\t\t\tthrow new Error(\"app must not be null\");\r\n\t\t}\r\n\t\tif (!session) {\r\n\t\t\tthrow new Error(\"session must not be null\");\r\n\t\t}\r\n\r\n\t\tAria.AWT().initialize(tenantToken);\r\n\t\tthis.namespace = namespace;\r\n\t\tthis.oesApp = app;\r\n\t\tthis.oesSession = session;\r\n\t\tthis.oesHost = host;\r\n\t\tthis.oesRelease = release;\r\n\t\tthis.oesBrowser = browser;\r\n\t\tthis.oesDevice = device;\r\n\t\tthis.oesUser = user;\r\n\t\tthis.sequence = 1; // Sequence starts at 1 not 0\r\n\t}\r\n\r\n\tpublic logEvent(eventName: string, customProperties?: { [customField: string]: any }, sampleRate: number = 1) {\r\n\t\tif (!eventName) {\r\n\t\t\tthrow new Error(\"eventName must not be null\");\r\n\t\t}\r\n\r\n\t\tlet oesEvent: Event = new Event(\r\n\t\t\tthis.namespace + AriaTelemetryLogger.EVENT_NAME_DELIMITER + eventName,\r\n\t\t\tthis.oesSession.getId(),\r\n\t\t\tthis.sequence,\r\n\t\t\tsampleRate\r\n\t\t);\r\n\r\n\t\tlet ariaProperties: any = {};\r\n\r\n\t\tif (customProperties != null) {\r\n\t\t\tfor (const key in customProperties) {\r\n\t\t\t\tif (customProperties.hasOwnProperty(key)) {\r\n\t\t\t\t\tariaProperties[AriaTelemetryLogger.CUSTOM_PROPERTIES_FIELD_PREFIX + key] = customProperties[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tAriaTelemetryLogger.setApp(ariaProperties, this.oesApp);\r\n\t\tAriaTelemetryLogger.setSession(ariaProperties, this.oesSession);\r\n\t\tAriaTelemetryLogger.setHost(ariaProperties, this.oesHost);\r\n\t\tAriaTelemetryLogger.setRelease(ariaProperties, this.oesRelease);\r\n\t\tAriaTelemetryLogger.setEvent(ariaProperties, oesEvent);\r\n\t\tAriaTelemetryLogger.setBrowser(ariaProperties, this.oesBrowser);\r\n\t\tAriaTelemetryLogger.setDevice(ariaProperties, this.oesDevice);\r\n\t\tAriaTelemetryLogger.setUser(ariaProperties, this.oesUser);\r\n\r\n\t\tAria.AWT().logEvent({\r\n\t\t\tname: oesEvent.getName(),\r\n\t\t\tproperties: ariaProperties,\r\n\t\t});\r\n\r\n\t\tthis.sequence++;\r\n\t}\r\n}\r\n","import { IInitOptionsCommon, ISamplingInitOption } from \"./../Configuration/IInitOptions\";\r\nimport { IEventId, ICustomProperties } from \"./Constants\";\r\nimport { Environment } from \"./../Constants\";\r\nimport { App, Browser, Device, Host, Release, Session, User } from \"./Telemetry/Contracts\";\r\nimport * as Utils from \"./../Utils\";\r\nimport ITelemetryLogger from \"./Telemetry/ITelemetryLogger\";\r\nimport TelemetryLoggerFactory from \"./Telemetry/TelemetryLoggerFactory\";\r\nimport FloodgateStorageProvider from \"../FloodgateCore/FloodgateStorageProvider\";\r\nimport { FileType } from \"@ms-ofb/officefloodgatecore/dist/src/Api/IFloodgateStorageProvider\";\r\n\r\nexport { ICustomProperties, IEventId, EventIds } from \"./Constants\";\r\nimport { getDynamicSetting, SettingKey } from \"../Configuration/DynamicConfiguration\";\r\n\r\nconst { isNOU } = Utils;\r\nconst NAMESPACE: string = \"Office_Feedback\";\r\n\r\nlet logger: ILogger;\r\nlet env: Environment;\r\n\r\n/**\r\n * Initialize the logging module\r\n * @param initOptionsCommon object contains common init options\r\n * @param appName app name\r\n * @param appVersion app version\r\n * @param logSessionId local SDK session id\r\n */\r\nexport function initialize(initOptionsCommon: IInitOptionsCommon, appName: string, appVersion: string,\r\n\tlogSessionId: string, samplingOption: ISamplingInitOption): void {\r\n\r\n\tconst telemetryGroup = initOptionsCommon.telemetryGroup ? initOptionsCommon.telemetryGroup : {};\r\n\tconst webGroup = initOptionsCommon.webGroup ? initOptionsCommon.webGroup : {};\r\n\r\n\tlogger = new Logger(\r\n\t\tTelemetryLoggerFactory.create(\r\n\t\t\tTokenManager.getTenantToken(initOptionsCommon.environment),\r\n\t\t\tNAMESPACE,\r\n\t\t\tnew App(appName, appVersion),\r\n\t\t\tnew Session(logSessionId),\r\n\t\t\tnew Host(initOptionsCommon.appId.toString(), initOptionsCommon.originalLocale, initOptionsCommon.sessionId, initOptionsCommon.build),\r\n\t\t\tnew Release(telemetryGroup.audienceGroup),\r\n\t\t\tnew Browser(webGroup.browser, webGroup.browserVersion),\r\n\t\t\tnew Device(telemetryGroup.deviceId),\r\n\t\t\tnew User(telemetryGroup.loggableUserId ? telemetryGroup.loggableUserId : initOptionsCommon.cid, telemetryGroup.tenantId)\r\n\t\t),\r\n\t\tsamplingOption,\r\n\t\tinitOptionsCommon\r\n\t);\r\n\r\n\tenv = initOptionsCommon.environment;\r\n}\r\n\r\n/**\r\n * Get the logger object\r\n */\r\nexport function getLogger(): ILogger {\r\n\treturn logger;\r\n}\r\n\r\n/**\r\n * Interface for a logger\r\n */\r\nexport interface ILogger {\r\n\tlogEvent(eventId: IEventId, logSeverity: LogLevel, customProperties?: ICustomProperties, internalSampleRate?: number): void;\r\n\tlogLocal?(logSeverity: LogLevel, ...others: any[]): void;\r\n}\r\n\r\n/**\r\n * Log level settings\r\n */\r\nexport const enum LogLevel {\r\n\tNone,\r\n\tCritical,\r\n\tError,\r\n\tInfo\r\n}\r\n\r\ninterface ILogSettings {\r\n\tconsoleLog?: boolean;\r\n\tisEnabled?: boolean;\r\n\tlogLevel?: LogLevel;\r\n};\r\n\r\ninterface ILogLevelSettings {\r\n\tcontent: ILogSettings;\r\n};\r\n\r\n/**\r\n * Class representing a logger for the feedback SDK\r\n */\r\nexport class Logger implements ILogger {\r\n\tprivate static EVENT_NAME: string = \"SDK\";\r\n\tprivate static EVENT_ID: string = \"EventId\";\r\n\tprivate static DEFAULT_SAMPLE_RATE: number = 1;\r\n\r\n\tprivate telemetryLogger: ITelemetryLogger;\r\n\tprivate logLevel: LogLevel;\r\n\tprivate isConsoleLogEnabled: boolean;\r\n\tprivate dynamicLogSettings: ILogLevelSettings;\r\n\r\n\tprivate eventSampling: ISamplingInitOption;\r\n\tprivate initOptionsCommon: IInitOptionsCommon;\r\n\r\n\tprivate readonly SAMPLING_RESULT = Math.random();\r\n\r\n\tconstructor(telemetryLogger: ITelemetryLogger, samplingOptions: ISamplingInitOption, initOptionsCommon?: IInitOptionsCommon) {\r\n\t\tif (!telemetryLogger) {\r\n\t\t\tthrow new Error(\"telemetryLogger must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.telemetryLogger = telemetryLogger;\r\n\t\tthis.eventSampling = samplingOptions;\r\n\t\tthis.initOptionsCommon = initOptionsCommon;\r\n\t}\r\n\r\n\t/**\r\n\t * Log an event\r\n\t * @param eventId event Id\r\n\t * @param logSeverity the log level severity for the message\r\n\t * @param customProperties custom properties to add to the log\r\n\t * @param internalSampleRate sample rate for this event in decimal (example: 0.05 for 5%). (Does not override host set sampleRate)\r\n\t */\r\n\tpublic logEvent(eventId: IEventId, logSeverity: LogLevel, customProperties?: ICustomProperties, internalSampleRate?: number): boolean {\r\n\t\tif (!eventId) {\r\n\t\t\tthrow new Error(\"eventId must not be null\");\r\n\t\t}\r\n\r\n\t\tlet sampleRate: number;\r\n\r\n\t\t// Host set sample rate has precedence over internalSampleRate.\r\n\t\tif (this.isEventSampled(eventId.name)) {\r\n\t\t\tsampleRate = this.getEventSamplingRate(eventId.name);\r\n\t\t} else if (internalSampleRate !== undefined) {\r\n\t\t\tsampleRate = internalSampleRate;\r\n\t\t}\r\n\r\n\t\tif (isNOU(logSeverity) || logSeverity === LogLevel.None) {\r\n\t\t\tif (env === Environment.Production) {\r\n\t\t\t\tconst errorMessage = \"logSeverity must not be null or none\";\r\n\t\t\t\tif (this.isConsoleLogEnabled && console) {\r\n\t\t\t\t\t// tslint:disable:no-console\r\n\t\t\t\t\tconsole.log(\"Floodgate event: \", Logger.EVENT_NAME, errorMessage);\r\n\t\t\t\t}\r\n\t\t\t\tthis.telemetryLogger.logEvent(Logger.EVENT_NAME, { ErrorMessage: errorMessage }, sampleRate);\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tcustomProperties = customProperties || {};\r\n\t\t( customProperties)[Logger.EVENT_ID] = eventId.name;\r\n\r\n\t\tif (this.isLoggingEnabled(logSeverity, sampleRate) || this.isEventTelemetryEnabled(eventId.name)) {\r\n\t\t\tsampleRate = sampleRate ?? Logger.DEFAULT_SAMPLE_RATE;\r\n\t\t\tthis.telemetryLogger.logEvent(Logger.EVENT_NAME, customProperties, sampleRate);\r\n\t\t}\r\n\r\n\t\tif (this.isConsoleLogEnabled && console) {\r\n\t\t\t// tslint:disable:no-console\r\n\t\t\tconsole.log(\"Floodgate event: \", Logger.EVENT_NAME, logSeverity, customProperties);\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic logLocal?(logSeverity: LogLevel, ...others: any[]): void {\r\n\t\tif (this.isLoggingEnabled(logSeverity) && this.isConsoleLogEnabled && console) {\r\n\t\t\t// tslint:disable:no-console\r\n\t\t\tconsole.log(\"LPP FG: \", logSeverity, others);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getUserSamplingRate(): number {\r\n\t\treturn this.SAMPLING_RESULT;\r\n\t}\r\n\r\n\tpublic isEventTelemetryEnabled(eventName: string): boolean {\r\n\t\ttry {\r\n\t\t\tif (!this.dynamicLogSettings) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tconst appId = this.initOptionsCommon?.appId?.toString();\r\n\t\t\tconst locale = this.initOptionsCommon?.originalLocale?.toLowerCase();\r\n\t\t\tconst settingName = `content_${eventName}`;\r\n\r\n\t\t\t// try settings from more specific to generic order\r\n\t\t\tconst overrideSettings =\r\n\t\t\t\tthis.dynamicLogSettings[`${settingName}_${appId}_${locale}` as keyof ILogLevelSettings] ||\r\n\t\t\t\tthis.dynamicLogSettings[`${settingName}_${appId}` as keyof ILogLevelSettings] ||\r\n\t\t\t\tthis.dynamicLogSettings[`${settingName}_${locale}` as keyof ILogLevelSettings] ||\r\n\t\t\t\tthis.dynamicLogSettings[settingName as keyof ILogLevelSettings];\r\n\r\n\t\t\treturn overrideSettings?.isEnabled;\r\n\t\t} catch (e) {\r\n\t\t\tif (this.isConsoleLogEnabled) {\r\n\t\t\t\t// tslint:disable:no-console\r\n\t\t\t\tconsole.log(\"FG: Error checking for dynamic log settings: \", e);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * This method enables logging if either the log severity of the event is less than or equal to the current log level set or if the event\r\n\t * has an inputSampleRate and the current log level is not set to None, and if the sample rate is greater than 0 and the random generated\r\n\t * number is within the sample rate. \r\n\t * \r\n\t * For example, if the log severity of the event is LogLevel.Error and the current log level is set as LogLevel.Critical, then\r\n\t * isLoggingEnabled will return false due to the condition LogLevel.Error <= LogLevel.Critical unless the event has an inputSampleRate. \r\n\t * If the event meets either of these conditions, then a random number will be generated. If the random generated number is less than\r\n\t * the sample rate and the sample rate itself is not full blocking (0 value), the event will be logged. \r\n\t * \r\n\t * If no current log level is set, then log level is set as LogLevel.Error by default. In this case, all events with critical log\r\n\t * severity, events with error log severity, and events with a given sample rate get logged. If the current log level is None, no\r\n\t * events are logged.\r\n\t * \r\n\t * @param inputLogLevel the log severity of the event. This follows the order defined in the LogLevel enum (None < Critical < Error < Info)\r\n\t * @param inputSampleRate the percentage of users allowed to send the event back (given either through the host or the internalSampleRate)\r\n\t */\r\n\tprivate isLoggingEnabled(inputLogLevel: LogLevel, inputSampleRate?: number): boolean {\r\n\t\tif (isNOU(this.logLevel)) {\r\n\t\t\tconst currentLogLevel = this.getCurrentLogLevel();\r\n\t\t\tthis.logLevel = isNOU(currentLogLevel) ? LogLevel.Error : currentLogLevel;\r\n\t\t}\r\n\r\n\t\tconst sampleRate = inputSampleRate ?? Logger.DEFAULT_SAMPLE_RATE;\r\n\r\n\t\treturn ((inputLogLevel <= this.logLevel || (this.logLevel !== LogLevel.None && inputSampleRate !== undefined))\r\n\t\t\t&& this.SAMPLING_RESULT <= sampleRate && sampleRate !== 0);\r\n\t}\r\n\r\n\t/**\r\n\t * This method returns the current log level if it is set in either url query parameters or floodgate local storage.\r\n\t * Following table summarizes whether the log event calls with a log severity will log the events or not according\r\n\t * to the current log level set. For example, the first row in the table demonstrates that when the current log level\r\n\t * enabled is critical, then the log event will log the events only if the log severity is critical.\r\n\t *\r\n\t * Current Log Level Enabled | LogSeverity: Critical\t| LogSeverity: Error\t| LogSeverity: Info\r\n\t * --------------------------------------------------------------------------------------------\r\n\t * Critical Enabled\t\t\t | yes \t\t\t\t| no \t\t\t \t| no\r\n\t * Error Enabled \t\t | yes \t\t\t\t| yes \t\t\t \t| no\r\n\t * Info Enabled \t\t | yes \t\t\t\t| yes \t\t\t \t| yes\r\n\t * None Enabled \t\t | no \t\t\t\t| no \t\t\t \t| no\r\n\t *\r\n\t * Console logging will be enabled when the current log level is set through the url query parameters or\r\n\t * when the url query parameter \"obfconsolelog\" is explicitly set to true.\r\n\t */\r\n\tprivate getCurrentLogLevel(): LogLevel {\r\n\t\ttry {\r\n\t\t\t// Check if console log is enabled in local browser session with query parameter overrides\r\n\t\t\tconst urlParams = typeof URLSearchParams !== \"undefined\" && new URLSearchParams(window.location.search) || undefined;\r\n\t\t\tlet consoleLogParam: string | boolean = urlParams && urlParams.get(\"obfconsolelog\");\r\n\t\t\tif (!consoleLogParam) {\r\n\t\t\t\t// for getting iframe host url - eg: WAC\r\n\t\t\t\tconst documentReferrer = typeof document !== \"undefined\" && document.referrer;\r\n\t\t\t\tconsoleLogParam = documentReferrer && documentReferrer.indexOf(\"obfconsolelog\") !== -1;\r\n\t\t\t}\r\n\r\n\t\t\tif (consoleLogParam) {\r\n\t\t\t\tthis.isConsoleLogEnabled = true;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if log level is set in local browser session with query parameter overrides\r\n\t\t\tconst logLevelParam = urlParams && urlParams.get(\"obfloglevel\");\r\n\t\t\tif (!isNOU(logLevelParam)) {\r\n\t\t\t\tthis.isConsoleLogEnabled = true;\r\n\t\t\t\treturn parseInt(logLevelParam, 10);\r\n\t\t\t}\r\n\r\n\t\t\t// Check if log level is set in floodgate local storage (manually or with remotely fetched settings)\r\n\t\t\tif (FloodgateStorageProvider.isStorageAvailable()) {\r\n\t\t\t\tconst floodgateStorageProvider: FloodgateStorageProvider = new FloodgateStorageProvider();\r\n\t\t\t\tlet tempStorageItem: string = floodgateStorageProvider.read(FileType.LogLevelSettings);\r\n\t\t\t\tif (!tempStorageItem) {\r\n\t\t\t\t\ttempStorageItem = getDynamicSetting(SettingKey.logLevelSettings, \"\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst settingsObj = tempStorageItem && this.parseObject(tempStorageItem);\r\n\t\t\t\tif (settingsObj) {\r\n\t\t\t\t\tthis.dynamicLogSettings = settingsObj;\r\n\t\t\t\t\tlet logSettings = settingsObj.content as ILogSettings;\r\n\r\n\t\t\t\t\tif (this.initOptionsCommon) {\r\n\t\t\t\t\t\tconst appId = this.initOptionsCommon.appId && this.initOptionsCommon.appId.toString();\r\n\t\t\t\t\t\tconst locale = this.initOptionsCommon.originalLocale && this.initOptionsCommon.originalLocale.toLowerCase();\r\n\r\n\t\t\t\t\t\t// log settings from more specific to generic order\r\n\t\t\t\t\t\tlogSettings = settingsObj[`content_${appId}_${locale}`] ||\r\n\t\t\t\t\t\t\t\t\t\tsettingsObj[`content_${appId}`] ||\r\n\t\t\t\t\t\t\t\t\t\tsettingsObj[`content_${locale}`] ||\r\n\t\t\t\t\t\t\t\t\t\tsettingsObj[`content`];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (logSettings) {\r\n\t\t\t\t\t\tif (logSettings.consoleLog) {\r\n\t\t\t\t\t\t\tthis.isConsoleLogEnabled = true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn logSettings.logLevel;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tif (this.isConsoleLogEnabled) {\r\n\t\t\t\t// tslint:disable:no-console\r\n\t\t\t\tconsole.log(\"Error while getting the current log level: \", e);\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate parseObject(tempItem: string): any {\r\n\t\ttry {\r\n\t\t\treturn JSON.parse(tempItem);\r\n\t\t} catch (e) {\r\n\t\t\tif (this.isConsoleLogEnabled) {\r\n\t\t\t\t// tslint:disable:no-console\r\n\t\t\t\tconsole.log(\"Error while parsing the json string for log level: \", e);\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getEventSamplingRate(eventId: string): number {\r\n\t\tlet sampleRate = 1;\r\n\t\tif (this.eventSampling.event) {\r\n\t\t\t// If the event is init with sample rate\r\n\t\t\t// check the sampling result against the sample rate\r\n\t\t\tif (eventId in this.eventSampling.event) {\r\n\t\t\t\tsampleRate = this.eventSampling.event[eventId];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn sampleRate;\r\n\t}\r\n\r\n\tprivate isEventSampled(eventId: string): boolean {\r\n\t\tif (this.eventSampling.event) {\r\n\t\t\tif (eventId in this.eventSampling.event) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\nclass TokenManager {\r\n\tpublic static getTenantToken(environment: Environment): string {\r\n\t\tif (environment === Environment.Production) {\r\n\t\t\treturn TokenManager.TENANT_TOKEN_PRODUCTION;\r\n\t\t} else {\r\n\t\t\treturn TokenManager.TENANT_TOKEN_PRE_PRODUCTION;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static TENANT_TOKEN_PRODUCTION: string =\r\n\t\"d79e824386c4441cb8c1d4ae15690526-bd443309-5494-444a-aba9-0af9eef99f84-7360\"; // \"Office Feedback\" Prod Aria tenant\r\n\tprivate static TENANT_TOKEN_PRE_PRODUCTION: string =\r\n\t\"2bf6a2ffddca4a80a892a0b182132961-625cb102-8b0c-480e-af53-92e48695d08d-7736\"; // \"Office Feedback\" Sandbox Aria tenant\r\n}\r\n","/**\r\n * Factory to return ITelemetryLogger objects\r\n */\r\n\r\nimport { App, Browser, Device, Host, Release, Session, User } from \"./Contracts\";\r\nimport ITelemetryLogger from \"./ITelemetryLogger\";\r\nimport AriaTelemetryLogger from \"./AriaTelemetryLogger\";\r\n\r\nexport default class TelemetryLoggerFactory {\r\n\tpublic static create(tenantToken: string, namespace: string, app: App, session: Session,\r\n\t\thost: Host, release: Release, browser: Browser, device: Device, user: User): ITelemetryLogger {\r\n\t\t\treturn new AriaTelemetryLogger(tenantToken, namespace, app, session, host, release, browser, device, user);\r\n\t\t}\r\n}\r\n","/**\r\n * Constants.ts\r\n *\r\n * Module to hold logging-related constants\r\n */\r\n\r\nexport interface ICustomProperties {\r\n\tCampaignId?: string;\r\n\tCorrelationId?: string;\r\n\tCount?: number;\r\n\tData?: string;\r\n\tErrorMessage?: string;\r\n\tFeedbackType?: number;\r\n\tPanelType?: number;\r\n\tFileName?: string;\r\n\tFlights?: string;\r\n\tHttpStatusCode?: number;\r\n\tHttpStatusText?: string;\r\n\tIsBugEnabled?: boolean;\r\n\tIsDiagnosticsIncluded?: boolean;\r\n\tIsEmailIncluded?: boolean;\r\n\tIsEmailPolicyEnabled?: boolean;\r\n\tIsIdeaEnabled?: boolean;\r\n\tIsScreenshotIncluded?: boolean;\r\n\tMessage?: string;\r\n\tSessionId?: string;\r\n\tSurveyId?: string;\r\n\tSurveyType?: number;\r\n\tTimeMilliseconds?: number;\r\n\tType?: string;\r\n\tClientFeedbackId?: string;\r\n\tPromptAutoDismiss?: string;\r\n\tAdditionalSurveyInfo?: string;\r\n\tSurveyActivityInfo?: string;\r\n\tPersonalizerUserAction?: number;\r\n\tPersonalizerEventId?: string;\r\n\tGovernanceRequestBody?: string;\r\n\tGovernanceResponseText?: string;\r\n\tActualSetAutoDismissValue?: number;\r\n\tCVFormId?: string;\r\n}\r\n\r\nexport interface IEventId {\r\n\tname: string;\r\n}\r\n\r\nexport class EventIds {\r\n\tpublic static InApp = class {\r\n\t\tpublic static UI = class {\r\n\t\t\tpublic static Picker = class {\r\n\t\t\t\tpublic static Shown = class {\r\n\t\t\t\t\tpublic static VALUE: IEventId = { name: \"InApp_UI_Picker_Shown\" };\r\n\t\t\t\t};\r\n\t\t\t};\r\n\r\n\t\t\tpublic static Form = class {\r\n\t\t\t\tpublic static Shown = class {\r\n\t\t\t\t\tpublic static VALUE: IEventId = { name: \"InApp_UI_Form_Shown\" };\r\n\t\t\t\t};\r\n\r\n\t\t\t\tpublic static Submit = class {\r\n\t\t\t\t\tpublic static VALUE: IEventId = { name: \"InApp_UI_Form_Submit\" };\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t};\r\n\t};\r\n\r\n\t// This saves ~400 bytes (minified) vs nested classes\r\n\tpublic static SURVEY_FLOODGATE_CAMPAIGNLOAD_FAILED: IEventId = { name: \"Survey_Floodgate_CampaignLoad_Failed\" };\r\n\tpublic static SURVEY_FLOODGATE_FILEREAD_FAILED: IEventId = { name: \"Survey_Floodgate_FileRead_Failed\" };\r\n\tpublic static SURVEY_FLOODGATE_FILEWRITE_FAILED: IEventId = { name: \"Survey_Floodgate_FileWrite_Failed\" };\r\n\tpublic static SURVEY_FLOODGATE_TRIGGERMET: IEventId = { name: \"Survey_Floodgate_TriggerMet\" };\r\n\tpublic static SURVEY_FLOODGATE_USERSELECTED: IEventId = { name: \"Survey_Floodgate_UserSelected\" };\r\n\tpublic static SURVEY_UI_FORM_SHOWN: IEventId = { name: \"Survey_UI_Form_Shown\" };\r\n\tpublic static SURVEY_UI_FORM_DISPATCHER_IMPLEMENTED: IEventId = { name: \"Survey_UI_Form_Dispatcher_Implemented\" };\r\n\tpublic static SURVEY_UI_FORM_SUBMIT: IEventId = { name: \"Survey_UI_Form_Submit\" };\r\n\tpublic static SURVEY_UI_FORM_SECONDARY_SUBMIT: IEventId = { name: \"Survey_UI_Form_Secondary_Submit\" };\r\n\tpublic static SURVEY_UI_FORM_SUBMIT_ERROR: IEventId = { name: \"Survey_UI_Form_Submit_Error\" };\r\n\tpublic static SURVEY_UI_FORM_USERCLOSED: IEventId = { name: \"Survey_UI_Form_UserClosed\" };\r\n\tpublic static SURVEY_UI_THANKYOUPAGE_USERCLOSED: IEventId = { name: \"Survey_UI_ThankYouPage_UserClosed\" };\r\n\tpublic static SURVEY_UI_FORM_NO_RETURN_TYPE: IEventId = { name: \"Survey_UI_Form_No_Return_Type\"};\r\n\r\n\tpublic static SURVEY_UI_PROMPT_AUTODISMISSED: IEventId = { name: \"Survey_UI_Prompt_AutoDismissed\" };\r\n\tpublic static SURVEY_UI_THANKYOUPAGE_AUTODISMISSED: IEventId = { name: \"Survey_UI_ThankYouPage_AutoDismissed\" };\r\n\tpublic static SURVEY_UI_PROMPT_SHOWN: IEventId = { name: \"Survey_UI_Prompt_Shown\" };\r\n\tpublic static SURVEY_UI_PROMPT_USERCLOSED: IEventId = { name: \"Survey_UI_Prompt_UserClosed\" };\r\n\tpublic static SURVEY_UI_ADDITIONALPROMPT_USERCLOSED: IEventId = { name: \"Survey_UI_AdditionalPrompt_UserClosed\" };\r\n\tpublic static SURVEY_UI_PROMPT_CLICKED: IEventId = { name: \"Survey_UI_Prompt_Clicked\" };\r\n\tpublic static SURVEY_UI_ADDITIONALPROMPT_CLICKED: IEventId = { name: \"Survey_UI_AdditionalPrompt_Clicked\" };\r\n\tpublic static SURVEY_UI_REDIRECTIONFAILURE: IEventId = { name: \"Survey_UI_RedirectionFailure\" };\r\n\tpublic static GOVERNANCE_SERVICEFAILURE: IEventId = { name: \"Gorvenance_ServiceFailure\" };\r\n\tpublic static GOVERNANCE_SERVICERESULT: IEventId = { name: \"Gorvenance_ServiceResult\" };\r\n\tpublic static DYNAMICTRANSPORT_POST_ERROR: IEventId = { name: \"DynamicTransport_Post_Error\" };\r\n\tpublic static FEEDBACK_SURVEYSDISABLED_AADC: IEventId = {name: \"Feedback_SurveysDisabled_AADC\"};\r\n\tpublic static SURVEY_UI_DISABLED_AADC: IEventId = { name: \"Survey_UI_Prevented_AADC\" };\r\n\tpublic static PERSONALIZER_SERVICEREWARDRESULT: IEventId = { name: \"Personalizer_ServiceRewardResult\" };\r\n\tpublic static PERSONALIZER_CLIENTFAILURE: IEventId = { name: \"Personalizer_ClientFailure\" };\r\n\tpublic static APPDATA_JSON_PARSE_ERROR: IEventId = { name: \"AppData_JSON_Parse_Error\" };\r\n\tpublic static SURVEY_RENDER_OVERRIDE_ERROR: IEventId = { name: \"Survey_Render_Override_Error\" };\r\n\tpublic static SURVEY_RENDER_OVERRIDE_SUCCESS: IEventId = { name: \"Survey_Render_Override_Success\" };\r\n\tpublic static SURVEY_EVENT_KEY_ERROR: IEventId = { name: \"Survey_Event_Key_Error\" };\r\n\r\n\tpublic static Shared = class {\r\n\t\tpublic static Upload = class {\r\n\t\t\tpublic static Failed = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"Shared_Upload_Failed\" };\r\n\t\t\t};\r\n\t\t\tpublic static Prevented = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"Shared_Upload_Prevented_AADC\" };\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tpublic static Screenshot = class {\r\n\t\t\tpublic static Render = class {\r\n\t\t\t\tpublic static Failed = class {\r\n\t\t\t\t\tpublic static VALUE: IEventId = { name: \"Shared_Screenshot_Render_Failed\" };\r\n\t\t\t\t};\r\n\t\t\t\tpublic static Success = class {\r\n\t\t\t\t\tpublic static VALUE: IEventId = { name: \"Shared_Screenshot_Render_Success\" };\r\n\t\t\t\t};\r\n\t\t\t};\r\n\r\n\t\t\tpublic static GetContent = class {\r\n\t\t\t\tpublic static Failed = class {\r\n\t\t\t\t\tpublic static DefaultImage = class {\r\n\t\t\t\t\t\tpublic static Returned = class {\r\n\t\t\t\t\t\t\tpublic static VALUE: IEventId = { name: \"Shared_Screenshot_GetContent_Failed_DefaultImage_Returned\" };\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t};\r\n\t\t\t\t};\r\n\t\t\t};\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static WebSurfaces = class {\r\n\t\tpublic static Common = class {\r\n\t\t\tpublic static Error = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"WebSurfaces_Common_Error\" };\r\n\t\t\t};\r\n\t\t\tpublic static Info = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"WebSurfaces_Common_Info\" };\r\n\t\t\t};\r\n\t\t};\r\n\t\tpublic static CampaignMetadataAggregator = class {\r\n\t\t\tpublic static Error = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"WebSurfaces_CampaignMetadataAggregator_Error\" };\r\n\t\t\t};\r\n\t\t\tpublic static Requests = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"WebSurfaces_CampaignMetadataAggregator_Requests\" };\r\n\t\t\t};\r\n\t\t};\r\n\t\tpublic static SetCampaignAction = class {\r\n\t\t\tpublic static Error = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"WebSurfaces_SetCampaignAction_Error\" };\r\n\t\t\t};\r\n\t\t\tpublic static Requests = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"WebSurfaces_SetCampaignAction_Requests\" };\r\n\t\t\t};\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static UserFacts = class {\r\n\t\tpublic static Common = class {\r\n\t\t\tpublic static Error = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"UserFacts_Common_Error\" };\r\n\t\t\t};\r\n\t\t\tpublic static Info = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"UserFacts_Common_Info\" };\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tpublic static LocalFact = class {\r\n\t\t\tpublic static Error = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"UserFacts_LocalFact_Error\" };\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tpublic static Messaging = class {\r\n\t\t\tpublic static Requests = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"UserFacts_Messaging_Requests\" };\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tpublic static AugLoop = class {\r\n\t\t\tpublic static Requests = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"UserFacts_AugLoop_Requests\" };\r\n\t\t\t};\r\n\t\t\tpublic static Error = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"UserFacts_AugLoop_Error\" };\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tpublic static Provider = class {\r\n\t\t\tpublic static Info = class {\r\n\t\t\t\tpublic static VALUE: IEventId = { name: \"UserFacts_Provider_Summary\" };\r\n\t\t\t};\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static Common = class {\r\n\t\tpublic static Error = class {\r\n\t\t\tpublic static VALUE: IEventId = { name: \"Common_Error\" };\r\n\t\t};\r\n\t\tpublic static Info = class {\r\n\t\t\tpublic static VALUE: IEventId = { name: \"Common_Info\" };\r\n\t\t};\r\n\t};\r\n}\r\n","/**\r\n * UIStrings.ts\r\n *\r\n * Module for the strings to display\r\n */\r\n\r\nexport interface IUIStrings {\r\n\tFeedbackSubtitle: string;\r\n\tPrivacyStatement: string;\r\n\r\n\tForm: {\r\n\t\tCommentPlaceholder: string;\r\n\t\tCategoryPlaceholder: string;\r\n\t\tEmailPlaceholder: string;\r\n\t\tRatingLabel: string;\r\n\t\tScreenshotLabel: string;\r\n\t\tEmailCheckBoxLabel: string;\r\n\t\tSubmit: string;\r\n\t\tBasicFormTitle: string;\r\n\t\tCancel: string;\r\n\t\tScreenshotImgAltText: string;\r\n\t\tPrivacyLabel: string;\r\n\t\tPrivacyConsent: string;\r\n\t};\r\n\r\n\tSingleForm: {\r\n\t\tTitle: string;\r\n\t};\r\n\r\n\tSmileForm: {\r\n\t\tAnchor: string;\r\n\t\tTitle: string;\r\n\t};\r\n\r\n\tFrownForm: {\r\n\t\tAnchor: string;\r\n\t\tTitle: string;\r\n\t};\r\n\r\n\tIdeaForm: {\r\n\t\tAnchor: string;\r\n\t\tTitle: string;\r\n\t};\r\n\r\n\tBugForm: {\r\n\t\tAnchor: string;\r\n\t\tTitle: string;\r\n\t};\r\n\r\n\tThanksPanel: {\r\n\t\tTitle: string;\r\n\t\tAppreciateText: string;\r\n\t\tMyFeedbackDescription: string;\r\n\t\tMyFeedbackLinkText: string;\r\n\t\tFeedbackPortalDescription: string;\r\n\t\tFeedbackPortalLinkText: string;\r\n\t\tClose: string;\r\n\t};\r\n\r\n\tFloodgate: {\r\n\t\tForm: {\r\n\t\t\tTitle: string;\r\n\t\t},\r\n\t\tNps: {\r\n\t\t\tPrompt: {\r\n\t\t\t\tTitle: string;\r\n\t\t\t\tQuestion: string;\r\n\t\t\t\tYes: string;\r\n\t\t\t\tNo: string;\r\n\t\t\t};\r\n\r\n\t\t\tComment: {\r\n\t\t\t\tQuestion: string;\r\n\t\t\t};\r\n\r\n\t\t\tRating: {\r\n\t\t\t\tQuestion: string;\r\n\t\t\t\tPoints11Value0: string;\r\n\t\t\t\tPoints11Value1: string;\r\n\t\t\t\tPoints11Value2: string;\r\n\t\t\t\tPoints11Value3: string;\r\n\t\t\t\tPoints11Value4: string;\r\n\t\t\t\tPoints11Value5: string;\r\n\t\t\t\tPoints11Value6: string;\r\n\t\t\t\tPoints11Value7: string;\r\n\t\t\t\tPoints11Value8: string;\r\n\t\t\t\tPoints11Value9: string;\r\n\t\t\t\tPoints11Value10: string;\r\n\t\t\t\tPoints5Value1: string;\r\n\t\t\t\tPoints5Value2: string;\r\n\t\t\t\tPoints5Value3: string;\r\n\t\t\t\tPoints5Value4: string;\r\n\t\t\t\tPoints5Value5: string;\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tCloseLabel: string;\r\n}\r\n\r\n/**\r\n * Localized UI strings\r\n */\r\nlet uIStrings: IUIStrings;\r\n\r\n/**\r\n * Set UI strings\r\n * @param {string} data List of localized UI strings\r\n */\r\nexport function setUIStrings(data: IUIStrings) {\r\n\tuIStrings = data;\r\n}\r\n\r\n/**\r\n * Get UI strings\r\n * @returns the UIStrings\r\n */\r\nexport function getUIStrings(): IUIStrings {\r\n\treturn uIStrings;\r\n}\r\n","/*\r\n * Utils.ts\r\n *\r\n * Module for utility functions\r\n */\r\n\r\nimport { Utils } from \"@ms-ofb/officefloodgatecore\";\r\nconst { guid, overrideValues, isNOU, isBoolean, isString, isObject, isEnumValue } = Utils;\r\nexport { guid, overrideValues, isNOU, isBoolean, isString }\r\n\r\n/**\r\n * Check if given value is a number\r\n * @param {any} value value\r\n */\r\nfunction isNumber(value: any): boolean {\r\n\treturn (typeof value === \"number\");\r\n}\r\n\r\n/**\r\n * Check if given value is an integer\r\n * @param {any} value value\r\n */\r\nexport function isInteger(value: any): boolean {\r\n\treturn typeof value === \"number\" &&\r\n\t\tisFinite(value) &&\r\n\t\tMath.floor(value) === value;\r\n}\r\n\r\n/**\r\n * Check if value is a valid guid\r\n * @param {any} value value\r\n */\r\nfunction isGuid(value: any): boolean {\r\n\treturn (isString(value) &&\r\n\t\t/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(value));\r\n}\r\n\r\n/**\r\n * Throw if not object\r\n */\r\nexport function expectObject(value: any, name: string): void {\r\n\tif (!isObject(value)) {\r\n\t\tthrow name + \" is not an object: \" + value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Throw if not number\r\n */\r\nexport function expectNumber(value: any, name: string): void {\r\n\tif (!isNumber(value)) {\r\n\t\tthrow name + \" is not a number: \" + value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Throw if not string\r\n */\r\nexport function expectString(value: any, name: string): void {\r\n\tif (!isString(value)) {\r\n\t\tthrow name + \" is not a string: \" + value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Throw if not boolean\r\n */\r\nexport function expectBoolean(value: any, name: string): void {\r\n\tif (!isBoolean(value)) {\r\n\t\tthrow name + \" is not a boolean: \" + value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Throw if not guid\r\n */\r\nexport function expectGuid(value: any, name: string): void {\r\n\tif (!isGuid(value)) {\r\n\t\tthrow name + \" is not a guid: \" + value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Throw if not array\r\n */\r\nexport function expectArray(value: any, name: string): void {\r\n\tif (!Array.isArray(value)) {\r\n\t\tthrow name + \" is not an array: \" + value;\r\n\t}\r\n}\r\n\r\n/**\r\n * Throw if not valid enum\r\n * Note: this won't work with const enum\r\n */\r\nexport function expectEnum(value: any, enumType: any, name: string): void {\r\n\tif (!isNumber(value) || !isEnumValue(value, enumType)) {\r\n\t\tthrow name + \" is not an enum: \" + value;\r\n\t}\r\n}\r\n\r\n// Creates a promise that rejects in milliseconds and\r\n// returns the race between the created timeout promise and the passed in promise\r\nexport function createTimeoutPromise(ms: number, promise: Promise): Promise {\r\n\t// Create a promise that rejects in milliseconds\r\n\tconst timeout = new Promise((resolve, reject) => {\r\n\t\tconst id = setTimeout(() => {\r\n\t\t\tclearTimeout(id);\r\n\t\t\treject(\"Timed out in \" + ms + \"ms.\");\r\n\t\t}, ms);\r\n\t});\r\n\r\n\t// Returns a race between our timeout and the passed in promise\r\n\treturn Promise.race([promise, timeout]) as Promise;\r\n}\r\n\r\n/**\r\n * Checks to see if a passed CSS selector is set as a rule in one of the document's stylesheets.\r\n * \r\n * @param cssSelector : a Css selector string such as '#obf-TPromptTitle'\r\n */\r\nexport function checkCssSelectorToBeSet (cssSelector: string): boolean {\r\n\r\n\ttry {\r\n\t\tfor (let sheetIndex = 0; sheetIndex < document.styleSheets.length; sheetIndex++) {\r\n\t\t\tconst currentStyleSheet = document.styleSheets[sheetIndex];\r\n\r\n\t\t\tfor (let rulesIndex = 0; rulesIndex < currentStyleSheet.rules.length; rulesIndex++) {\r\n\t\t\t\tconst currentRule = currentStyleSheet.rules[rulesIndex] as CSSStyleRule;\r\n\r\n\t\t\t\tif (!isNOU(currentRule.selectorText) && currentRule.selectorText.includes(cssSelector)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\t// tslint:disable-next-line: no-empty\r\n\t} catch (error) {}\r\n\r\n\treturn false;\r\n}\r\n\r\nexport function isTenantIdCommercial (tenantId: string): boolean {\r\n\r\n\t// if tenantId is not defined correctly -> consumer\r\n\tif (isNOU(tenantId) || tenantId === \"\" || !isGuid(tenantId)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst lowerTenantId = tenantId.toLowerCase();\r\n\r\n\t// if id is all zeros or one of the special consumer tenant ids -> consumer\r\n\t// For further reference see how OCV treats these IDs: \r\n\t// https://office.visualstudio.com/CLE/_git/OfficeCustomerVoice?path=%2FIngestion%2FIngestion.Floodgate%2FFloodgateDataExtractor.cs\r\n\tif (lowerTenantId === \"00000000-0000-0000-0000-000000000000\"\r\n\t\t|| lowerTenantId === \"9188040d-6c67-4c5b-b112-36a304b66dad\"\r\n\t\t|| lowerTenantId === \"84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa\") {\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// any other case -> commercial\r\n\treturn true;\r\n}\r\n","/**\r\n * Utils.ts\r\n *\r\n * Module for utility functions\r\n */\r\n\r\nimport { Classes } from \"./UiConstants\";\r\nimport * as Screenshot from \"./../Screenshot\";\r\nimport * as Logging from \"./../Logging/Logging\";\r\n\r\n/**\r\n * Set HTML element visibility\r\n * @param {string} id The Id of the HTML element\r\n * @param {any} vis The visibility to be set (true or false)\r\n * @return {void}\r\n */\r\nexport function setElementVisibility(id: string, vis: boolean): void {\r\n\tlet oldClassName: string = vis ? Classes.Hidden : Classes.Visible;\r\n\tlet newClassName: string = vis ? Classes.Visible : Classes.Hidden;\r\n\r\n\treplaceClassesById(id, oldClassName, newClassName);\r\n}\r\n\r\n/**\r\n * Delete HTML element by Id\r\n * @param {string} id The Id of the HTML element\r\n * @return {void}\r\n */\r\nexport function deleteElementById(id: string): void {\r\n\tlet element: HTMLElement = document.getElementById(id);\r\n\tif (element != null && element.parentNode != null) {\r\n\t\telement.parentNode.removeChild(element);\r\n\t}\r\n}\r\n\r\n/**\r\n * Add a CSS class to an HTML element by Id\r\n * @param {string} id The Id of the HTML element\r\n * @param {string} newClassName The name of CSS class to be added\r\n * @return {void}\r\n */\r\nexport function addClassById(id: string, newClass: string): void {\r\n\tlet element: HTMLElement = document.getElementById(id);\r\n\r\n\tif (!element) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// check is the class already exists, if not add it\r\n\tif (!element.className.match(new RegExp(\"\\\\b\" + newClass + \"\\\\b\"))) {\r\n\t\t// we use className instead of classList to support IE9\r\n\t\telement.className = element.className + \" \" + newClass;\r\n\t}\r\n}\r\n\r\n/**\r\n * Delete a CSS class of an HTML element by Id\r\n * @param {string} id The Id of the HTML element\r\n * @param {string} oldClassName The name of CSS class to be deleted\r\n * @return {void}\r\n */\r\nexport function deleteClassById(id: string, oldClass: string): void {\r\n\tlet element: HTMLElement = document.getElementById(id);\r\n\r\n\tif (!element) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// we use className instead of classList to support IE9\r\n\t// get rid of any occurrences of the class we don\"t want\r\n\telement.className = element.className.split(new RegExp(\"\\\\b\" + oldClass + \"\\\\b\", \"i\")).join(\" \");\r\n\r\n\t// get rid of extra whitespaces\r\n\telement.className = element.className.split(/\\s+/).join(\" \");\r\n}\r\n\r\n/**\r\n * Delete an CSS class and (or) add an CSS class to an HTML element by Id\r\n * @param {string} id The Id of the HTML element\r\n * @param {string} oldClassName The name of CSS class to be deleted\r\n * @param {string} newClassName The name of CSS class to be added\r\n * @return {void}\r\n */\r\nexport function replaceClassesById(id: string, oldClassName?: string, newClassName?: string): void {\r\n\tdeleteClassById(id, oldClassName);\r\n\taddClassById(id, newClassName);\r\n}\r\n\r\n/**\r\n * Set attribute on an HTML element\r\n * @param {string} id The Id of the HTML element\r\n * @param {string} attriName The attribute name\r\n * @param {string} attriValue The attribute value\r\n * @return {void}\r\n */\r\nexport function setAttributeOnHtmlElement(id: string, attriName: string, attriValue: string): void {\r\n\tlet htmlElement: HTMLElement = document.getElementById(id);\r\n\tif (htmlElement) {\r\n\t\thtmlElement.setAttribute(attriName, attriValue);\r\n\t}\r\n}\r\n\r\n/**\r\n * Add event listener helper function (wrapper) that deals with IE 8 compatability\r\n * @param object The object to add event listener to\r\n * @param type The event type\r\n * @param listener The listener function\r\n */\r\nexport function addEventListenerHelper(object: any, type: string, listener: (event: Event) => void): void {\r\n\tif (object.addEventListener) {\r\n\t\tobject.addEventListener(type, listener, false);\r\n\t} else if (object.attachEvent) {\r\n\t\tobject.attachEvent(\"on\" + type, listener);\r\n\t}\r\n}\r\n\r\n/**\r\n * Remove event listener helper function (wrapper) that deals with IE 8 compatability\r\n * @param object The object to remove event listener from\r\n * @param type The event type\r\n * @param listener The listener function\r\n */\r\nexport function removeEventListenerHelper(object: any, type: string, listener: (event: Event) => void): void {\r\n\tif (object.removeEventListener) {\r\n\t\tobject.removeEventListener(type, listener, false);\r\n\t} else if (object.detachEvent) {\r\n\t\tobject.detachEvent(\"on\" + type, listener);\r\n\t}\r\n}\r\n\r\n/**\r\n * Register event listener\r\n * @param id The Id of the HTML element\r\n * @param type The event type\r\n * @param listener The listener function\r\n */\r\nexport function registerListener(id: string, type: string, listener: (event: Event) => void): void {\r\n\tlet element: HTMLElement = document.getElementById(id);\r\n\tif (element) {\r\n\t\taddEventListenerHelper(element, type, listener);\r\n\t}\r\n}\r\n\r\n/**\r\n * Register event listener\r\n * @param element The HTML element\r\n * @param type The event type\r\n * @param listener The listener function\r\n */\r\nexport function registerListenerToElement(element: HTMLElement, type: string, listener: (event: Event) => void): void {\r\n\tif (element) {\r\n\t\taddEventListenerHelper(element, type, listener);\r\n\t}\r\n}\r\n\r\n/**\r\n * Un-register event listener\r\n * @param id The Id of the HTML element\r\n * @param type The event type\r\n * @param listener The listener function\r\n */\r\nexport function unregisterListener(id: string, type: string, listener: (event: Event) => void): void {\r\n\tlet element: HTMLElement = document.getElementById(id);\r\n\tif (element) {\r\n\t\tremoveEventListenerHelper(element, type, listener);\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns the version of Internet Explorer or -1 for non-IE browser\r\n * @return {number} The IE version\r\n */\r\nexport function getInternetExplorerVersion(): number {\r\n\tlet rv: number = -1;\r\n\tlet ua: string = window.navigator.userAgent;\r\n\r\n\t// since IE 11, 'MSIE' is not a keyword in its user agent string anymore\r\n\t// determine whether the browser is IE or not, and the version of IE based on Trident keyword and its version\r\n\tif (ua.indexOf(\"Trident\") > -1) {\r\n\t\tlet re: RegExp = new RegExp(\"Trident/([0-9]{1,}[\\.0-9]{0,})\");\r\n\t\tif (re.exec(ua) != null) {\r\n\t\t\trv = parseFloat(RegExp.$1);\r\n\t\t\trv += 4; // trident version + 4 is the IE version\r\n\t\t}\r\n\t}\r\n\treturn rv;\r\n}\r\n\r\n/**\r\n * Check if the current text direction is right to left\r\n */\r\nexport function isRightToLeft(): boolean {\r\n\treturn getComputedStyle(document.documentElement).direction === \"rtl\";\r\n}\r\n\r\n/**\r\n * Screenshot preview is control by screenshot check box. Populate preview if checkbox is checked \r\n * @param screenshotCheckboxId The Id of screenshot checkbox \r\n * @param screenshotPreviewId The Id of preview \r\n */\r\nexport function ScreenshotPreviewByCheckbox(screenshotCheckboxId: string, screenshotPreviewId: string): void {\r\n\tlet screenshotCheckBox = document.getElementById(screenshotCheckboxId);\r\n\tlet screenshotCheckBoxSelected: boolean = screenshotCheckBox && screenshotCheckBox.checked;\r\n\tlet preview = document.getElementById(screenshotPreviewId);\r\n\r\n\tif (screenshotCheckBoxSelected) {\r\n\t\tsetElementVisibility(screenshotPreviewId, true);\r\n\t\tlet startTime: number = performance.now();\r\n\t\tScreenshot.createScreenshot(document.body).then(\r\n\t\t\t(canvas: HTMLCanvasElement) => {\r\n\t\t\t\tlet endTime: number = performance.now();\r\n\t\t\t\tLogging.getLogger().logEvent(Logging.EventIds.Shared.Screenshot.Render.Success.VALUE,\r\n\t\t\t\t\tLogging.LogLevel.Critical,\r\n\t\t\t\t\t{ TimeMilliseconds: endTime - startTime });\r\n\r\n\t\t\t\tpreview.src = canvas.toDataURL();\r\n\t\t\t}\r\n\t\t).catch((error: any) => {\r\n\t\t\tlet endTime: number = performance.now();\r\n\t\t\tLogging.getLogger().logEvent(Logging.EventIds.Shared.Screenshot.Render.Failed.VALUE,\r\n\t\t\t\tLogging.LogLevel.Error,\r\n\t\t\t\t{ ErrorMessage: error, TimeMilliseconds: endTime - startTime });\r\n\t\t});\r\n\t} else {\r\n\t\tsetElementVisibility(screenshotPreviewId, false);\r\n\t}\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/**\r\n * Constants.ts\r\n *\r\n * A module for non-UI constants.\r\n */\r\n\r\n/**\r\n * Value for the Customer Voice Launcher Type\r\n */\r\nexport const customerVoiceLauncherType = \"customervoice\";\r\n\r\n/**\r\n * Value for the Customer Voice Survey text for adding to App data\r\n */\r\nexport const customerVoiceSurveyUX = \"Customer Voice Survey UX\";\r\n\r\n/**\r\n * Values for types of feedback that go into the json\r\n * Also used to determine the FormTemplate used on each one of the feedback types.\r\n */\r\nexport enum FeedbackType {\r\n\tSmile,\r\n\tFrown,\r\n\tIdea,\r\n\tBug,\r\n\tIdeaRedirect,\r\n}\r\n\r\n/**\r\n * Values for types of panels that go into the json\r\n * Also used to determine the PanelTemplate used on each one of the panel types.\r\n */\r\nexport const enum PanelType {\r\n\tThanks\r\n}\r\n\r\n/**\r\n * Values for the environment\r\n */\r\nexport const enum Environment {\r\n\tProduction,\r\n\tInt\r\n}\r\n\r\n/**\r\n * Values for autodismiss\r\n */\r\nexport const enum AutoDismissValues {\r\n\tNoAutoDismiss,\r\n\tSevenSeconds,\r\n\tFourteenSeconds,\r\n\tTwentyOneSeconds,\r\n\tTwentyEightSeconds,\r\n\tSixtySeconds,\r\n\tNinetySeconds,\r\n\tOneHundredAndTwentySeconds,\r\n\tOneHundredAndFiftySeconds,\r\n}\r\n\r\n/**\r\n * Dynamic scripts\r\n */\r\nexport class DynamicScriptUrls {\r\n\t/**\r\n\t * Link to the Office WebSurfaces UX package\r\n\t */\r\n\t/* tslint:disable:max-line-length */\r\n\tpublic static WebSurfacesIntLink: string = \"https://res-sdf.cdn.office.net/office-growth/resources/programmablesurfaces/int/officewebsurfaces.core.min.js\";\r\n\tpublic static WebSurfacesProdLink: string = \"https://res.cdn.office.net/office-growth/resources/programmablesurfaces/prod/officewebsurfaces.core.min.js\";\r\n}\r\n\r\n/**\r\n * Constant GUIDs\r\n */\r\nexport class GUIDs {\r\n\tpublic static TMSAppID: string = \"4c4f550b-42b2-4a16-93f9-fdb9e01bb6ed\";\r\n\tpublic static TULIPSAppID: string = \"05c88d91-956e-46b4-91b0-77a33cc21a4d\";\r\n}\r\n\r\nexport const enum OCPSValues {\r\n\tNotConfigured = 0,\r\n\tEnabled = 1,\r\n\tDisabled = 2\r\n}\r\n\r\nexport const enum FeedbackStatus {\r\n\tEnabled,\r\n\tDisabledByAdmin,\r\n\tDisabledByAgeGroup\r\n}\r\n\r\n/**\r\n * Prefix for SDK version string\r\n */\r\nexport const SDK_VERSION_PREFIX = \"Web SDK v\";\r\n\r\n/**\r\n * UxId version constant. (This needs to be changed if a significant UX modification is made.)\r\n * This is concatenated to the sdkVersion string in the manifest.\r\n */\r\nexport const SDK_UXID_VERSION: string = \"UxId:built-in|comp2022_v1\";\r\n","/**\r\n * Window.ts\r\n *\r\n * Module wrapping around the global window object\r\n */\r\n\r\nimport * as Configuration from \"./../Configuration/Configuration\";\r\nimport { ILaunchOptionsInAppFeedback } from \"./../Configuration/ILaunchOptions\";\r\nimport ICustomSurvey from \"./../FloodgateCore/ICustomSurvey\";\r\nimport IUISurvey from \"./../FloodgateCore/UISurvey/IUISurvey\";\r\nimport { FloodgateEngine } from \"@ms-ofb/officefloodgatecore\";\r\nimport { IFloodgateSettingIdMap, ISurveyForm } from \"@ms-ofb/officefloodgatecore/dist/src/Api/Api\";\r\nimport { FeedbackStatus } from \"./../Constants\";\r\nimport { IOverrideRenderCallback } from \"../IOverrideRenderCallback\";\r\nimport { ICustomUXHandler } from \"../ICustomUXHandler\";\r\n\r\nconst w = window as any;\r\nconst officeBrowserFeedback = w.OfficeBrowserFeedback = w.OfficeBrowserFeedback || {};\r\nconst floodgate = officeBrowserFeedback.floodgate = officeBrowserFeedback.floodgate || {};\r\n\r\n/**\r\n * Get the IWindow object\r\n */\r\nexport function get(): IWindow { return w; }\r\n\r\n/**\r\n * Get the IWindow object\r\n */\r\nexport function getGlobal(): IWindow { return w; }\r\n\r\n/**\r\n * Set the setUiStrings() method\r\n * @param setUiStrings the method\r\n */\r\nexport function setSetUiStrings(setUiStrings: (data: any) => void) {\r\n\tofficeBrowserFeedback.setUiStrings = setUiStrings;\r\n}\r\n\r\n/**\r\n * Set the singleFeedback() method\r\n * @param singleFeedback the method\r\n */\r\nexport function setSingleFeedback(\r\n\tsingleFeedback: (feedbackType: string, launchOptions: ILaunchOptionsInAppFeedback) => Promise) {\r\n\t\tofficeBrowserFeedback.singleFeedback = singleFeedback;\r\n}\r\n\r\n/**\r\n * Set the multiFeedback() method\r\n * @param multiFeedback the method\r\n */\r\nexport function setMultiFeedback(\r\n\tmultiFeedback: (launchOptions: ILaunchOptionsInAppFeedback) => Promise) {\r\n\t\tofficeBrowserFeedback.multiFeedback = multiFeedback;\r\n}\r\n\r\n/**\r\n * Set the getFeedbackStatus() method\r\n * @param getFeedbackStatus the method\r\n */\r\nexport function setFeedbackStatus(\r\n\tgetFeedbackStatus: () => FeedbackStatus) {\r\n\t\tofficeBrowserFeedback.getFeedbackStatus = getFeedbackStatus;\r\n}\r\n\r\n/**\r\n * Set the createScreenshot() method\r\n * @param createScreenshot the method\r\n */\r\nexport function setCreateScreenshot(\r\n\tcreateScreenshot: (domElement?: object, options?: any) => Promise) {\r\n\t\tofficeBrowserFeedback.createScreenshot = createScreenshot;\r\n}\r\n\r\n/**\r\n * Set the isFeedbackSurveyEnabledByAADC() method\r\n * @param isFeedbackSurveyEnabledByAADC the method\r\n */\r\nexport function setIsFeedbackSurveyEnabledByAADC(\r\n\tisFeedbackSurveyEnabledByAADC: () => boolean) {\r\n\t\tofficeBrowserFeedback.isFeedbackSurveyEnabledByAADC = isFeedbackSurveyEnabledByAADC;\r\n}\r\n\r\n/**\r\n * Set the floodgate customUXHandler interface\r\n * @param floodgateCustomUXHandler the interface\r\n */\r\nexport function setFloodgateCustomUXHandler(floodgateCustomUXHandler: ICustomUXHandler) {\r\n\tfloodgate.customUXHandler = floodgateCustomUXHandler;\r\n}\r\n\r\n/**\r\n * Set the floodgate showSurvey() method\r\n * @param floodgateShowSurvey the method\r\n */\r\nexport function setFloodgateShowSurvey(\r\n\tfloodgateShowSurvey: (survey: IUISurvey, overrideUXRenderCallbackAsync?: IOverrideRenderCallback) => Promise\r\n) {\r\n\tfloodgate.showSurvey = floodgateShowSurvey;\r\n}\r\n\r\n/**\r\n * Set the floodgate showFormSurvey() method\r\n * @param floodgateShowFormSurvey the method\r\n */\r\nexport function setFloodgateShowFormSurvey(\r\n\tfloodgateShowFormSurvey: (survey: ISurveyForm, overrideUXRenderCallbackAsync?: IOverrideRenderCallback) => Promise\r\n) {\r\n\tfloodgate.showFormSurvey = floodgateShowFormSurvey;\r\n}\r\n\r\n/**\r\n * Set the floodgate showCustomSurvey() method\r\n * @param floodgateShowCustomSurvey the method\r\n */\r\nexport function setFloodgateShowCustomSurvey(floodgateShowCustomSurvey: (survey: ICustomSurvey) => Promise) {\r\n\tfloodgate.showCustomSurvey = floodgateShowCustomSurvey;\r\n}\r\n\r\n/**\r\n * Set the floodgate initialize() method\r\n * @param floodgateInitialize the method\r\n */\r\nexport function setFloodgateInitialize(floodgateInitialize: () => Promise) {\r\n\tfloodgate.initialize = floodgateInitialize;\r\n}\r\n\r\n/**\r\n * Set the floodgate start() method\r\n * @param floodgateStart the method\r\n */\r\nexport function setFloodgateStart(floodgateStart: () => Promise) {\r\n\tfloodgate.start = floodgateStart;\r\n}\r\n\r\n/**\r\n * Set the floodgate stop() method\r\n * @param floodgateStop the method\r\n */\r\nexport function setFloodgateStop(floodgateStop: () => void) {\r\n\tfloodgate.stop = floodgateStop;\r\n}\r\n\r\n/**\r\n * Set the floodgate getEngine() method\r\n * @param floodgateGetEngine the method\r\n */\r\nexport function setFloodgateGetEngine(floodgateGetEngine: () => FloodgateEngine) {\r\n\tfloodgate.getEngine = floodgateGetEngine;\r\n}\r\n\r\n/**\r\n * Set the floodgate getSettingIdMap() method\r\n * @param floodgateSettingIdMap the method\r\n */\r\nexport function getSettingIdMap(floodgateSettingIdMap: () => IFloodgateSettingIdMap) {\r\n\tfloodgate.getSettingIdMap = floodgateSettingIdMap;\r\n}\r\n\r\nexport interface IInitOptions extends Configuration.IInitOptionsCommon, Configuration.IInitOptionsInAppFeedback {\r\n}\r\n\r\nexport interface IFloodgate {\r\n\tinitOptions: Configuration.IInitOptionsFloodgate;\r\n\tcustomUXHandler: ICustomUXHandler;\r\n\tshowSurvey: (survey: IUISurvey, overrideUXRenderCallbackAsync?: IOverrideRenderCallback) => Promise;\r\n\tshowFormSurvey: (survey: ISurveyForm, overrideUXRenderCallbackAsync?: IOverrideRenderCallback) => Promise;\r\n\tshowCustomSurvey: (survey: ICustomSurvey) => Promise;\r\n\tinitialize: () => Promise;\r\n\tstart: () => Promise;\r\n\tstop: () => void;\r\n\tgetEngine: () => FloodgateEngine;\r\n}\r\n\r\nexport interface IWindow extends WindowLocalStorage {\r\n\tOfficeBrowserFeedback: {\r\n\t\tinitOptions: IInitOptions;\r\n\t\tmultiFeedback: (launchOptions: ILaunchOptionsInAppFeedback) => Promise;\r\n\t\tsdkVersion: string;\r\n\t\tsingleFeedback: (feedbackType: string, launchOptions: ILaunchOptionsInAppFeedback) => Promise;\r\n\t\tsetUiStrings: (data: any) => void;\r\n\t\thtml2canvas: () => ((domElement?: object, options?: any) => Promise);\r\n\t\tcreateScreenshot: (domElement?: object, options?: any) => Promise;\r\n\t\tfloodgate: IFloodgate;\r\n\t\tisFeedbackSurveyEnabledByAADC: () => boolean;\r\n\t\tgetFeedbackStatus: () => FeedbackStatus;\r\n\t};\r\n}\r\n","/*\r\n * Utils.ts\r\n *\r\n * Module for utility functions\r\n */\r\n\r\nimport { CampaignDefinition } from \"./Campaign/CampaignDefinitionProvider\";\r\n\r\n/**\r\n * Add time to a given date\r\n * Example, timeAdd(new Date(), 'minute', 5) //returns 5 minutes from now\r\n * @param date Date to start with\r\n * @param interval One of: hour or h, minute or m, second or s\r\n * @param units units of the given interval to add\r\n * @return date\r\n */\r\nexport function timeAdd(date: Date, interval: string, units: number): Date {\r\n\tswitch (interval.toLowerCase()) {\r\n\t\tcase \"h\":\r\n\t\tcase \"hour\":\r\n\t\t\treturn new Date(date.getTime() + (units * 3600000));\r\n\t\tcase \"m\":\r\n\t\tcase \"minute\":\r\n\t\t\treturn new Date(date.getTime() + (units * 60000));\r\n\t\tcase \"s\":\r\n\t\tcase \"second\":\r\n\t\t\treturn new Date(date.getTime() + (units * 1000));\r\n\t\tdefault:\r\n\t\t\tthrow new Error(\"Invalid interval value of \" + interval);\r\n\t}\r\n}\r\n\r\n/**\r\n * Check if an input value is a valid date, null or undefined return false.\r\n * @param input input value\r\n * @return boolean\r\n */\r\nexport function isDate(input: any): boolean {\r\n\tif (Object.prototype.toString.call(input) === \"[object Date]\") {\r\n\t\t// it is a date\r\n\t\tif (!(isNaN(input.getTime()))) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n\treturn false;\r\n}\r\n\r\n/**\r\n * Check if an input value is a valid value in the input enum\r\n * @param value input value\r\n * @param input input enum\r\n * Returns true if value exists in the enum\r\n */\r\nexport function isEnumValue(value: any, input: any): boolean {\r\n\treturn (value in input);\r\n}\r\n\r\n/**\r\n * Check if an input value is a number\r\n * @param value: input value\r\n */\r\nexport function isNumber(value: any): boolean {\r\n\treturn (value !== null && !isNaN(value) && isFinite(value));\r\n}\r\n\r\n/**\r\n * Check if an input value is null or undefined\r\n * @param value: input value\r\n */\r\nexport function isNOU(value: any): boolean {\r\n\treturn (value === null || value === undefined);\r\n}\r\n\r\n/**\r\n * Check if an input value is an object\r\n * @param value: input value\r\n */\r\nexport function isObject(value: any): boolean {\r\n\treturn (value !== null && value !== undefined && (typeof value === \"object\"));\r\n}\r\n\r\n/**\r\n * Check if an input value is an array\r\n * @param value: input value\r\n */\r\nexport function isFunction(value: any): boolean {\r\n\treturn (value !== null && value !== undefined && (typeof value === \"function\"));\r\n}\r\n\r\n/**\r\n * Check if an input value is an array\r\n * @param value: input value\r\n */\r\nexport function isArray(value: any): boolean {\r\n\treturn (value !== null && value !== undefined && (Array.isArray(value)));\r\n}\r\n\r\n/**\r\n * Check if given value is a string\r\n * @param {any} value value\r\n */\r\nexport function isString(value: any): boolean {\r\n\treturn (typeof value === \"string\");\r\n}\r\n\r\n/**\r\n * Check if value is an object\r\n * @param {any} value value\r\n */\r\nexport function isBoolean(value: any): boolean {\r\n\treturn typeof (value) === \"boolean\";\r\n}\r\n\r\n/**\r\n * Returns a lower temporal boundary\r\n * @return date\r\n */\r\nexport function getDistantPast(): Date {\r\n\t// Corresponds to UTC 1601-01-01T00:00:00Z\r\n\treturn new Date(-11644473600000);\r\n}\r\n\r\n/**\r\n * Get an upper temporal boundary\r\n * @return date\r\n */\r\nexport function getDistantFuture(): Date {\r\n\t// Corresponds to UTC 4001-01-01T00:00:00Z\r\n\treturn new Date(64092211200000);\r\n}\r\n\r\nexport const MAX_DATE_MILLISECONDS: number = 8640000000000000;\r\nexport const MIN_DATE_MILLISECONDS: number = -8640000000000000;\r\n\r\n/**\r\n * Adds seconds to a date, if overflows returns Date(Number.Max_VALUE)\r\n *\r\n * @param date date to add to\r\n * @param seconds seconds as number\r\n * @return Resulting date\r\n */\r\nexport function addSecondsWithoutOverflow(date: Date, seconds: number): Date {\r\n\tif (!date) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (seconds < 0) {\r\n\t\treturn subtractSecondsWithoutOverflow(date, -1 * seconds);\r\n\t} else {\r\n\t\tconst milliseconds: number = date.getTime() + seconds * 1000;\r\n\r\n\t\tif (milliseconds < MAX_DATE_MILLISECONDS) {\r\n\t\t\treturn new Date(milliseconds);\r\n\t\t} else {\r\n\t\t\treturn new Date(MAX_DATE_MILLISECONDS);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Subtracts seconds from a date, if overflows returns Date(Number.MIN_VALUE)\r\n *\r\n * @param date date to subtract from\r\n * @param seconds seconds as number\r\n * @return Resulting date\r\n */\r\nexport function subtractSecondsWithoutOverflow(date: Date, seconds: number): Date {\r\n\tif (!date) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (seconds < 0) {\r\n\t\tseconds = -seconds;\r\n\t\treturn this.addSecondsWithoutOverflow(date, seconds);\r\n\t}\r\n\r\n\tconst milliseconds: number = date.getTime() - (seconds * 1000);\r\n\r\n\tif (milliseconds > MIN_DATE_MILLISECONDS) {\r\n\t\treturn new Date(milliseconds);\r\n\t} else {\r\n\t\treturn new Date(MIN_DATE_MILLISECONDS);\r\n\t}\r\n}\r\n\r\n// region Language related\r\n\r\n/**\r\n * Effectively un-anchored on the right side because tags can have many more trailing sub-parts than we care to extract\r\n * Refer to https://www.ietf.org/rfc/rfc5646.txt\r\n */\r\nconst LANGUAGE_AND_SCRIPT_TAG_PATTERN: string =\r\n\t\"^\" +\r\n\t// capture 1:language subtag\r\n\t\"(\" +\r\n\t\"(?:[a-zA-Z]{2,3}(?:-[a-zA-Z]{3}){0,3})\" + // 2-3 Alpha chars, followed by up to three optional extension tags, each of format -AAA, A=Alpha char\r\n\t\"|\" +\r\n\t\"(?:[a-zA-Z]{4,8})\" + // 4-Alpha chars (reserved in standard) or 5-8 Alpha chars\r\n\t\")\" +\r\n\t\"(?:\" +\r\n\t\"-\" +\r\n\t// capture 2: optional script subtag (without leading dash), exactly 4 alpha chars\r\n\t\"([a-zA-Z]{4})\" + // 4-Alpha chars\r\n\t\")?\" +\r\n\t// capture 3: optional region subtag (without leading dash), exactly 2 alpha chars or 3 digits\r\n\t\"(?:-([a-zA-Z]{2}|[0-9]{3}))?\" +\r\n\t\"(\" +\r\n\t// capture 4: any left-overs, rejecting remainder strings that don't end here or lead with a dash.\r\n\t\"-.*\" +\r\n\t\")?\" +\r\n\t\"$\";\r\n\r\nexport function isValidLanguageSubTag(subTag: string): boolean {\r\n\tif (!subTag) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst extractedSubTag: string = extractLanguageSubtag(subTag);\r\n\tif (!extractedSubTag) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn extractedSubTag === subTag;\r\n}\r\n\r\nexport function extractLanguageSubtag(language: string): string {\r\n\tif (!language) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst matches = language.match(LANGUAGE_AND_SCRIPT_TAG_PATTERN);\r\n\tif (!matches || matches.length < 1 || !isNOU(matches[4])) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// return the first capture group which should be the original input if there is a match\r\n\t// For example, \"en-US\" input should return \"en-US\", and \"en\" input should return \"en\".\r\n\treturn matches[0];\r\n}\r\n\r\n// endregion\r\n\r\n/**\r\n * Create guid string\r\n */\r\nexport function guid(): string {\r\n\t// Stitch in '4' in the third group\r\n\treturn (randomHex4() + randomHex4() + \"-\" + randomHex4() + \"-4\" + randomHex4().substr(0, 3) + \"-\" + randomHex4() + \"-\"\r\n\t\t+ randomHex4() + randomHex4() + randomHex4()).toLowerCase();\r\n}\r\n\r\n/**\r\n * Create random Hex4 string\r\n */\r\nfunction randomHex4(): string {\r\n\treturn (Math.floor(((1 + Math.random()) * 0x10000))).toString(16).substring(1);\r\n}\r\n\r\n/**\r\n * Create an array from input object values sorted by object key\r\n * @param Object input object\r\n * @return array\r\n */\r\nexport function makeArrayFromObjectValuesSortedByKeyString(object: object): any[] {\r\n\tconst keys: string[] = Object.keys(object);\r\n\tkeys.sort();\r\n\r\n\tconst values: any[] = [];\r\n\tfor (const id in keys) {\r\n\t\tif (keys.hasOwnProperty(id)) {\r\n\t\t\tconst key: string = keys[id];\r\n\t\t\tvalues.push(object[key]);\r\n\t\t}\r\n\t}\r\n\r\n\treturn values;\r\n}\r\n\r\n/**\r\n * Create a date object from an input string\r\n * @param Object input string\r\n * @return date\r\n */\r\nexport function stringToDate(input: any): Date {\r\n\tif (!isString(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconst newDate: Date = input ? new Date(input) : null;\r\n\treturn isDate(newDate) ? newDate : null;\r\n}\r\n\r\n/**\r\n * Takes two objects (source, target) and returns the target object with values in the source added to it.\r\n * It overwrites any source properties which already exist in target.\r\n */\r\nexport function overrideValues(sourceObject: T, targetobject: T): T {\r\n\tif (!targetobject) {\r\n\t\treturn targetobject;\r\n\t}\r\n\r\n\tconst result: T = targetobject;\r\n\r\n\tif (sourceObject) {\r\n\t\tfor (const field in sourceObject) {\r\n\t\t\tif (sourceObject.hasOwnProperty(field)) {\r\n\t\t\t\t(result as any)[field] = (sourceObject as any)[field];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn result;\r\n}\r\n\r\n/**\r\n * Test a string is in our supported ISO8601 UTC format of \"yyyy-MM-ddTHH:mm:ssZ\" and \"yyyy-MM-ddTHH:mm:ss.fffZ\"\r\n * @param input Input string to be evaluated.\r\n */\r\nexport function isUtcDatetimeString(input: any): boolean {\r\n\tif (!isString(input)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst supportedUtcRegex = /^(\\d{4}\\-\\d\\d\\-\\d\\dT\\d\\d:\\d\\d:\\d\\d(\\.\\d\\d\\d)?Z)$/;\r\n\treturn supportedUtcRegex.test(input);\r\n}\r\n\r\n/**\r\n * Convert a date object to a string in ISO8601 UTC format supported by Floodgate (\"yyyy-MM-ddTHH:mm:ssZ\")\r\n * @param input Input date object\r\n */\r\nexport function dateToShortUtcString(input: Date): string {\r\n\tif (!isDate(input)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tfunction pad(n: number): string {\r\n\t\treturn (n < 10) ? (\"0\" + n) : n.toString();\r\n\t}\r\n\r\n\treturn input.getUTCFullYear() +\r\n\t\t\"-\" + pad(input.getUTCMonth() + 1) +\r\n\t\t\"-\" + pad(input.getUTCDate()) +\r\n\t\t\"T\" + pad(input.getUTCHours()) +\r\n\t\t\":\" + pad(input.getUTCMinutes()) +\r\n\t\t\":\" + pad(input.getUTCSeconds()) +\r\n\t\t\"Z\";\r\n}\r\n\r\n/*\r\nImplementing the Fisher-Yates Shuffle\r\n(Shuffles in situ)\r\n*/\r\nexport function fyShuffle(arrIn: number[]): number[] | undefined {\r\n\r\n\tif (isNOU(arrIn)) {\r\n\t\treturn undefined;\r\n\t}\r\n\r\n\t// If the array is empty or has one element, do nothing.\r\n\tif (arrIn.length === 0 || arrIn.length === 1) {\r\n\t\treturn arrIn;\r\n\t}\r\n\r\n\tlet lastNonShuffledElement = arrIn.length - 1;\r\n\r\n\t// While there is still a non shuffled element.\r\n\twhile (lastNonShuffledElement > 0) {\r\n\r\n\t\t// Pick one of the non shuffled elements (num range [0,lastNonShuffledElement+1))\r\n\t\tconst pickIndex = Math.floor(Math.random() * (lastNonShuffledElement + 1));\r\n\r\n\t\t// And swap it with the last non shuffled element\r\n\t\tconst temp = arrIn[lastNonShuffledElement];\r\n\t\tarrIn[lastNonShuffledElement] = arrIn[pickIndex];\r\n\t\tarrIn[pickIndex] = temp;\r\n\r\n\t\tlastNonShuffledElement--;\r\n\t}\r\n\r\n\treturn arrIn;\r\n}\r\n\r\n/**\r\n * Check if value is an valid user id\r\n * One or two character before colon, a colon, and some word after colon.\r\n * @param {any} value value\r\n */\r\nexport function isValidUserId(value: any): boolean {\r\n\tif (!isString(value)) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconst supportedUserIdRegex = /^([a-z]{1,2}):\\w+/;\r\n\treturn supportedUserIdRegex.test(value);\r\n}\r\n\r\n/**\r\n * Safely read an object\r\n */\r\nexport function safeParseObject(serializedValue: string, defaultValue?: T): T {\r\n\ttry {\r\n\t\tconst parsedObject = serializedValue && (serializedValue[0] === \"{\" || serializedValue[0] === \"[\")\r\n\t\t\t\t\t\t\t? JSON.parse(serializedValue)\r\n\t\t\t\t\t\t\t: undefined;\r\n\t\treturn parsedObject ?? defaultValue;\r\n\t} catch (e) {\r\n\t\t// ignore\r\n\t}\r\n\r\n\treturn defaultValue;\r\n}\r\n\r\n/**\r\n * Find the definition with highest priority\r\n */\r\nexport function findHighestPriorityDefinition(definitions: CampaignDefinition[]): [CampaignDefinition, boolean] {\r\n\tlet hasLowerPriorityDefinitions: boolean = false;\r\n\t// Get definition that has max priority value (0/null/undefined has highest prioirty)\r\n\tconst maxPriorityDefinition = definitions.reduce((prev, cur) => {\r\n\t\tconst curPriority = cur.primaryPriority || 0;\r\n\t\tconst prevPriority = prev.primaryPriority || 0;\r\n\r\n\t\t// check if we have lower priority (higher number)\r\n\t\tif (curPriority !== prevPriority) {\r\n\t\t\thasLowerPriorityDefinitions = true;\r\n\t\t}\r\n\r\n\t\treturn curPriority < prevPriority ? cur : prev;\r\n\t});\r\n\r\n\treturn [maxPriorityDefinition, hasLowerPriorityDefinitions];\r\n}\r\n","/**\r\n * Main entry point.\r\n */\r\n\r\nimport * as Api from \"./src/Api/Api\";\r\nimport * as Utils from \"./src/Utils\";\r\n\r\nexport { FloodgateEngine } from \"./src/FloodgateEngine\";\r\nexport { Api, Utils };\r\n","/**\r\n * Parent module for all modules in Api/\r\n */\r\n\r\nimport * as ISurveyInfo from \"./../ISurveyInfo\";\r\nimport * as IActivityListener from \"./IActivityListener\";\r\nimport * as IFloodgateSettingIdMap from \"./IFloodgateSettingIdMap\";\r\nimport * as IFloodgateStorageProvider from \"./IFloodgateStorageProvider\";\r\nimport * as IFloodgateStringProvider from \"./IFloodgateStringProvider\";\r\nimport * as ISurvey from \"./ISurvey\";\r\nimport * as ISurveyComponent from \"./ISurveyComponent\";\r\n\r\nexport { CampaignDefinition } from \"../Campaign/CampaignDefinitionProvider\";\r\nexport { IActivityListener };\r\nexport { IAssetsProvider } from \"./IAssetsProvider\";\r\nexport { IAugLoopCallback } from \"./IAugLoopCallback\";\r\nexport { IBpsSurvey } from \"./IBpsSurvey\";\r\nexport { ICampaignDefinitionProvider } from \"../Campaign/CampaignDefinitionProvider\";\r\nexport { ICommentComponent } from \"./ICommentComponent\";\r\nexport { ICVSurveyComponent } from \"./ICVSurveyComponent\";\r\nexport { IDataProvider } from \"./IDataProvider\";\r\nexport { IFeedbackSurvey } from \"./IFeedbackSurvey\";\r\nexport { IFloodgateAuthTokenCallback } from \"./IFloodgateAuthTokenCallback\";\r\nexport { IFloodgateEnvironmentProvider } from \"./IFloodgateEnvironmentProvider\";\r\nexport { IFloodgateSettingStorageCallback } from \"./IFloodgateSettingStorageCallback\";\r\nexport { IFloodgateStorageProvider };\r\nexport { IFloodgateStringProvider };\r\nexport { IFloodgateSettingIdMap };\r\nexport { IFloodgateTelemetryLogger } from \"./IFloodgateTelemetryLogger\";\r\nexport { IFpsSurvey } from \"./IFpsSurvey\";\r\nexport { INpsSurvey } from \"./INpsSurvey\";\r\nexport { IInterceptSurvey } from \"./IInterceptSurvey\";\r\nexport { IOnSurveyActivatedCallback } from \"./IOnSurveyActivatedCallback\";\r\nexport { IPromptComponent } from \"./IPromptComponent\";\r\nexport { IInterceptComponent } from \"./IInterceptComponent\";\r\nexport { IPsatSurvey } from \"./IPsatSurvey\";\r\nexport { IRatingComponent } from \"./IRatingComponent\";\r\nexport { IFloodgateSetting } from \"./IFloodgateSetting\";\r\nexport { ISurvey };\r\nexport { ISurveyComponent };\r\nexport { ISurveyDomWriter } from \"./ISurveyDomWriter\";\r\nexport { ISurveyForm } from \"./ISurveyForm\";\r\nexport { ISurveyJsonWriter } from \"./ISurveyJsonWriter\";\r\nexport { ISurveyInfo };\r\nexport { ISurveyLauncher } from \"./ISurveyLauncher\";\r\nexport { ISurveyLauncherFactory } from \"./ISurveyLauncherFactory\";\r\nexport { ITelemetryProperties } from \"./ITelemetryProperties\";\r\nexport { ITransporter } from \"./ITransporter\";\r\nexport { ITransporterFactory } from \"./ITransporterFactory\";\r\nexport { IUserFact } from \"../UserFact/IUserFact\";\r\nexport { IUserFactProvider } from \"./IUserFactProvider\";\r\nexport { IGovernanceServiceClient } from \"./IGovernanceServiceClient\";\r\nexport { IPersonalizerClient } from \"./IPersonalizerClient\";\r\n","import * as Constants from \"./../Constants\";\r\nimport { IOnDismissDelegate } from \"./../IOnDismissDelegate\";\r\nimport { IAugLoopCallback, IFloodgateAuthTokenCallback, IFloodgateSettingStorageCallback, IOnSurveyActivatedCallback }\r\n\tfrom \"@ms-ofb/officefloodgatecore/dist/src/Api/Api\";\r\nimport { CampaignDefinition } from \"@ms-ofb/officefloodgatecore/dist/src/Campaign/CampaignDefinitionProvider\";\r\nimport { IManifestDataApplication, IManifestDataTelemetry, IManifestDataWeb } from \"./../Transport/Transport\";\r\nimport { ISession } from \"@augloop/runtime-client\";\r\nimport { ICVSurveyParams } from \"@ms-ofb/officefloodgatecore/dist/src/Api/ICVSurvey\";\r\nimport { ISurveyCSSParams } from \"./ISurveyCSSParams\";\r\n\r\n/**\r\n * Interface for common initialization options\r\n */\r\nexport interface IInitOptionsCommon {\r\n\t// An id uniquely identifying the host app in the OCV world\r\n\tappId: number;\r\n\t// The url at which the styles reside\r\n\tstylesUrl?: string;\r\n\t// The url at which the internationalization files reside\r\n\tintlUrl?: string;\r\n\t// The filename for the internationalization strings, if different than the default filename\r\n\tintlFilename?: string;\r\n\t// Base url where any ux assets reside. Mainly used by coaching ux\r\n\twebSurfacesResourceBaseUrl?: string;\r\n\t// Environment\r\n\tenvironment: Constants.Environment;\r\n\t// A string uniquely identifying the current session\r\n\tsessionId?: string;\r\n\t// cid string which is in-scope for GDPR compliance for export and deletion request\r\n\tcid?: string;\r\n\t// A build version for your app\r\n\tbuild?: string;\r\n\t// The primary colour in hex form #[0-9a-f]{6}\r\n\tprimaryColour?: string;\r\n\t// The secondary colour in hex form #[0-9a-f]{6}\r\n\tsecondaryColour?: string;\r\n\t// The UI locale name of the calling page\r\n\tlocale?: string;\r\n\t// System-Use only\r\n\toriginalLocale?: string;\r\n\t// A callback which will be called when the SDK encounters errors\r\n\tonError?: (err: string) => void;\r\n\t// Application related metadata\r\n\tapplicationGroup?: IManifestDataApplication;\r\n\t// Telemetry related metadata\r\n\ttelemetryGroup?: IManifestDataTelemetry;\r\n\t// Web related metadata\r\n\twebGroup?: IManifestDataWeb;\r\n\t// User Email \r\n\tuserEmail?: string;\r\n\t// The json string to define event sampling\r\n\teventSampling?: ISamplingEvent[];\r\n\t// The timeout for sending response in petrol\r\n\tpetrolTimeout?: number;\r\n\t// check to see if user is consumer/commercial to dynamically display UI\r\n\tisCommercialHost?: boolean;\r\n\t// Option to see if the host will be providing their own resources such as strings or CSS\r\n\tcustomResourcesSetExternally?: CustomResources;\r\n\t// the email policy value from OCPS to determines if the user can see an option to include their email when they submit feedback\r\n\temailPolicyValue?: Constants.OCPSValues;\r\n\t// the screenshot policy value from OCPS to determines if the user can see an option to include their screenshot when they submit feedback\r\n\tscreenshotPolicyValue?: Constants.OCPSValues;\r\n\t// AgeGroup enum which user is classfied as\r\n\tageGroup?: AgeGroup;\r\n\t// Authentication Type of user\r\n\tauthenticationType?: AuthenticationType;\r\n\t// Application settings\r\n\tapplicationSettings?: IApplicationSettings;\r\n\t// Package settings for the new web surfaces urls (after migration of the CDN)\r\n\twebSurfacesSettings?: IWebSurfacesSettings;\r\n\t// Privacy Url\r\n\tprivacyUrl?: string;\r\n\t// Retention Duration in Days \r\n\tretentionDurationDays?: number;\r\n}\r\n\r\n/**\r\n * Interface for messaging service settings\r\n */\r\nexport interface IMessagingServiceSettings {\r\n\t// Internal campaign metadata aggregator url\r\n\tcampaignMetadataAggregatorInt?: string;\r\n\t// Production campaign metadata aggregator url \r\n\tcampaignMetadataAggregatorProd?: string;\r\n\t// Internal set campaign action url\r\n\tsetCampaignActionInt?: string;\r\n\t// Production set campaign action url\r\n\tsetCampaignActionProd?: string;\r\n}\r\n\r\n/**\r\n * Interface for package settings\r\n */\r\nexport interface IWebSurfacesSettings {\r\n\t// Internal web surfaces url\r\n\twebSurfacesIntUrl?: string;\r\n\t// Production web surfaces url \r\n\twebSurfacesProdUrl?: string;\r\n}\r\n\r\n/**\r\n * Interface for host application settings\r\n */\r\nexport interface IApplicationSettings {\r\n\treadonly [key: string]: unknown;\r\n}\r\n\r\n/**\r\n * Interface for inAppFeedback initialization options\r\n */\r\nexport interface IInitOptionsInAppFeedback {\r\n\t// Method called on feedback submission\r\n\tonDismiss?: IOnDismissDelegate;\r\n\t// Bug form toggle\r\n\tbugForm?: boolean;\r\n\t// email enabled\r\n\tshowEmailAddress?: boolean;\r\n\t// User email\r\n\tuserEmail?: string;\r\n\t// Screenshot toggle\r\n\tscreenshot?: boolean;\r\n\t// The switch to show a thank you panel\r\n\tisShowThanks?: boolean;\r\n\t// Flag to enable/disable transistion on the UI.\r\n\ttransitionEnabled?: boolean;\r\n\t// the feedback policy value from OCPS to determines if the user can submit feedback\r\n\tsendFeedbackPolicyValue?: Constants.OCPSValues;\r\n\t// Feedback Forum URL\r\n\tfeedbackForumUrl?: string;\r\n\t// My feedback Forum URL\r\n\tmyFeedbackForumUrl?: string;\r\n}\r\n\r\n/**\r\n * Interface for floodgate initialization options\r\n */\r\nexport interface IInitOptionsFloodgate {\r\n\t// Should the floodgate prompt automatically dismiss if not clicked? Default is false\r\n\tautoDismiss?: Constants.AutoDismissValues;\r\n\r\n\t// Campaign definitions\r\n\tcampaignDefinitions?: CampaignDefinition[];\r\n\r\n\t// Flights for TMS service\r\n\tcampaignFlights?: string;\r\n\r\n\t// Additional query parameters for TMS service\r\n\tcampaignQueryParameters?: string;\r\n\r\n\t// Delegate to be called when the floodgate UI is dismissed, whether on a submission or not\r\n\tonDismiss?: (campiagnId: string, submitted: boolean) => void;\r\n\r\n\t// The callback to be executed when a survey is activated\r\n\tonSurveyActivatedCallback?: IOnSurveyActivatedCallback;\r\n\r\n\t// The callback to be executed when host-based data operations are needed\r\n\tsettingStorageCallback?: IFloodgateSettingStorageCallback;\r\n\r\n\t// Optionally provide a method which will accept the custom strings in Campaign Definitions and return actual\r\n\t// strings that must be displayed. Used for localization.\r\n\tuIStringGetter?: (str: string) => string;\r\n\r\n\t// The callback to be executed when host-based auth token is needed\r\n\tauthTokenCallback?: IFloodgateAuthTokenCallback;\r\n\r\n\t// The boolean option to enforce if surveys are allowed by a policy, such as an OCPS policy for a tenant.\r\n\t// True: Surveys are enabled, floodgate works normally; False: Surveys are disabled\r\n\tsurveyEnabled?: boolean;\r\n\r\n\t// The boolean option to enforce if email address collection in a survey is allowed by a policy, such as an OCPS policy for a tenant.\r\n\t// True: email address collection is enabled, floodgate works normally; False: email address collection is disabled\r\n\tshowEmailAddress?: boolean;\r\n\r\n\t// Interface to enable/disable and pass augLoop host references\r\n\taugLoopCallback?: IAugLoopCallback;\r\n\r\n\t// Interface to pass the params for the Customer Voice Survey\r\n\tcustomerVoiceSurveyParams?: ICVSurveyParams;\r\n\r\n\t// Interface for CSS params to modify survey position\r\n\tsurveyCSSParams?: ISurveyCSSParams;\r\n\r\n\t// The boolean option to enabl the governance service\r\n\tgovernanceServiceEnabled?: boolean;\r\n\r\n\t// configuration for governance service\r\n\tgovernanceServiceConfig?: IGovernanceServiceConfig;\r\n\r\n\t// is personalizer enabled on client side.\r\n\tpersonalizerEnabled?: boolean;\r\n\r\n\t// Messaging service settings for the new base urls (after migration of the CDN)\r\n\tmessagingServiceSettings?: IMessagingServiceSettings;\r\n\r\n\t// is priority filter enabled on client side.\r\n\tisPriorityEnabled?: boolean;\r\n\r\n\t// is EUDB compliant UX enabled on client side.\r\n\tisEudbUxEnabled?: boolean;\r\n}\r\n\r\n/**\r\n * Interface for floodgate event sampling options\r\n */\r\nexport interface ISamplingEvent {\r\n\ttype: string;\r\n\tname: string;\r\n\tsampleRate: number;\r\n}\r\n\r\nexport interface ISamplingInitOption {\r\n\tevent?: Record;\r\n}\r\n\r\nexport interface IGovernanceServiceConfig {\r\n\t// limit number of retry\r\n\tretry?: number;\r\n\r\n\t// timeout in second\r\n\ttimeout?: number;\r\n\r\n\t// In case of failure call, option to whether continue display survey or fall off\r\n\tforceServicelessSurveyDisplay?: boolean;\r\n\r\n\t// Option to use simple request\r\n\tsimpleRequestEnabled?: boolean;\r\n}\r\n\r\n// bit mask flag: values should be set 0,1,2,4,8,16, etc...\r\n// Example for Css and Strings both, use 3.\r\nexport enum CustomResources {\r\n\tNone = 0,\r\n\tCss = 1,\r\n\tStrings = 2,\r\n}\r\n\r\nexport enum AgeGroup {\r\n\tUndefined, // Unknown age\r\n\tMinorWithoutParentalConsent, // Minor under the age of consent\r\n\tMinorWithParentalConsent, // Minor under age of consent\r\n\tAdult, // Adult\r\n\tNotAdult, // Minor above age of consent\t\r\n\tMinorNoParentalConsentRequired, // Minor above age of consent\r\n}\r\n\r\nexport enum AuthenticationType {\r\n\tMSA,\r\n\tAAD,\r\n\tUnauthenticated\r\n}\r\n\r\n// Taken from %SRCROOT%\\privacy\\options\\public\\UserConsentGroup.h\r\n// Enum that describes the different consent categories of the user.\r\nexport const enum UserConsentGroup {\r\n\t// Unknown consent group, we do not have info to determine this\r\n\tUnknown = 0,\r\n\t// Can give consent to data collection, upsell messages\r\n\tCanConsent = 1,\r\n\t// Can still give consent but is only a limited consent.\r\n\t// As an example, upsell / cross sell should not be shown.\r\n\tPartialConsent = 2,\r\n\t// They cannot provide any form of consent. No consent dialogs / upsell should not be shown.\r\n\tCannotConsent = 3,\r\n};\r\n","import * as Utils from \"../Utils\";\r\nimport FloodgateStorageProvider from \"../FloodgateCore/FloodgateStorageProvider\";\r\nimport { TargetedMessagingCache } from \"../TargetedMessaging/TargetedMessagingCache\";\r\nimport { ContentType } from \"../TargetedMessaging/TargetedMessagingContentType\";\r\n\r\nimport * as Logging from \"../Logging/Logging\";\r\n\r\nconst { isNOU } = Utils;\r\n\r\nexport const enum SettingKey {\r\n\t// General\r\n\tlogLevelSettings = \"LogLevelSettings\",\r\n\r\n\t// Web surfaces\r\n\tteachingMessageCooldown = \"TeachingMessageCooldown\",\r\n\twebSurfacesIntLink = \"WebSurfacesIntLink\",\r\n\twebSurfacesProdLink = \"WebSurfacesProdLink\",\r\n\r\n\t// TMS settings\r\n\ttmsAppId = \"TmsAppId\",\r\n\ttmsServiceUrl = \"TmsServiceUrl\",\r\n\ttmsActionUrl = \"TmsActionUrl\",\r\n\ttmsLoadTimeout = \"TmsLoadTimeout\",\r\n\ttmsMessageMetadataExpiry = \"TmsMessageMetadataExpiry\",\r\n\ttmsUserGovernanceRulesExpiry = \"TmsUserGovernanceRulesExpiry\",\r\n\ttmsCampaignContentExpiry = \"TmsCampaignContentExpiry\",\r\n\ttmsDynamicSettingsExpiry = \"TmsDynamicSettingsExpiry\",\r\n\ttmsLogLevelSettingsExpiry = \"TmsLogLevelSettingsExpiry\",\r\n\ttmsUserFactsExpiry = \"TmsUserFactsExpiry\",\r\n\r\n\t// Tulips\r\n\ttulipsAppId = \"TulipsAppId\",\r\n\ttulipsLoadTimeout = \"TulipsLoadTimeout\",\r\n\ttulipsServiceUrl = \"TulipsServiceUrl\",\r\n\ttulipsIngestionTimeInterval = \"TulipsIngestionTimeInterval\",\r\n\r\n\t// AugLoop\r\n\ttulipsAugLoopAnnotationName = \"TulipsAugLoopAnnotationName\",\r\n\ttulipsAugLoopPackageDelayLoad = \"TulipsAugLoopPackageDelayLoad\",\r\n\ttulipsAugLoopLoadRetryTimes = \"TulipsAugLoopLoadRetryTimes\",\r\n\ttulipsAugLoopLoadTimeout = \"TulipsAugLoopLoadTimeout\",\r\n}\r\n\r\nlet dynamicSettingsTmsgCache: TargetedMessagingCache = null;\r\n\r\nexport function getDynamicSetting(key: SettingKey, defaultValue: T): T {\r\n\ttry\t{\r\n\t\tif (!dynamicSettingsTmsgCache && FloodgateStorageProvider.isStorageAvailable()) {\r\n\t\t\tdynamicSettingsTmsgCache = new TargetedMessagingCache([ContentType.dynamicSettings]);\r\n\t\t}\r\n\r\n\t\tif (!dynamicSettingsTmsgCache) {\r\n\t\t\treturn defaultValue;\r\n\t\t}\r\n\r\n\t\tconst settingsObj = dynamicSettingsTmsgCache.getItemContent>(ContentType.dynamicSettings);\r\n\t\tif (!isNOU(settingsObj)\r\n\t\t\t&& settingsObj.hasOwnProperty(key)\r\n\t\t\t&& !isNOU(settingsObj[key])) {\r\n\t\t\tconst settingValue = settingsObj[key];\r\n\r\n\t\t\t// parse types\r\n\t\t\tif (typeof defaultValue === \"number\" && typeof settingValue !== \"number\") {\r\n\t\t\t\tif (typeof settingValue === \"string\") {\r\n\t\t\t\t\tconst returnValue = settingValue.indexOf(\".\") === -1 ? parseInt(settingValue, 10) : parseFloat(settingValue);\r\n\t\t\t\t\treturn isNaN(returnValue) ? defaultValue : returnValue as unknown as T;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn defaultValue;\r\n\t\t\t}\r\n\r\n\t\t\treturn settingValue;\r\n\t\t}\r\n\t} catch (error) {\r\n\t\tLogging.getLogger().logEvent(\r\n\t\t\tLogging.EventIds.Common.Error.VALUE,\r\n\t\t\tLogging.LogLevel.Error,\r\n\t\t\t{\r\n\t\t\t\tErrorMessage: `Error reading dynamic setting ${error && error.message}`,\r\n\t\t\t\tType: key,\r\n\t\t\t});\r\n\t}\r\n\r\n\treturn defaultValue;\r\n}\r\n\r\nexport function resetDynamicSettingsTmsgCache() {\r\n\tdynamicSettingsTmsgCache = null;\r\n}\r\n","/**\r\n * Interface for storing and retrieving floodgate-specific data from storage\r\n */\r\ninterface IFloodgateStorageProvider {\r\n\t/**\r\n\t * Lock the file to prevent access from another process.\r\n\t */\r\n\tfileLock(fileType: IFloodgateStorageProvider.FileType): void;\r\n\r\n\t/**\r\n\t * Unlock the file.\r\n\t */\r\n\tfileUnlock(fileType: IFloodgateStorageProvider.FileType): void;\r\n\r\n\t/**\r\n\t * Read the file\r\n\t */\r\n\tread(fileType: IFloodgateStorageProvider.FileType): string;\r\n\r\n\t/**\r\n\t * Write to the file\r\n\t */\r\n\twrite(fileType: IFloodgateStorageProvider.FileType, content: string): void;\r\n}\r\n\r\nmodule IFloodgateStorageProvider {\r\n\t/**\r\n\t * Enum for the files used by floodgate\r\n\t */\r\n\texport enum FileType {\r\n\t\tFloodgateSettings,\r\n\t\tSurveyActivationStats,\r\n\t\tSurveyEventActivityStats,\r\n\t\tCampaignDefinitions,\r\n\t\tCampaignStates,\r\n\t\tGovernedChannelStates,\r\n\t\tTmsCache_MessageMetadata,\r\n\t\tTmsCache_UserGovernance,\r\n\t\tTmsCache_CampaignContent,\r\n\t\tTms_DynamicSettings,\r\n\t\tLogLevelSettings,\r\n\t\tUserFacts,\r\n\t\tDebugOverrides,\r\n\t}\r\n}\r\n\r\nexport = IFloodgateStorageProvider;\r\n","/**\r\n * Constants.ts\r\n *\r\n * A module for all the constants.\r\n */\r\n\r\n/**\r\n * Telemetry events\r\n */\r\nexport class TelemetryEvent {\r\n\tpublic static CampaignState = class {\r\n\t\tpublic static Deserialize = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_CampaignState_Deserialize_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static FileBasedCampaignStateProvider = class {\r\n\t\tpublic static Load = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_FileBasedCampaignStateProvider_Load_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static HostBasedCampaignStateProvider = class {\r\n\t\tpublic static GetStatesFromHost = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_HostBasedCampaignStateProvider_GetStatesFromHost_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static Floodgate = class {\r\n\t\tpublic static Initialize = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_Floodgate_Initialize_Failed\";\r\n\t\t};\r\n\r\n\t\tpublic static Start = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_Floodgate_Start_Failed\";\r\n\t\t\tpublic static Warning: string = \"FloodgateCore_Floodgate_Start_Warning\";\r\n\t\t\tpublic static SurveysDisabled: string = \"FloodgateCore_Floodgate_Start_SurveysDisabled\";\r\n\t\t};\r\n\r\n\t\tpublic static UserFactsLoad = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_Floodgate_UserFactsLoad_Failed\";\r\n\t\t};\r\n\r\n\t\tpublic static UserFactsSpecDeserialization = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_Floodgate_UserFactsSpecDeserialization_Failed\";\r\n\t\t};\r\n\r\n\t\tpublic static UserFactsSpecIsAMatch = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_Floodgate_UserFactsSpecIsAMatch_Failed\";\r\n\t\t\tpublic static Mismatch: string = \"FloodgateCore_Floodgate_UserFactsSpecIsAMatch_Mismatch\";\r\n\t\t\tpublic static Summary: string = \"FloodgateCore_Floodgate_UserFactsSpecIsAMatch_Summary\";\r\n\t\t};\r\n\r\n\t\tpublic static RenderSurvey = class {\r\n\t\t\tpublic static Unsupported: string = \"FloodgateCore_Floodgate_RenderSurvey_Unsupported\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static FloodgateEngine = class {\r\n\t\tpublic static Make = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_FloodgateEngine_Make_Failed\";\r\n\t\t};\r\n\r\n\t\tpublic static Common = class {\r\n\t\t\tpublic static Error: string = \"FloodgateCore_FloodgateEngine_Common_Error\";\r\n\t\t};\r\n\r\n\t\tpublic static Start = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_FloodgateEngine_Start_Failed\";\r\n\t\t};\r\n\r\n\t\tpublic static StartAsync = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_FloodgateEngine_StartAsync_Failed\";\r\n\t\t\tpublic static Stopped: string = \"FloodgateCore_FloodgateEngine_StartAsync_Stopped\";\r\n\t\t};\r\n\r\n\t\tpublic static OnSurveyActivated = class {\r\n\t\t\tpublic static ActivationStatsSuppressedSurvey: string = \"FloodgateCore_FloodgateEngine_OnSurveyActivated_ActivationStatsSuppressedSurvey\";\r\n\t\t\tpublic static ClosedChannelType: string = \"FloodgateCore_FloodgateEngine_OnSurveyActivated_ClosedChannelType\";\r\n\t\t\tpublic static SurveyNotDefined: string = \"FloodgateCore_FloodgateEngine_OnSurveyActivated_SurveyNotDefined\";\r\n\t\t\tpublic static SessionSuppressedSurvey: string = \"FloodgateCore_FloodgateEngine_OnSurveyActivated_SessionSuppressedSurvey\";\r\n\t\t\tpublic static ActivationExpiredSurvey: string = \"FloodgateCore_FloodgateEngine_OnSurveyActivated_ActivationExpiredSurvey\";\r\n\t\t\tpublic static ActivationIrrelevantSurvey: string = \"FloodgateCore_FloodgateEngine_OnSurveyActivated_ActivationIrrelevantSurvey\";\r\n\t\t\tpublic static Error: string = \"FloodgateCore_FloodgateEngine_OnSurveyActivated_Error\";\r\n\t\t};\r\n\r\n\t\tpublic static CheckGovernanceServiceAndActivateSurvey = class {\r\n\t\t\tpublic static GovernanceServiceForceToDisplay: string = \"FloodgateCore_FloodgateEngine_GovernanceService_GovernanceServiceForceToDisplay\";\r\n\t\t\tpublic static GovernanceServiceClientCompleted: string = \"FloodgateCore_FloodgateEngine_GovernanceService_GovernanceServiceClientCompleted\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static GovernedChannelState = class {\r\n\t\tpublic static Deserialize = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_GovernedChannelState_Deserialize_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static FileBasedGovernedChannelStateProvider = class {\r\n\t\tpublic static Load = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_FileBasedGovernedChannelStateProvider_Load_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static HostBasedGovernedChannelStateProvider = class {\r\n\t\tpublic static GetStatesFromHost = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_HostBasedGovernedChannelStateProvider_GetStatesFromHost_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static SurveyStatCollectionActivation = class {\r\n\t\tpublic static FromJson = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_SurveyStatCollectionActivation_FromJson_Failed\";\r\n\t\t};\r\n\r\n\t\tpublic static ToJson = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_SurveyStatCollectionActivation_ToJson_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static HostBasedSurveyActivationStatsProvider = class {\r\n\t\tpublic static GetSurveyStatsFromHost = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_HostBasedSurveyActivationStatsProvider_GetSurveyStatsFromHost_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static SurveyStatCollectionEventActivity = class {\r\n\t\tpublic static FromJson = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_SurveyStatCollectionEventActivity_FromJson_Failed\";\r\n\t\t};\r\n\r\n\t\tpublic static ToJson = class {\r\n\t\t\tpublic static Failed: string = \"FloodgateCore_SurveyStatCollectionEventActivity_ToJson_Failed\";\r\n\t\t};\r\n\t};\r\n\r\n\tpublic static SurveyActivity = class {\r\n\t\tpublic static LogActivity = class {\r\n\t\t\tpublic static EventsReprocessed: string = \"FloodgateCore_SurveyActivity_LogActivity_EventsReprocessed\";\r\n\t\t\tpublic static SurveysReprocessed: string = \"FloodgateCore_SurveyActivity_LogActivity_SurveysReprocessed\";\r\n\t\t};\r\n\r\n\t\tpublic static SetActivityTrackingContracts = class {\r\n\t\t\tpublic static DuplicateSurveyID: string = \"FloodgateCore_SurveyActivity_SetActivityTrackingContracts_DuplicateSurveyID\";\r\n\t\t};\r\n\t};\r\n}\r\n","/**\r\n * Implementation of IFloodgateStorageProvider for Web SDK\r\n */\r\n\r\nimport { IFloodgateStorageProvider } from \"@ms-ofb/officefloodgatecore/dist/src/Api/Api\";\r\nimport * as Window from \"./../Window/Window\";\r\nimport * as Logging from \"./../Logging/Logging\";\r\nimport FileType = IFloodgateStorageProvider.FileType;\r\n\r\nconst fileTypeToKeyMap: { [k in FileType]: string } = {\r\n\t[FileType.CampaignDefinitions]: \"obf-CampaignDefinitions\",\r\n\t[FileType.CampaignStates]: \"obf-CampaignStates\",\r\n\t[FileType.FloodgateSettings]: \"obf-FloodgateSettings\",\r\n\t[FileType.GovernedChannelStates]: \"obf-GovernedChannelStates\",\r\n\t[FileType.SurveyActivationStats]: \"obf-SurveyActivationStats\",\r\n\t[FileType.SurveyEventActivityStats]: \"obf-SurveyEventActivityStats\",\r\n\t[FileType.TmsCache_CampaignContent]: \"obf-TmsCampaignContent\",\r\n\t[FileType.TmsCache_MessageMetadata]: \"obf-TmsMessageMetadata\",\r\n\t[FileType.TmsCache_UserGovernance]: \"obf-TmsUserGovernance\",\r\n\t[FileType.Tms_DynamicSettings]: \"obf-TmsDynamicSettings\",\r\n\t[FileType.LogLevelSettings]: \"obf-LogLevelSettings\",\r\n\t[FileType.UserFacts]: \"obf-UserFacts\",\r\n\t[FileType.DebugOverrides]: \"obf-DebugOverrides\",\r\n};\r\n\r\nexport default class FloodgateStorageProvider implements IFloodgateStorageProvider {\r\n\t/**\r\n\t * Code to detect localStorage presence.\r\n\t * Copied from MDN: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\r\n\t */\r\n\tpublic static isStorageAvailable(): boolean {\r\n\t\ttry {\r\n\t\t\tlet x = \"__storage_test__\";\r\n\t\t\tWindow.getGlobal().localStorage.setItem(x, x);\r\n\t\t\tWindow.getGlobal().localStorage.removeItem(x);\r\n\t\t\treturn true;\r\n\t\t} catch (e) {\r\n\t\t\treturn e instanceof DOMException && (\r\n\t\t\t\t// everything except Firefox\r\n\t\t\t\te.code === 22 ||\r\n\t\t\t\t// Firefox\r\n\t\t\t\te.code === 1014 ||\r\n\t\t\t\t// test name field too, because code might not be present\r\n\t\t\t\t// everything except Firefox\r\n\t\t\t\te.name === \"QuotaExceededError\" ||\r\n\t\t\t\t// Firefox\r\n\t\t\t\te.name === \"NS_ERROR_DOM_QUOTA_REACHED\") &&\r\n\t\t\t\t// acknowledge QuotaExceededError only if there's something already stored\r\n\t\t\t\tWindow.getGlobal().localStorage.length !== 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Safely read an object\r\n\t */\r\n\tpublic static safeReadObject(fileType: FileType, defaultValue: T = undefined): T {\r\n\t\tif (!(fileType in FileType)) {\r\n\t\t\treturn defaultValue;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tlet storageKey = fileTypeToKeyMap[fileType];\r\n\t\t\tconst result = Window.getGlobal().localStorage.getItem(storageKey);\r\n\t\t\tconst parsedObject = result && (result[0] === \"{\" || result[0] === \"[\") ? JSON.parse(result) : result;\r\n\t\t\treturn parsedObject ?? defaultValue;\r\n\t\t} catch (e) {\r\n\t\t\t// ignore\r\n\t\t}\r\n\r\n\t\treturn defaultValue;\r\n\t}\r\n\r\n\t/**\r\n\t * Lock the file to prevent access from another process.\r\n\t */\r\n\tpublic fileLock(fileType: FileType): void {\r\n\t\t// JS runs on a single thread in the browser.\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Unlock the file.\r\n\t */\r\n\tpublic fileUnlock(fileType: FileType): void {\r\n\t\t// JS runs on a single thread in the browser.\r\n\t\treturn;\r\n\t}\r\n\r\n\t/**\r\n\t * Read the file\r\n\t */\r\n\tpublic read(fileType: FileType): string {\r\n\t\tif (!(fileType in FileType)) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet storageKey = fileTypeToKeyMap[fileType];\r\n\t\tlet result: string;\r\n\t\ttry {\r\n\t\t\tresult = Window.getGlobal().localStorage.getItem(storageKey);\r\n\t\t} catch (e) {\r\n\t\t\tLogging.getLogger().logEvent(Logging.EventIds.SURVEY_FLOODGATE_FILEREAD_FAILED,\r\n\t\t\t\tLogging.LogLevel.Error,\r\n\t\t\t\t{\r\n\t\t\t\t\tErrorMessage: e.toString(),\r\n\t\t\t\t\tFileName: storageKey,\r\n\t\t\t\t});\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t/**\r\n\t * Write to the file\r\n\t */\r\n\tpublic write(fileType: FileType, content: string): void {\r\n\t\tif (!(fileType in FileType)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet storageKey = fileTypeToKeyMap[fileType];\r\n\t\ttry {\r\n\t\t\tWindow.getGlobal().localStorage.setItem(storageKey, content);\r\n\t\t} catch (e) {\r\n\t\t\tLogging.getLogger().logEvent(Logging.EventIds.SURVEY_FLOODGATE_FILEWRITE_FAILED,\r\n\t\t\t\tLogging.LogLevel.Error,\r\n\t\t\t\t{\r\n\t\t\t\t\tErrorMessage: e.toString(),\r\n\t\t\t\t\tFileName: storageKey,\r\n\t\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n}\r\n","import * as Utils from \"./Utils\";\r\n\r\nexport enum GovernedChannelType {\r\n\tStandard, // 0\r\n\tUrgent, // 1\r\n\tBanner, // 2\r\n\tTeachingMessage, // 3\r\n}\r\n\r\nexport namespace GovernedChannelType {\r\n\texport function getDefault(): GovernedChannelType { return GovernedChannelType.Standard; }\r\n}\r\n\r\nexport interface IGovernedChannelData {\r\n\t/**\r\n\t * Gets the type of GovernedChannel this object represents\r\n\t */\r\n\tgetType(): GovernedChannelType;\r\n\r\n\t/**\r\n\t * Gets the name of this GovernedChannel\r\n\t */\r\n\tgetName(): string;\r\n\r\n\t/**\r\n\t * Gets the amount of time during which this channel will refuse new surveys after a successful prompt\r\n\t */\r\n\tgetCooldownSeconds(): number;\r\n\r\n\t/**\r\n\t * Gets the last time this channel started a cool down (aka the last time a survey was successfully shown).\r\n\t * Null if cool down has never been initiated\r\n\t */\r\n\tgetCooldownStartTime(): Date;\r\n\r\n\t/**\r\n\t * If in cool down, returns the time in which this channel will next be \"Open\".\r\n\t * Else returns the last time this channel became \"Open\".\r\n\t */\r\n\tgetCooldownEndTime(): Date;\r\n\r\n\t/**\r\n\t * Whether or not this channel is open to new surveys at this current point in time (aka Now)\r\n\t */\r\n\tisOpen(): boolean;\r\n\r\n\t/**\r\n\t * Whether or not this channel is open to new surveys at the specified point in time\r\n\t */\r\n\tisOpenAtDate(date: Date): boolean;\r\n}\r\n\r\nexport class GovernedChannel implements IGovernedChannelData {\r\n\tprivate type: GovernedChannelType;\r\n\tprivate name: string;\r\n\tprivate cooldownSeconds: number;\r\n\tprivate cooldownStartTime: Date;\r\n\tprivate cooldownEndTime: Date;\r\n\r\n\tpublic constructor(type: GovernedChannelType, name: string, cooldownSeconds: number, cooldownStartTime: Date) {\r\n\t\tif (!Utils.isEnumValue(type, GovernedChannelType)) {\r\n\t\t\tthrow new Error(\"type is not a valid GovernedChannelType\");\r\n\t\t}\r\n\r\n\t\tif (!name) {\r\n\t\t\tthrow new Error(\"name must not be null or empty\");\r\n\t\t}\r\n\r\n\t\tif (cooldownSeconds < 0) {\r\n\t\t\tthrow new Error(\"cooldownSeconds must not be negative\");\r\n\t\t}\r\n\r\n\t\tthis.type = type;\r\n\t\tthis.name = name;\r\n\t\tthis.cooldownSeconds = cooldownSeconds;\r\n\t\tthis.setCooldownStartTime(cooldownStartTime);\r\n\t}\r\n\r\n\tpublic setCooldownStartTime(cooldownStartTime: Date): void {\r\n\t\t// Set the start time\r\n\t\tthis.cooldownStartTime = cooldownStartTime;\r\n\r\n\t\tif (Utils.isNOU(this.cooldownStartTime)) {\r\n\t\t\t// Null cooldownStartTime means cool down has never been initiated, so set the cooldownEndTime to distant past\r\n\t\t\tthis.cooldownEndTime = Utils.getDistantPast();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Calculate the end time, but don't overflow past max.\r\n\t\tthis.cooldownEndTime = Utils.addSecondsWithoutOverflow(this.cooldownStartTime, this.cooldownSeconds);\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic isOpen(): boolean {\r\n\t\treturn this.isOpenAtDate(new Date());\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic isOpenAtDate(date: Date): boolean {\r\n\t\tif (!date) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn (date > this.cooldownEndTime);\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getType(): GovernedChannelType {\r\n\t\treturn this.type;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getName(): string {\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getCooldownSeconds(): number {\r\n\t\treturn this.cooldownSeconds;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getCooldownStartTime(): Date {\r\n\t\treturn this.cooldownStartTime;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getCooldownEndTime(): Date {\r\n\t\treturn this.cooldownEndTime;\r\n\t}\r\n}\r\n","import { ISurveyForm } from \"../Api/ISurveyForm\";\r\nimport * as ISurveyInfo from \"../ISurveyInfo\";\r\nimport { ISurveyDomWriter } from \"./ISurveyDomWriter\";\r\nimport { ISurveyJsonWriter } from \"./ISurveyJsonWriter\";\r\n\r\n/**\r\n * The interface for all Surveys\r\n * A survey has a type, a globally unique id (otherwise opaque, but suitable for correlation with telemetry and for saving stats in the registry),\r\n * an expiration time to aid in cache cleanup, and an activation event to cause this survey to be triggered\r\n */\r\ninterface ISurvey extends ISurveyForm, ISurveyDomWriter, ISurveyJsonWriter {\r\n\t/**\r\n\t * Get the type of this survey.\r\n\t */\r\n\tgetType(): ISurvey.Type;\r\n\r\n\t/**\r\n\t * Get basic root-level information about this survey\r\n\t */\r\n\tgetSurveyInfo(): ISurveyInfo;\r\n}\r\n\r\nmodule ISurvey {\r\n\texport enum Type {\r\n\t\t// A Feedback survey. Contains a single question with a free-form text response\r\n\t\tFeedback = 0,\r\n\t\t// An NPS (net promoter score) survey. Asks user to rate \"whether or not they would recommend this product to family/friends\".\r\n\t\t// Contains a prompt, question, and rating\r\n\t\tNps = 1,\r\n\t\t// A PSAT (product satisfaction) survey. Asks user to rate \"overall, based on their experience, how satisifed are they with this app\"\r\n\t\t// Contains a prompt, question, and rating\r\n\t\tPsat = 2,\r\n\t\t// A BPS (build promotion) survey. Asks user to choose between Yes and No options of promoting the current build to the next audience ring\r\n\t\t// Contains a prompt, question, and rating (Yes/No)\r\n\t\tBps = 3,\r\n\t\t// A FPS (feature promotion) survey. Asks user to rate a given app feature.\r\n\t\t// Contains a prompt, question, and rating\r\n\t\tFps = 4,\r\n\t\t// A NLQS (net language quality score) survey. Asks user to rate the language quality.\r\n\t\t// Contains a prompt, question, and rating\r\n\t\tNlqs = 5,\r\n\t\t// An intercept survey. Asks user if they want to talk to a Microsoft engineer to give feedback.\r\n\t\t// User can dismiss it or click on it to go to the intercept website, where the experience continues.\r\n\t\tIntercept = 6,\r\n\t\t// A Generic surface survey that uses content metadata to render a surface.\r\n\t\t// As of 4th Feb 2019 there are 11 types defined in Mso hence giving a value of 12.\r\n\t\tGenericMessagingSurface = 12,\r\n\t}\r\n\r\n\texport const DOM_FEEDBACKSURVEY_TAGNAME = \"FeedbackSurvey\";\r\n\texport const DOM_NPS_TAGNAME = \"Nps\";\r\n\texport const DOM_PSAT_TAGNAME = \"Psat\";\r\n\texport const DOM_BPS_TAGNAME = \"Bps\";\r\n\texport const DOM_FPS_TAGNAME = \"Fps\";\r\n\texport const DOM_NLQS_TAGNAME = \"Nlqs\";\r\n\texport const DOM_INTERCEPT_TAGNAME = \"Intercept\";\r\n\r\n\t// If the launcher type is null or undefined in campaign definition then this value will be used as default\r\n\texport const LAUNCHER_TYPE_DEFAULT = \"survey\";\r\n}\r\n\r\nexport = ISurvey;\r\n","/**\r\n * Base interface for a SurveyComponent (i.e. a question/widget to show the user\r\n * in a survey form, and that typically requires a response value of some kind)\r\n */\r\ninterface ISurveyComponent {\r\n\tgetType(): ISurveyComponent.Type;\r\n}\r\n\r\nmodule ISurveyComponent {\r\n\texport const enum Type {\r\n\t\t// A quick pop-up requesting participation in a survey\r\n\t\tPrompt = \"Prompt\",\r\n\r\n\t\t// A question paired with a free-form text response\r\n\t\tComment = \"Comment\",\r\n\r\n\t\t// A question asking for a selection from a list of allowed values with numeric meaning\r\n\t\tRating = \"Rating\",\r\n\r\n\t\t// Information needed to pass into CVSurvey\r\n\t\tCVSurvey = \"CVSurvey\",\r\n\r\n\t\t// A question asking for one or more selections from a list of allowed values\r\n\t\tMultipleChoice = \"MultipleChoice\",\r\n\r\n\t\t// A pop-up dialog requesting participation in an Intercept session\r\n\t\tIntercept = \"Intercept\",\r\n\t}\r\n\r\n\texport const DOM_PROMPT_TAGNAME = \"Prompt\";\r\n\texport const DOM_COMMENT_TAGNAME = \"Comment\";\r\n\texport const DOM_RATING_TAGNAME = \"Rating\";\r\n\texport const DOM_CVSURVEY_TAGNAME = \"CVSurvey\";\r\n\texport const DOM_MULTIPLECHOICE_TAGNAME = \"MultipleChoice\";\r\n\texport const DOM_INTERCEPT_TAGNAME = \"Intercept\";\r\n\texport const JSON_INTERCEPT_KEYNAME = \"intercept\";\r\n\texport const JSON_INTERCEPTURL_KEYNAME = \"url\";\r\n\texport const JSON_PROMPT_KEYNAME = \"prompt\";\r\n\texport const JSON_PROMPTYESTEXT_KEYNAME = \"yesButtonText\";\r\n\texport const JSON_PROMPTNOTEXT_KEYNAME = \"noButtonText\";\r\n\texport const JSON_COMMENT_KEYNAME = \"comment\";\r\n\texport const JSON_RATING_KEYNAME = \"rating\";\r\n\texport const JSON_CVSURVEY_KEYNAME = \"cvSurvey\";\r\n\texport const JSON_CVSURVEYFORMID_KEYNAME = \"formId\";\r\n\texport const JSON_CVSURVEYTHEME_KEYNAME = \"theme\";\r\n\texport const JSON_RATINGOPTIONS_KEYNAME = \"options\";\r\n\texport const JSON_CVSURVEYPRODUCTNAME_KEYNAME = \"productName\";\r\n\texport const JSON_CVSURVEYUIHOST_KEYNAME = \"uiHost\";\r\n\texport const JSON_CVSURVEYPLATFORM_KEYNAME = \"platform\";\r\n\texport const JSON_TITLE_KEYNAME = \"title\";\r\n\texport const JSON_QUESTION_KEYNAME = \"question\";\r\n\texport const JSON_MULTIPLECHOICE_KEYNAME = \"multipleChoice\";\r\n\texport const JSON_APPLICATION_KEYNAME = \"application\";\r\n\texport const JSON_EXTENDEDMANIFESTDATA_KEYNAME = \"extendedManifestData\";\r\n\texport const JSON_SURVEYSTRINGS_KEYNAME = \"surveyStrings\";\r\n\texport const JSON_SURVEYSPECIFICDATA_KEYNAME = \"surveySpecificData\";\r\n}\r\n\r\nexport = ISurveyComponent;\r\n","import { ActivityTrackingSet } from \"./ActivityTrackingSet\";\r\nimport { ISurveyInfo, IUserFactProvider } from \"./Api/Api\";\r\nimport * as IActivityListener from \"./Api/IActivityListener\";\r\nimport { IFloodgateEnvironmentProvider } from \"./Api/IFloodgateEnvironmentProvider\";\r\nimport { IFloodgateSettingStorageCallback } from \"./Api/IFloodgateSettingStorageCallback\";\r\nimport * as IFloodgateStorageProvider from \"./Api/IFloodgateStorageProvider\";\r\nimport * as IFloodgateStringProvider from \"./Api/IFloodgateStringProvider\";\r\nimport { IFloodgateTelemetryLogger } from \"./Api/IFloodgateTelemetryLogger\";\r\nimport { GovernanceServiceClientState, IGovernanceServiceClient, IGovernanceServiceResult, IGovernanceSurveyInfo, IGovernanceSurveyResponse } from \"./Api/IGovernanceServiceClient\";\r\nimport { IContextData, IOnSurveyActivatedCallback } from \"./Api/IOnSurveyActivatedCallback\";\r\nimport * as ISurvey from \"./Api/ISurvey\";\r\nimport { ISurveyLauncher } from \"./Api/ISurveyLauncher\";\r\nimport { ISurveyLauncherFactory } from \"./Api/ISurveyLauncherFactory\";\r\nimport { ITelemetryProperties } from \"./Api/ITelemetryProperties\";\r\nimport { ITransporterFactory } from \"./Api/ITransporterFactory\";\r\nimport { CampaignDefinition,\r\n\t\tCampaignNominationSchemeRatioPercentage,\r\n\t\tFileSystemCampaignDefinitionProvider,\r\n\t\tICampaignDefinitionProvider } from \"./Campaign/CampaignDefinitionProvider\";\r\nimport { CampaignManager } from \"./Campaign/CampaignManager\";\r\nimport { CampaignStateProviderFactory, ICampaignStateProvider } from \"./Campaign/CampaignStateProvider\";\r\nimport { IDictionary } from \"./Common\";\r\nimport { TelemetryEvent } from \"./Constants\";\r\nimport { FloodgateSettings } from \"./FloodgateSettings\";\r\nimport { GovernedChannelType, IGovernedChannelData } from \"./GovernedChannel\";\r\nimport { GovernedChannelStateProviderFactory, IGovernedChannelStateProvider } from \"./GovernedChannelStateProvider\";\r\nimport { Governor, IGovernor } from \"./Governor\";\r\nimport { ISurveyClient } from \"./ISurveyClient\";\r\nimport * as SurveyActivityListener from \"./SurveyActivityListener\";\r\nimport { ISurveyActivationStatsProvider, SurveyActivationStats, SurveyActivationStatsProviderFactory,\r\n\tSurveyStatCollectionActivation } from \"./SurveyStatCollectionActivation\";\r\nimport { SurveyEventActivityStats, SurveyStatCollectionEventActivity } from \"./SurveyStatCollectionEventActivity\";\r\n\r\nimport FileType = IFloodgateStorageProvider.FileType;\r\nimport { ActivityTrackingContract } from \"./ActivityTrackingContract\";\r\nimport { hasSurveyReachedMaxLaunches, hasSurveyReachedMaxLaunchesPerSession, isBusinessCriticalSurvey, isCriticalSurvey, isMultiLaunchSurvey } from \"./GovernanceUtils\";\r\nimport { isNOU } from \"./Utils\";\r\n\r\n// Telemetry logger with no-op logger\r\nclass DefaultFloodgateTelemetryLogger implements IFloodgateTelemetryLogger {\r\n\t// @Override\r\n\tpublic log_TriggerMet(campaignId: string, surveyId: string, surveyType: ISurvey.Type, surveyActivityInfo: string,\r\n\t\tadditionalSurveyInfo: string): void {}\r\n\r\n\t// @Override\r\n\tpublic log_UserSelected(campaignId: string, surveyId: string, surveyType: ISurvey.Type,\r\n\t\tadditionalSurveyInfo: string): void {}\r\n\r\n\t// @Override\r\n\tpublic log_CampaignLoad_Failed(errorMessage: string): void {}\r\n\r\n\t// @Override\r\n\tpublic log_Error(eventId: string, errorMessage: string): void {}\r\n\r\n\t// @Override\r\n\tpublic log_Event(eventId: string, properties: ITelemetryProperties): void {}\r\n\r\n\t// @Override\r\n\tpublic log_LocalError(message: string, ...data: any[]): void {}\r\n}\r\n\r\nexport const enum InitializationStatus {\r\n\tNone = 0,\r\n\tError,\r\n\tInitializing,\r\n\tStarted,\r\n\tStopped,\r\n}\r\n\r\nconst defaultSurveyActivityListener: SurveyActivityListener.IActivityListenerCallback = {\r\n\trun(survey) {\r\n\t},\r\n\tshouldAcceptActivity(activityName) {\r\n\t\treturn true;\r\n\t},\r\n};\r\n\r\nconst globalSessionSurveyActivationCounts: IDictionary = {};\r\n\r\n/**\r\n * Floodgate Engine class. The main wiring hub and the brains responsible for\r\n * linking together the survey definitions, governance, activity tracking, and\r\n * survey launchers. Only one-instance-at-a-time of these should be created\r\n * per app session.\r\n */\r\nexport class FloodgateEngine {\r\n\tpublic static setTelemetryLogger(telemetryLogger: IFloodgateTelemetryLogger): void {\r\n\t\tif (!telemetryLogger) {\r\n\t\t\tthrow new Error(\"telemetryLogger must not be null\");\r\n\t\t}\r\n\r\n\t\tFloodgateEngine.telemetryLogger = telemetryLogger;\r\n\t}\r\n\r\n\tpublic static getTelemetryLogger(): IFloodgateTelemetryLogger {\r\n\t\treturn FloodgateEngine.telemetryLogger;\r\n\t}\r\n\r\n\tpublic static getTransportFactory(): ITransporterFactory {\r\n\t\treturn FloodgateEngine.transporterFactory;\r\n\t}\r\n\r\n\tpublic static make(\r\n\t\tbuildVersion: string,\r\n\t\tlauncherFactory: ISurveyLauncherFactory,\r\n\t\tonSurveyActivatedCallback: IOnSurveyActivatedCallback,\r\n\t\tfileBasedStorageProvider: IFloodgateStorageProvider,\r\n\t\thostBasedStorageProvider: IFloodgateSettingStorageCallback,\r\n\t\tstringProvider: IFloodgateStringProvider,\r\n\t\tenvironmentProvider: IFloodgateEnvironmentProvider,\r\n\t\ttransporterFactory: ITransporterFactory,\r\n\t\tcampaignDefinitionProviders: ICampaignDefinitionProvider[],\r\n\t\tuserFactsProvider: IUserFactProvider,\r\n\t\tgovernanceServiceClient: IGovernanceServiceClient,\r\n\t\tisPriorityEnabled: boolean,\r\n\t\tsurveyClient?: ISurveyClient): FloodgateEngine {\r\n\r\n\t\ttry {\r\n\t\t\tconst governedChannelStateProvider: IGovernedChannelStateProvider\r\n\t\t\t\t= GovernedChannelStateProviderFactory.make(fileBasedStorageProvider, hostBasedStorageProvider);\r\n\r\n\t\t\tconst surveyActivationStatsProvider: ISurveyActivationStatsProvider\r\n\t\t\t\t= SurveyActivationStatsProviderFactory.make(fileBasedStorageProvider, hostBasedStorageProvider);\r\n\r\n\t\t\tconst campaignStateProvider: ICampaignStateProvider\r\n\t\t\t\t= CampaignStateProviderFactory.make(fileBasedStorageProvider, hostBasedStorageProvider);\r\n\r\n\t\t\tcampaignDefinitionProviders.push(new FileSystemCampaignDefinitionProvider(fileBasedStorageProvider));\r\n\r\n\t\t\tconst client = surveyClient || new CampaignManager(\r\n\t\t\t\tcampaignStateProvider,\r\n\t\t\t\tcampaignDefinitionProviders,\r\n\t\t\t\tstringProvider,\r\n\t\t\t\tenvironmentProvider,\r\n\t\t\t\tbuildVersion,\r\n\t\t\t\tnew Date(),\r\n\t\t\t\tisPriorityEnabled,\r\n\t\t\t\tuserFactsProvider,\r\n\t\t\t);\r\n\r\n\t\t\treturn new FloodgateEngine(\r\n\t\t\t\tclient,\r\n\t\t\t\tnew SurveyActivityListener(\r\n\t\t\t\t\tdefaultSurveyActivityListener,\r\n\t\t\t\t\tthis.getTelemetryLogger,\r\n\t\t\t\t),\r\n\t\t\t\tlauncherFactory,\r\n\t\t\t\tonSurveyActivatedCallback,\r\n\t\t\t\tfileBasedStorageProvider,\r\n\t\t\t\tnew Governor(\r\n\t\t\t\t\tgovernedChannelStateProvider,\r\n\t\t\t\t),\r\n\t\t\t\tsurveyActivationStatsProvider,\r\n\t\t\t\ttransporterFactory,\r\n\t\t\t\tgovernanceServiceClient,\r\n\t\t\t);\r\n\t\t} catch (e) {\r\n\t\t\tthis.telemetryLogger.log_Event(TelemetryEvent.FloodgateEngine.Make.Failed,\r\n\t\t\t\t{ ErrorMessage: e && e.toString(), ErrorDetails: e && e.stack });\r\n\t\t}\r\n\t}\r\n\r\n\t// Initialize telemetry logger with no-op logger\r\n\tprivate static telemetryLogger: IFloodgateTelemetryLogger = new DefaultFloodgateTelemetryLogger();\r\n\tprivate static transporterFactory: ITransporterFactory;\r\n\r\n\tprivate surveyClient: ISurveyClient;\r\n\tprivate activityListener: SurveyActivityListener;\r\n\tprivate onSurveyActivatedCallback: IOnSurveyActivatedCallback;\r\n\tprivate launcherFactory: ISurveyLauncherFactory;\r\n\tprivate storage: IFloodgateStorageProvider;\r\n\tprivate governor: IGovernor;\r\n\tprivate initializationStatus: InitializationStatus = InitializationStatus.None;\r\n\tprivate loggedFirstStart: boolean;\r\n\r\n\tprivate floodgateSettings: FloodgateSettings;\r\n\tprivate previousSurveyActivationStats: SurveyStatCollectionActivation;\r\n\tprivate previousSurveyEventActivityStats: SurveyStatCollectionEventActivity;\r\n\r\n\tprivate candidateSurveys: IDictionary = {};\r\n\tprivate launchedSurveys: IDictionary = {};\r\n\tprivate launchedLaunchers: ISurveyLauncher[] = [];\r\n\tprivate surveyEventSent: string[] = [];\r\n\r\n\tprivate surveyActivationStatsProvider: ISurveyActivationStatsProvider;\r\n\r\n\tprivate governanceServiceClient: IGovernanceServiceClient;\r\n\tprivate staleTriggeredSurveysQueue: ISurvey[] = [];\r\n\r\n\tpublic constructor(surveyClient: ISurveyClient, activityListener: SurveyActivityListener, launcherFactory: ISurveyLauncherFactory,\r\n\t\tonSurveyActivatedCallback: IOnSurveyActivatedCallback, storage: IFloodgateStorageProvider, governor: IGovernor,\r\n\t\tsurveyActivationStatsProvider: ISurveyActivationStatsProvider, transporterFactory: ITransporterFactory,\r\n\t\tgovernanceServiceClient: IGovernanceServiceClient) {\r\n\r\n\t\tif (!surveyClient) {\r\n\t\t\tthrow new Error(\"surveyClient must not be null\");\r\n\t\t}\r\n\t\tif (!activityListener) {\r\n\t\t\tthrow new Error(\"activityListener must not be null\");\r\n\t\t}\r\n\t\tif (!launcherFactory) {\r\n\t\t\tthrow new Error(\"launcherFactory must not be null\");\r\n\t\t}\r\n\t\tif (!onSurveyActivatedCallback) {\r\n\t\t\tthrow new Error(\"onSurveyActivatedCallback must not be null\");\r\n\t\t}\r\n\t\tif (!storage) {\r\n\t\t\tthrow new Error(\"storage must not be null\");\r\n\t\t}\r\n\t\tif (!governor) {\r\n\t\t\tthrow new Error(\"governor must not be null\");\r\n\t\t}\r\n\t\tif (!transporterFactory) {\r\n\t\t\tthrow new Error(\"transporterFactory must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.surveyClient = surveyClient;\r\n\t\tthis.activityListener = activityListener;\r\n\t\tthis.launcherFactory = launcherFactory;\r\n\t\tthis.onSurveyActivatedCallback = onSurveyActivatedCallback;\r\n\t\tthis.storage = storage;\r\n\t\tthis.governor = governor;\r\n\t\tthis.surveyActivationStatsProvider = surveyActivationStatsProvider;\r\n\t\tthis.governanceServiceClient = governanceServiceClient;\r\n\t\tFloodgateEngine.transporterFactory = transporterFactory;\r\n\r\n\t\tthis.loggedFirstStart = false;\r\n\r\n\t\t// Initialize our list to a valid, empty collection\r\n\t\tthis.setPendingSurveys(null);\r\n\r\n\t\t// If the listener was pre-configured with survey for some reason, clear it now\r\n\t\tthis.activityListener.clearSurveys();\r\n\r\n\t\t// Link ourselves with the listener\r\n\t\tconst thisObj = this; // Save current object in a variable to allow access from callback.\r\n\t\tthis.activityListener.setCallback({\r\n\t\t\trun(surveyId: string, contextInfo: IContextData[]) {\r\n\t\t\t\tthisObj.onSurveyActivated(surveyId, contextInfo);\r\n\t\t\t},\r\n\t\t\tshouldAcceptActivity(activityName: string) {\r\n\t\t\t\treturn thisObj.shouldAcceptActivity(activityName);\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tpublic getSurveyClient(): any {\r\n\t\treturn this.surveyClient;\r\n\t}\r\n\r\n\t/**\r\n\t * Save all internal stats and floodgateSettings (merging with existing file contents), without stopping the engine.\r\n\t */\r\n\tpublic mergeAndSave(): void {\r\n\t\tthis.saveSettings();\r\n\t\tthis.saveSurveyActivationHistory();\r\n\t\tthis.saveSurveyEventActivityHistory();\r\n\r\n\t\t// Inform surveyClient to save its state\r\n\t\tthis.surveyClient.saveCurrentState();\r\n\r\n\t\t// Save governed channel states\r\n\t\tthis.governor.saveChannelStates();\r\n\t}\r\n\r\n\t/**\r\n\t * Start the engine. Checks feature enable state, causes survey definitions to be read, and tracked activities to be set on the listener.\r\n\t */\r\n\tpublic start(): void {\r\n\t\tif (this.initializationStatus === InitializationStatus.Initializing ||\r\n\t\t\tthis.initializationStatus === InitializationStatus.Started) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tthis.setInitializationStatus(InitializationStatus.Initializing);\r\n\t\t\tthis.loadSettingsAndPriorEventCounts();\r\n\r\n\t\t\tconst channelTypes: GovernedChannelType[] = this.getAvailableChannelTypes();\r\n\r\n\t\t\tthis.surveyClient.refreshSurveyDefinitions(channelTypes);\r\n\r\n\t\t\tthis.setPendingSurveysAndStartFloodgate();\r\n\t\t\tthis.setInitializationStatus(InitializationStatus.Started);\r\n\t\t} catch (e) {\r\n\t\t\tthis.setInitializationStatus(InitializationStatus.Error);\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(TelemetryEvent.FloodgateEngine.Start.Failed,\r\n\t\t\t\t{ ErrorMessage: e && e.toString(), ErrorDetails: e && e.stack });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Start the engine. Checks feature enable state, causes survey definitions to be read, and tracked activities to be set on the listener.\r\n\t */\r\n\tpublic startAsync(): Promise {\r\n\t\tif (this.initializationStatus === InitializationStatus.Initializing ||\r\n\t\t\tthis.initializationStatus === InitializationStatus.Started) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tthis.setInitializationStatus(InitializationStatus.Initializing);\r\n\t\t\tthis.loadSettingsAndPriorEventCounts();\r\n\r\n\t\t\tconst channelTypes: GovernedChannelType[] = this.getAvailableChannelTypes();\r\n\r\n\t\t\tconst thisFloodgateEngine = this;\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tthisFloodgateEngine.surveyClient.refreshSurveyDefinitionsAsync(channelTypes).then(\r\n\t\t\t\t\tfunction onFulfilled() {\r\n\t\t\t\t\t\t// Handle any stop() calls that happened while initializing\r\n\t\t\t\t\t\tif (thisFloodgateEngine.initializationStatus === InitializationStatus.Stopped) {\r\n\t\t\t\t\t\t\tthisFloodgateEngine.setInitializationStatus(InitializationStatus.Started);\r\n\t\t\t\t\t\t\tthisFloodgateEngine.stop();\r\n\t\t\t\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(TelemetryEvent.FloodgateEngine.StartAsync.Stopped,\r\n\t\t\t\t\t\t\t\t{ ErrorMessage: \"Stopped because of a pending stop() call\" });\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthisFloodgateEngine.setPendingSurveysAndStartFloodgate();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t},\r\n\t\t\t\t).catch(\r\n\t\t\t\t\tfunction OnRejected(error: Error) {\r\n\t\t\t\t\t\tthisFloodgateEngine.setInitializationStatus(InitializationStatus.Error);\r\n\t\t\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(TelemetryEvent.FloodgateEngine.StartAsync.Failed,\r\n\t\t\t\t\t\t\t{ ErrorMessage: \"Survey refresh error \" + (error && error.message) });\r\n\r\n\t\t\t\t\t\treject(error);\r\n\t\t\t\t\t},\r\n\t\t\t\t);\r\n\t\t\t});\r\n\t\t} catch (e) {\r\n\t\t\tthis.setInitializationStatus(InitializationStatus.Error);\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(TelemetryEvent.FloodgateEngine.StartAsync.Failed,\r\n\t\t\t\t{ ErrorMessage: e && e.toString(), ErrorDetails: e && e.stack });\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Stop the engine. Causes tracked activities to be cleared and any in-progress counters not otherwise saved to be thrown out.\r\n\t */\r\n\tpublic stop(): void {\r\n\t\tif (this.initializationStatus === InitializationStatus.Started) {\r\n\t\t\tthis.mergeAndSave();\r\n\r\n\t\t\t// Clear our Survey list, and push that through to the listener\r\n\t\t\tthis.setPendingSurveys(null);\r\n\t\t\tthis.updateActivityListenerWithCurrentSurveyDefinitions();\r\n\t\t}\r\n\r\n\t\tthis.setInitializationStatus(InitializationStatus.Stopped);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the IActivityListener logging interface for callers that want to log directly rather than through telemetry\r\n\t */\r\n\tpublic getActivityListener(): IActivityListener {\r\n\t\treturn this.activityListener;\r\n\t}\r\n\r\n\tprivate setInitializationStatus(status: InitializationStatus): void {\r\n\t\tthis.initializationStatus = status;\r\n\t}\r\n\r\n\tprivate saveSettings(): void {\r\n\t\tthis.storage.fileLock(FileType.FloodgateSettings);\r\n\r\n\t\ttry {\r\n\t\t\tthis.writeString(FileType.FloodgateSettings, FloodgateSettings.toJson(this.floodgateSettings));\r\n\t\t} finally {\r\n\t\t\tthis.storage.fileUnlock(FileType.FloodgateSettings);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate loadSettingsAndPriorEventCounts(): void {\r\n\t\ttry {\r\n\t\t\t// Load up the prior survey history and prior event counts\r\n\t\t\tthis.previousSurveyActivationStats = this.surveyActivationStatsProvider.load();\r\n\r\n\t\t\tthis.previousSurveyEventActivityStats =\r\n\t\t\t\tSurveyStatCollectionEventActivity.fromJson(this.readString(FileType.SurveyEventActivityStats));\r\n\r\n\t\t\t// get the list of survey Id - all the survey should have event sent already\r\n\t\t\tconst stats: IDictionary = this.previousSurveyEventActivityStats.getStats();\r\n\t\t\tfor (const key in stats) {\r\n\t\t\t\tif (stats.hasOwnProperty(key)) {\r\n\t\t\t\t\tthis.surveyEventSent.push(key);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Load up the general floodgateSettings\r\n\t\t\tthis.floodgateSettings = FloodgateSettings.fromJson(this.readString(FileType.FloodgateSettings));\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(TelemetryEvent.FloodgateEngine.Common.Error,\r\n\t\t\t\t{ ErrorMessage: \"Error loading prior settings/events \" + (e && e.toString()) });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getAvailableChannelTypes(): GovernedChannelType[] {\r\n\t\t// Make sure we've loaded the current survey definitions\r\n\t\tconst channels: IGovernedChannelData[] = this.governor.getAvailableChannelData();\r\n\t\tconst channelTypes: GovernedChannelType[] = [];\r\n\r\n\t\tchannels.forEach((channel) => {\r\n\t\t\tif (channel) {\r\n\t\t\t\tchannelTypes.push(channel.getType());\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn channelTypes;\r\n\t}\r\n\r\n\tprivate setPendingSurveysAndStartFloodgate(): void {\r\n\t\t// Update our survey list, and push that through to the listener\r\n\t\tthis.setPendingSurveys(this.surveyClient.getAppSurveys());\r\n\t\tthis.updateActivityListenerWithCurrentSurveyDefinitions();\r\n\r\n\t\t// Mark us as started\r\n\t\tthis.setInitializationStatus(InitializationStatus.Started);\r\n\r\n\t\t// Log our first start (aka floodgate boot) event\r\n\t\tif (!this.loggedFirstStart) {\r\n\t\t\tthis.loggedFirstStart = true;\r\n\t\t\tthis.getActivityListener().logActivity(SurveyActivityListener.FloodgateStartActivityName);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateSurveyActivationStats(survey: ISurvey) {\r\n\t\tconst surveyInfo = survey.getSurveyInfo();\r\n\t\tconst surveyId = surveyInfo.getId();\r\n\t\tconst stats = this.previousSurveyActivationStats.getStats()[surveyId] || new SurveyActivationStats();\r\n\t\tstats.Type = survey.getType();\r\n\t\tstats.ExpirationTimeUtc = surveyInfo.getExpirationTimeUtc();\r\n\t\tstats.ActivationTimeUtc = new Date();\r\n\t\tstats.SurveyLaunchCount++;\r\n\r\n\t\tthis.previousSurveyActivationStats.addStats(surveyId, stats);\r\n\r\n\t\t// Save the SurveyLaunchCountPerSession into global memory but not local storage\r\n\t\t// so it won't be overwritten in local storage by another app instance\r\n\t\tif (!globalSessionSurveyActivationCounts.hasOwnProperty(surveyId)) {\r\n\t\t\tglobalSessionSurveyActivationCounts[surveyId] = 0;\r\n\t\t}\r\n\t\tglobalSessionSurveyActivationCounts[surveyId]++;\r\n\t}\r\n\r\n\tprivate saveSurveyActivationHistory(): void {\r\n\t\tthis.storage.fileLock(FileType.SurveyActivationStats);\r\n\r\n\t\ttry {\r\n\t\t\tconst statCollection: SurveyStatCollectionActivation = this.surveyActivationStatsProvider.load();\r\n\r\n\t\t\tconst previousStats = this.previousSurveyActivationStats.getStats();\r\n\r\n\t\t\t// Build the update collection\r\n\t\t\tconst updateCollection = new SurveyStatCollectionActivation();\r\n\t\t\tfor (const key in this.launchedSurveys) {\r\n\t\t\t\tif (this.launchedSurveys.hasOwnProperty(key)) {\r\n\t\t\t\t\tconst survey: ISurvey = this.launchedSurveys[key];\r\n\t\t\t\t\tconst surveyId = survey.getSurveyInfo().getId();\r\n\r\n\t\t\t\t\t// Make this part of the update list\r\n\t\t\t\t\tconst stats = previousStats[surveyId];\r\n\t\t\t\t\tupdateCollection.addStats(surveyId, stats);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Actually merge our updates into the full collection\r\n\t\t\tstatCollection.accumulate(updateCollection);\r\n\t\t\tthis.surveyActivationStatsProvider.save(statCollection);\r\n\r\n\t\t\t// Make sure to keep our internal collection consistent with what we just wrote\r\n\t\t\tthis.previousSurveyActivationStats = statCollection;\r\n\t\t} finally {\r\n\t\t\tthis.storage.fileUnlock(FileType.SurveyActivationStats);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate saveSurveyEventActivityHistory(): void {\r\n\t\tthis.storage.fileLock(FileType.SurveyEventActivityStats);\r\n\r\n\t\ttry {\r\n\t\t\tconst statCollection: SurveyStatCollectionEventActivity =\r\n\t\t\t\tSurveyStatCollectionEventActivity.fromJson(this.readString(FileType.SurveyEventActivityStats));\r\n\r\n\t\t\tconst now = new Date();\r\n\t\t\t// Fill out our list of updates\r\n\t\t\tconst updateCollection = new SurveyStatCollectionEventActivity();\r\n\t\t\tfor (const key in this.candidateSurveys) {\r\n\t\t\t\tif (this.candidateSurveys.hasOwnProperty(key)) {\r\n\t\t\t\t\tconst stats: SurveyEventActivityStats = new SurveyEventActivityStats();\r\n\t\t\t\t\tconst survey: ISurvey = this.candidateSurveys[key];\r\n\r\n\t\t\t\t\tif (!survey.getSurveyInfo().isActiveForDate(now)) {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tstats.ExpirationTimeUtc = survey.getSurveyInfo().getExpirationTimeUtc();\r\n\r\n\t\t\t\t\t// Get the activities which are aggregated, if there aren't any continue\r\n\t\t\t\t\tconst allActivities: ActivityTrackingSet = survey.getSurveyInfo().getActivationEvent().getTrackingSet();\r\n\t\t\t\t\tconst aggregateActivities: string[] = [];\r\n\t\t\t\t\tconst nonAggregateActivities: string[] = [];\r\n\r\n\t\t\t\t\tallActivities.getList().forEach((data) => {\r\n\t\t\t\t\t\tif (data) {\r\n\t\t\t\t\t\t\tif (data.getIsAggregate()) {\r\n\t\t\t\t\t\t\t\taggregateActivities.push(data.getActivity());\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tnonAggregateActivities.push(data.getActivity());\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tstats.Counts = new Array(aggregateActivities.length);\r\n\r\n\t\t\t\t\t// Save off the counts we've added for this session\r\n\t\t\t\t\tfor (let i = 0; i < aggregateActivities.length; i++) {\r\n\t\t\t\t\t\tstats.Counts[i] = this.activityListener.moveSessionCountIntoBaseCount(aggregateActivities[i], survey.getSurveyInfo().getId());\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfor (const activity of nonAggregateActivities) {\r\n\t\t\t\t\t\tthis.activityListener.saveSessionTrackingActivity(activity);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Make this part of the update list\r\n\t\t\t\t\tupdateCollection.addStats(survey.getSurveyInfo().getId(), stats);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Actually merge our updates into the full collection\r\n\t\t\tstatCollection.accumulate(updateCollection);\r\n\r\n\t\t\tthis.writeString(FileType.SurveyEventActivityStats, SurveyStatCollectionEventActivity.toJson(statCollection));\r\n\t\t\t// Make sure to keep our internal collection consistent with what we just wrote\r\n\t\t\tthis.previousSurveyEventActivityStats = statCollection;\r\n\t\t} finally {\r\n\t\t\tthis.storage.fileUnlock(FileType.SurveyEventActivityStats);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setPendingSurveys(pendingSurveys: IDictionary): void {\r\n\t\tthis.candidateSurveys = {};\r\n\t\tif (pendingSurveys) {\r\n\t\t\tfor (const key in pendingSurveys) {\r\n\t\t\t\tif (pendingSurveys.hasOwnProperty(key)) {\r\n\t\t\t\t\tconst survey: ISurvey = pendingSurveys[key];\r\n\t\t\t\t\tif (this.launcherFactory.AcceptsSurvey(survey)) {\r\n\t\t\t\t\t\tthis.candidateSurveys[key] = survey;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getCurrentSurveyDefinitions(): ISurvey[] {\r\n\t\t// Get a vector of Surveys from our id-based map\r\n\t\tconst surveyList: ISurvey[] = new Array();\r\n\r\n\t\tconst allCampaignDefinitionIDs = this.getAllCampaignDefinitionIDs();\r\n\t\tconst allCandidateCampaignDefinitionIDs = this.getAllCandidateCampaignDefinitionIDs();\r\n\r\n\t\t// Get all the campaign definitions. We need info from these for telemetry.\r\n\t\tconst allCampaignDefinitions = (this.surveyClient as CampaignManager).getCampaignDefinitions();\r\n\r\n\t\tconst isSurveyAllowed = (surveyInfo: ISurveyInfo) => {\r\n\t\t\t// always allow business critical and approved campaigns\r\n\t\t\tif (isBusinessCriticalSurvey(surveyInfo)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tconst surveyActivationStats = this.previousSurveyActivationStats.getBySurveyId(surveyInfo.getId());\r\n\t\t\tif (isMultiLaunchSurvey(surveyInfo) &&\r\n\t\t\t\t!hasSurveyReachedMaxLaunches(surveyInfo, surveyActivationStats) &&\r\n\t\t\t\t!hasSurveyReachedMaxLaunchesPerSession(surveyInfo, globalSessionSurveyActivationCounts)) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\t// Skip over any candidate surveys that have been previously completed or not active anymore\r\n\t\t\tif (surveyActivationStats || !surveyInfo.isActiveForDate(new Date())) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t};\r\n\r\n\t\tfor (const key in this.candidateSurveys) {\r\n\t\t\tif (this.candidateSurveys.hasOwnProperty(key)) {\r\n\t\t\t\tconst survey: ISurvey = this.candidateSurveys[key];\r\n\t\t\t\tconst surveyInfo = survey.getSurveyInfo();\r\n\t\t\t\tconst campaignDefinition: CampaignDefinition = allCampaignDefinitions[surveyInfo?.getBackEndId()];\r\n\t\t\t\tif (!campaignDefinition || !isSurveyAllowed(surveyInfo)) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// send the UserSelected event if it is not sent before\r\n\t\t\t\tif (this.surveyEventSent.indexOf(key) < 0) {\r\n\t\t\t\t\tthis.surveyEventSent.push(key);\r\n\r\n\t\t\t\t\tconst additionalSurveyInfo = this.getAdditionalSurveyInfoForTelemetry(survey,\r\n\t\t\t\t\t\tnull /* contextInfo */,\r\n\t\t\t\t\t\tallCampaignDefinitionIDs,\r\n\t\t\t\t\t\tallCandidateCampaignDefinitionIDs);\r\n\r\n\t\t\t\t\tFloodgateEngine.telemetryLogger.log_UserSelected(surveyInfo.getBackEndId(),\r\n\t\t\t\t\t\tsurveyInfo.getId(),\r\n\t\t\t\t\t\tsurvey.getType(),\r\n\t\t\t\t\t\tJSON.stringify(additionalSurveyInfo));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsurveyList.push(survey);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn surveyList;\r\n\t}\r\n\r\n\tprivate getAdditionalSurveyInfoForTelemetry(survey: ISurvey,\r\n\t\tcontextInfo: IContextData[], allCampaignDefinitionIDs: string[], allCandidateCampaignDefinitionIDs: string[]): {\r\n\t\tallCandidateCampaignDefinitionIDs: string[],\r\n\t\tallCampaignDefinitionIDs: string[],\r\n\t\tcontextCount?: number,\r\n\t\tsurveyLauncherType: string,\r\n\t\tchannelType: GovernedChannelType,\r\n\t\tpercentageNumerator: number,\r\n\t\tpercentageDenominator: number,\r\n\t\tnominationPeriodNumber: number,\r\n\t\tcooldownPeriodNumber: number,\r\n\t\tbusinessLevel: number,\r\n\t\tmaxLaunches: number,\r\n\t\tmaxLaunchesPerSession: number,\r\n\t\tgovernanceServiceClientState?: GovernanceServiceClientState,\r\n\t} {\r\n\t\t// Get all the campaign definitions. We need info from these for telemetry.\r\n\t\tconst allCampaignDefinitions = (this.surveyClient as CampaignManager).getCampaignDefinitions();\r\n\r\n\t\t// Get the corresponding campaign definition to the survey in question.\r\n\t\tconst correspondingCampaignDefinition = allCampaignDefinitions[survey.getCampaignId()];\r\n\r\n\t\t// Survey properties to get from its corresponding CampaignDefinition:\r\n\t\tlet percentageNumerator: number;\r\n\t\tlet percentageDenominator: number;\r\n\t\tlet nominationPeriodNumber: number;\r\n\t\tlet cooldownPeriodNumber: number;\r\n\r\n\t\tpercentageNumerator = (correspondingCampaignDefinition.nominationScheme as CampaignNominationSchemeRatioPercentage).percentageNumerator;\r\n\t\tpercentageDenominator = (correspondingCampaignDefinition.nominationScheme as CampaignNominationSchemeRatioPercentage).percentageDenominator;\r\n\r\n\t\tnominationPeriodNumber = correspondingCampaignDefinition.nominationScheme.nominationPeriod.asTimeIntervalSeconds();\r\n\t\tnominationPeriodNumber = isNOU(nominationPeriodNumber) ? -1 : nominationPeriodNumber; // Setting to -1 if null or undefined\r\n\r\n\t\tcooldownPeriodNumber = correspondingCampaignDefinition.nominationScheme.cooldownPeriod.asTimeIntervalSeconds();\r\n\t\tcooldownPeriodNumber = isNOU(cooldownPeriodNumber) ? -1 : cooldownPeriodNumber; // Setting to -1 if null or undefined\r\n\r\n\t\tconst surveyInfo = survey.getSurveyInfo();\r\n\t\treturn {\r\n\t\t\tallCampaignDefinitionIDs,\r\n\t\t\tallCandidateCampaignDefinitionIDs,\r\n\t\t\tchannelType: surveyInfo.getGovernedChannelType(),\r\n\t\t\tcontextCount: contextInfo ? contextInfo.length : undefined,\r\n\t\t\tcooldownPeriodNumber,\r\n\t\t\tnominationPeriodNumber,\r\n\t\t\tpercentageDenominator,\r\n\t\t\tpercentageNumerator,\r\n\t\t\tsurveyLauncherType: survey.getLauncherType(),\r\n\r\n\t\t\tbusinessLevel: surveyInfo.getBusinessLevel(),\r\n\t\t\tmaxLaunches: surveyInfo.getMaxLaunches(),\r\n\t\t\tmaxLaunchesPerSession: surveyInfo.getMaxLaunchesPerSession(),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate getAllCandidateCampaignDefinitionIDs(): string[] {\r\n\r\n\t\tconst allCandidateCampaignDefinitionIDs: string[] = [];\r\n\r\n\t\t// Get all the candidate surveys' campaign definition IDs\r\n\t\tfor (const key in this.candidateSurveys) {\r\n\t\t\tif (this.candidateSurveys.hasOwnProperty(key)) {\r\n\t\t\t\tconst candidateSurvey: ISurvey = this.candidateSurveys[key];\r\n\t\t\t\tallCandidateCampaignDefinitionIDs.push(candidateSurvey.getSurveyInfo().getBackEndId());\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn allCandidateCampaignDefinitionIDs;\r\n\t}\r\n\r\n\tprivate getAllCampaignDefinitionIDs(): string[] {\r\n\r\n\t\tconst allCampaignDefinitions = (this.surveyClient as CampaignManager).getCampaignDefinitions();\r\n\t\tconst allCampaignDefinitionIDs: string[] = [];\r\n\r\n\t\tfor (const definitionsKey in allCampaignDefinitions) {\r\n\t\t\tif (Object.prototype.hasOwnProperty.call(allCampaignDefinitions, definitionsKey)) {\r\n\t\t\t\tconst definition: CampaignDefinition = allCampaignDefinitions[definitionsKey];\r\n\t\t\t\tallCampaignDefinitionIDs.push(definition.campaignId);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn allCampaignDefinitionIDs;\r\n\t}\r\n\r\n\tprivate updateActivityListenerWithCurrentSurveyDefinitions(): void {\r\n\t\tconst surveyList: ISurvey[] = this.getCurrentSurveyDefinitions();\r\n\t\tconst trackingContractList: ActivityTrackingContract[] = [];\r\n\r\n\t\tfor (const survey of surveyList) {\r\n\t\t\tconst surveyInfo = survey.getSurveyInfo();\r\n\t\t\tconst trackingContract = new ActivityTrackingContract(surveyInfo.getId(), surveyInfo.getActivationEvent().getTrackingSet());\r\n\t\t\ttrackingContractList.push(trackingContract);\r\n\t\t}\r\n\r\n\t\tthis.activityListener.SetActivityTrackingContracts(trackingContractList, this.previousSurveyEventActivityStats);\r\n\t}\r\n\r\n\tprivate setCriticalPendingSurveysAndUpdateActivityListener() {\r\n\t\tconst activeSurveys: IDictionary = {};\r\n\r\n\t\t// Get all the candidate surveys' campaign definition IDs\r\n\t\tfor (const key in this.candidateSurveys) {\r\n\t\t\tif (this.candidateSurveys.hasOwnProperty(key)) {\r\n\t\t\t\tconst candidateSurvey: ISurvey = this.candidateSurveys[key];\r\n\t\t\t\tif (isCriticalSurvey(candidateSurvey.getSurveyInfo())) {\r\n\t\t\t\t\tactiveSurveys[key] = candidateSurvey;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (Object.keys(activeSurveys).length > 0) {\r\n\t\t\tthis.setPendingSurveys(activeSurveys);\r\n\t\t\tthis.updateActivityListenerWithCurrentSurveyDefinitions();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate shouldAcceptActivity(activityName: string): boolean {\r\n\t\treturn this.initializationStatus === InitializationStatus.Started ||\r\n\t\t\tactivityName === SurveyActivityListener.FloodgateStartActivityName;\r\n\t}\r\n\r\n\tprivate onSurveyActivated(surveyId: string, contextInfo: IContextData[]): void {\r\n\t\t// Find the survey object that corresponds to the surveyId passed\r\n\t\tconst surveys: ISurvey[] = this.getCurrentSurveyDefinitions();\r\n\t\tlet survey: ISurvey;\r\n\r\n\t\tfor (const tempSurvey of surveys) {\r\n\t\t\tif (tempSurvey.getSurveyInfo().getId() === surveyId) {\r\n\t\t\t\tsurvey = tempSurvey;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNOU(survey)) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Error(\r\n\t\t\t\tTelemetryEvent.FloodgateEngine.OnSurveyActivated.SurveyNotDefined,\r\n\t\t\t\t\"Survey is not defined in the current survey definitions.\",\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst governedChannelType: GovernedChannelType = survey.getSurveyInfo().getGovernedChannelType();\r\n\r\n\t\t\t// If the governance service is in use, launch survey asynchronously\r\n\t\t\tif (this.governanceServiceClient.isEnabled(governedChannelType)) {\r\n\t\t\t\t// record the stale surveys, so we can clear its tracker if Engine is stopped\r\n\t\t\t\tthis.staleTriggeredSurveysQueue.push(survey);\r\n\r\n\t\t\t\t// If there is no survey in stale before, launch the survey right away\r\n\t\t\t\tif (this.staleTriggeredSurveysQueue.length === 1) {\r\n\t\t\t\t\t// Launch the survey asynchronously\r\n\t\t\t\t\tthis.checkGovernanceServiceAndActivateSurvey(survey, governedChannelType, contextInfo);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.activateSurvey(survey, governedChannelType, contextInfo);\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.telemetryLogger.log_Event(TelemetryEvent.FloodgateEngine.OnSurveyActivated.Error,\r\n\t\t\t\t{ ErrorMessage: `Error activating survey ${e && e.toString()}`, ErrorDetails: e && e.stack });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate activateSurvey(survey: ISurvey, governedChannelType: GovernedChannelType, contextInfo: IContextData[]) {\r\n\t\tlet launchSurvey: boolean = false;\r\n\t\t// Figure out if the activated survey is still relevant\r\n\t\tif (!this.candidateSurveys[survey.getSurveyInfo().getId()]) {\r\n\t\t\t// Survey is no longer relevant but was activated. Suppress it.\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.FloodgateEngine.OnSurveyActivated.ActivationIrrelevantSurvey,\r\n\t\t\t\t{\r\n\t\t\t\t\tCampaignId: survey.getSurveyInfo().getBackEndId(),\r\n\t\t\t\t\tSurveyId: survey.getSurveyInfo().getId(),\r\n\t\t\t\t});\r\n\t\t} else if (!survey.getSurveyInfo().isActiveForDate(new Date())) {\r\n\t\t\t// Survey is no longer active (e.g. it was when we registered it but it has now expired)\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.FloodgateEngine.OnSurveyActivated.ActivationExpiredSurvey,\r\n\t\t\t\t{\r\n\t\t\t\t\tCampaignId: survey.getSurveyInfo().getBackEndId(),\r\n\t\t\t\t\tSurveyId: survey.getSurveyInfo().getId(),\r\n\t\t\t\t});\r\n\t\t} else {\r\n\t\t\t// Refresh channels\r\n\t\t\tthis.governor.refreshChannelData();\r\n\r\n\t\t\tif (isCriticalSurvey(survey.getSurveyInfo())) {\r\n\t\t\t\tlaunchSurvey = true;\r\n\t\t\t} else if (!this.governor.isChannelOpen(governedChannelType)) {\r\n\t\t\t\t// Channel has closed and maxLaunches is not set, suppress the survey\r\n\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\t\tTelemetryEvent.FloodgateEngine.OnSurveyActivated.ClosedChannelType,\r\n\t\t\t\t\t{ ClosedChannelType: GovernedChannelType[governedChannelType] });\r\n\t\t\t} else {\r\n\t\t\t\t// Get latest survey states from provider\r\n\t\t\t\tconst refreshedSurveyActivationStats = this.surveyActivationStatsProvider.load();\r\n\t\t\t\tif (refreshedSurveyActivationStats.getBySurveyId(survey.getSurveyInfo().getId())) {\r\n\t\t\t\t\t// Survey stats exists already, don't launch\r\n\t\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\t\t\tTelemetryEvent.FloodgateEngine.OnSurveyActivated.ActivationStatsSuppressedSurvey,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tCampaignId: survey.getSurveyInfo().getBackEndId(),\r\n\t\t\t\t\t\t\tSurveyId: survey.getSurveyInfo().getId(),\r\n\t\t\t\t\t\t});\r\n\t\t\t\t} else if (Object.keys(this.launchedSurveys).length === 0) {\r\n\t\t\t\t\t// for now we only support launching one survey per session unless it is multi-launch campaign\r\n\t\t\t\t\t// Track this survey activation for the launch history tracker\r\n\t\t\t\t\tlaunchSurvey = true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst triggeredSurvey = Object.values(this.launchedSurveys)[0];\r\n\t\t\t\t\tif (!isNOU(triggeredSurvey)) {\r\n\t\t\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\t\t\t\tTelemetryEvent.FloodgateEngine.OnSurveyActivated.SessionSuppressedSurvey,\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tCampaignId: triggeredSurvey.getSurveyInfo().getBackEndId(),\r\n\t\t\t\t\t\t\t\tSurveyId: triggeredSurvey.getSurveyInfo().getId(),\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (launchSurvey) {\r\n\t\t\t\tthis.launchedSurveys[survey.getSurveyInfo().getId()] = survey;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// At this point, regardless of whether or not the survey is still relevant, we should flush out the stats\r\n\t\tthis.updateSurveyActivationStats(survey);\r\n\t\tthis.mergeAndSave();\r\n\t\t// shut off further survey launches\r\n\t\tthis.activityListener.clearSurveys();\r\n\r\n\t\t// Clear the survey from stale list\r\n\t\tthis.staleTriggeredSurveysQueue = [];\r\n\r\n\t\t// Actually launch the survey if possible\r\n\t\tif (launchSurvey) {\r\n\t\t\t// Get the stringified json with activity names, counts and isAggregate info for TriggetMet telemetry.\r\n\t\t\tconst activityTrackingString = survey.getSurveyInfo().getActivationEvent().getTrackingSet()\r\n\t\t\t.getActivityTrackingInfo(this.activityListener, survey.getSurveyInfo().getId());\r\n\r\n\t\t\tconst additionalSurveyInfo = this.getAdditionalSurveyInfoForTelemetry(survey, contextInfo, this.getAllCampaignDefinitionIDs(),\r\n\t\t\t\tthis.getAllCandidateCampaignDefinitionIDs());\r\n\r\n\t\t\t// Only adding the governance service client state at TriggerMet event\r\n\t\t\tadditionalSurveyInfo.governanceServiceClientState = this.governanceServiceClient.getClientState();\r\n\r\n\t\t\tFloodgateEngine.telemetryLogger.log_TriggerMet(survey.getSurveyInfo().getBackEndId(), survey.getSurveyInfo().getId(),\r\n\t\t\t\tsurvey.getType(), activityTrackingString, JSON.stringify(additionalSurveyInfo));\r\n\r\n\t\t\t// Set govern channel\r\n\t\t\tthis.governor.startChannelCooldown(governedChannelType);\r\n\r\n\t\t\tconst surveyInfo = survey.getSurveyInfo();\r\n\t\t\tlet isSurveyComplete = true;\r\n\t\t\tif (isBusinessCriticalSurvey(surveyInfo)) {\r\n\t\t\t\t// critical campaigns are not tracked\r\n\t\t\t\tisSurveyComplete = false;\r\n\t\t\t} else if (isMultiLaunchSurvey(surveyInfo)) {\r\n\t\t\t\tconst surveyActivationStats = this.previousSurveyActivationStats.getBySurveyId(surveyInfo.getId());\r\n\t\t\t\tisSurveyComplete = hasSurveyReachedMaxLaunches(surveyInfo, surveyActivationStats);\r\n\t\t\t}\r\n\r\n\t\t\t// Set campaign states\r\n\t\t\tthis.surveyClient.onSurveyActivated(surveyInfo, isSurveyComplete);\r\n\r\n\t\t\t// Show the survey\r\n\t\t\tthis.launchLauncher(survey, contextInfo);\r\n\r\n\t\t\t// check if there are any critical campaigns and start tracking again\r\n\t\t\tthis.setCriticalPendingSurveysAndUpdateActivityListener();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate async checkGovernanceServiceAndActivateSurvey(survey: ISurvey,\r\n\t\tgovernedChannelType: GovernedChannelType,\r\n\t\tcontextInfo: IContextData[]): Promise {\r\n\t\t// Get the cooldown setting\r\n\t\tconst campaignDefinition = this.surveyClient.getCampaignDefinitions()[survey.getCampaignId()];\r\n\t\tconst campaignCooldown = campaignDefinition.nominationScheme.cooldownPeriod.asTimeIntervalSeconds();\r\n\t\tconst channelCooldown = Governor.GetChannelCoolDown(governedChannelType);\r\n\r\n\t\t// Call the Governance Service\r\n\t\tconst serviceResult: IGovernanceServiceResult = await this.governanceServiceClient\r\n\t\t\t.checkGovernancePermitAsync(survey, campaignCooldown, channelCooldown, governedChannelType);\r\n\t\tlet launchSurvey: boolean = false;\r\n\r\n\t\t// Log the stale\r\n\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\tTelemetryEvent.FloodgateEngine.CheckGovernanceServiceAndActivateSurvey.GovernanceServiceClientCompleted,\r\n\t\t\t{\r\n\t\t\t\tMessage: JSON.stringify(this.createGorvernanceResponseTelemetry(serviceResult)),\r\n\t\t\t});\r\n\r\n\t\t// Check if engine is still running\r\n\t\tif (this.initializationStatus !== InitializationStatus.Started) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!serviceResult.error) {\r\n\t\t\t// Check result is permitted\r\n\t\t\tif (serviceResult.permission) { // the Governance Service is permitting, continue to trigger\r\n\t\t\t\tlaunchSurvey = true;\r\n\t\t\t} else {\r\n\t\t\t\tconst lastSurveyTriggerInfo: IGovernanceSurveyResponse = serviceResult.lastTriggerSurvey;\r\n\t\t\t\t// For now, we only know the channel is in cooldown but not the specific survey\r\n\t\t\t\t// So only set governed channel to new cooldown\r\n\t\t\t\tthis.governor.startChannelCooldown(governedChannelType, lastSurveyTriggerInfo.lastTriggerSurveyTime);\r\n\r\n\t\t\t\t// Clear the survey relating to channel\r\n\t\t\t\tthis.clearSurveyWithChannel(governedChannelType);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// If force to display with error, continue to trigger the survey\r\n\t\t\tif (this.governanceServiceClient.shouldForceDisplay()) {\r\n\t\t\t\tlaunchSurvey = true;\r\n\r\n\t\t\t\t// Log the force to display event\r\n\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\t\tTelemetryEvent.FloodgateEngine.CheckGovernanceServiceAndActivateSurvey.GovernanceServiceForceToDisplay,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tErrorMessage: serviceResult.errorMessage,\r\n\t\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (launchSurvey) {\r\n\t\t\t// Launch the survey\r\n\t\t\tthis.activateSurvey(survey, governedChannelType, contextInfo);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If there is only one survey, which is the current one in process, clear queue and return\r\n\t\tif (this.staleTriggeredSurveysQueue.length <= 1) {\r\n\t\t\tthis.staleTriggeredSurveysQueue = [];\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remove the first activated survey from the list which is the current one in process\r\n\t\tthis.staleTriggeredSurveysQueue.shift();\r\n\r\n\t\t// Playback the next activated survey in waiting\r\n\t\tthis.checkGovernanceServiceAndActivateSurvey(this.staleTriggeredSurveysQueue[0], governedChannelType, contextInfo);\r\n\t}\r\n\r\n\tprivate readString(fileType: FileType): string {\r\n\t\treturn this.storage.read(fileType);\r\n\t}\r\n\r\n\tprivate writeString(fileType: FileType, str: string): void {\r\n\t\tthis.storage.write(fileType, str);\r\n\t}\r\n\r\n\tprivate launchLauncher(survey: ISurvey, contextInfo: IContextData[]): void {\r\n\t\tconst launcher: ISurveyLauncher = this.launcherFactory.makeSurveyLauncher(survey);\r\n\t\tif (launcher) {\r\n\t\t\tthis.launchedLaunchers.push(launcher);\r\n\t\t\tthis.onSurveyActivatedCallback.onSurveyActivated(launcher, survey, { contextInfo });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate clearSurveyWithChannel(governedChannelType: GovernedChannelType) {\r\n\t\tconst activeSurveys: IDictionary = {};\r\n\r\n\t\t// Get all the candidate surveys' campaign definition IDs\r\n\t\tfor (const key in this.candidateSurveys) {\r\n\t\t\tif (this.candidateSurveys.hasOwnProperty(key)) {\r\n\t\t\t\tconst candidateSurvey: ISurvey = this.candidateSurveys[key];\r\n\t\t\t\tif (candidateSurvey.getSurveyInfo().getGovernedChannelType() !== governedChannelType) {\r\n\t\t\t\t\tactiveSurveys[key] = candidateSurvey;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.candidateSurveys = activeSurveys;\r\n\t\tthis.activityListener.UpdateActivityTrackingContracts(this.candidateSurveys);\r\n\t}\r\n\r\n\tprivate createGorvernanceResponseTelemetry(serviceResult: IGovernanceServiceResult ) {\r\n\t\treturn {\r\n\t\t\tFloodgateEngineStatus: this.initializationStatus.toString(),\r\n\t\t\tGovernanceServiceResult: serviceResult,\r\n\t\t\tStaleTriggeredSurveysQueueCount: this.staleTriggeredSurveysQueue.length - 1,\r\n\t\t};\r\n\t}\r\n}\r\n","import { IFloodgateEnvironmentProvider } from \"../Api/IFloodgateEnvironmentProvider\";\r\nimport * as IFloodgateStorageProvider from \"../Api/IFloodgateStorageProvider\";\r\nimport { TelemetryEvent } from \"../Constants\";\r\nimport { FloodgateEngine } from \"../FloodgateEngine\";\r\nimport { GovernedChannelType } from \"../GovernedChannel\";\r\nimport * as ISurveyInfo from \"../ISurveyInfo\";\r\nimport { BusinessLevel } from \"../ISurveyInfo\";\r\nimport * as Utils from \"../Utils\";\r\n\r\nimport { IUserFactProvider } from \"../Api/Api\";\r\nimport { UserFact } from \"../UserFact/UserFact\";\r\nimport { deserializeUserFacts, validateUserFacts } from \"../UserFact/UserFactHelper\";\r\nimport { CampaignScopeType } from \"./CampaignScopeTypes\";\r\n\r\nconst { getDistantFuture, isBoolean, isNOU, isNumber, isString, isUtcDatetimeString, stringToDate } = Utils;\r\n\r\n// region Language Range\r\n\r\n/**\r\n * Base class representing a language range in a campaign setting\r\n */\r\nexport abstract class CampaignLanguageRange {\r\n\tpublic static deserialize(input: any): CampaignLanguageRange {\r\n\t\tlet result: CampaignLanguageRange;\r\n\r\n\t\tif (input && input.Type === 0) {\r\n\t\t\tresult = CampaignLanguageRangeLanguageSubtag.deserialize(input);\r\n\t\t}\r\n\r\n\t\tif (result === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected constructor() { }\r\n\r\n\t/**\r\n\t * Returns whether or not the specific language tag (format from RFC 5646) is in this language range specification\r\n\t */\r\n\tpublic abstract isInRange(language: string): boolean;\r\n\r\n\tprotected validate(): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n/**\r\n * Represents a range matching on the \"language subtag\" against fully specified language tags, according to RFC 5646\r\n */\r\nexport class CampaignLanguageRangeLanguageSubtag extends CampaignLanguageRange {\r\n\tpublic static deserialize(input: any): CampaignLanguageRangeLanguageSubtag {\r\n\t\tconst result = new CampaignLanguageRangeLanguageSubtag();\r\n\r\n\t\tif (input) {\r\n\t\t\tresult.languageSubTag = input.Value;\r\n\t\t}\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"Value\")\r\n\tpublic languageSubTag: string;\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\t// @Override\r\n\tpublic isInRange(language: string): boolean {\r\n\t\tif (isNOU(language)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst extractedLanguageSubTag: string = Utils.extractLanguageSubtag(language);\r\n\t\tif (isNOU(extractedLanguageSubTag)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// compare strings ignoring case\r\n\t\treturn extractedLanguageSubTag.toLocaleUpperCase() === this.languageSubTag.toLocaleUpperCase();\r\n\t}\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.languageSubTag) || !isString(this.languageSubTag)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\t// Reject any spec that isn't exactly a language subtag\r\n\t\tif (!Utils.isValidLanguageSubTag(this.languageSubTag)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n// region Scope\r\n\r\nexport abstract class CampaignScope {\r\n\tpublic static deserialize(input: any): CampaignScope {\r\n\t\tlet result: CampaignScope;\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tswitch (input.Type) {\r\n\t\t\tcase CampaignScopeType.CampaignScopeAny:\r\n\t\t\t\tresult = CampaignScopeAny.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignScopeType.CampaignScopeEnvironmentCrossProduct:\r\n\t\t\t\tresult = CampaignScopeEnvironmentCrossProduct.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignScopeType.CampaignScopeUserFactAny:\r\n\t\t\t\tresult = CampaignScopeUserFactAny.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignScopeType.CampaignScopeUserFactAll:\r\n\t\t\t\tresult = CampaignScopeUserFactAll.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (result === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected constructor() { }\r\n\r\n\tpublic abstract isInScope(): boolean;\r\n\r\n\tprotected validate(): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignScopeAny extends CampaignScope {\r\n\tpublic static deserialize(input: any): CampaignScopeAny {\r\n\t\treturn new CampaignScopeAny();\r\n\t}\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\t// @Override\r\n\tpublic isInScope(): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignScopeEnvironmentCrossProduct extends CampaignScope {\r\n\tpublic static deserialize(input: any): CampaignScopeEnvironmentCrossProduct {\r\n\t\tconst result = new CampaignScopeEnvironmentCrossProduct();\r\n\t\tlet languageRanges: CampaignLanguageRange[] = [];\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tfor (const key in input.Languages) {\r\n\t\t\tif (input.Languages.hasOwnProperty(key)) {\r\n\t\t\t\tconst readRange: CampaignLanguageRange = input.Languages[key];\r\n\r\n\t\t\t\tif (readRange) {\r\n\t\t\t\t\tlanguageRanges.push(CampaignLanguageRange.deserialize(readRange));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (languageRanges.length === 0) {\r\n\t\t\tlanguageRanges = null;\r\n\t\t}\r\n\r\n\t\tresult.languageRanges = languageRanges;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"Languages\")\r\n\tpublic languageRanges: CampaignLanguageRange[];\r\n\r\n\tprivate environmentProvider: IFloodgateEnvironmentProvider;\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\tpublic setEnvironmentProvider(environmentProvider: IFloodgateEnvironmentProvider) {\r\n\t\tthis.environmentProvider = environmentProvider;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic isInScope(): boolean {\r\n\t\tif (isNOU(this.languageRanges)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.environmentProvider) || !this.environmentProvider.getLanguage()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tconst language = this.environmentProvider.getLanguage();\r\n\t\t// If the environment matches a single pattern, then this is a yes\r\n\t\tfor (const key in this.languageRanges) {\r\n\t\t\tif (this.languageRanges.hasOwnProperty(key)) {\r\n\t\t\t\tconst range = this.languageRanges[key];\r\n\r\n\t\t\t\tif (range.isInRange(language)) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Null languageRanges is allowed, means will match with everything.\r\n\t\tif (this.languageRanges) {\r\n\t\t\tfor (const key in this.languageRanges) {\r\n\t\t\t\tif (this.languageRanges.hasOwnProperty(key) && !this.languageRanges[key]) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignScopeUserFactAny extends CampaignScope {\r\n\tpublic static deserialize(input: any): CampaignScopeUserFactAny {\r\n\t\tconst result = new CampaignScopeUserFactAny();\r\n\t\tresult.userFacts = deserializeUserFacts(input);\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"UserFacts\")\r\n\tpublic userFacts: UserFact[];\r\n\r\n\tprivate userFactsProvider?: IUserFactProvider;\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\tpublic setUserFactsProvider(userFactsProvider?: IUserFactProvider) {\r\n\t\tthis.userFactsProvider = userFactsProvider;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic isInScope(): boolean {\r\n\t\tif (isNOU(this.userFacts)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!this.userFactsProvider) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If one of the user fact matches, then this is a yes\r\n\t\treturn this.userFacts.some((userFact) => {\r\n\t\t\tconst rawUserFact = this.userFactsProvider.getUserFact(userFact.getName());\r\n\t\t\treturn userFact.isAMatch(rawUserFact);\r\n\t\t});\r\n\t}\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn validateUserFacts(this.userFacts);\r\n\t}\r\n}\r\n\r\nexport class CampaignScopeUserFactAll extends CampaignScope {\r\n\tpublic static deserialize(input: any): CampaignScopeUserFactAll {\r\n\t\tconst result = new CampaignScopeUserFactAll();\r\n\t\tresult.userFacts = deserializeUserFacts(input);\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"UserFacts\")\r\n\tpublic userFacts: UserFact[];\r\n\r\n\tprivate userFactsProvider?: IUserFactProvider;\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\tpublic setUserFactsProvider(userFactsProvider?: IUserFactProvider) {\r\n\t\tthis.userFactsProvider = userFactsProvider;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic isInScope(): boolean {\r\n\t\tif (isNOU(this.userFacts)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (!this.userFactsProvider) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Get all of the mismatched user facts\r\n\t\tconst mismatchedFacts = this.userFacts.filter((userFact) => {\r\n\t\t\tconst rawUserFact = this.userFactsProvider.getUserFact(userFact.getName());\r\n\t\t\treturn !userFact.isAMatch(rawUserFact);\r\n\t\t});\r\n\r\n\t\tif (mismatchedFacts.length > 0) {\r\n\t\t\tconst mismatchedNames = mismatchedFacts.map((userFact) => userFact.getName());\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.Floodgate.UserFactsSpecIsAMatch.Summary, {\r\n\t\t\t\t\tCount: mismatchedFacts.length,\r\n\t\t\t\t\tMessage: mismatchedNames.toString(),\r\n\t\t\t\t});\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// If all of the user facts match, then this is a yes\r\n\t\treturn true;\r\n\t}\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn validateUserFacts(this.userFacts);\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n// region Durations\r\n\r\n/**\r\n * Base class representing a duration in a campaign setting\r\n */\r\nexport abstract class CampaignDuration {\r\n\tpublic static deserialize(input: any): CampaignDuration {\r\n\t\tlet result: CampaignDuration;\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tswitch (input.Type) {\r\n\t\t\tcase 0:\r\n\t\t\t\tresult = CampaignDurationTimeInterval.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1:\r\n\t\t\t\tresult = CampaignDurationSingleBuildChange.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (result === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected constructor() { }\r\n\r\n\tpublic abstract asTimeIntervalSeconds(): number;\r\n\r\n\tprotected validate(): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n/**\r\n * A Duration expressed in seconds. UTC datetime comparisons are used to determine expiration.\r\n */\r\nexport class CampaignDurationTimeInterval extends CampaignDuration {\r\n\tpublic static deserialize(input: any): CampaignDurationTimeInterval {\r\n\t\tconst result = new CampaignDurationTimeInterval();\r\n\r\n\t\tif (input) {\r\n\t\t\tresult.intervalSeconds = input.IntervalSeconds;\r\n\t\t}\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"IntervalSeconds\")\r\n\tpublic intervalSeconds: number;\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\t// @Override\r\n\tpublic asTimeIntervalSeconds(): number {\r\n\t\treturn this.intervalSeconds;\r\n\t}\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNumber(this.intervalSeconds)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n/**\r\n * A Duration representing exactly 1 change in build number\r\n */\r\nexport class CampaignDurationSingleBuildChange extends CampaignDuration {\r\n\tpublic static deserialize(input: any): CampaignDurationSingleBuildChange {\r\n\t\treturn new CampaignDurationSingleBuildChange();\r\n\t}\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\t// @Override\r\n\tpublic asTimeIntervalSeconds(): number {\r\n\t\treturn null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Class representing AdditionalDataRequested in CampaignDefinition\r\n */\r\nexport class CampaignAdditionalDataRequested {\r\n\tpublic static deserialize(additionalDataRequested: string[]): CampaignAdditionalDataRequested {\r\n\t\tconst result = new CampaignAdditionalDataRequested();\r\n\r\n\t\tif (!isNOU(additionalDataRequested)) {\r\n\t\t\t// Convert from AdditionalDataRequested string to enum\r\n\t\t\tresult.additionalData = [];\r\n\t\t\tfor (const additionalData of additionalDataRequested) {\r\n\t\t\t\tif (additionalData === \"EmailAddress\") {\r\n\t\t\t\t\tresult.additionalData.push(ISurveyInfo.AdditionalDataType.EmailAddress);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic additionalData: ISurveyInfo.AdditionalDataType[];\r\n\r\n\tprivate validate(): boolean {\r\n\t\tif (isNOU(this.additionalData)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n// endregion\r\n\r\n// region Distribution Schemes\r\n\r\nexport abstract class CampaignDistribution {\r\n\tpublic static deserialize(input: any): CampaignDistribution {\r\n\t\tlet result: CampaignDistribution;\r\n\r\n\t\tif (input && input.Type === 0) {\r\n\t\t\tresult = CampaignDistributionRamp.deserialize(input);\r\n\t\t}\r\n\r\n\t\tif (result === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected constructor() { }\r\n\r\n\tprotected validate(): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignDistributionRamp extends CampaignDistribution {\r\n\tpublic static deserialize(input: any): CampaignDistributionRamp {\r\n\t\tconst result = new CampaignDistributionRamp();\r\n\r\n\t\tif (input) {\r\n\t\t\tresult.maxDelaySeconds = input.MaxDelaySeconds;\r\n\t\t\tresult.chunks = input.Chunks;\r\n\t\t}\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// The time window over which the ramp will distribute start dates.\r\n\t// @SerializedName(\"MaxDelaySeconds\")\r\n\tpublic maxDelaySeconds: number;\r\n\r\n\t// The number of discrete buckets to divide the time window (maxDelaySeconds) into\r\n\t// @SerializedName(\"Chunks\")\r\n\tpublic chunks: number;\r\n\r\n\tprivate constructor() { super(); }\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNumber(this.maxDelaySeconds) || this.maxDelaySeconds < 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNumber(this.chunks) || this.chunks < 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n// region Nomination Scheme\r\n\r\nexport abstract class CampaignNominationScheme {\r\n\tpublic static deserialize(input: any): CampaignNominationScheme {\r\n\t\tlet result: CampaignNominationScheme;\r\n\r\n\t\tif (input && input.Type === 0) {\r\n\t\t\tresult = CampaignNominationSchemeRatioPercentage.deserialize(input);\r\n\t\t}\r\n\r\n\t\tif (result === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// The amount of time (in seconds) for which the survey is active, if the nominationPeriod can't be interpreted as a time interval\r\n\t// note: This is only used when nominationPeriod is not of a type that can be interpreted as a time interval, otherwise\r\n\t// that value is used instead\r\n\t// @SerializedName(\"FallbackSurveyDurationSeconds\")\r\n\tpublic fallbackSurveyDurationSeconds: number;\r\n\r\n\t// When the user never sees the survey during their candidacy (or anti-candidacy), this is the duration that must lapse\r\n\t// before re- nominating\r\n\t// @SerializedName(\"NominationPeriod\")\r\n\tpublic nominationPeriod: CampaignDuration;\r\n\r\n\t// When the user does sees the survey during their candidacy, this is the duration that must lapse before re-evaluating\r\n\t// candidacy. Generally recommended that this be greater than nominationPeriod\r\n\t// @SerializedName(\"CooldownPeriod\")\r\n\tpublic cooldownPeriod: CampaignDuration;\r\n\r\n\tprotected constructor() { }\r\n\r\n\t/**\r\n\t * @return The amount of time the survey should be active, in seconds. Abstracts the difference between nominationPeriod and the fallback\r\n\t */\r\n\tpublic getActiveSurveyTimeIntervalSeconds(): number {\r\n\t\tconst nominationTimIntervalSeconds: number = this.nominationPeriod.asTimeIntervalSeconds();\r\n\r\n\t\tif (isNumber(nominationTimIntervalSeconds)) {\r\n\t\t\treturn nominationTimIntervalSeconds;\r\n\t\t}\r\n\r\n\t\treturn this.fallbackSurveyDurationSeconds;\r\n\t}\r\n\r\n\t/**\r\n\t * @return The survey start time, possibly adjusted by an underlying DistributionModel.\r\n\t */\r\n\tpublic calculateSurveyStartTimeFromDate(soonestStartTime: Date): Date {\r\n\t\t// No adjustment in base class. Derived classes can override and implement delays like a \"ramp\"\r\n\t\treturn soonestStartTime ? soonestStartTime : new Date();\r\n\t}\r\n\r\n\t/**\r\n\t * @return The survey expiration time, based on the nomination periods and the survey's adjusted start time\r\n\t */\r\n\tpublic calculateSurveyExpirationTimeFromSurveyStartTime(surveyStartTime: Date): Date {\r\n\t\tsurveyStartTime = surveyStartTime ? surveyStartTime : new Date();\r\n\t\treturn Utils.addSecondsWithoutOverflow(surveyStartTime, this.getActiveSurveyTimeIntervalSeconds());\r\n\t}\r\n\r\n\t/**\r\n\t * @return The appropriate campaign cool down based on whether or not the user activated the survey\r\n\t */\r\n\tpublic getCampaignCooldown(didUserActivateSurvey: boolean): CampaignDuration {\r\n\t\tif (didUserActivateSurvey) {\r\n\t\t\treturn this.cooldownPeriod;\r\n\t\t} else {\r\n\t\t\treturn this.nominationPeriod;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Evaluate this rule set based on a random number\r\n\t *\r\n\t * @return true if the user should be a candidate, false if they should be an anti-candidate\r\n\t */\r\n\tpublic abstract evaluateNominationRules(): boolean;\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (isNOU(this.nominationPeriod)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.cooldownPeriod)) {\r\n\t\t\tthis.cooldownPeriod = this.nominationPeriod;\r\n\t\t}\r\n\r\n\t\tif (!isNumber(this.nominationPeriod.asTimeIntervalSeconds())) {\r\n\t\t\tif (!isNumber(this.fallbackSurveyDurationSeconds) || this.fallbackSurveyDurationSeconds <= 0) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n/**\r\n * Class representing a set of campaign nomination rules to evaluate for in-scope campaigns:\r\n * percentage\r\n * re-election durations\r\n * distribution model (for \"nominated\" candidates)\r\n */\r\nexport class CampaignNominationSchemeRatioPercentage extends CampaignNominationScheme {\r\n\tpublic static deserialize(input: any): CampaignNominationSchemeRatioPercentage {\r\n\t\tconst result = new CampaignNominationSchemeRatioPercentage();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (input.DistributionModel) {\r\n\t\t\tresult.distributionModel = CampaignDistribution.deserialize(input.DistributionModel);\r\n\t\t}\r\n\r\n\t\tif (input.CooldownPeriod) {\r\n\t\t\tresult.cooldownPeriod = CampaignDuration.deserialize(input.CooldownPeriod);\r\n\t\t}\r\n\r\n\t\tif (input.NominationPeriod) {\r\n\t\t\tresult.nominationPeriod = CampaignDuration.deserialize(input.NominationPeriod);\r\n\t\t}\r\n\r\n\t\tresult.fallbackSurveyDurationSeconds = input.FallbackSurveyDurationSeconds;\r\n\t\tresult.percentageDenominator = input.PercentageDenominator;\r\n\t\tresult.percentageNumerator = input.PercentageNumerator;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// The numerator when calculating the percentage of users that should be selected as candidates. Must\r\n\t// satisfy 0 <= percentageNumerator <= percentageDenominator\r\n\t// @SerializedName(\"PercentageNumerator\")\r\n\tpublic percentageNumerator: number;\r\n\r\n\t// The denominator when calculating the percentage of users that should be selected as candidates. Must be greater than 0.\r\n\t// @SerializedName(\"PercentageDenominator\")\r\n\tpublic percentageDenominator: number;\r\n\r\n\t// NYI - For candidates, allows the Survey start/end dates to be shifted forward in time, to help achieve a smoother signal\r\n\t// @SerializedName(\"DistributionModel\")\r\n\tpublic distributionModel: CampaignDistribution;\r\n\r\n\tprivate constructor() { super(); }\r\n\r\n\t// @Override\r\n\tpublic evaluateNominationRules(): boolean {\r\n\t\tconst rand: number = Math.random();\r\n\t\t// Creates a random number between [0 to (percentageDenominator - 1)]\r\n\t\t// In range [0 to (percentageDenominator - 1)] exactly 'percentageNumerator' values are < percentageNumerator\r\n\t\treturn Math.floor(rand * this.percentageDenominator) < this.percentageNumerator;\r\n\t}\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNumber(this.percentageDenominator) || !isNumber(this.percentageNumerator)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.percentageDenominator <= 0 || this.percentageNumerator < 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.percentageNumerator > this.percentageDenominator) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// distribution model may be null\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n// region Survey Event Definitions\r\nexport abstract class CampaignSurveyEvent {\r\n\tpublic static deserialize(input: any): CampaignSurveyEvent {\r\n\t\tlet result: CampaignSurveyEvent;\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tswitch (input.Type) {\r\n\t\t\tcase 0:\r\n\t\t\t\tresult = CampaignSurveyEventCountedActivity.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase 1:\r\n\t\t\t\tresult = CampaignSurveyEventCountedActivitySequence.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (result === undefined) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprotected constructor() { }\r\n\r\n\tprotected validate(): boolean {\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyEventCountedActivity extends CampaignSurveyEvent {\r\n\tpublic static deserialize(input: any): CampaignSurveyEventCountedActivity {\r\n\t\tconst result = new CampaignSurveyEventCountedActivity();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.activity = input.Activity;\r\n\t\tresult.count = input.Count;\r\n\t\tresult.isAggregate = input.IsAggregate;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"Activity\")\r\n\tpublic activity: string;\r\n\r\n\t// @SerializedName(\"Count\")\r\n\tpublic count: number;\r\n\r\n\t// @SerializedName(\"IsAggregate\")\r\n\tpublic isAggregate: boolean;\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.activity) || !isString(this.activity)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNumber(this.count) || this.count <= 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isBoolean(this.isAggregate)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyEventCountedActivitySequence extends CampaignSurveyEvent {\r\n\tpublic static deserialize(input: any): CampaignSurveyEventCountedActivitySequence {\r\n\t\tconst result = new CampaignSurveyEventCountedActivitySequence();\r\n\t\tlet sequence: CampaignSurveyEventCountedActivity[] = [];\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tfor (const key in input.Sequence) {\r\n\t\t\tif (input.Sequence.hasOwnProperty(key)) {\r\n\t\t\t\tconst readActivity: CampaignSurveyEventCountedActivity = input.Sequence[key];\r\n\r\n\t\t\t\tif (readActivity) {\r\n\t\t\t\t\tsequence.push(CampaignSurveyEventCountedActivity.deserialize(readActivity));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (sequence.length === 0) {\r\n\t\t\tsequence = null;\r\n\t\t}\r\n\r\n\t\tresult.sequence = sequence;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"Sequence\")\r\n\tpublic sequence: CampaignSurveyEventCountedActivity[];\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\t// @Override\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.sequence)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (const key in this.sequence) {\r\n\t\t\tif (this.sequence.hasOwnProperty(key) && !this.sequence[key]) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n// region Survey Content Definitions\r\n\r\nexport class CampaignSurveyContent {\r\n\tpublic static deserialize(input: any, optionalComponents?: boolean): CampaignSurveyContent {\r\n\t\tconst result = new CampaignSurveyContent();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.prompt = CampaignSurveyContentPrompt.deserialize(input.Prompt);\r\n\t\tresult.rating = CampaignSurveyContentRating.deserialize(input.Rating);\r\n\t\tresult.comment = CampaignSurveyContentComment.deserialize(input.Question);\r\n\t\tresult.multipleChoice = CampaignSurveyContentMultipleChoice.deserialize(input.MultipleChoice);\r\n\t\tresult.intercept = CampaignSurveyContentIntercept.deserialize(input.Intercept);\r\n\t\tresult.cvSurvey = CampaignSurveyContentCVSurvey.deserialize(input.CVSurveyParams);\r\n\r\n\t\tif (!result.validate(optionalComponents)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"CVSurvey\")\r\n\tpublic cvSurvey: CampaignSurveyContentCVSurvey;\r\n\r\n\t// @SerializedName(\"Prompt\")\r\n\tpublic prompt: CampaignSurveyContentPrompt;\r\n\r\n\t// @SerializedName(\"Rating\")\r\n\tpublic rating: CampaignSurveyContentRating;\r\n\r\n\t// @SerializedName(\"Question\")\r\n\tpublic comment: CampaignSurveyContentComment;\r\n\r\n\t// @SerializedName(\"MultipleChoice\")\r\n\tpublic multipleChoice: CampaignSurveyContentMultipleChoice;\r\n\r\n\t// @SerializedName(\"Intercept\")\r\n\tpublic intercept: CampaignSurveyContentIntercept;\r\n\r\n\tpublic validate(optionalComponents?: boolean): boolean {\r\n\t\tif (!isNOU(this.intercept)) {\r\n\t\t\t// An intercept survey only requires intercept.\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.prompt)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (optionalComponents) {\r\n\t\t\treturn !isNOU(this.rating) ||\r\n\t\t\t\t!isNOU(this.multipleChoice) ||\r\n\t\t\t\t!isNOU(this.comment);\r\n\t\t}\r\n\r\n\t\treturn !isNOU(this.rating) && !isNOU(this.comment);\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyContentMultipleChoice {\r\n\tpublic static deserialize(input: any): CampaignSurveyContentMultipleChoice {\r\n\t\tconst result = new CampaignSurveyContentMultipleChoice();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.question = input.Question;\r\n\t\tresult.availableOptions = input.AvailableOptions;\r\n\t\tresult.minNumberOfSelectedOptions = input.MinNumberOfSelectedOptions;\r\n\t\tresult.maxNumberOfSelectedOptions = input.MaxNumberOfSelectedOptions;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"Question\")\r\n\tpublic question: string;\r\n\r\n\t// @SerializedName(\"AvailableOptions\")\r\n\tpublic availableOptions: string[];\r\n\r\n\t// @SerializedName(\"MinNumberOfSelectedOptions\")\r\n\tpublic minNumberOfSelectedOptions: number;\r\n\r\n\t// @SerializedName(\"MaxNumberOfSelectedOptions\")\r\n\tpublic maxNumberOfSelectedOptions: number;\r\n\r\n\tprivate validate(): boolean {\r\n\t\tif (isNOU(this.question) || !isString(this.question) ||\r\n\t\t\tisNOU(this.availableOptions) || !Array.isArray(this.availableOptions) || this.availableOptions.length < 2 ||\r\n\t\t\tisNOU(this.minNumberOfSelectedOptions) || !isNumber(this.minNumberOfSelectedOptions) ||\r\n\t\t\tisNOU(this.maxNumberOfSelectedOptions) || !isNumber(this.maxNumberOfSelectedOptions)) {\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// expect all availableOptions values to be string\r\n\t\tfor (const key in this.availableOptions) {\r\n\t\t\tif (this.availableOptions.hasOwnProperty(key)) {\r\n\t\t\t\tif (!isString(this.availableOptions[key])) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyContentCVSurvey {\r\n\tpublic static deserialize(input: any): CampaignSurveyContentCVSurvey {\r\n\t\tconst result = new CampaignSurveyContentCVSurvey();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.customerVoiceFormId = input.CustomerVoiceFormId;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"FormId\")\r\n\tpublic customerVoiceFormId: string;\r\n\r\n\tprivate validate(): boolean {\r\n\r\n\t\treturn (!isNOU(this.customerVoiceFormId) && isString(this.customerVoiceFormId));\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyContentPrompt {\r\n\tpublic static deserialize(input: any): CampaignSurveyContentPrompt {\r\n\t\tconst result = new CampaignSurveyContentPrompt();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.title = input.Title;\r\n\t\tresult.question = input.Question;\r\n\t\tresult.yesLabel = input.YesLabel;\r\n\t\tresult.noLabel = input.NoLabel;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"Title\")\r\n\tpublic title: string;\r\n\r\n\t// @SerializedName(\"Question\")\r\n\tpublic question: string;\r\n\r\n\t// @SerializedName(\"YesLabel\")\r\n\tpublic yesLabel: string;\r\n\r\n\t// @SerializedName(\"NoLabel\")\r\n\tpublic noLabel: string;\r\n\r\n\tprivate validate(): boolean {\r\n\t\tif (isNOU(this.title) || !isString(this.title) ||\r\n\t\t\tisNOU(this.question) || !isString(this.question) ||\r\n\t\t\tisNOU(this.yesLabel) || !isString(this.yesLabel) ||\r\n\t\t\tisNOU(this.noLabel) || !isString(this.noLabel)) {\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyContentIntercept {\r\n\tpublic static deserialize(input: any): CampaignSurveyContentIntercept {\r\n\t\tconst result = new CampaignSurveyContentIntercept();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.title = input.Title;\r\n\t\tresult.question = input.Question;\r\n\t\tresult.url = input.Url;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"Title\")\r\n\tpublic title: string;\r\n\r\n\t// @SerializedName(\"Question\")\r\n\tpublic question: string;\r\n\r\n\t// @SerializedName(\"Url\")\r\n\tpublic url: string;\r\n\r\n\tprivate validate(): boolean {\r\n\t\tif (isNOU(this.title) || !isString(this.title) ||\r\n\t\t\tisNOU(this.question) || !isString(this.question) ||\r\n\t\t\tisNOU(this.url) || !isString(this.url)) {\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyContentRating {\r\n\tpublic static deserialize(input: any): CampaignSurveyContentRating {\r\n\t\tconst result = new CampaignSurveyContentRating();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.isZeroBased = input.IsZeroBased;\r\n\t\tresult.question = input.Question;\r\n\t\tresult.ratingValuesAscending = input.RatingValuesAscending;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"IsZeroBased\")\r\n\tpublic isZeroBased: boolean;\r\n\r\n\t// @SerializedName(\"Question\")\r\n\tpublic question: string;\r\n\r\n\t// @SerializedName(\"RatingValuesAscending\")\r\n\tpublic ratingValuesAscending: string[];\r\n\r\n\tprivate validate(): boolean {\r\n\t\t// expect ratingValuesAscending to contain between 2 to 11 values\r\n\t\tif (isNOU(this.question) || !isString(this.question) ||\r\n\t\t\tisNOU(this.ratingValuesAscending) || !Array.isArray(this.ratingValuesAscending) ||\r\n\t\t\tthis.ratingValuesAscending.length < 2 || this.ratingValuesAscending.length > 11) {\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.isZeroBased)) {\r\n\t\t\t// default to false if not provided\r\n\t\t\tthis.isZeroBased = false;\r\n\t\t} else if (!isBoolean(this.isZeroBased)) {\r\n\t\t\t// fail validation if non boolean value is provided\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// expect all ratingValuesAscending values to be string\r\n\t\tfor (const key in this.ratingValuesAscending) {\r\n\t\t\tif (this.ratingValuesAscending.hasOwnProperty(key)) {\r\n\t\t\t\tif (!isString(this.ratingValuesAscending[key])) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyContentComment {\r\n\tpublic static deserialize(input: any): CampaignSurveyContentComment {\r\n\t\tconst result = new CampaignSurveyContentComment();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t// @SerializedName(\"Question\")\r\n\t\tresult.question = input.Question;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"Question\")\r\n\tpublic question: string;\r\n\r\n\tprivate validate(): boolean {\r\n\t\tif (isNOU(this.question) || !isString(this.question)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n// region Survey Metadata Definitions\r\n\r\nexport class CampaignSurveyMetadata {\r\n\tpublic static deserialize(input: any): CampaignSurveyMetadata {\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst result = new CampaignSurveyMetadata();\r\n\t\tresult.contentMetadata = input.ContentMetadata;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"ContentMetadata\")\r\n\tpublic contentMetadata: object;\r\n\r\n\tpublic validate(): boolean {\r\n\t\tif (isNOU(this.contentMetadata) || !Utils.isObject(this.contentMetadata)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n// region Survey Template definitions\r\n\r\nexport abstract class CampaignSurveyTemplate {\r\n\tpublic static deserialize(input: any): CampaignSurveyTemplate {\r\n\t\tlet result: CampaignSurveyTemplate;\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tswitch (input.Type) {\r\n\t\t\tcase CampaignSurveyTemplate.Type.Nps5PointStatic:\r\n\t\t\t\tresult = CampaignSurveyTemplateNps5PointStatic.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignSurveyTemplate.Type.Nps11PointStatic:\r\n\t\t\t\tresult = CampaignSurveyTemplateNps11PointStatic.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignSurveyTemplate.Type.Fps:\r\n\t\t\t\tresult = CampaignSurveyTemplateFps.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignSurveyTemplate.Type.Nlqs:\r\n\t\t\t\tresult = CampaignSurveyTemplateNlqs.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignSurveyTemplate.Type.Nps:\r\n\t\t\t\tresult = CampaignSurveyTemplateNps.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignSurveyTemplate.Type.GenericMessagingSurface:\r\n\t\t\t\tresult = CampaignSurveyTemplateGenericMessagingSurface.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t\tcase CampaignSurveyTemplate.Type.Intercept:\r\n\t\t\t\tresult = CampaignSurveyTemplateIntercept.deserialize(input);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (isNOU(result)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"ActivationEvent\")\r\n\tpublic activationEvent: CampaignSurveyEvent;\r\n\r\n\t// @SerializedName(\"Content\")\r\n\tpublic content: CampaignSurveyContent;\r\n\r\n\t// @SerializedName(\"Metadata\")\r\n\tpublic metadata: CampaignSurveyMetadata;\r\n\r\n\t// @SerializedName(\"MaxLaunches\")\r\n\tpublic maxLaunches: number;\r\n\r\n\t// @SerializedName(\"MaxLaunchesPerSession\")\r\n\tpublic maxLaunchesPerSession: number;\r\n\r\n\t// @SerializedName(\"PreferredLaunchType\")\r\n\tpublic preferredLaunchType: ISurveyInfo.LaunchType;\r\n\r\n\tprotected constructor() { }\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (isNOU(this.activationEvent)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport module CampaignSurveyTemplate {\r\n\texport const enum Type {\r\n\t\tNps5PointStatic = 0,\r\n\t\tNps11PointStatic = 1,\r\n\t\tFps = 2,\r\n\t\tNlqs = 3,\r\n\t\tNps = 4,\r\n\t\tIntercept = 5,\r\n\t\t// A generic messagibg surface template type, which will make use of\r\n\t\t// content metadata to render ui.\r\n\t\t// As of 4th Feb 2019 there are 20 template types defined in Mso,\r\n\t\t// hence giving 22 as value for this type.\r\n\t\tGenericMessagingSurface = 22,\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyTemplateFps extends CampaignSurveyTemplate {\r\n\tpublic static deserialize(input: any): CampaignSurveyTemplateFps {\r\n\t\tconst result = new CampaignSurveyTemplateFps();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.activationEvent = CampaignSurveyEvent.deserialize(input.ActivationEvent);\r\n\t\tresult.content = CampaignSurveyContent.deserialize(input.Content, true /* optionalComponents */);\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate() || isNOU(this.content)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyTemplateNlqs extends CampaignSurveyTemplate {\r\n\tpublic static deserialize(input: any): CampaignSurveyTemplateNlqs {\r\n\t\tconst result = new CampaignSurveyTemplateNlqs();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.activationEvent = CampaignSurveyEvent.deserialize(input.ActivationEvent);\r\n\t\tresult.content = CampaignSurveyContent.deserialize(input.Content);\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate() || isNOU(this.content)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyTemplateNps extends CampaignSurveyTemplate {\r\n\tpublic static deserialize(input: any): CampaignSurveyTemplateNps {\r\n\t\tconst result = new CampaignSurveyTemplateNps();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.activationEvent = CampaignSurveyEvent.deserialize(input.ActivationEvent);\r\n\t\tresult.content = CampaignSurveyContent.deserialize(input.Content);\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate() || isNOU(this.content)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyTemplateNps5PointStatic extends CampaignSurveyTemplate {\r\n\tpublic static deserialize(input: any): CampaignSurveyTemplateNps5PointStatic {\r\n\t\tconst result = new CampaignSurveyTemplateNps5PointStatic();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.activationEvent = CampaignSurveyEvent.deserialize(input.ActivationEvent);\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyTemplateNps11PointStatic extends CampaignSurveyTemplate {\r\n\tpublic static deserialize(input: any): CampaignSurveyTemplateNps11PointStatic {\r\n\t\tconst result = new CampaignSurveyTemplateNps11PointStatic();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.activationEvent = CampaignSurveyEvent.deserialize(input.ActivationEvent);\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tprivate constructor() { super(); }\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyTemplateGenericMessagingSurface extends CampaignSurveyTemplate {\r\n\tpublic static deserialize(input: any): CampaignSurveyTemplateGenericMessagingSurface {\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst result = new CampaignSurveyTemplateGenericMessagingSurface();\r\n\t\tresult.activationEvent = CampaignSurveyEvent.deserialize(input.ActivationEvent);\r\n\t\tresult.metadata = CampaignSurveyMetadata.deserialize(input.Metadata);\r\n\t\tresult.maxLaunches = input.MaxLaunches;\r\n\t\tresult.maxLaunchesPerSession = input.MaxLaunchesPerSession;\r\n\t\tresult.preferredLaunchType = input.PreferredLaunchType;\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tpublic constructor() { super(); }\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate() || isNOU(this.metadata)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif ((!isNOU(this.maxLaunches) && (!isNumber(this.maxLaunches) || this.maxLaunches <= 0)) ||\r\n\t\t\t(!isNOU(this.maxLaunchesPerSession) && (!isNumber(this.maxLaunchesPerSession) || this.maxLaunchesPerSession <= 0))) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_LocalError(\"Invalid Multi Launch settings\", this.maxLaunches, this.maxLaunchesPerSession);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// check for valid values\r\n\t\tif (isNumber(this.maxLaunches) &&\r\n\t\t\tisNumber(this.maxLaunchesPerSession) &&\r\n\t\t\tthis.maxLaunchesPerSession > this.maxLaunches) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_LocalError(\"Invalid Multi launch settings\", this.maxLaunches, this.maxLaunchesPerSession);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNOU(this.preferredLaunchType) && !isString(this.preferredLaunchType)) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_LocalError(\"Invalid launcher type\", this.preferredLaunchType);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\nexport class CampaignSurveyTemplateIntercept extends CampaignSurveyTemplate {\r\n\tpublic static deserialize(input: any): CampaignSurveyTemplateIntercept {\r\n\t\tconst result = new CampaignSurveyTemplateIntercept();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.activationEvent = CampaignSurveyEvent.deserialize(input.ActivationEvent);\r\n\t\tresult.content = CampaignSurveyContent.deserialize(input.Content);\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// public for UT only\r\n\tpublic constructor() { super(); }\r\n\r\n\tprotected validate(): boolean {\r\n\t\tif (!super.validate() || isNOU(this.content)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n// endregion\r\n\r\n// region Campaign Definition\r\n\r\nexport class CampaignDefinition {\r\n\t/**\r\n\t * Method to deserialize a JSON object to class object\r\n\t * @param input: JSON object\r\n\t * Returns result of validation check\r\n\t */\r\n\tpublic static deserialize(input: any): CampaignDefinition {\r\n\t\tconst result: CampaignDefinition = new CampaignDefinition();\r\n\r\n\t\tif (isNOU(input)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tresult.campaignId = input.CampaignId;\r\n\t\tresult.governedChannelType = input.GovernedChannelType;\r\n\t\tresult.startTime = input.StartTimeUtc;\r\n\t\tresult.endTime = input.EndTimeUtc;\r\n\t\tresult.launcherType = input.LauncherType;\r\n\t\tresult.primaryPriority = input.PrimaryPriority;\r\n\t\tresult.tags = input.Tags;\r\n\r\n\t\tconst additionalDataRequested: CampaignAdditionalDataRequested = CampaignAdditionalDataRequested.deserialize(\r\n\t\t\tinput.AdditionalDataRequested);\r\n\t\tresult.additionalDataRequested = additionalDataRequested ? additionalDataRequested.additionalData : [];\r\n\r\n\t\tif (input.SurveyTemplate) {\r\n\t\t\tresult.surveyTemplate = CampaignSurveyTemplate.deserialize(input.SurveyTemplate);\r\n\t\t}\r\n\r\n\t\tif (input.NominationScheme) {\r\n\t\t\tresult.nominationScheme = CampaignNominationScheme.deserialize(input.NominationScheme);\r\n\t\t}\r\n\r\n\t\tif (input.Scope) {\r\n\t\t\tresult.scope = CampaignScope.deserialize(input.Scope);\r\n\t\t}\r\n\r\n\t\tif (!isNOU(input.BusinessLevel)) {\r\n\t\t\tresult.businessLevel = input.BusinessLevel;\r\n\t\t}\r\n\r\n\t\tif (!result.validate()) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_LocalError(\"Invalid definition\", input);\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"CampaignId\")\r\n\tpublic campaignId: string;\r\n\r\n\t// @SerializedName(\"GovernedChannelType\")\r\n\tpublic governedChannelType: GovernedChannelType;\r\n\r\n\t// @SerializedName(\"Scope\")\r\n\tpublic scope: CampaignScope;\r\n\r\n\t// @SerializedName(\"NominationScheme\")\r\n\tpublic nominationScheme: CampaignNominationScheme;\r\n\r\n\t// @SerializedName(\"SurveyTemplate\")\r\n\tpublic surveyTemplate: CampaignSurveyTemplate;\r\n\r\n\t// @SerializedName(\"StartTimeUtc\")\r\n\tpublic startTime: Date;\r\n\r\n\t// @SerializedName(\"EndTimeUtc\")\r\n\tpublic endTime: Date;\r\n\r\n\t// @SerializedName(\"AdditionalDataRequested\")\r\n\tpublic additionalDataRequested: ISurveyInfo.AdditionalDataType[];\r\n\r\n\t// @SerializedName(\"LauncherType\")\r\n\tpublic launcherType: string;\r\n\r\n\t// @SerializedName(\"Priority\")\r\n\tpublic primaryPriority: number;\r\n\r\n\t// @SerializedName(\"Tags\")\r\n\tpublic tags: string[];\r\n\r\n\t// @SerializedName(\"BusinessLevel\")\r\n\tpublic businessLevel: BusinessLevel;\r\n\r\n\tpublic validate(): boolean {\r\n\t\tif (isNOU(this.scope)) {\r\n\t\t\tthis.scope = new CampaignScopeAny();\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.campaignId) || !isString(this.campaignId)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNumber(this.governedChannelType) || !Utils.isEnumValue(this.governedChannelType, GovernedChannelType)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.nominationScheme)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.surveyTemplate)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNOU(this.launcherType) && !isString(this.launcherType)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.launcherType === \"customervoice\" && isNOU(this.surveyTemplate.content?.cvSurvey?.customerVoiceFormId)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isNOU(this.primaryPriority) && !isNumber(this.primaryPriority)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.tags && !Array.isArray(this.tags)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Campaigns with no start date are effectively disabled, in fact, this is the supported way to stage a definition but have it be turned off\r\n\t\tif (isNOU(this.startTime)) {\r\n\t\t\tthis.startTime = getDistantFuture();\r\n\t\t} else if (isUtcDatetimeString(this.startTime)) {\r\n\t\t\tthis.startTime = stringToDate(this.startTime);\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Campaigns with no end date are effectively on indefinitely\r\n\t\tif (isNOU(this.endTime) ||\r\n\t\t\t(typeof(this.endTime) === \"string\" && this.endTime === \"\")) {\r\n\t\t\tthis.endTime = getDistantFuture();\r\n\t\t} else if (isUtcDatetimeString(this.endTime)) {\r\n\t\t\tthis.endTime = stringToDate(this.endTime);\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n/**\r\n * Given an array of campaign definitions, returns the valid ones and errors if any are invalid.\r\n * @param input: JSON object\r\n * Returns the valid definitions and the error as string if any.\r\n */\r\nexport function FilterValidCampaignDefinitions(campaignDefinitions: any): { result: CampaignDefinition[], error: string } {\r\n\tconst result: CampaignDefinition[] = [];\r\n\r\n\tif (isNOU(campaignDefinitions)) {\r\n\t\treturn { result, error: \"Empty\" };\r\n\t}\r\n\r\n\tif (!Array.isArray(campaignDefinitions)) {\r\n\t\treturn { result, error: \"Not an array\" };\r\n\t}\r\n\r\n\tconst badIndexes: number[] = [];\r\n\tfor (let i = 0; i < campaignDefinitions.length; i++) {\r\n\t\tconst definition: any = campaignDefinitions[i];\r\n\r\n\t\tif (definition) {\r\n\t\t\tconst newDefinition: CampaignDefinition = CampaignDefinition.deserialize(definition);\r\n\r\n\t\t\tnewDefinition\r\n\t\t\t\t? result.push(newDefinition)\r\n\t\t\t\t: badIndexes.push(i);\r\n\t\t} else {\r\n\t\t\tbadIndexes.push(i);\r\n\t\t}\r\n\t}\r\n\r\n\tconst error: string = badIndexes.length > 0 ? \"Invalid campaign definitions at indexes: \" + badIndexes.toString() : undefined;\r\n\treturn { result, error };\r\n}\r\n\r\n// endregion\r\n\r\nexport interface ICampaignDefinitionProvider {\r\n\tload(): CampaignDefinition[];\r\n\tloadAsync(): Promise;\r\n}\r\n\r\nexport class FileSystemCampaignDefinitionProvider implements ICampaignDefinitionProvider {\r\n\tprivate storage: IFloodgateStorageProvider;\r\n\r\n\tpublic constructor(storage: IFloodgateStorageProvider) {\r\n\t\tif (isNOU(storage)) {\r\n\t\t\tthrow new Error(\"storage must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.storage = storage;\r\n\t}\r\n\r\n\tpublic load(): CampaignDefinition[] {\r\n\t\tconst definitionString: string = this.storage.read(IFloodgateStorageProvider.FileType.CampaignDefinitions);\r\n\t\tif (isNOU(definitionString)) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet readDefinitions: any;\r\n\r\n\t\ttry {\r\n\t\t\treadDefinitions = JSON.parse(definitionString);\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_CampaignLoad_Failed(e.toString());\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\t// This ignores errors in validation for now.\r\n\t\treturn FilterValidCampaignDefinitions(readDefinitions).result;\r\n\t}\r\n\r\n\tpublic loadAsync(): Promise {\r\n\t\tconst definitions = this.load();\r\n\t\treturn new Promise(\r\n\t\t\tfunction onFulfilled(resolve, reject) {\r\n\t\t\t\tresolve(definitions);\r\n\t\t\t},\r\n\t\t);\r\n\t}\r\n}\r\n","import * as Configuration from \"../Configuration/Configuration\";\r\n\r\nconst HTTP_TIMEOUT: number = 8000; // timeout in milliseconds\r\n/**\r\n * Make an http request with retries\r\n * @param method the http method \"GET\", \"POST\" etc\r\n * @param url the url\r\n * @param requestBody the request body\r\n * @param maxRetries the maximum number of retries\r\n * @param onLoad the onload handler\r\n */\r\nfunction makeHttpRequest(method: string, url: string, requestBody: any, maxRetries: number,\r\n\tonLoad: (xhr: XMLHttpRequest, resolve: (value?: T) => void, reject: (error?: any) => void) => void\r\n): Promise {\r\n\tlet makeRequest: (retries: number, timeout: number) => Promise =\r\n\t\t(retries: number, timeout: number) => {\r\n\t\t\treturn new Promise((resolve, reject) => {\r\n\t\t\t\tlet xhr: XMLHttpRequest = new XMLHttpRequest();\r\n\t\t\t\txhr.open(method, url, true);\r\n\t\t\t\txhr.timeout = timeout;\r\n\t\t\t\txhr.onload = () => { onLoad(xhr, resolve, reject); };\r\n\t\t\t\txhr.ontimeout = () => {\r\n\t\t\t\t\tif (retries > 0) {\r\n\t\t\t\t\t\t// double the timeout and retry it\r\n\t\t\t\t\t\tmakeRequest(retries - 1, timeout * 2).then(resolve, reject);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treject(new Error(`Request to '${url}' timed out. timeout: ${xhr.timeout}`));\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\txhr.onerror = () => {\r\n\t\t\t\t\tif (retries > 0) {\r\n\t\t\t\t\t\tmakeRequest(retries - 1, timeout).then(resolve, reject);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treject(new Error(`Request to '${url}' errored. ${xhr.status} - ${xhr.statusText} : ${xhr.responseText}`));\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\txhr.send(requestBody);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t// get the input timeout or using the default value if timeout is not defined\r\n\tconst httpTimeout = Configuration.get().getCommonInitOptions().petrolTimeout\r\n\t\t\t\t\t\t? Configuration.get().getCommonInitOptions().petrolTimeout\r\n\t\t\t\t\t\t: HTTP_TIMEOUT;\r\n\r\n\treturn makeRequest(maxRetries, httpTimeout);\r\n}\r\n\r\nconst uploadEndpointInt: string = \"https://petrol-int.office.microsoft.com/v1/feedback\";\r\nconst uploadEndpointProd: string = \"https://petrol.office.microsoft.com/v1/feedback\";\r\n\r\n/**\r\n * Send a payload to Petrol\r\n * @param isProduction is production?\r\n * @param manifest manifest content\r\n * @param screenshot screenshot content\r\n * @param diagnostics diagnostics content\r\n */\r\nexport function send(isProduction: boolean, manifest: Blob, screenshot?: Blob, diagnostics?: Blob): Promise {\r\n\tif (manifest === undefined) {\r\n\t\treturn Promise.reject(new Error(\"Manifest cannot be undefined\"));\r\n\t}\r\n\r\n\tlet formData = new FormData();\r\n\tformData.append(\"Manifest\", manifest);\r\n\r\n\tif (screenshot) {\r\n\t\tformData.append(\"Screenshot\", screenshot);\r\n\t}\r\n\r\n\tif (diagnostics) {\r\n\t\tformData.append(\"Diagnostics\", diagnostics);\r\n\t}\r\n\r\n\treturn makeHttpRequest(\"POST\", isProduction ? uploadEndpointProd : uploadEndpointInt, formData, 2,\r\n\t\tfunction (\r\n\t\t\txhr: XMLHttpRequest,\r\n\t\t\tresolve: (value?: any) => void,\r\n\t\t\treject: (error?: any) => void\r\n\t\t): void {\r\n\t\t\tif (xhr.status !== 200) {\r\n\t\t\t\treject(new Error(\"Non-200 response with status code: \" + xhr.status + \", response: \" + xhr.responseText));\r\n\t\t\t}\r\n\t\t\tresolve();\r\n\t\t});\r\n}\r\n","/**\r\n * Screenshot.ts\r\n * Module for managing the screenshot file\r\n */\r\n\r\n/* tslint:disable max-line-length */\r\nimport {IFile} from \"./IFile\";\r\nimport * as Logging from \"./../../Logging/Logging\";\r\n\r\nexport class Screenshot implements IFile {\r\n\tprivate screenshot: HTMLCanvasElement;\r\n\r\n\tconstructor (screenshot: HTMLCanvasElement) {\r\n\t\tthis.screenshot = screenshot;\r\n\t}\r\n\r\n\tpublic getContent(): Blob {\r\n\t\tlet imgString: string;\r\n\t\ttry {\r\n\t\t\timgString = this.screenshot.toDataURL(\"image/jpeg\").split(\",\")[1];\r\n\t\t} catch (e) {\r\n\t\t\tLogging.getLogger().logEvent(Logging.EventIds.Shared.Screenshot.GetContent.Failed.DefaultImage.Returned.VALUE,\r\n\t\t\t\tLogging.LogLevel.Error, { ErrorMessage: e.toString() });\r\n\r\n\t\t\t// return an image with \"Screenshot cannot be captured\" message\r\n\t\t\timgString = \"iVBORw0KGgoAAAANSUhEUgAAAN0AAAA+AQMAAACV2ox1AAAABGdBTUEAALGPC/xhBQAAAAZQTFRFAAAA////pdmf3QAAAAlwSFlzAAAOwgAADsIBFShKgAAAAjtJREFUSMfV1M1rE0EUAHDBa5r8A9vkL6giFiI0JH+Ih9KLx8TaukkJugShHgrJzYvkVPQkUqgwSePLEELaU+zBg8JKVvSQQNydlsadwCQzziRZ82ETxYMfc3gD8+MxjzcfV8T80f0vkQ8i68tAPSMSQ0PkI6QDpEPkZBHy1Wp1/zjni2lrZq2T2uikDG17A54Hr0vsvwXIl3WXt02zeIHQBSq3DxHk7VO55zIFgLLrcmaaQBGiqCwQArBVQTbNZODNBB5Ee2EEr5eGiDG4k5mcqcy+Ksh+N8K2+bRI1Z68fRMVoV+XmcFwpQJZGohpkds1WtjppGLaq51a2b8yp310UW9/H8VfRj68CIKRsWCFPCCEM419S4bSAOmPmdb3TBrQ4lmnt9n4/Hiv5fTunsOzXbJfLR2rU3Fd5ugOe9mw0lvNOCNxyDdIHkpHCv0S3a+MS0yT+4wkAKx1gBJeVxeMRhSeNZpXJfY+zqAVl+g0mCFRJMgs6oy9+MCMrWZaJJwiWFjuWcIShf+Wk2W9e59OHu21WPdsswZNLKs9wV77mJiaMVbBQ+/1jGZDofFLuOBU/jzG6OQKnkLOZ5EvwolMX2Q19TAX9MWyy/aNarewfZptechdLn8B3TatB/YXB2j4MKw3jTHKX4AO0CbqaSddMokHUbr0PpSXmFG4O4WIu86asCVihfoM6nUmse5gGkbJOyThVesX4UI0d00LBYMr55VuIZl8MkY1uOiTy9v3c+ShuXj5+NdQdL8B+5gmw8WZuREAAAAASUVORK5CYII=\";\r\n\t\t}\r\n\r\n\t\tlet blobBin = atob(imgString);\r\n\t\tlet array = [];\r\n\t\tfor (let i = 0; i < blobBin.length; i++) {\r\n\t\t\tarray.push(blobBin.charCodeAt(i));\r\n\t\t}\r\n\t\tlet file: Blob = new Blob([new Uint8Array(array)], {type: \"image/jpeg\"});\r\n\r\n\t\treturn file;\r\n\t}\r\n}\r\n","/**\r\n * Manifest.ts\r\n * Module for managing the manifest file\r\n */\r\n\r\nimport { IFile } from \"./IFile\";\r\nimport { FeedbackType, SDK_VERSION_PREFIX } from \"./../../Constants\";\r\nimport * as Utils from \"./../../Utils\";\r\nimport Version from \"./../../Version\";\r\nimport * as Window from \"./../../Window/Window\";\r\n\r\nexport class Manifest implements IFile {\r\n\tprivate manifestData: IManifestData;\r\n\r\n\tpublic constructor(manifestType: string, appId: number, submitTime: string, type: ManifestFeedbackType,\r\n\t\tclientFeedbackId: string, applicationGroup: IManifestDataApplication, telemetryGroup: IManifestDataTelemetry,\r\n\t\twebGroup: IManifestDataWeb, retentionDurationDays: number) {\r\n\t\tthis.manifestData = {\r\n\t\t\tappId: appId,\r\n\t\t\tapplication: applicationGroup,\r\n\t\t\tclientFeedbackId: clientFeedbackId,\r\n\t\t\tmanifestType: manifestType,\r\n\t\t\tsource: \"Client\",\r\n\t\t\tsubmitTime: submitTime,\r\n\t\t\ttelemetry: telemetryGroup,\r\n\t\t\ttype: sanitizeType(type),\r\n\t\t\tweb: webGroup,\r\n\t\t\tsdkVersion: SDK_VERSION_PREFIX\r\n\t\t\t\t+ (Window.get().OfficeBrowserFeedback.sdkVersion !== undefined ?\r\n\t\t\t\t\tWindow.get().OfficeBrowserFeedback.sdkVersion : Version),\r\n\t\t\tretentionDurationDays: retentionDurationDays,\r\n\t\t};\r\n\t}\r\n\r\n\tpublic getExtendedManifestData(): string {\r\n\t\treturn this.manifestData.application.extendedManifestData;\r\n\t}\r\n\r\n\tpublic setComment(comment: string) {\r\n\t\tthis.manifestData.comment = comment;\r\n\t}\r\n\r\n\tpublic setEmail(email: string) {\r\n\t\tthis.manifestData.email = email;\r\n\t}\r\n\r\n\tpublic setCategory(category: string) {\r\n\t\tthis.manifestData.telemetry = this.manifestData.telemetry || {};\r\n\t\tthis.manifestData.telemetry.featureArea = category;\r\n\t}\r\n\r\n\tpublic setAppData(appData: string) {\r\n\t\tthis.manifestData.application = this.manifestData.application || {};\r\n\t\tthis.manifestData.application.appData = appData;\r\n\t}\r\n\r\n\tpublic setExtendedManifestData(extendedManifestData: string) {\r\n\t\tthis.manifestData.application = this.manifestData.application || {};\r\n\t\tthis.manifestData.application.extendedManifestData = extendedManifestData;\r\n\t}\r\n\r\n\tpublic setClientFeedbackId(clientFeedbackId: string) {\r\n\t\tthis.manifestData.clientFeedbackId = clientFeedbackId;\r\n\t}\r\n\r\n\tpublic getClientFeedbackId(): string {\r\n\t\treturn this.manifestData.clientFeedbackId;\r\n\t}\r\n\r\n\tpublic setComplianceInformation(authenticationType: string, ageGroup: string, sendFeedbackPolicyValue: string,\r\n\t\tsendSurveyPolicyValue: string, screenshotPolicyValue: string, emailPolicyValue: string) {\r\n\t\tthis.manifestData.complianceChecks = {\r\n\t\t\tauthenticationType: authenticationType,\r\n\t\t\tageGroup: ageGroup,\r\n\t\t\tpolicyAllowFeedback: sendFeedbackPolicyValue,\r\n\t\t\tpolicyAllowSurvey: sendSurveyPolicyValue,\r\n\t\t\tpolicyAllowScreenshot: screenshotPolicyValue,\r\n\t\t\tpolicyAllowContact: emailPolicyValue,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Set freeform custom values in manifest. Throws if values are already set.\r\n\t * @param values the values as a JS object\r\n\t */\r\n\tpublic setValues(values: object) {\r\n\t\tif (values) {\r\n\t\t\tfor (let field in values) {\r\n\t\t\t\tif (values.hasOwnProperty(field)) {\r\n\t\t\t\t\tif (this.manifestData.hasOwnProperty(field)) {\r\n\t\t\t\t\t\t( this.manifestData)[field] = Utils.overrideValues(( values)[field], ( this.manifestData)[field]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t( this.manifestData)[field] = ( values)[field];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getContent(): Blob {\r\n\t\treturn new Blob([JSON.stringify(this.manifestData)], { type: \"application/json\" });\r\n\t}\r\n\r\n\tpublic appendUxId(UxId: string): void {\r\n\t\tif (!Utils.isNOU(UxId) && Utils.isString(UxId) && UxId !== \"\") {\r\n\t\t\tthis.manifestData.sdkVersion = this.manifestData.sdkVersion + \",\" + UxId;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction sanitizeType(type: ManifestFeedbackType): string {\r\n\tif (type === \"Survey\") {\r\n\t\treturn type;\r\n\t} else {\r\n\t\treturn FeedbackType[type];\r\n\t}\r\n}\r\n\r\nexport type ManifestFeedbackType = FeedbackType | \"Survey\";\r\n\r\n/**\r\n * Interface for the manifest data\r\n */\r\nexport interface IManifestData {\r\n\t// #region \"Required properties\"\r\n\tmanifestType: string;\r\n\tappId: number;\r\n\tsubmitTime: string;\r\n\tsource: string;\r\n\ttype: string;\r\n\tclientFeedbackId: string;\r\n\tsdkVersion: string;\r\n\t// #endregion \"Required properties\"\r\n\tcomment?: string;\r\n\temail?: string;\r\n\trating?: number;\r\n\tsurvey?: IManifestDataSurvey;\r\n\tweb?: IManifestDataWeb;\r\n\tapplication?: IManifestDataApplication;\r\n\ttelemetry?: IManifestDataTelemetry;\r\n\tcomplianceChecks?: IManifestComplianceChecks;\r\n\tretentionDurationDays?: number;\r\n}\r\n\r\n/**\r\n * Interface for survey related properties in manifest\r\n */\r\nexport interface IManifestDataSurvey {\r\n\tsurveyId: string;\r\n}\r\n\r\n/**\r\n * Interface for application related properties in manifest\r\n */\r\nexport interface IManifestDataApplication {\r\n\tappData?: string;\r\n\textendedManifestData?: string;\r\n\tfeedbackTenant?: string;\r\n}\r\n\r\n/**\r\n * Interface for telemetry related properties in manifest\r\n */\r\nexport interface IManifestDataTelemetry {\r\n\taudience?: string;\r\n\taudienceGroup?: string;\r\n\tchannel?: string;\r\n\tdeviceId?: string;\r\n\tdeviceType?: string;\r\n\terrorClassification?: string;\r\n\terrorCode?: string;\r\n\terrorName?: string;\r\n\tfeatureArea?: string;\r\n\tflights?: string;\r\n\tflightSource?: string;\r\n\tfundamentalArea?: string;\r\n\tinstallationType?: string;\r\n\tisLogIncluded?: boolean;\r\n\tisUserSubscriber?: boolean;\r\n\tloggableUserId?: string;\r\n\tofficeArchitecture?: string;\r\n\tofficeBuild?: string;\r\n\tofficeEditingLang?: number;\r\n\tofficeUILang?: number;\r\n\tosBitness?: number;\r\n\tosBuild?: string;\r\n\tosUserLang?: number;\r\n\tplatform?: string;\r\n\tprocessSessionId?: string;\r\n\tringId?: number;\r\n\tsku?: string;\r\n\tsourceContext?: string;\r\n\tsystemProductName?: string;\r\n\tsystemManufacturer?: string;\r\n\ttenantId?: string;\r\n}\r\n\r\n/**\r\n * Interface for web related properties in manifest\r\n */\r\nexport interface IManifestDataWeb {\r\n\tbrowser?: string;\r\n\tbrowserVersion?: string;\r\n\tdataCenter?: string;\r\n\tsourcePageName?: string;\r\n\tsourcePageURI?: string;\r\n}\r\n\r\n/**\r\n * Interface for compliance checks related properties in manifest\r\n */\r\nexport interface IManifestComplianceChecks {\r\n\tauthenticationType?: string;\r\n\tageGroup?: string;\r\n\tpolicyAllowFeedback?: string;\r\n\tpolicyAllowSurvey?: string;\r\n\tpolicyAllowScreenshot?: string;\r\n\tpolicyAllowContact?: string;\r\n}\r\n","/**\r\n * Feedback.ts\r\n *\r\n * Module for payload transport.\r\n */\r\n\r\nimport * as Constants from \"./../Constants\";\r\nimport * as Utils from \"./../Utils\";\r\nimport * as Logging from \"./../Logging/Logging\";\r\nimport * as Petrol from \"./Petrol\";\r\nimport { Screenshot } from \"./Files/Screenshot\";\r\nimport * as Configuration from \"../Configuration/Configuration\";\r\nimport { Manifest, ManifestFeedbackType, IManifestDataApplication, IManifestDataTelemetry, IManifestDataWeb }\r\n\tfrom \"./Files/Manifest\";\r\n\r\nimport { Api } from \"@ms-ofb/officefloodgatecore\";\r\nimport { AgeGroup, AuthenticationType } from \"../Configuration/Configuration\";\r\n\r\nexport { IManifestDataApplication, IManifestDataTelemetry, IManifestDataWeb } from \"./Files/Manifest\"\r\n\r\nexport class Transporter implements Api.ITransporter {\r\n\tprivate manifest: Manifest;\r\n\tprivate screenshot: Screenshot;\r\n\tprivate environment: Constants.Environment;\r\n\tprivate clientFeedbackId: string;\r\n\r\n\tpublic constructor(environment: Constants.Environment, manifestType: string, appId: number, type: ManifestFeedbackType,\r\n\t\tapplicationGroup: IManifestDataApplication, telemetryGroup: IManifestDataTelemetry, webGroup: IManifestDataWeb) {\r\n\r\n\t\tthis.clientFeedbackId = Utils.guid();\r\n\t\tthis.manifest = new Manifest(manifestType, appId, new Date().toISOString(), type,\r\n\t\t\tthis.clientFeedbackId, { ...applicationGroup }, { ...telemetryGroup }, { ...webGroup },\r\n\t\t\tConfiguration.get().getCommonInitOptions().retentionDurationDays);\r\n\t\tthis.environment = environment;\r\n\r\n\t\tthis.manifest.setComplianceInformation(AuthenticationType[(Configuration.get().getCommonInitOptions()?.authenticationType) ??\r\n\t\t\tAuthenticationType.Unauthenticated],\r\n\t\t\tAgeGroup[(Configuration.get().getCommonInitOptions()?.ageGroup) ?? AgeGroup.Undefined],\r\n\t\t\tthis.ocpsEnumToString(Configuration.get().getInAppFeedbackInitOptions()?.sendFeedbackPolicyValue),\r\n\t\t\tthis.ocpsBooleanToString(Configuration.get().getFloodgateInitOptions()?.surveyEnabled),\r\n\t\t\tthis.ocpsEnumToString(Configuration.get().getCommonInitOptions()?.screenshotPolicyValue),\r\n\t\t\tthis.ocpsEnumToString(Configuration.get().getCommonInitOptions()?.emailPolicyValue));\r\n\t}\r\n\r\n\tpublic getClientFeedbackId(): string {\r\n\t\treturn this.clientFeedbackId;\r\n\t}\r\n\r\n\tpublic getExtendedManifestData(): string {\r\n\t\treturn this.manifest.getExtendedManifestData();\r\n\t}\r\n\r\n\tpublic setComment(comment: string) {\r\n\t\tthis.manifest.setComment(comment);\r\n\t}\r\n\r\n\tpublic setEmail(email: string) {\r\n\t\tthis.manifest.setEmail(email);\r\n\t}\r\n\r\n\tpublic setCategory(category: string) {\r\n\t\tthis.manifest.setCategory(category);\r\n\t}\r\n\r\n\tpublic setAppData(appData: string) {\r\n\t\tthis.manifest.setAppData(appData);\r\n\t}\r\n\r\n\tpublic setExtendedManifestData(extendedManifestData: string) {\r\n\t\tthis.manifest.setExtendedManifestData(extendedManifestData);\r\n\t}\r\n\r\n\tpublic setScreenshot(screenshot: HTMLCanvasElement) {\r\n\t\tthis.screenshot = new Screenshot(screenshot);\r\n\t}\r\n\r\n\tpublic setClientFeedbackId(clientFeedbackId: string) {\r\n\t\tthis.manifest.setClientFeedbackId(clientFeedbackId);\r\n\t}\r\n\r\n\tpublic appendUxId(UxId: string): void {\r\n\t\tthis.manifest.appendUxId(UxId);\r\n\t}\r\n\r\n\tpublic getManifest(): Manifest {\r\n\t\treturn this.manifest;\r\n\t}\r\n\r\n\t/**\r\n\t * Set freeform custom values in manifest. Throws if values are already set.\r\n\t * @param values the values as a JS object\r\n\t */\r\n\tpublic setManifestValues(values: object) {\r\n\t\tthis.manifest.setValues(values);\r\n\t}\r\n\r\n\t/**\r\n\t * Submit the payload\r\n\t */\r\n\tpublic submit(): Promise {\r\n\t\tif (!Configuration.get().isFeedbackSurveyEnabledByAADC()) {\r\n\t\t\tLogging.getLogger().logEvent(\r\n\t\t\t\tLogging.EventIds.Shared.Upload.Prevented.VALUE,\r\n\t\t\t\tLogging.LogLevel.Error,\r\n\t\t\t\t{\r\n\t\t\t\t\tData: JSON.stringify({\r\n\t\t\t\t\t\tageGroup: Configuration.get().getCommonInitOptions().ageGroup,\r\n\t\t\t\t\t\tauthenticationType: Configuration.get().getCommonInitOptions().authenticationType,\r\n\t\t\t\t\t}),\r\n\t\t\t\t});\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tlet manifestContent: Blob = this.manifest.getContent();\r\n\t\tlet screenshotContent: Blob = undefined;\r\n\t\tconst clientFeedbackId: string = this.clientFeedbackId;\r\n\r\n\t\tif (this.screenshot) {\r\n\t\t\tscreenshotContent = this.screenshot.getContent();\r\n\t\t}\r\n\r\n\t\treturn Petrol.send(this.environment === Constants.Environment.Production, manifestContent, screenshotContent)\r\n\t\t\t.catch(\r\n\t\t\t\tfunction onRejected(err: Error) {\r\n\t\t\t\t\tConfiguration.get().setFeedbackSubmitted(false);\r\n\t\t\t\t\tConfiguration.get().getCommonInitOptions().onError(\"Payload submission failed: \" + err.message +\r\n\t\t\t\t\t\t\". ClientFeedbackId: \" + clientFeedbackId);\r\n\t\t\t\t\tLogging.getLogger().logEvent(Logging.EventIds.Shared.Upload.Failed.VALUE,\r\n\t\t\t\t\t\tLogging.LogLevel.Error, { ErrorMessage: err.message, ClientFeedbackId: clientFeedbackId });\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t}\r\n\r\n\tprivate ocpsBooleanToString(policyValue?: boolean) {\r\n\t\tif (policyValue === undefined) {\r\n\t\t\treturn \"Not Configured\";\r\n\t\t}\r\n\r\n\t\tif (policyValue) {\r\n\t\t\treturn \"Enabled\";\r\n\t\t}\r\n\r\n\t\treturn \"Disabled\";\r\n\t}\r\n\r\n\tprivate ocpsEnumToString(policyValue?: Constants.OCPSValues) {\r\n\t\tif (!policyValue) {\r\n\t\t\treturn \"Not Configured\";\r\n\t\t}\r\n\t\tswitch (policyValue) {\r\n\t\t\tcase Constants.OCPSValues.Disabled:\r\n\t\t\t\treturn \"Disabled\";\r\n\t\t\tcase Constants.OCPSValues.Enabled:\r\n\t\t\t\treturn \"Enabled\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"Not Configured\";\r\n\t\t}\r\n\t}\r\n}\r\n","import { GovernedChannelType } from \"../GovernedChannel\";\r\nimport * as ISurvey from \"./ISurvey\";\r\n\r\nexport const enum GovernanceServiceSurveyPlatform {\r\n\tFloodgate = 1,\r\n}\r\n\r\nexport const enum GovernanceServiceHostPlatform {\r\n\tWeb = 6,\r\n}\r\n\r\n/**\r\n * The enum is matching with Governance Service\r\n * So the missing number is not supported\r\n */\r\nexport enum GovernanceServiceSurveyType {\r\n\tUnknown = 0,\r\n\tFeedback = 1,\r\n\tNps = 2,\r\n\tPsat = 4,\r\n\tBps = 6,\r\n\tFps = 8,\r\n\tNlqs = 18,\r\n\tGenericMessagingSurface = 22,\r\n\tIntercept = 24,\r\n}\r\n\r\nexport enum GovernanceServiceClientState {\r\n\tDisabled = 0,\r\n\tInitializationFailed,\r\n\tEnabled,\r\n}\r\n\r\nexport interface IGovernanceSurveyInfo {\r\n\tsurveyId: string;\r\n\tsurveyTriggerTime: Date;\r\n\tsurveyType: number;\r\n\tsurveyLevelCooldown?: number;\r\n\tsurveyChannel?: number;\r\n\tlocalOffsetTime: number;\r\n\tpersonalizerEnabled: boolean;\r\n}\r\n\r\nexport interface IGovernanceClientInfo {\r\n\tapplicationId: string;\r\n\tsessionId: string;\r\n\tversion: string;\r\n\tsurveyPlatform: number;\r\n\thostPlatform: number;\r\n\thostOS?: string;\r\n\ttenantId?: string;\r\n\tdeviceId?: string;\r\n\taudience?: string;\r\n}\r\n\r\nexport interface IGovernanceSurveyRequest {\r\n\tuserId: string;\r\n\tsurvey: IGovernanceSurveyInfo;\r\n\tclient: IGovernanceClientInfo;\r\n\tuserLevelCooldown?: number;\r\n\trequestId?: string;\r\n}\r\n\r\nexport interface IGovernanceSurveyResponse {\r\n\tuserId: string;\r\n\tlastTriggerSurveyTime: Date;\r\n\ttimeUntilNextSurveyAllowed: number;\r\n\tactionId?: string; // For personalizer actionId\r\n\teventId?: string;\r\n}\r\n\r\nexport interface IGovernanceServiceResult {\r\n\tlastTriggerSurvey?: IGovernanceSurveyResponse;\r\n\tpermission?: boolean;\r\n\terror?: boolean;\r\n\terrorMessage?: string;\r\n}\r\n\r\nexport interface IGovernanceServiceClient {\r\n\tcheckGovernancePermitAsync(\r\n\t\tsurvey: ISurvey,\r\n\t\tsurveyLevelCooldown: number,\r\n\t\tuserLevelCooldown: number,\r\n\t\tchannel: GovernedChannelType): Promise;\r\n\tisEnabled(governedChannelType: GovernedChannelType): boolean;\r\n\tshouldForceDisplay(): boolean;\r\n\tgetClientState(): GovernanceServiceClientState;\r\n}\r\n","/*\r\n * DomUtils.ts\r\n *\r\n * Module for page document utility functions\r\n */\r\n\r\n/**\r\n * Load the style sheet\r\n * @param url The url of the stylesheet\r\n */\r\nexport function loadStylesheet(url: string): void {\r\n\tconst link: HTMLLinkElement = document.createElement(\"link\");\r\n\tlink.rel = \"stylesheet\";\r\n\tlink.type = \"text/css\";\r\n\tlink.href = url;\r\n\r\n\tconst entry: HTMLScriptElement = document.getElementsByTagName(\"script\")[0];\r\n\tentry.parentNode.insertBefore(link, entry);\r\n}\r\n\r\n/**\r\n * Load the script and callback after it is loaded\r\n * @param url The url of the script\r\n * @param pageOrigin Optional - Origin of the page\r\n */\r\nexport function loadScript(url: string, pageOrigin: string = (window as any).origin): Promise {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tconst script: any = document.createElement(\"script\");\r\n\t\tscript.async = true;\r\n\r\n\t\tif (script.readyState) { // IE\r\n\t\t\tscript.onreadystatechange = function() {\r\n\t\t\t\tif (script.readyState === \"loaded\" || script.readyState === \"complete\") {\r\n\t\t\t\t\tscript.onreadystatechange = null;\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t} else { // Others\r\n\t\t\tscript.onload = function() {\r\n\t\t\t\tresolve();\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tscript.onerror = function() {\r\n\t\t\treject();\r\n\t\t};\r\n\r\n\t\tscript.src = url;\r\n\r\n\t\t// don't add if origin is not available or when containing \"null\". This is to mitigate possible\r\n\t\t// unexpected behavior with Chrome when a page hosting this SDK is being tested as a local file.\r\n\t\t// The behavior depends on Chrome.exe's --allow-file-access-from-files setting.\r\n\t\tif (pageOrigin && pageOrigin !== \"null\") {\r\n\t\t\tscript.crossOrigin = \"anonymous\";\r\n\t\t}\r\n\r\n\t\tconst entry: HTMLScriptElement = document.getElementsByTagName(\"script\")[0];\r\n\t\tentry.parentNode.insertBefore(script, entry);\r\n\t});\r\n}\r\n","import * as ISurvey from \"../../src/Api/ISurvey\";\r\nimport { GovernedChannelType } from \"../GovernedChannel\";\r\nimport * as ISurveyEvent from \"../ISurveyEvent\";\r\nimport * as ISurveyInfo from \"../ISurveyInfo\";\r\nimport { BusinessLevel } from \"../ISurveyInfo\";\r\nimport { ISurveyMetadata } from \"../ISurveyMetadata\";\r\nimport * as Utils from \"../Utils\";\r\n\r\nconst { getDistantFuture, getDistantPast, isNOU, isDate } = Utils;\r\n\r\nclass SurveyDataSource implements ISurveyInfo {\r\n\tprivate data: SurveyDataSource.SurveyDataSourceData;\r\n\r\n\tpublic constructor(data: SurveyDataSource.SurveyDataSourceData) {\r\n\t\tif (isNOU(data)) {\r\n\t\t\tthrow new Error(\"data must not be null\");\r\n\t\t}\r\n\t\tif (isNOU(data.id) || data.id === \"\") {\r\n\t\t\tthrow new Error(\"data.id must not be null or empty\");\r\n\t\t}\r\n\t\tif (isNOU(data.governedChannelType)) {\r\n\t\t\tdata.governedChannelType = GovernedChannelType.getDefault();\r\n\t\t}\r\n\t\tif (isNOU(data.expirationTimeUtc) || data.expirationTimeUtc === \"\") {\r\n\t\t\tthrow new Error(\"data.expirationTimeUtc must not be null or empty\");\r\n\t\t}\r\n\t\tif (isNOU(data.activationEvent)) {\r\n\t\t\tthrow new Error(\"data.activationEvent must not be null\");\r\n\t\t}\r\n\t\tif (isNOU(data.backEndIdentifier) || data.backEndIdentifier === \"\") {\r\n\t\t\tdata.backEndIdentifier = data.id;\r\n\t\t}\r\n\t\tif (isNOU(data.launcherType)) {\r\n\t\t\tdata.launcherType = ISurvey.LAUNCHER_TYPE_DEFAULT;\r\n\t\t}\r\n\r\n\t\tthis.data = data;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getId(): string {\r\n\t\treturn this.data.id;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getBackEndId(): string {\r\n\t\treturn this.data.backEndIdentifier;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getGovernedChannelType(): GovernedChannelType {\r\n\t\treturn this.data.governedChannelType;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getRawStartTimeUtc(): string {\r\n\t\treturn this.data.startTimeUtc;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getStartTimeUtc(): Date {\r\n\t\tif (isNOU(this.data.startTimeUtc)) {\r\n\t\t\treturn getDistantPast(); // Optional start date means the survey has started\r\n\t\t}\r\n\r\n\t\tconst parsed = new Date(this.data.startTimeUtc);\r\n\t\tif (!isDate(parsed)) {\r\n\t\t\treturn getDistantFuture(); // Badly specified start dates means the survey never starts\r\n\t\t}\r\n\r\n\t\treturn parsed;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getExpirationTimeUtc(): Date {\r\n\t\t// Bad or missing expiration date means survey is always expired.\r\n\r\n\t\tif (isNOU(this.data.expirationTimeUtc)) {\r\n\t\t\treturn getDistantPast();\r\n\t\t}\r\n\r\n\t\tconst parsed = new Date(this.data.expirationTimeUtc);\r\n\t\tif (!isDate(parsed)) {\r\n\t\t\treturn getDistantPast();\r\n\t\t}\r\n\r\n\t\treturn parsed;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getRawExpirationTimeUtc(): string {\r\n\t\treturn this.data.expirationTimeUtc;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic isActiveForDate(date: Date): boolean {\r\n\t\tif (isNOU(date)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn (date >= this.getStartTimeUtc() && date <= this.getExpirationTimeUtc());\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getActivationEvent(): ISurveyEvent {\r\n\t\treturn this.data.activationEvent;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getPreferredLaunchType(): ISurveyInfo.LaunchType {\r\n\t\treturn this.data.preferredLaunchType;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic isAdditionalDataRequested(additionalDataToCheck: ISurveyInfo.AdditionalDataType): boolean {\r\n\t\tif (isNOU(this.data.additionalDataRequested)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\tfor (const additionalData of this.data.additionalDataRequested) {\r\n\t\t\tif (additionalData === additionalDataToCheck) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getLauncherType(): string {\r\n\t\treturn this.data.launcherType;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getMetadata(): ISurveyMetadata {\r\n\t\treturn this.data.metadata;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getBusinessLevel(): BusinessLevel {\r\n\t\treturn this.data.businessLevel;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getMaxLaunches(): number {\r\n\t\treturn this.data.maxLaunches;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getMaxLaunchesPerSession(): number {\r\n\t\treturn this.data.maxLaunchesPerSession;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getDomElements(doc: Document): Element[] {\r\n\t\tif (!doc) {\r\n\t\t\tthrow new Error(\"Document must not be null\");\r\n\t\t}\r\n\r\n\t\tconst typeElement: Element = doc.createElement(ISurveyInfo.DOM_TYPE_TAGNAME);\r\n\t\ttypeElement.appendChild(doc.createTextNode(ISurveyInfo.DOM_TYPE_VALUE));\r\n\r\n\t\tconst idElement: Element = doc.createElement(ISurveyInfo.DOM_ID_TAGNAME);\r\n\t\tidElement.appendChild(doc.createTextNode(this.getBackEndId()));\r\n\r\n\t\treturn [typeElement, idElement];\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getJsonElements(): object {\r\n\t\tconst surveyObject: object = {};\r\n\t\tsurveyObject[ISurveyInfo.JSON_ID_KEYNAME] = this.getBackEndId();\r\n\r\n\t\tconst result: object = {};\r\n\t\tresult[ISurveyInfo.JSON_SURVEY_KEYNAME] = surveyObject;\r\n\r\n\t\treturn result;\r\n\t}\r\n}\r\n\r\nmodule SurveyDataSource {\r\n\t/**\r\n\t * Basic data needed for all Surveys\r\n\t */\r\n\texport class SurveyDataSourceData {\r\n\t\tpublic id: string;\r\n\t\tpublic backEndIdentifier: string;\r\n\t\tpublic governedChannelType: GovernedChannelType;\r\n\t\tpublic startTimeUtc: string;\r\n\t\tpublic expirationTimeUtc: string;\r\n\t\tpublic activationEvent: ISurveyEvent;\r\n\t\tpublic preferredLaunchType: ISurveyInfo.LaunchType = ISurveyInfo.LaunchType.Default;\r\n\t\tpublic additionalDataRequested: ISurveyInfo.AdditionalDataType[];\r\n\t\tpublic launcherType: string;\r\n\t\tpublic metadata: ISurveyMetadata;\r\n\r\n\t\tpublic businessLevel: BusinessLevel;\r\n\t\tpublic maxLaunches: number;\r\n\t\tpublic maxLaunchesPerSession: number;\r\n\t}\r\n}\r\n\r\nexport = SurveyDataSource;\r\n","// ------------------------------------------------------------------------------\r\n// \r\n// This code was generated by the @augloop/code-gen tool.\r\n// Source: https://dev.azure.com/office/ISS/_git/augloop-server?path=%2Fmodules%2Ftypes-core%2Fsrc%2Fschema-object.ts\r\n// Changes to this file may cause incorrect behavior and will be lost upon regeneration.\r\n// \r\n// ------------------------------------------------------------------------------\r\n\r\nimport { ISchemaObject, SchemaObjectHeader } from '../schema-object';\r\nimport { ISchemaObjectConstructor } from '../schema-object-constructor';\r\n\r\nexport class SchemaObject implements ISchemaObject {\r\n public readonly H_: SchemaObjectHeader;\r\n public constructor(obj?: ISchemaObject) {\r\n SchemaObject.assign(SchemaObject, this, obj);\r\n }\r\n public static getTypeName(): string {\r\n return 'AugLoop_Core_SchemaObject';\r\n }\r\n public static getBaseTypes(): string[] {\r\n return [];\r\n }\r\n public static readonly H_ = { T_: SchemaObject.getTypeName(), B_: SchemaObject.getBaseTypes() };\r\n\r\n // Get type name for the given ISchemaObject instance.\r\n // Example:\r\n // SchemaObject.getTypeNameFor(new Foo()) === 'Foo'\r\n public static getTypeNameFor(obj: ISchemaObject): string {\r\n return (obj && obj.H_) ? obj.H_.T_ : undefined;\r\n }\r\n\r\n // Get base types for the given ISchemaObject instance.\r\n // Example:\r\n // SchemaObject.getBaseTypesFor(new Foo()) === ['Bar', 'Baz']\r\n public static getBaseTypesFor(obj: ISchemaObject): string[] {\r\n return (obj && obj.H_ && obj.H_.B_) ? obj.H_.B_ : [];\r\n }\r\n\r\n // Get all types (direct and base) for the given ISchemaObject instance.\r\n // Example:\r\n // SchemaObject.getTypesFor(new Foo()) == ['Foo', 'Bar', 'Baz']\r\n public static getAllTypesFor(obj: ISchemaObject): string[] {\r\n const typeName: string = SchemaObject.getTypeNameFor(obj);\r\n return typeName ? [typeName, ...SchemaObject.getBaseTypesFor(obj)] : [];\r\n }\r\n\r\n // Returns true if the given object has any of the types in the given array,\r\n // or if that array is undefined or empty.\r\n public static matchesTypesFor(obj: ISchemaObject, types: string[]): boolean {\r\n if (!Array.isArray(types) || types.length === 0) {\r\n // Nothing passed in means \"match everything\"\r\n return true;\r\n }\r\n const objType = SchemaObject.getTypeNameFor(obj);\r\n const baseTypes = SchemaObject.getBaseTypesFor(obj);\r\n for (const typeName of types) {\r\n if (typeName === objType) {\r\n return true;\r\n }\r\n if (baseTypes.indexOf(typeName) >= 0) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public static assign(ctr: ISchemaObjectConstructor, target: ISchemaObject, source?: ISchemaObject) {\r\n // Assign source properties to target\r\n if (source) {\r\n for (const key of Object.keys(source)) {\r\n target[key] = source[key];\r\n }\r\n }\r\n // Cast away readonly to set the header\r\n (target as { -readonly [K in keyof ISchemaObject]: ISchemaObject[K] }).H_ = ctr.H_;\r\n // Return target instance\r\n return target;\r\n }\r\n}\r\n\r\n","/**\r\n * Screenshot.ts\r\n *\r\n * A module for screenshot. It uses the html2canvas package.\r\n */\r\n\r\nconst html2canvas: any = require(\"@1js/html2canvas-trustedtypes\");\r\n\r\n/**\r\n * Get screenshot\r\n * @param domElement document element or document body \r\n * @param options background color\r\n */\r\nexport function createScreenshot(domElement?: object, options?: any): Promise {\r\n\treturn html2canvas(domElement || document.body, { background: \"#ffffff\", ...options });\r\n}\r\n","/**\r\n * CommonUI.ts\r\n *\r\n * Common logic for UI.\r\n */\r\n\r\nconst html2canvas: any = require(\"@1js/html2canvas-trustedtypes\");\r\n\r\nimport * as UIStrings from \"./UIStrings/UIStrings\";\r\nimport * as Configuration from \"./Configuration/Configuration\";\r\nimport * as Window from \"./Window/Window\";\r\nimport * as Theme from \"./Theme\";\r\nimport * as Screenshot from \"./Screenshot\";\r\nimport { loadStylesheet, loadScript } from \"./Window/DomUtils\";\r\nimport { IDs } from \"./UI/UiConstants\";\r\nimport { checkCssSelectorToBeSet } from \"./Utils\";\r\n\r\n/**\r\n * Has the SDK been initialized\r\n */\r\nlet initialized: boolean = false;\r\n\r\n/**\r\n * Set ui Strings.\r\n * @param data the ui strings\r\n */\r\nfunction setUIStrings(data: any): void {\r\n\tUIStrings.setUIStrings(data);\r\n};\r\n\r\n/**\r\n * Initialize\r\n */\r\nexport function initialize(): Promise {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tif (!initialized) {\r\n\t\t\tconst initOptionsCommon = Configuration.get().getCommonInitOptions();\r\n\t\t\tif (!initOptionsCommon) {\r\n\t\t\t\treject(\"initOptionsCommon is null\");\r\n\t\t\t}\r\n\r\n\t\t\t// Check if custom CSS is being passed.\r\n\t\t\t// tslint:disable-next-line: no-bitwise\r\n\t\t\tif ((initOptionsCommon.customResourcesSetExternally & Configuration.CustomResources.Css) === Configuration.CustomResources.Css) {\r\n\t\t\t\tconst selector = \"#\" + IDs.TPromptTitle;\r\n\r\n\t\t\t\tif (!checkCssSelectorToBeSet(selector)) {\r\n\t\t\t\t\treject(\"Expected custom Css to be set by host but \" + selector + \" was not found to be set.\");\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tloadStylesheet(initOptionsCommon.stylesUrl);\r\n\t\t\t}\r\n\r\n\t\t\tTheme.initialize(initOptionsCommon.primaryColour, initOptionsCommon.secondaryColour);\r\n\r\n\t\t\t// Check if custom strings are being passed.\r\n\t\t\t// tslint:disable-next-line: no-bitwise\r\n\t\t\tif ((initOptionsCommon.customResourcesSetExternally & Configuration.CustomResources.Strings) === Configuration.CustomResources.Strings) {\r\n\r\n\t\t\t\tif (!UIStrings.getUIStrings()) {\r\n\t\t\t\t\treject(\"Expected custom strings to be set by host but UIStrings.getUIStrings() is null or undefined\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinitialized = true;\r\n\t\t\t\tresolve();\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconst intlFileUrl = initOptionsCommon.intlUrl + initOptionsCommon.locale.toLowerCase() + \"/\" +\r\n\t\t\t\t\tinitOptionsCommon.intlFilename;\r\n\r\n\t\t\t\tloadScript(intlFileUrl)\r\n\t\t\t\t.then(\r\n\t\t\t\t\t() => {\r\n\t\t\t\t\t\tif (!UIStrings.getUIStrings()) {\r\n\t\t\t\t\t\t\treject(\"UiStrings were not loaded from \" + intlFileUrl);\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tinitialized = true;\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t).catch(\r\n\t\t\t\t\t(err) => {\r\n\t\t\t\t\t\treject(\"Script load failed for \" + intlFileUrl + \". \" + err);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tresolve();\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Reset the module. Used in unit tests.\r\n */\r\nexport function reset() {\r\n\tinitialized = false;\r\n}\r\n\r\n/* Make the setUIStrings method available globally */\r\nWindow.setSetUiStrings(setUIStrings);\r\nWindow.setCreateScreenshot(Screenshot.createScreenshot);\r\nWindow.get().OfficeBrowserFeedback.html2canvas = html2canvas;\r\n","/**\r\n * Theme.ts\r\n *\r\n * Module for the UI Theme\r\n */\r\n\r\nimport { Classes, IDs } from \"./UI/UiConstants\";\r\n\r\nlet defaultPrimaryColour = \"#0167B0\";\r\nlet defaultSecondaryColour = \"#194789\";\r\n\r\n/**\r\n * Init\r\n * @param {string} primaryColour Primary Colour\r\n * @param {string} secondaryColour Secondary Colour\r\n */\r\nexport function initialize(primaryColour: string = undefined, secondaryColour: string = undefined) {\r\n\tif (!primaryColour) {\r\n\t\tprimaryColour = defaultPrimaryColour;\r\n\t}\r\n\r\n\tif (!secondaryColour) {\r\n\t\tsecondaryColour = defaultSecondaryColour;\r\n\t}\r\n\r\n\tlet sheet = document.createElement(\"style\");\r\n\r\n\tsheet.textContent =\r\n\t\t`.${Classes.OverallAnchor}:focus { background-color: ${primaryColour} } ` +\r\n\t\t`.${Classes.OverallAnchor}:hover { background-color: ${secondaryColour} } ` +\r\n\t\t`.${Classes.OverallAnchorActive} { background-color: ${primaryColour} } ` +\r\n\t\t`.${Classes.SpinnerCircle} { background-color: ${primaryColour} } ` +\r\n\t\t// tslint:disable-next-line:max-line-length\r\n\t\t`.${Classes.ChoiceGroup} input[type=radio]:checked+label>.${Classes.ChoiceGroupIcon} { border-color: ${primaryColour} } ` +\r\n\t\t// tslint:disable-next-line:max-line-length\r\n\t\t`.${Classes.ChoiceGroup} input[type=radio]:hover+label>.${Classes.ChoiceGroupIcon} { border-color: ${secondaryColour} } ` +\r\n\t\t// tslint:disable-next-line:max-line-length\r\n\t\t`.${Classes.ChoiceGroup} input[type=radio]:checked+label>.${Classes.ChoiceGroupIcon}>span { background-color: ${primaryColour} } ` +\r\n\t\t`.${Classes.SubmitButton} { background-color: ${primaryColour} } ` +\r\n\t\t`.${Classes.SubmitButton}:hover { background-color: ${secondaryColour} } ` +\r\n\t\t`.${Classes.CancelButton} { background-color: ${primaryColour} } ` +\r\n\t\t`.${Classes.CancelButton}:hover { background-color: ${secondaryColour} } ` +\r\n\t\t`.${Classes.Link} { color: ${primaryColour} } ` +\r\n\t\t`.${Classes.Link}:hover { color: ${secondaryColour} } ` +\r\n\t\t`.${Classes.ThanksPanelTitle} { color: ${primaryColour} } ` +\r\n\t\t`#${IDs.TPromptTitle} { color: ${primaryColour} } ` +\r\n\t\t`#${IDs.TFormTitle} { color: ${primaryColour} } `;\r\n\r\n\tdocument.body.appendChild(sheet);\r\n}\r\n","/**\r\n * CommonApp.ts\r\n *\r\n * Common logic for entrypoints.\r\n */\r\n\r\nimport \"./Polyfills/Promise\";\r\n\r\nimport Version from \"./Version\";\r\nimport * as Configuration from \"./Configuration/Configuration\";\r\nimport * as Window from \"./Window/Window\";\r\nimport * as Logging from \"./Logging/Logging\";\r\n\r\nconst APP_NAME: string = \"OfficeFeedbackSDK\";\r\n\r\n/**\r\n * Has the SDK been initialized\r\n */\r\nlet initialized: boolean = false;\r\n\r\n/**\r\n * Has the SDK allow AADC\r\n */\r\nlet commonPolicyAllowAADC: boolean = false;\r\n\r\n/**\r\n * Initialize\r\n */\r\nexport function initialize(): void {\r\n\tif (initialized) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (!Window.get().OfficeBrowserFeedback.initOptions) {\r\n\t\tthrow new Error(\"Window.OfficeBrowserFeedback.initOptions not set\");\r\n\t}\r\n\r\n\tWindow.get().OfficeBrowserFeedback.sdkVersion = Version;\r\n\tConfiguration.get().setCommonInitOptions(Window.get().OfficeBrowserFeedback.initOptions);\r\n\tcommonPolicyAllowAADC = Configuration.get().isFeedbackSurveyEnabledByAADC();\r\n\r\n\tLogging.initialize(\r\n\t\tConfiguration.get().getCommonInitOptions(),\r\n\t\tAPP_NAME,\r\n\t\tVersion,\r\n\t\tConfiguration.get().getSdkSessionId(),\r\n\t\tConfiguration.get().getEventSampling()\r\n\t);\r\n\r\n\tinitialized = true;\r\n\r\n\tif (!commonPolicyAllowAADC) {\r\n\t\tLogging.getLogger().logEvent(Logging.EventIds.FEEDBACK_SURVEYSDISABLED_AADC,\r\n\t\t\tLogging.LogLevel.Critical,\r\n\t\t\t{\r\n\t\t\t\tData: JSON.stringify({\r\n\t\t\t\t\tageGroup: Configuration.get().getCommonInitOptions().ageGroup,\r\n\t\t\t\t\tauthenticationType: Configuration.get().getCommonInitOptions().authenticationType,\r\n\t\t\t\t}),\r\n\t\t\t});\r\n\t}\r\n}\r\n\r\n/**\r\n * Reset the module. Used in unit tests.\r\n */\r\nexport function reset() {\r\n\tinitialized = false;\r\n}\r\n\r\n/**\r\n * Return Flag to determine whether Feedback and Survey is enabled by AADC.\r\n * Return true if Feedback and Survey is enabled.\r\n * Otherwise, return false.\r\n */\r\nexport function isFeedbackSurveyEnabledByAADC(): boolean {\r\n\treturn commonPolicyAllowAADC;\r\n}\r\n\r\nWindow.setIsFeedbackSurveyEnabledByAADC(isFeedbackSurveyEnabledByAADC);\r\n","import ISurvey = require(\"../Api/ISurvey\");\r\nimport ISurveyComponent = require(\"../Api/ISurveyComponent\");\r\nimport { ITransporter } from \"../Api/ITransporter\";\r\nimport { FloodgateEngine } from \"../FloodgateEngine\";\r\nimport * as ISurveyInfo from \"../ISurveyInfo\";\r\nimport * as Utils from \"./../Utils\";\r\n\r\nexport abstract class Survey implements ISurvey {\r\n\tprivate survey: ISurvey;\r\n\tprivate clientFeedbackId: string;\r\n\r\n\tpublic abstract getComponent(componentType: ISurveyComponent.Type): ISurveyComponent;\r\n\r\n\tpublic getCampaignId(): string {\r\n\t\treturn this.getSurveyInfo().getBackEndId();\r\n\t}\r\n\r\n\tpublic getLauncherType(): string {\r\n\t\treturn this.getSurveyInfo().getLauncherType();\r\n\t}\r\n\r\n\tpublic getClientFeedbackId(): string {\r\n\t\treturn this.clientFeedbackId;\r\n\t}\r\n\r\n\tpublic submit() {\r\n\t\tconst surveyType: string = ISurvey.Type[this.getType()];\r\n\t\tconst transporter: ITransporter = FloodgateEngine.getTransportFactory().makeTransporter(surveyType);\r\n\t\ttransporter.setManifestValues(this.getJsonElements());\r\n\t\tthis.clientFeedbackId = transporter.getClientFeedbackId();\r\n\t\ttransporter.submit();\r\n\t}\r\n\r\n\tpublic getPreGeneratedClientFeedbackId(): string {\r\n\t\tif (this.clientFeedbackId) {\r\n\t\t\treturn this.clientFeedbackId;\r\n\t\t} else {\r\n\t\t\treturn this.clientFeedbackId = Utils.guid();\r\n\t\t}\r\n\t}\r\n\t// Abstract classes that are implemented by actual Surveys\r\n\tpublic abstract getType(): ISurvey.Type;\r\n\r\n\tpublic abstract getSurveyInfo(): ISurveyInfo;\r\n\r\n\tpublic abstract getJsonElements(): object;\r\n\r\n\tpublic abstract getDomElements(doc: Document): Element[];\r\n}\r\n","export default \"1.9.3\";","/* eslint @microsoft/sdl/no-inner-html: \"off\" */\r\n\r\n/**\r\n * Renderer.ts\r\n *\r\n * Module for rendering the markup\r\n */\r\n\r\nimport { AttributeName, Tags } from \"./UiConstants\";\r\n\r\n/**\r\n * Interface for an attribute\r\n */\r\nexport interface IAttribute {\r\n\tname: string;\r\n\tvalue: string;\r\n}\r\n\r\n/**\r\n * Interface for UI(HTML markup) as json\r\n */\r\nexport interface IUIAsJson {\r\n\tid?: string;\r\n\ttag?: string; // div by default\r\n\tclasses?: string[]; // CSS class\r\n\tattributes?: IAttribute[];\r\n\tchildren?: IUIAsJson[];\r\n\tinnerText?: string;\r\n\tinnerHTML?: string;\r\n\tbrs?: any; // should the element and its children be created? true by default\r\n}\r\n\r\n/**\r\n * Create DOM elements from Json structure\r\n * @param {UiAsJson} schema The Json structure\r\n * @param {boolean} svg Create svg element instead of html?\r\n * @return {HTMLElement} HTML elements with tree structure\r\n */\r\nexport function elementFromJson(schema: IUIAsJson, svg?: boolean): Element {\r\n\tif (typeof schema.brs === \"undefined\") {\r\n\t\tschema.brs = true;\r\n\t}\r\n\r\n\tif (!schema.brs) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\tif (!schema.tag) {\r\n\t\tschema.tag = Tags.Div;\r\n\t}\r\n\r\n\tlet element: Element;\r\n\r\n\tif (schema.tag === Tags.Svg) {\r\n\t\tsvg = true;\r\n\t}\r\n\r\n\tif (svg) {\r\n\t\telement = document.createElementNS(\"http://www.w3.org/2000/svg\", schema.tag);\r\n\t} else {\r\n\t\telement = document.createElement(schema.tag);\r\n\t}\r\n\r\n\tif (schema.attributes) {\r\n\t\tlet attribute: IAttribute;\r\n\t\tfor (let i = 0; i < schema.attributes.length; i++) {\r\n\t\t\tattribute = schema.attributes[i];\r\n\t\t\tif (attribute.name === AttributeName.xlinkHref) {\r\n\t\t\t\telement.setAttributeNS(\"http://www.w3.org/1999/xlink\", AttributeName.HRef, attribute.value);\r\n\t\t\t} else {\r\n\t\t\t\telement.setAttribute(attribute.name, attribute.value);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif (schema.id) {\r\n\t\telement.id = schema.id;\r\n\t}\r\n\r\n\tif (schema.classes) {\r\n\t\tlet concatClasses: string = schema.classes.join(\" \");\r\n\t\tif (svg) {\r\n\t\t\telement.setAttribute(AttributeName.Class, concatClasses);\r\n\t\t} else {\r\n\t\t\telement.className = concatClasses;\r\n\t\t}\r\n\t}\r\n\r\n\tif (schema.innerText && !svg) {\r\n\t\telement.textContent = schema.innerText;\r\n\t}\r\n\r\n\tif (schema.innerHTML && !svg) {\r\n\t\telement.innerHTML = schema.innerHTML;\r\n\t}\r\n\r\n\tif (schema.children) {\r\n\t\tfor (let i = 0; i < schema.children.length; i++) {\r\n\t\t\t// Sometimes IE mis-reports length\r\n\t\t\tlet cur: IUIAsJson = schema.children[i];\r\n\r\n\t\t\tif (cur) {\r\n\t\t\t\tlet child: Element = elementFromJson(cur, svg);\r\n\r\n\t\t\t\tif (child) {\r\n\t\t\t\t\telement.appendChild(child);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn element;\r\n}\r\n","import { GovernedChannel, GovernedChannelType, IGovernedChannelData } from \"./GovernedChannel\";\r\nimport { GovernedChannelState, IGovernedChannelStateProvider } from \"./GovernedChannelStateProvider\";\r\nimport * as Utils from \"./Utils\";\r\n\r\nconst { isNOU } = Utils;\r\n\r\nexport const DEFAULT_TEACHING_MESSAGE_COOLDOWN = 15;\r\n\r\nexport interface IGovernor {\r\n\tgetAvailableChannelData(): IGovernedChannelData[];\r\n\r\n\tisChannelOpen(type: GovernedChannelType): boolean;\r\n\r\n\tstartChannelCooldown(type: GovernedChannelType, date?: Date): void;\r\n\r\n\trefreshChannelData(): void;\r\n\r\n\tsaveChannelStates(): void;\r\n}\r\n\r\nclass DefaultChannelData {\r\n\tpublic cooldownSeconds: number;\r\n\tpublic name: string;\r\n\r\n\tpublic constructor(name: string, cooldownSeconds: number) {\r\n\t\tthis.name = name;\r\n\t\tthis.cooldownSeconds = cooldownSeconds;\r\n\t}\r\n}\r\n\r\nexport class Governor implements IGovernor {\r\n\tpublic static GetChannelCoolDown(channelType: GovernedChannelType) {\r\n\t\tconst channelData = Governor.defaultChannelData[channelType];\r\n\t\treturn channelData ? channelData.cooldownSeconds : 0;\r\n\t}\r\n\r\n\tpublic static SetDefaultChannelCoolDown(channelType: GovernedChannelType, cooldownSeconds: number) {\r\n\t\tconst channelData = Governor.defaultChannelData[channelType];\r\n\t\tif (channelData) {\r\n\t\t\tchannelData.cooldownSeconds = cooldownSeconds;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate static minute: number = 60;\r\n\tprivate static hour: number = 60 * Governor.minute;\r\n\tprivate static day: number = 24 * Governor.hour;\r\n\r\n\t// Array of default values for each channel type. Indexed by the GovernedChannelType enum name.\r\n\tprivate static defaultChannelData: DefaultChannelData[] = [\r\n\t\tnew DefaultChannelData(GovernedChannelType[GovernedChannelType.Standard], 14 * Governor.day),\r\n\t\tnew DefaultChannelData(GovernedChannelType[GovernedChannelType.Urgent], 0),\r\n\t\tnew DefaultChannelData(GovernedChannelType[GovernedChannelType.Banner], 15 * Governor.day),\r\n\t\tnew DefaultChannelData(GovernedChannelType[GovernedChannelType.TeachingMessage], DEFAULT_TEACHING_MESSAGE_COOLDOWN * Governor.day),\r\n\t];\r\n\r\n\tprivate channelStateProvider: IGovernedChannelStateProvider;\r\n\tprivate channels: GovernedChannel[] = [];\r\n\r\n\tpublic constructor(channelStateProvider: IGovernedChannelStateProvider) {\r\n\t\tif (!channelStateProvider) {\r\n\t\t\tthrow new Error(\"channelStateProvider must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.channelStateProvider = channelStateProvider;\r\n\t\tthis.loadChannels();\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic refreshChannelData(): void {\r\n\t\tthis.loadChannels();\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getAvailableChannelData(): IGovernedChannelData[] {\r\n\t\tconst channelData: IGovernedChannelData[] = [];\r\n\r\n\t\tfor (const key in this.channels) {\r\n\t\t\tif (this.channels.hasOwnProperty(key)) {\r\n\t\t\t\tconst channel: GovernedChannel = this.channels[key];\r\n\r\n\t\t\t\tif (channel.isOpen()) {\r\n\t\t\t\t\tchannelData.push(channel);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn channelData;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic isChannelOpen(type: GovernedChannelType): boolean {\r\n\t\tif (isNOU(type)) {\r\n\t\t\tthrow new Error(\"type must not be null\");\r\n\t\t}\r\n\r\n\t\treturn this.channels[type].isOpen();\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic startChannelCooldown(type: GovernedChannelType, date?: Date): void {\r\n\t\tif (isNOU(type)) {\r\n\t\t\tthrow new Error(\"type must not be null\");\r\n\t\t}\r\n\r\n\t\tdate = date ? date : new Date();\r\n\r\n\t\t// Start the cool down\r\n\t\tthis.channels[type].setCooldownStartTime(date);\r\n\r\n\t\t// Save the new channel state for future sessions\r\n\t\tthis.saveChannelStates();\r\n\t}\r\n\r\n\tpublic saveChannelStates(): void {\r\n\t\t// Build up the list of channel states\r\n\t\tconst channelStates: GovernedChannelState[] = [];\r\n\r\n\t\tfor (const key in this.channels) {\r\n\t\t\tif (this.channels.hasOwnProperty(key)) {\r\n\t\t\t\tconst channel: GovernedChannel = this.channels[key];\r\n\t\t\t\tconst channelState: GovernedChannelState =\r\n\t\t\t\t\tnew GovernedChannelState(channel.getType(), channel.getCooldownStartTime());\r\n\r\n\t\t\t\tchannelStates.push(channelState);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.channelStateProvider.save(channelStates);\r\n\t}\r\n\r\n\tprivate loadChannels(): void {\r\n\t\t// Load up state from previous sessions\r\n\t\tthis.loadChannelStatesFromProvider();\r\n\r\n\t\t// For any missing channels, init them from scratch\r\n\t\t// There's no straightforward way to iterate enums, we need to iterate through the enum array\r\n\t\t// filtering out just the numeric enum values (excluding enum names).\r\n\t\tfor (const item in GovernedChannelType) {\r\n\t\t\tif (GovernedChannelType.hasOwnProperty(item)) {\r\n\t\t\t\tconst key: number = Number(item);\r\n\r\n\t\t\t\t// skip if key is not numeric enum value, or if already exists\r\n\t\t\t\tif (isNaN(key) || this.channels[key]) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst defaultData: DefaultChannelData = Governor.defaultChannelData[key];\r\n\t\t\t\tconst newChannel: GovernedChannel =\r\n\t\t\t\t\tnew GovernedChannel(key, defaultData.name, defaultData.cooldownSeconds, null);\r\n\t\t\t\tthis.channels[key] = newChannel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate loadChannelStatesFromProvider(): void {\r\n\t\tthis.channels = [];\r\n\r\n\t\tconst channelStates: GovernedChannelState[] = this.channelStateProvider.load();\r\n\r\n\t\tfor (const key in channelStates) {\r\n\t\t\tif (channelStates.hasOwnProperty(key)) {\r\n\t\t\t\tconst channelState: GovernedChannelState = channelStates[key];\r\n\r\n\t\t\t\tconst type: GovernedChannelType = channelState.getType();\r\n\t\t\t\tconst defaultData: DefaultChannelData = Governor.defaultChannelData[type];\r\n\t\t\t\tconst newChannel: GovernedChannel =\r\n\t\t\t\t\tnew GovernedChannel(type, defaultData.name, defaultData.cooldownSeconds, channelState.getCooldownStartTime());\r\n\r\n\t\t\t\tthis.channels[newChannel.getType()] = newChannel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n","import { ContentType } from \"./TargetedMessagingContentType\";\r\nimport FloodgateStorageProvider from \"../FloodgateCore/FloodgateStorageProvider\";\r\nimport * as Utils from \"../Utils\";\r\nimport { FileType } from \"@ms-ofb/officefloodgatecore/dist/src/Api/IFloodgateStorageProvider\";\r\n\r\nconst { isNOU } = Utils;\r\n\r\nexport interface ICacheItem {\r\n\tcontentType: ContentType;\r\n\tcontent: any;\r\n\texpiryDate: Date;\r\n\tlastRetrievedDate: Date;\r\n}\r\n\r\nexport class TargetedMessagingCache {\r\n\tprivate useLocalStorage: boolean = false;\r\n\tprivate cachedItems: { [key: string]: ICacheItem } = {};\r\n\tprivate floodgateStorage: FloodgateStorageProvider;\r\n\r\n\tconstructor(items: Array) {\r\n\t\tthis.initialize(items);\r\n\t}\r\n\r\n\tpublic setContentItem(contentType: ContentType, content: any, expiryTime: number): ICacheItem {\r\n\t\tconst cacheItem = this.createItem(contentType, content, expiryTime);\r\n\t\tthis.setItem(cacheItem);\r\n\t\treturn cacheItem;\r\n\t}\r\n\r\n\tpublic getItemContent(contentType: ContentType): T {\r\n\t\tconst cacheItem = this.getItem(contentType);\r\n\t\treturn cacheItem && cacheItem.content;\r\n\t}\r\n\r\n\tpublic has(contentType: ContentType): boolean {\r\n\t\treturn contentType in this.cachedItems;\r\n\t}\r\n\r\n\tpublic isItemExpired(contentType: ContentType): boolean {\r\n\t\tconst cacheItem = this.getItem(contentType);\r\n\t\treturn !cacheItem\r\n\t\t\t|| !cacheItem.expiryDate\r\n\t\t\t|| cacheItem.expiryDate < new Date();\r\n\t}\r\n\r\n\tprivate createItem(contentType: ContentType, content: any, expiryTime: number): ICacheItem {\r\n\t\tconst cacheItem: ICacheItem = {\r\n\t\t\tcontentType,\r\n\t\t\tcontent,\r\n\t\t\texpiryDate: new Date(Date.now() + expiryTime),\r\n\t\t\tlastRetrievedDate: new Date(),\r\n\t\t};\r\n\r\n\t\treturn cacheItem;\r\n\t}\r\n\r\n\tprivate setItem(cacheItem: ICacheItem): void {\r\n\t\tthis.cachedItems[cacheItem.contentType] = cacheItem;\r\n\t\tthis.updateItemInLocalStorage(cacheItem);\r\n\t}\r\n\r\n\tprivate getItem(contentType: ContentType): ICacheItem {\r\n\t\treturn this.cachedItems[contentType];\r\n\t}\r\n\r\n\tprivate initialize(items: Array): void {\r\n\t\tthis.cachedItems = {};\r\n\t\tif (FloodgateStorageProvider.isStorageAvailable()) {\r\n\t\t\tthis.floodgateStorage = new FloodgateStorageProvider();\r\n\t\t\tthis.useLocalStorage = true;\r\n\r\n\t\t\t// try to fetch items from local storage if available from prior sessions\r\n\t\t\tthis.initCachedItemsFromLocalStorage(items);\r\n\t\t} else {\r\n\t\t\t// no LocalStorage support, only active object cache only\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initCachedItemsFromLocalStorage(items: Array): void {\r\n\t\tif (this.useLocalStorage) {\r\n\t\t\tif (!isNOU(items)) {\r\n\t\t\t\tfor (let contentKey of items) {\r\n\t\t\t\t\tlet tempStorageItem: string = this.floodgateStorage.read(this.mapContentTypeToFloodgateProviderKey(contentKey));\r\n\t\t\t\t\tif (!isNOU(tempStorageItem)) {\r\n\t\t\t\t\t\tconst tempCacheItem: ICacheItem = this.parseObjectFromCache(tempStorageItem);\r\n\t\t\t\t\t\tif (!isNOU(tempCacheItem)) {\r\n\t\t\t\t\t\t\ttempCacheItem.expiryDate = typeof tempCacheItem.expiryDate === \"string\" ?\r\n\t\t\t\t\t\t\t\tnew Date(tempCacheItem.expiryDate) : tempCacheItem.expiryDate;\r\n\t\t\t\t\t\t\tthis.cachedItems[tempCacheItem.contentType] = tempCacheItem;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateItemInLocalStorage(cacheItem: ICacheItem): void {\r\n\t\tif (this.useLocalStorage) {\r\n\t\t\tthis.floodgateStorage.write(\r\n\t\t\t\tthis.mapContentTypeToFloodgateProviderKey(cacheItem.contentType),\r\n\t\t\t\tJSON.stringify(cacheItem));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate parseObjectFromCache(tempItem: string): ICacheItem {\r\n\t\ttry {\r\n\t\t\tconst tempCacheItem: ICacheItem = JSON.parse(tempItem);\r\n\t\t\treturn tempCacheItem;\r\n\t\t} catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate mapContentTypeToFloodgateProviderKey(contentType: ContentType): FileType {\r\n\t\tswitch (contentType) {\r\n\t\t\tcase ContentType.campaignContent:\r\n\t\t\t\treturn FileType.TmsCache_CampaignContent;\r\n\t\t\tcase ContentType.messageMetadata:\r\n\t\t\t\treturn FileType.TmsCache_MessageMetadata;\r\n\t\t\tcase ContentType.userGovernanceRules:\r\n\t\t\t\treturn FileType.TmsCache_UserGovernance;\r\n\t\t\tcase ContentType.dynamicSettings:\r\n\t\t\t\treturn FileType.Tms_DynamicSettings;\r\n\t\t\tcase ContentType.logLevelSettings:\r\n\t\t\t\treturn FileType.LogLevelSettings;\r\n\t\t\tcase ContentType.userFacts:\r\n\t\t\t\treturn FileType.UserFacts;\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error(\"Unmapped ContentType in TmsCache\");\r\n\t\t}\r\n\t}\r\n}\r\n","/**\r\n * Spinner.ts\r\n *\r\n * A module for a spinner.\r\n */\r\n\r\nimport { Classes } from \"./UiConstants\";\r\nimport * as Utils from \"./Utils\";\r\n\r\ninterface ICircleObject {\r\n\telement: HTMLDivElement;\r\n\tj: number;\r\n}\r\n\r\nconst animationSpeed = 90;\r\nconst numCircles = 8;\r\nconst offsetSize = 0.2;\r\nconst parentSize = 34;\r\nconst fadeIncrement = 1 / numCircles;\r\n\r\nexport class Spinner {\r\n\tprivate circleObjects: ICircleObject[] = [];\r\n\tprivate interval: ReturnType;\r\n\tprivate spinnerId: string;\r\n\tprivate spinner: HTMLElement;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param id id of the element to attach the spinner to\r\n\t */\r\n\tconstructor(id: string) {\r\n\t\tthis.spinnerId = id;\r\n\t\tthis.spinner = document.getElementById(this.spinnerId);\r\n\t\tthis.createCirclesAndArrange();\r\n\t\tthis.initializeOpacities();\r\n\t\tthis.start();\r\n\t\tUtils.setElementVisibility(id, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys the spinner\r\n\t */\r\n\tpublic destroy() {\r\n\t\tUtils.setElementVisibility(this.spinnerId, false);\r\n\t\tthis.stop();\r\n\t}\r\n\r\n\t/**\r\n\t * Starts the animation\r\n\t */\r\n\tprivate start() {\r\n\t\tthis.stop();\r\n\t\tthis.interval = setInterval(() => {\r\n\t\t\tlet i = this.circleObjects.length;\r\n\t\t\twhile (i--) {\r\n\t\t\t\tfade(this.circleObjects[i]);\r\n\t\t\t}\r\n\t\t},\r\n\t\t\tanimationSpeed);\r\n\t}\r\n\r\n\t/**\r\n\t * Stops the animation\r\n\t */\r\n\tprivate stop() {\r\n\t\tclearInterval(this.interval);\r\n\t}\r\n\r\n\tprivate createCirclesAndArrange() {\r\n\t\tlet angle = 0;\r\n\t\tlet offset = parentSize * offsetSize;\r\n\t\tlet step = (2 * Math.PI) / numCircles;\r\n\t\tlet i = numCircles;\r\n\t\tlet circleObject: ICircleObject;\r\n\t\tlet radius = (parentSize - offset) * 0.5;\r\n\r\n\t\twhile (i--) {\r\n\t\t\tlet circle: HTMLDivElement = createCircle();\r\n\t\t\tlet x = Math.round(parentSize * 0.5 + radius * Math.cos(angle) - circle.clientWidth * 0.5) - offset * 0.5;\r\n\t\t\tlet y = Math.round(parentSize * 0.5 + radius * Math.sin(angle) - circle.clientHeight * 0.5) - offset * 0.5;\r\n\t\t\tthis.spinner.appendChild(circle);\r\n\t\t\tcircle.style.left = x + \"px\";\r\n\t\t\tcircle.style.top = y + \"px\";\r\n\t\t\tangle += step;\r\n\t\t\tcircleObject = { element: circle, j: i };\r\n\t\t\tthis.circleObjects.push(circleObject);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initializeOpacities() {\r\n\t\tlet i = 0;\r\n\t\tlet j = 1;\r\n\t\tlet opacity: number;\r\n\r\n\t\tfor (i; i < numCircles; i++) {\r\n\t\t\tlet circleObject = this.circleObjects[i];\r\n\t\t\topacity = (fadeIncrement * j++);\r\n\t\t\tsetOpacity(circleObject.element, opacity);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction fade(circleObject: any) {\r\n\tlet opacity = getOpacity(circleObject.element) - fadeIncrement;\r\n\r\n\tif (opacity <= 0) {\r\n\t\topacity = 1;\r\n\t}\r\n\r\n\tsetOpacity(circleObject.element, opacity);\r\n}\r\n\r\nfunction getOpacity(element: HTMLDivElement) {\r\n\treturn parseFloat(window.getComputedStyle(element).getPropertyValue(\"opacity\"));\r\n}\r\n\r\nfunction setOpacity(element: HTMLDivElement, opacity: number) {\r\n\telement.style.opacity = opacity.toString();\r\n}\r\n\r\nfunction createCircle(): HTMLDivElement {\r\n\tlet circle: HTMLDivElement = document.createElement(\"div\");\r\n\tcircle.classList.add(Classes.SpinnerCircle);\r\n\tcircle.style.width = circle.style.height = parentSize * offsetSize + \"px\";\r\n\treturn circle;\r\n}\r\n",null,"import { ISurveyDomWriter } from \"./Api/ISurveyDomWriter\";\r\nimport { ISurveyJsonWriter } from \"./Api/ISurveyJsonWriter\";\r\nimport { GovernedChannelType } from \"./GovernedChannel\";\r\nimport * as ISurveyEvent from \"./ISurveyEvent\";\r\nimport { ISurveyMetadata } from \"./ISurveyMetadata\";\r\n\r\n/**\r\n * Interface that can be used to access the basics of a Survey\r\n */\r\ninterface ISurveyInfo extends ISurveyDomWriter, ISurveyJsonWriter {\r\n\t/**\r\n\t * A globally unique, but otherwise opaque, identity for this particular survey\r\n\t */\r\n\tgetId(): string;\r\n\r\n\t/**\r\n\t * A globally unique, but otherwise opaque, identity for this particular survey on the OCV backend\r\n\t * May be the same, or different than getId\r\n\t */\r\n\tgetBackEndId(): string;\r\n\r\n\t/**\r\n\t * The goverend channel that this survey will be delivered/filtered through\r\n\t */\r\n\tgetGovernedChannelType(): GovernedChannelType;\r\n\r\n\t/**\r\n\t * The raw string provided as the survey's start date, with no error checking\r\n\t */\r\n\tgetRawStartTimeUtc(): string;\r\n\r\n\t/**\r\n\t * The start time, in UTC, of this Survey. Before the client has passed this date\r\n\t * the survey will won't be loaded into the survey activity listener.\r\n\t * If no start date is given, returns distantPast.\r\n\t * If bad start date given, returns distantFuture\r\n\t * Otherwise, returns date\r\n\t */\r\n\tgetStartTimeUtc(): Date;\r\n\r\n\t/**\r\n\t * The expiration time, in UTC, of this Survey. Once the client has passed this date, it should clean any\r\n\t * cached data, and should reject any incoming surveys that have otherwise expired but are still active\r\n\t * in the flighting system\r\n\t * If no/bad expiration date given, returns distantPast to make sure this survey is always expired.\r\n\t */\r\n\tgetExpirationTimeUtc(): Date;\r\n\r\n\t/**\r\n\t * The expiration time, in UTC, of this Survey. Once the client has passed this date, it should clean any\r\n\t * cached data, and should reject any incoming surveys that have otherwise expired but are still active\r\n\t * in the flighting system\r\n\t */\r\n\tgetRawExpirationTimeUtc(): string;\r\n\r\n\t/**\r\n\t * Returns whether or not the 'date' is between the start/expiration dates for this survey.\r\n\t */\r\n\tisActiveForDate(date: Date): boolean;\r\n\r\n\t/**\r\n\t * Gets the activation event that should be plumbed through to the FloodgateEngine/SurveyActiviytListener.\r\n\t * When activated, this survey should be shown to the user.\r\n\t */\r\n\tgetActivationEvent(): ISurveyEvent;\r\n\r\n\t/**\r\n\t * Gets the preferred launch mechanism based on this survey's data payload. This may or may not be\r\n\t * respected by the LauncherFactory depending on the platform and implementation, and is strictly considered\r\n\t * a behavioral hint\r\n\t */\r\n\tgetPreferredLaunchType(): ISurveyInfo.LaunchType;\r\n\r\n\t/**\r\n\t * Return additionalDataRequested array\r\n\t */\r\n\tisAdditionalDataRequested(additionalData: ISurveyInfo.AdditionalDataType): boolean;\r\n\r\n\t/**\r\n\t * Return the launcher type string\r\n\t */\r\n\tgetLauncherType(): string;\r\n\r\n\t/**\r\n\t * Gets the metadata of the survey, this is optional but if available it can be used by launcher to\r\n\t * make appropriate decisions while launching a surface.\r\n\t */\r\n\tgetMetadata(): ISurveyMetadata;\r\n\r\n\t/**\r\n\t * Returns businessLevel\r\n\t */\r\n\tgetBusinessLevel(): ISurveyInfo.BusinessLevel;\r\n\r\n\t/**\r\n\t * Returns maxLaunches\r\n\t */\r\n\tgetMaxLaunches(): number;\r\n\r\n\t/**\r\n\t * Returns maxLaunches Per session\r\n\t */\r\n\tgetMaxLaunchesPerSession(): number;\r\n}\r\n\r\nmodule ISurveyInfo {\r\n\texport const enum LaunchType {\r\n\t\t// No launch type specified, defer to the launcher factory code\r\n\t\tDefault = \"Default\",\r\n\t\t// Prefer a notification-based launcher (like the windows toast launcher when present)\r\n\t\tNotification = \"Notification\",\r\n\t\t// Prefer a modal-dialog based launcher\r\n\t\tModal = \"Modal\",\r\n\t}\r\n\r\n\texport enum BusinessLevel {\r\n\t\tNone = 0,\r\n\t\tCritical,\r\n\t}\r\n\r\n\texport const enum AdditionalDataType {\r\n\t\t// Request email address\r\n\t\tEmailAddress,\r\n\t}\r\n\r\n\texport const DOM_TYPE_TAGNAME = \"Type\";\r\n\texport const DOM_TYPE_VALUE = \"Survey\";\r\n\texport const DOM_ID_TAGNAME = \"SurveyID\";\r\n\texport const JSON_SURVEY_KEYNAME = \"survey\";\r\n\texport const JSON_ID_KEYNAME = \"surveyId\";\r\n}\r\n\r\nexport = ISurveyInfo;\r\n","import { SurveyActivationStats, SurveyStatCollectionActivation } from \"../src/SurveyStatCollectionActivation\";\r\nimport { CampaignState } from \"./Campaign/CampaignStateProvider\";\r\nimport { IDictionary } from \"./Common\";\r\nimport { GovernedChannelState } from \"./GovernedChannelStateProvider\";\r\n\r\n/**\r\n * Values for the state list types\r\n */\r\nexport const enum StateListType {\r\n\tMerged,\r\n\tToBeUpdated,\r\n}\r\n\r\nexport interface IKeyedCollection {\r\n\tadd(key: number, value: T);\r\n\tfind(key: number): T;\r\n\tremove(key: number);\r\n\tcount(): number;\r\n}\r\n\r\nexport class ItemCollection implements IKeyedCollection {\r\n\tprivate items: { [key: number]: T } = {};\r\n\tprivate itemCount: number = 0;\r\n\r\n\tpublic add(key: number, value: T) {\r\n\t\tif (!this.items[key]) {\r\n\t\t\tthis.itemCount++;\r\n\t\t}\r\n\t\tthis.items[key] = value;\r\n\t}\r\n\r\n\tpublic find(key: number): T {\r\n\t\treturn this.items[key];\r\n\t}\r\n\r\n\tpublic remove(key: number): T {\r\n\t\tconst item: T = this.items[key];\r\n\r\n\t\tif (item) {\r\n\t\t\tdelete this.items[key];\r\n\t\t\tthis.itemCount--;\r\n\t\t}\r\n\r\n\t\treturn item;\r\n\t}\r\n\r\n\tpublic count(): number {\r\n\t\treturn this.itemCount;\r\n\t}\r\n}\r\n\r\nexport function extractSettingItemValueSubString(itemValue: string): string {\r\n\tif (!itemValue) {\r\n\t\treturn itemValue;\r\n\t}\r\n\r\n\tconst beginPos: number = itemValue.indexOf(SETTING_DATA_OPEN_TAG) + SETTING_DATA_OPEN_TAG.length;\r\n\tconst endPos: number = itemValue.indexOf(SETTING_DATA_CLOSE_TAG);\r\n\r\n\tif (beginPos < 0 || endPos < 0) {\r\n\t\treturn itemValue;\r\n\t}\r\n\r\n\treturn itemValue.substring(beginPos, endPos);\r\n}\r\n\r\nexport function makeSettingItemValue(value: string): string {\r\n\tif (!value) {\r\n\t\treturn SETTING_DATA_OPEN_TAG + SETTING_DATA_CLOSE_TAG;\r\n\t}\r\n\r\n\treturn SETTING_DATA_OPEN_TAG + value + SETTING_DATA_CLOSE_TAG;\r\n}\r\n\r\nexport function MergeAndUpdateGovernedChannelStates(previousStates: GovernedChannelState[],\r\n\tcurrentStates: GovernedChannelState[]): IKeyedCollection {\r\n\tconst stateCollections: IKeyedCollection = new ItemCollection();\r\n\r\n\t// Todo: move the following into a generic method to be shared\r\n\tif (!previousStates && !currentStates) {\r\n\t\treturn stateCollections;\r\n\t}\r\n\r\n\tif (!previousStates) {\r\n\t\tstateCollections.add(StateListType.Merged, currentStates);\r\n\t\treturn stateCollections;\r\n\t}\r\n\r\n\tif (!currentStates) {\r\n\t\tstateCollections.add(StateListType.Merged, previousStates);\r\n\t\tstateCollections.add(StateListType.ToBeUpdated, previousStates);\r\n\t\treturn stateCollections;\r\n\t}\r\n\r\n\tconst mergedStates: GovernedChannelState[] = [];\r\n\tconst toBeUpdatedStates: GovernedChannelState[] = [];\r\n\r\n\tif (previousStates) {\r\n\t\tpreviousStates.forEach((previousState) => {\r\n\t\t\t// find matching in current states\r\n\t\t\tlet pos = -1;\r\n\t\t\tlet currentState: GovernedChannelState;\r\n\t\t\tfor (let i = 0; i < currentStates.length; i++) {\r\n\t\t\t\tcurrentState = currentStates[i];\r\n\t\t\t\tif (currentState.getType() === previousState.getType()) {\r\n\t\t\t\t\tpos = i;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if previous state is not in current states\r\n\t\t\tif (pos === -1) {\r\n\t\t\t\t// add previous state to merged\r\n\t\t\t\tmergedStates.push(previousState);\r\n\r\n\t\t\t\t// add previous state to toUpdated\r\n\t\t\t\ttoBeUpdatedStates.push(previousState);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// if ActivationTimeUtc of previous is greater than current\r\n\t\t\tif (previousState.getCooldownStartTime() > currentState.getCooldownStartTime()) {\r\n\t\t\t\t// add previous state to merged\r\n\t\t\t\tmergedStates.push(previousState);\r\n\r\n\t\t\t\t// add previous state to toUpdated\r\n\t\t\t\ttoBeUpdatedStates.push(previousState);\r\n\t\t\t} else {\r\n\t\t\t\t// add current state to merged\r\n\t\t\t\tmergedStates.push(currentState);\r\n\t\t\t}\r\n\r\n\t\t\t// remove state from current states\r\n\t\t\tcurrentStates.splice(pos, 1);\r\n\t\t});\r\n\t}\r\n\r\n\t// for the remaining current states\r\n\tif (currentStates) {\r\n\t\tcurrentStates.forEach((currentState) => {\r\n\t\t\t// add current state to merged\r\n\t\t\tmergedStates.push(currentState);\r\n\t\t});\r\n\t}\r\n\r\n\tstateCollections.add(StateListType.Merged, mergedStates);\r\n\r\n\tif (toBeUpdatedStates.length > 0) {\r\n\t\tstateCollections.add(StateListType.ToBeUpdated, toBeUpdatedStates);\r\n\t}\r\n\r\n\treturn stateCollections;\r\n}\r\n\r\nexport function MergeAndUpdateCampaignStates(previousStates: CampaignState[],\r\n\tcurrentStates: CampaignState[]): IKeyedCollection {\r\n\tconst stateCollections: IKeyedCollection = new ItemCollection();\r\n\r\n\tif (!previousStates && !currentStates) {\r\n\t\treturn stateCollections;\r\n\t}\r\n\r\n\tif (!previousStates) {\r\n\t\tstateCollections.add(StateListType.Merged, currentStates);\r\n\t\treturn stateCollections;\r\n\t}\r\n\r\n\tif (!currentStates) {\r\n\t\tstateCollections.add(StateListType.Merged, previousStates);\r\n\t\tstateCollections.add(StateListType.ToBeUpdated, previousStates);\r\n\t\treturn stateCollections;\r\n\t}\r\n\r\n\tconst mergedStates: CampaignState[] = [];\r\n\tconst toBeUpdatedStates: CampaignState[] = [];\r\n\r\n\tif (previousStates) {\r\n\t\tpreviousStates.forEach((previousState) => {\r\n\t\t\tconst current = new Date();\r\n\r\n\t\t\t// find matching in current states\r\n\t\t\tlet pos = -1;\r\n\t\t\tlet currentState: CampaignState;\r\n\t\t\tfor (let i = 0; i < currentStates.length; i++) {\r\n\t\t\t\tcurrentState = currentStates[i];\r\n\t\t\t\tif (currentState.CampaignId === previousState.CampaignId) {\r\n\t\t\t\t\tpos = i;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// if previous state is not in current states\r\n\t\t\tif (pos === -1) {\r\n\t\t\t\t// add previous state to merged\r\n\t\t\t\tmergedStates.push(previousState);\r\n\r\n\t\t\t\t// add previous state to toUpdated\r\n\t\t\t\ttoBeUpdatedStates.push(previousState);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// if current state is in cooldown, add to merged list\r\n\t\t\tif (currentState.LastCooldownEndTimeUtc > current) {\r\n\t\t\t\t// add previous state to merged list\r\n\t\t\t\tmergedStates.push(currentState);\r\n\r\n\t\t\t\t// emove state from current states\r\n\t\t\t\tcurrentStates.splice(pos, 1);\r\n\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// if previous state is in cooldown, add to merged and toUpdated lists\r\n\t\t\tif (previousState.LastCooldownEndTimeUtc > current) {\r\n\t\t\t\t// add previous state to merged list\r\n\t\t\t\tmergedStates.push(previousState);\r\n\r\n\t\t\t\t// add previous state to to-be-updated list\r\n\t\t\t\ttoBeUpdatedStates.push(previousState);\r\n\r\n\t\t\t\t// emove state from current states\r\n\t\t\t\tcurrentStates.splice(pos, 1);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// add previous state to toUpdated and merged for the following two conditions:\r\n\t\t\t// 1. previous cooldown time wins, or\r\n\t\t\t// 2. cooldown times are the same and previous nomination wins\r\n\t\t\tif (previousState.getCooldownStartDate() > currentState.getCooldownStartDate()\r\n\t\t\t\t|| (previousState.getCooldownStartDate() === currentState.getCooldownStartDate()\r\n\t\t\t\t\t&& previousState.LastNominationTimeUtc > currentState.LastNominationTimeUtc)\r\n\t\t\t) {\r\n\t\t\t\tmergedStates.push(previousState);\r\n\r\n\t\t\t\ttoBeUpdatedStates.push(previousState);\r\n\t\t\t} else {\r\n\t\t\t\t// add current state to merged\r\n\t\t\t\tmergedStates.push(currentState);\r\n\t\t\t}\r\n\r\n\t\t\t// remove state from current states\r\n\t\t\tcurrentStates.splice(pos, 1);\r\n\t\t});\r\n\t}\r\n\r\n\t// for the remaining current states\r\n\tif (currentStates) {\r\n\t\tcurrentStates.forEach((current) => {\r\n\t\t\t// add current state to merged\r\n\t\t\tmergedStates.push(current);\r\n\t\t});\r\n\t}\r\n\r\n\tstateCollections.add(StateListType.Merged, mergedStates);\r\n\r\n\tif (toBeUpdatedStates.length > 0) {\r\n\t\tstateCollections.add(StateListType.ToBeUpdated, toBeUpdatedStates);\r\n\t}\r\n\r\n\treturn stateCollections;\r\n}\r\n\r\nexport function MergeAndUpdateSurveyActivationStats(previousStats: SurveyStatCollectionActivation,\r\n\tcurrentStats: SurveyStatCollectionActivation): IKeyedCollection {\r\n\r\n\tconst statsCollections: IKeyedCollection = new ItemCollection();\r\n\r\n\t// Handle previousStats and/or currentStats equal to null\r\n\tif (!previousStats && !currentStats) {\r\n\t\treturn statsCollections;\r\n\t}\r\n\r\n\tif (!previousStats) {\r\n\t\tstatsCollections.add(StateListType.Merged, currentStats);\r\n\t\treturn statsCollections;\r\n\t}\r\n\r\n\tif (!currentStats) {\r\n\t\tstatsCollections.add(StateListType.Merged, previousStats);\r\n\t\tstatsCollections.add(StateListType.ToBeUpdated, previousStats);\r\n\t\treturn statsCollections;\r\n\t}\r\n\r\n\t// Enumerate preivous stats\r\n\tconst mergedStats: SurveyStatCollectionActivation = new SurveyStatCollectionActivation();\r\n\tconst toBeUpdatedStats: SurveyStatCollectionActivation = new SurveyStatCollectionActivation();\r\n\r\n\tconst previousStatsDictionary: IDictionary = previousStats.getStats();\r\n\tconst currentStatsDictionary: IDictionary = currentStats.getStats();\r\n\r\n\tfor (const surveyId in previousStatsDictionary) {\r\n\t\tif (previousStatsDictionary.hasOwnProperty(surveyId)) {\r\n\t\t\t// if an updated stat is not found\r\n\t\t\tconst currentActivationStats: SurveyActivationStats = currentStatsDictionary[surveyId];\r\n\t\t\tif (!currentActivationStats) {\r\n\t\t\t\t// add to merged collection\r\n\t\t\t\tmergedStats.addStats(surveyId, previousStatsDictionary[surveyId]);\r\n\t\t\t\t// add to-be-updated collection\r\n\t\t\t\ttoBeUpdatedStats.addStats(surveyId, previousStatsDictionary[surveyId]);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\t// if previous stat has higher activation time\r\n\t\t\tconst previousActivationStats: SurveyActivationStats = previousStatsDictionary[surveyId];\r\n\t\t\tif (previousActivationStats.ActivationTimeUtc > currentActivationStats.ActivationTimeUtc) {\r\n\t\t\t\t// add to merged collection\r\n\t\t\t\tmergedStats.addStats(surveyId, previousStatsDictionary[surveyId]);\r\n\t\t\t\t// add to-be-updated collection\r\n\t\t\t\ttoBeUpdatedStats.addStats(surveyId, previousStatsDictionary[surveyId]);\r\n\t\t\t} else {\r\n\t\t\t\t// add to current stat merged collection\r\n\t\t\t\tmergedStats.addStats(surveyId, currentStatsDictionary[surveyId]);\r\n\t\t\t}\r\n\r\n\t\t\t// delete from stats\r\n\t\t\tdelete currentStatsDictionary[surveyId];\r\n\t\t}\r\n\t}\r\n\r\n\t// merge any remaining stats\r\n\tfor (const surveyId in currentStatsDictionary) {\r\n\t\tif (currentStatsDictionary.hasOwnProperty(surveyId)) {\r\n\t\t\tmergedStats.addStats(surveyId, currentStatsDictionary[surveyId]);\r\n\t\t}\r\n\t}\r\n\r\n\t// always return merged list\r\n\tstatsCollections.add(StateListType.Merged, mergedStats);\r\n\r\n\t// since dictionaries don't have an empty check, enumerate the first entry to check for non-empty\r\n\tconst toBeUpdatedStatsDictionary: IDictionary = toBeUpdatedStats.getStats();\r\n\tfor (const toBeUpdated in toBeUpdatedStatsDictionary) {\r\n\t\tif (toBeUpdatedStatsDictionary.hasOwnProperty(toBeUpdated)) {\r\n\t\t\t// not empty, return to-be-updated\r\n\t\t\tstatsCollections.add(StateListType.ToBeUpdated, toBeUpdatedStats);\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\treturn statsCollections;\r\n}\r\n\r\nconst SETTING_DATA_OPEN_TAG = \"\";\r\nconst SETTING_DATA_CLOSE_TAG = \"\";\r\n","import { ICommentComponent } from \"./../Api/ICommentComponent\";\r\nimport ISurveyComponent = require(\"./../Api/ISurveyComponent\");\r\n\r\nclass CommentComponent implements ICommentComponent {\r\n\tpublic static make(data: CommentComponent.CommentComponentData): ICommentComponent {\r\n\t\ttry {\r\n\t\t\treturn new CommentComponent(data);\r\n\t\t} catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate data: CommentComponent.CommentComponentData;\r\n\tprivate userComment: string;\r\n\r\n\tpublic constructor(data: CommentComponent.CommentComponentData) {\r\n\t\tif (!data) {\r\n\t\t\tthrow new Error(\"data must not be null\");\r\n\t\t}\r\n\t\tif (!data.question) {\r\n\t\t\tthrow new Error(\"data.question must not be null or empty\");\r\n\t\t}\r\n\r\n\t\tthis.data = data;\r\n\t\tthis.userComment = \"\";\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getType(): ISurveyComponent.Type {\r\n\t\treturn ISurveyComponent.Type.Comment;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getQuestion(): string {\r\n\t\treturn this.data.question;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic setSubmittedText(userComment: string): void {\r\n\t\tthis.userComment = userComment;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getSubmittedText(): string {\r\n\t\treturn this.userComment;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getDomElements(doc: Document): Element[] {\r\n\t\tif (!doc) {\r\n\t\t\tthrow new Error(\"Document must not be null\");\r\n\t\t}\r\n\r\n\t\tconst element: Element = doc.createElement(ISurveyComponent.DOM_COMMENT_TAGNAME);\r\n\t\telement.appendChild(doc.createTextNode(this.getSubmittedText()));\r\n\r\n\t\treturn [element];\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getJsonElements(): object {\r\n\t\tconst result: object = {};\r\n\t\tresult[ISurveyComponent.JSON_COMMENT_KEYNAME] = this.getSubmittedText();\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getComponentJson(): object {\r\n\t\treturn {\r\n\t\t\t[ISurveyComponent.JSON_QUESTION_KEYNAME]: this.getQuestion(),\r\n\t\t};\r\n\t}\r\n}\r\n\r\nmodule CommentComponent {\r\n\texport class CommentComponentData {\r\n\t\tpublic question: string;\r\n\t}\r\n}\r\n\r\nexport = CommentComponent;\r\n","import * as ISurveyComponent from \"../Api/ISurveyComponent\";\r\nimport * as IPrompt from \"./../Api/IPrompt\";\r\nimport { IPromptComponent } from \"./../Api/IPromptComponent\";\r\n\r\nclass PromptComponent implements IPromptComponent {\r\n\tpublic static make(data: PromptComponent.PromptComponentData): IPromptComponent {\r\n\t\ttry {\r\n\t\t\treturn new PromptComponent(data);\r\n\t\t} catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate data: PromptComponent.PromptComponentData;\r\n\tprivate selectedButton: IPrompt.PromptButton;\r\n\r\n\tpublic constructor(data: PromptComponent.PromptComponentData) {\r\n\t\tif (!data) {\r\n\t\t\tthrow new Error(\"data must not be null\");\r\n\t\t}\r\n\t\tif (!data.question) {\r\n\t\t\tthrow new Error(\"data.question must not be null or empty\");\r\n\t\t}\r\n\t\tif (!data.title) {\r\n\t\t\tthrow new Error(\"data.title must not be null or empty\");\r\n\t\t}\r\n\t\tif (!data.yesButtonLabel) {\r\n\t\t\tthrow new Error(\"data.yesButtonLabel must not be null or empty\");\r\n\t\t}\r\n\t\tif (!data.noButtonLabel) {\r\n\t\t\tthrow new Error(\"data.noButtonLabel must not be null or empty\");\r\n\t\t}\r\n\r\n\t\tthis.data = data;\r\n\t\tthis.selectedButton = IPrompt.PromptButton.Unselected;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getType(): ISurveyComponent.Type {\r\n\t\treturn ISurveyComponent.Type.Prompt;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getTitle(): string {\r\n\t\treturn this.data.title;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getQuestion(): string {\r\n\t\treturn this.data.question;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getYesButtonText(): string {\r\n\t\treturn this.data.yesButtonLabel;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getNoButtonText(): string {\r\n\t\treturn this.data.noButtonLabel;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic setButtonSelected(selected: IPrompt.PromptButton): void {\r\n\t\tif (selected) {\r\n\t\t\tthis.selectedButton = selected;\r\n\t\t}\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getButtonSelected(): IPrompt.PromptButton {\r\n\t\treturn this.selectedButton;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getDomElements(doc: Document): Element[] {\r\n\t\tif (!doc) {\r\n\t\t\tthrow new Error(\"Document must not be null\");\r\n\t\t}\r\n\r\n\t\tconst element: Element = doc.createElement(ISurveyComponent.DOM_PROMPT_TAGNAME);\r\n\t\telement.appendChild(doc.createTextNode(this.promptButtonToString(this.getButtonSelected())));\r\n\r\n\t\treturn [element];\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getJsonElements(): object {\r\n\t\tconst result: object = {};\r\n\t\tresult[ISurveyComponent.JSON_PROMPT_KEYNAME] = this.promptButtonToString(this.getButtonSelected());\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getComponentJson(): object {\r\n\t\treturn {\r\n\t\t\t[ISurveyComponent.JSON_TITLE_KEYNAME]: this.getTitle(),\r\n\t\t\t[ISurveyComponent.JSON_QUESTION_KEYNAME]: this.getQuestion(),\r\n\t\t\t[ISurveyComponent.JSON_PROMPTYESTEXT_KEYNAME]: this.getYesButtonText(),\r\n\t\t\t[ISurveyComponent.JSON_PROMPTNOTEXT_KEYNAME]: this.getNoButtonText(),\r\n\t\t};\r\n\t}\r\n\r\n\tprivate promptButtonToString(value: IPrompt.PromptButton): string {\r\n\t\tswitch (value) {\r\n\t\t\tcase IPrompt.PromptButton.Unselected:\r\n\t\t\t\treturn \"Unselected\";\r\n\t\t\tcase IPrompt.PromptButton.Yes:\r\n\t\t\t\treturn \"Yes\";\r\n\t\t\tcase IPrompt.PromptButton.No:\r\n\t\t\t\treturn \"No\";\r\n\t\t\tdefault:\r\n\t\t\t\treturn \"Unknown\";\r\n\t\t}\r\n\t}\r\n}\r\n\r\nmodule PromptComponent {\r\n\texport class PromptComponentData {\r\n\t\tpublic question: string;\r\n\t\tpublic title: string;\r\n\t\tpublic yesButtonLabel: string;\r\n\t\tpublic noButtonLabel: string;\r\n\t}\r\n}\r\n\r\nexport = PromptComponent;\r\n","import * as ISurveyComponent from \"../Api/ISurveyComponent\";\r\nimport { IRatingComponent } from \"./../Api/IRatingComponent\";\r\n\r\nclass RatingComponent implements IRatingComponent {\r\n\tpublic static make(data: RatingComponent.RatingComponentData): IRatingComponent {\r\n\t\ttry {\r\n\t\t\treturn new RatingComponent(data);\r\n\t\t} catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate data: RatingComponent.RatingComponentData;\r\n\tprivate selectedIndex: number;\r\n\r\n\tpublic constructor(data: RatingComponent.RatingComponentData) {\r\n\t\tif (!data) {\r\n\t\t\tthrow new Error(\"data must not be null\");\r\n\t\t}\r\n\t\tif (!data.question) {\r\n\t\t\tthrow new Error(\"data.question must not be null or empty\");\r\n\t\t}\r\n\t\tif (!data.ratingValuesAscending || data.ratingValuesAscending.length < 2) {\r\n\t\t\tthrow new Error(\"data.ratingValuesAscending must not be null or have less than two choices\");\r\n\t\t}\r\n\r\n\t\tdata.ratingValuesAscending.forEach((rating) => {\r\n\t\t\tif (!rating) {\r\n\t\t\t\tthrow new Error(\"rating values must not contain null or empty\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.data = data;\r\n\t\tthis.selectedIndex = -1;\r\n\t}\r\n\r\n\tpublic getType(): ISurveyComponent.Type {\r\n\t\treturn ISurveyComponent.Type.Rating;\r\n\t}\r\n\r\n\tpublic getQuestion(): string {\r\n\t\treturn this.data.question;\r\n\t}\r\n\r\n\tpublic getRatingValuesAscending(): string[] {\r\n\t\treturn this.data.ratingValuesAscending;\r\n\t}\r\n\r\n\tpublic getSelectedRating(): string {\r\n\t\tif (!this.isRatingIndexValid(this.selectedIndex)) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\treturn this.data.ratingValuesAscending[this.selectedIndex];\r\n\t}\r\n\r\n\tpublic setSelectedRatingIndex(selected: number): void {\r\n\t\tif (this.isRatingIndexValid(selected)) {\r\n\t\t\tthis.selectedIndex = selected;\r\n\t\t} else {\r\n\t\t\tthis.selectedIndex = -1;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic getSelectedRatingIndex(): number {\r\n\t\treturn this.selectedIndex;\r\n\t}\r\n\r\n\tpublic getDomElements(doc: Document): Element[] {\r\n\t\tif (!doc) {\r\n\t\t\tthrow new Error(\"Document must not be null\");\r\n\t\t}\r\n\r\n\t\tconst element: Element = doc.createElement(ISurveyComponent.DOM_RATING_TAGNAME);\r\n\r\n\t\tif (!this.isRatingIndexValid(this.getSelectedRatingIndex())) {\r\n\t\t\telement.appendChild(doc.createTextNode(\"Not rated\"));\r\n\t\t} else {\r\n\t\t\t// Enforce six digits after the decimal\r\n\t\t\telement.appendChild(doc.createTextNode(this.getNormalizedRatingScore().toFixed(6)));\r\n\t\t}\r\n\r\n\t\treturn [element];\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getJsonElements(): object {\r\n\t\tconst result: object = {};\r\n\r\n\t\tif (!this.isRatingIndexValid(this.getSelectedRatingIndex())) {\r\n\t\t\tresult[ISurveyComponent.JSON_RATING_KEYNAME] = \"Not rated\";\r\n\t\t} else {\r\n\t\t\tresult[ISurveyComponent.JSON_RATING_KEYNAME] = this.getNormalizedRatingScore();\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getComponentJson(): object {\r\n\t\treturn {\r\n\t\t\t[ISurveyComponent.JSON_QUESTION_KEYNAME]: this.getQuestion(),\r\n\t\t\t[ISurveyComponent.JSON_RATINGOPTIONS_KEYNAME]: this.getRatingValuesAscending(),\r\n\t\t};\r\n\t}\r\n\r\n\tpublic getNormalizedRatingScore(): number {\r\n\t\tif (!this.isRatingIndexValid(this.getSelectedRatingIndex())) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\tif (this.data.isZeroBased) {\r\n\t\t\treturn (this.selectedIndex) / (this.data.ratingValuesAscending.length - 1);\r\n\t\t} else {\r\n\t\t\treturn (this.selectedIndex + 1.0) / this.data.ratingValuesAscending.length;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate isRatingIndexValid(index: number): boolean {\r\n\t\treturn (index >= 0 && index < this.data.ratingValuesAscending.length);\r\n\t}\r\n\r\n}\r\n\r\nmodule RatingComponent {\r\n\texport class RatingComponentData {\r\n\t\tpublic question: string;\r\n\t\tpublic ratingValuesAscending: string[];\r\n\t\tpublic isZeroBased: boolean;\r\n\t}\r\n}\r\n\r\nexport = RatingComponent;\r\n","import * as ActivityTracker from \"./ActivityTracker\";\r\nimport { ActivityTrackingContract } from \"./ActivityTrackingContract\";\r\nimport { ActivityTrackingSet } from \"./ActivityTrackingSet\";\r\nimport * as IActivityListener from \"./Api/IActivityListener\";\r\nimport { IFloodgateTelemetryLogger } from \"./Api/IFloodgateTelemetryLogger\";\r\nimport { IContextData } from \"./Api/IOnSurveyActivatedCallback\";\r\nimport ISurvey = require(\"./Api/ISurvey\");\r\nimport { IDictionary } from \"./Common\";\r\nimport { TelemetryEvent } from \"./Constants\";\r\nimport { IndexedTracker } from \"./IndexedTracker\";\r\nimport { SurveyEventActivityStats, SurveyStatCollectionEventActivity } from \"./SurveyStatCollectionEventActivity\";\r\nimport { fyShuffle, isNOU } from \"./Utils\";\r\n\r\nlet queuedActivities: SurveyActivityListener.IQueuedActivityParams[] = [];\r\nlet pendingActivityCount: number = 0;\r\nlet previousTrackedActivityMap: { [id: string]: IndexedTracker[] } = {};\r\n\r\n/**\r\n * This class tracks log calls against named activity strings (matched on strict case-sensitive equality)\r\n * and calls the provided callback when all activity thresholds for a given survey have been crossed\r\n */\r\nclass SurveyActivityListener implements IActivityListener {\r\n\tpublic static FloodgateStartActivityName = \"FloodgateFirstStart\";\r\n\t// The size of the dropped activities is set to 100 due to the following two reasons.\r\n\t// 1) To prevent the array growing too big and causing memory issues.\r\n\t// 2) Based on the telemetry analysis of number of dropped activities, the count is very small and much lesser than 100.\r\n\tpublic static MaxPendingActivitiesQueueSize = 100;\r\n\r\n\tpublic static resetSessionActivity(): void {\r\n\t\tpreviousTrackedActivityMap = {};\r\n\t}\r\n\r\n\t// Save incoming activity context data in a dictionary with SurveyID as key, activity data array as value\r\n\tprivate activityContext: Record = {};\r\n\r\n\tprivate trackedActivityMap: { [id: string]: IndexedTracker[] };\r\n\tprivate callback: SurveyActivityListener.IActivityListenerCallback;\r\n\tprivate loggerCallback: () => IFloodgateTelemetryLogger;\r\n\r\n\tpublic constructor(callback: SurveyActivityListener.IActivityListenerCallback, loggerCallback?: () => IFloodgateTelemetryLogger) {\r\n\t\tif (!callback) {\r\n\t\t\tthrow new Error(\"callback must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.trackedActivityMap = {};\r\n\t\tthis.callback = callback;\r\n\t\tthis.loggerCallback = loggerCallback;\r\n\t}\r\n\r\n\tpublic logActivity(activityName: string, increment: number = 1, context?: IActivityListener.IActivityContext): void {\r\n\t\tthis.logActivity_private(activityName, SurveyActivityListener.LogActionType.Increment, increment, null, context);\r\n\t}\r\n\r\n\tpublic logActivityStartTime(activityName: string, startTime?: Date): void {\r\n\t\tthis.logActivity_private(activityName, SurveyActivityListener.LogActionType.StartTime, 0, startTime, null);\r\n\t}\r\n\r\n\tpublic logActivityStopTime(activityName: string, stopTime?: Date): void {\r\n\t\tthis.logActivity_private(activityName, SurveyActivityListener.LogActionType.StopTime, 0, stopTime, null);\r\n\t}\r\n\r\n\tpublic SetActivityTrackingContracts(activityTrackingContracts: ActivityTrackingContract[],\r\n\t\tbaseline = new SurveyStatCollectionEventActivity()): void {\r\n\r\n\t\tlet duplicateCounter = 0;\r\n\r\n\t\tif (!activityTrackingContracts || activityTrackingContracts.length === 0 || !baseline) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Populate a new map based on the passed in surveys, but propagating and tracking activity counts\r\n\t\t// we may have seen against those events\r\n\t\t// NOTE: We will lose activity counts for survey events that are no longer relevant.\r\n\t\tconst newMap: { [id: string]: IndexedTracker[] } = {};\r\n\t\tconst trackedSurveyIds: string[] = [];\r\n\r\n\t\tfor (const activityTrackingContract of activityTrackingContracts) {\r\n\t\t\tconst trackingSet: ActivityTrackingSet = activityTrackingContract.trackingSet;\r\n\r\n\t\t\t// Added to the new set to make sure they are not duplicated. Based on MSO.\r\n\t\t\tif (trackedSurveyIds.indexOf(activityTrackingContract.surveyId) === -1) {\r\n\t\t\t\ttrackedSurveyIds.push(activityTrackingContract.surveyId);\r\n\t\t\t} else {\r\n\t\t\t\t// Duplicate surveyId being added, count it for the log.\r\n\t\t\t\tduplicateCounter++;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// At this point, the survey's activities are safe to add.\r\n\t\t\t// Set up the structures we need to transfer baseline counts (from previous sessions) or current counts (from previous trackers)\r\n\t\t\t// Both vectors must be sorted in the same order as the trackingSet.List items\r\n\t\t\tconst baselineStats: SurveyEventActivityStats = baseline.getBySurveyId(activityTrackingContract.surveyId);\r\n\t\t\tconst baselineCounts: number[] = [trackingSet.getList().length];\r\n\t\t\tconst currentIndexedTrackers: IndexedTracker[] = new Array(trackingSet.getList().length);\r\n\r\n\t\t\tlet currentBaselineIndex = 0;\r\n\t\t\tlet currentIndex = 0;\r\n\r\n\t\t\tfor (const trackingData of trackingSet.getList()) {\r\n\t\t\t\t// Baseline stats count is 0 for events with \"IsAggregate = false\"\r\n\t\t\t\tbaselineCounts[currentIndex] = 0;\r\n\t\t\t\tif (trackingData.getIsAggregate() && baselineStats && currentBaselineIndex < baselineStats.Counts.length) {\r\n\t\t\t\t\tbaselineCounts[currentIndex] = baselineStats.Counts[currentBaselineIndex++];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Session stats may be available in the previous trackedActivityMap\r\n\t\t\t\t// Transfer the old \"current session\" count to the new tracker\r\n\t\t\t\t// Is set to null if not available\r\n\t\t\t\tif (previousTrackedActivityMap[trackingData.getActivity()]) {\r\n\t\t\t\t\tfor (const tracker of previousTrackedActivityMap[trackingData.getActivity()]) {\r\n\t\t\t\t\t\tif (tracker.surveyId === activityTrackingContract.surveyId) {\r\n\t\t\t\t\t\t\tcurrentIndexedTrackers[currentIndex] = tracker;\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentIndex++;\r\n\t\t\t}\r\n\r\n\t\t\t// Make a new tracker and init the counts appropriately.\r\n\t\t\tconst newTracker = new ActivityTracker(trackingSet);\r\n\t\t\t// If in a future change we start keeping trackers registered past activation, this will change\r\n\t\t\tnewTracker.initCounts(baselineCounts, currentIndexedTrackers, false /*wasActivatedThisSession*/);\r\n\r\n\t\t\t// Setup the indexed trackers\r\n\t\t\tfor (const activityIndex of newTracker.generateActivityIndexList()) {\r\n\t\t\t\tconst indexedTracker = new IndexedTracker();\r\n\t\t\t\tindexedTracker.index = activityIndex.index;\r\n\t\t\t\tindexedTracker.surveyId = activityTrackingContract.surveyId;\r\n\t\t\t\tindexedTracker.tracker = newTracker;\r\n\r\n\t\t\t\tif (!newMap[activityIndex.activity]) {\r\n\t\t\t\t\tnewMap[activityIndex.activity] = [];\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Register the new tracker in our new map\r\n\t\t\t\tnewMap[activityIndex.activity].push(indexedTracker);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (duplicateCounter > 0) {\r\n\t\t\tconst telemetryLogger = this.loggerCallback && this.loggerCallback();\r\n\t\t\tif (telemetryLogger) {\r\n\t\t\t\ttelemetryLogger.log_Error(TelemetryEvent.SurveyActivity.SetActivityTrackingContracts.DuplicateSurveyID,\r\n\t\t\t\t\t\"Duplicate surveyId passed in activityTrackingContracts. Duplicate count: \" + duplicateCounter);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Set the new map in place of the old\r\n\t\tthis.copyObject(this.trackedActivityMap, newMap);\r\n\t}\r\n\r\n\tpublic clearSurveys(): void {\r\n\t\tObject.getOwnPropertyNames(this.trackedActivityMap).forEach((key) => {\r\n\t\t\tdelete this.trackedActivityMap[key];\r\n\t\t});\r\n\t}\r\n\r\n\tpublic saveSessionTrackingActivity(activity: string): void {\r\n\t\t// Set the new activity in place of the old\r\n\t\tpreviousTrackedActivityMap[activity] = this.trackedActivityMap[activity];\r\n\t}\r\n\r\n\t// Get the indexedTracker that corresponds to the SurveyID and return that count. otherwise return 0.\r\n\tpublic getCount(activity: string, surveyId: string): number {\r\n\t\tconst indexedTracker = this.getIndexedTracker(activity, surveyId);\r\n\t\tif (!indexedTracker) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn indexedTracker.tracker.getCount(indexedTracker.index);\r\n\t}\r\n\r\n\tpublic getSessionCount(activity: string, surveyId: string): number {\r\n\t\tconst indexedTracker = this.getIndexedTracker(activity, surveyId);\r\n\t\tif (!indexedTracker) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn indexedTracker.tracker.getSessionCount(indexedTracker.index);\r\n\t}\r\n\r\n\t/**\r\n\t * An atomic get-and-set method. Returns the current SessionCount, resetting it to zero and adding it into the established baseline\r\n\t */\r\n\tpublic moveSessionCountIntoBaseCount(activity: string, surveyId: string): number {\r\n\t\tconst indexedTracker = this.getIndexedTracker(activity, surveyId);\r\n\t\tif (!indexedTracker) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn indexedTracker.tracker.moveSessionCountIntoBaseCount(indexedTracker.index);\r\n\t}\r\n\r\n\tpublic getSurveyIds(activity: string): string[] | undefined {\r\n\t\tif (isNOU(activity)) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tconst indexedTrackers = this.trackedActivityMap[activity];\r\n\t\tif (!indexedTrackers) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tconst surveyIds = indexedTrackers.map((indexedTracker) => indexedTracker.surveyId);\r\n\t\treturn surveyIds;\r\n\t}\r\n\r\n\tpublic setCallback(callback: SurveyActivityListener.IActivityListenerCallback): void {\r\n\t\tthis.callback = callback;\r\n\t}\r\n\r\n\tpublic UpdateActivityTrackingContracts(surveyList: IDictionary): void {\r\n\t\tif (isNOU(surveyList) || Object.keys(surveyList).length === 0) {\r\n\t\t\tthis.clearSurveys();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor (const key in this.trackedActivityMap) {\r\n\t\t\tif (this.trackedActivityMap.hasOwnProperty(key)) {\r\n\t\t\t\tconst tracker: IndexedTracker[] = this.trackedActivityMap[key];\r\n\r\n\t\t\t\t// loop through tracker and remove the ones not associate with given surveys\r\n\t\t\t\tfor (let i = tracker.length - 1; i >= 0; --i) {\r\n\t\t\t\t\tif (surveyList.hasOwnProperty(tracker[i].surveyId)) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttracker.splice(i, 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getIndexedTracker(activity: string, surveyId: string): IndexedTracker | undefined {\r\n\t\tconst indexedTrackers = this.trackedActivityMap[activity];\r\n\r\n\t\tif (!indexedTrackers) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tlet indexedTracker: IndexedTracker | undefined;\r\n\t\tfor (const tracker of indexedTrackers) {\r\n\t\t\tif (tracker.surveyId === surveyId) {\r\n\t\t\t\tindexedTracker = tracker;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn indexedTracker;\r\n\t}\r\n\r\n\tprivate resetQueuedActivities(): void {\r\n\t\tqueuedActivities = [];\r\n\t}\r\n\r\n\tprivate logActivity_private(activityName: string,\r\n\t\tlogType: SurveyActivityListener.LogActionType,\r\n\t\tincrement: number,\r\n\t\ttimestamp: Date,\r\n\t\tcontext: IActivityListener.IActivityContext): void {\r\n\t\tif (this.callback && !this.callback.shouldAcceptActivity(activityName)) {\r\n\t\t\tpendingActivityCount++;\r\n\t\t\tif (queuedActivities.length < SurveyActivityListener.MaxPendingActivitiesQueueSize) {\r\n\t\t\t\tqueuedActivities.push({activityName, logType, increment, timestamp});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Count any activities that are posted before 'FloodgateFirstStart' activity happens\r\n\t\tif (activityName === SurveyActivityListener.FloodgateStartActivityName) {\r\n\t\t\tif (pendingActivityCount > 0) {\r\n\t\t\t\t// Get the activity names of the queued activities for telemetry, send only first 25.\r\n\t\t\t\tconst activityNames = queuedActivities.slice(0, 25).map((queuedActivity) => queuedActivity.activityName);\r\n\r\n\t\t\t\tconst telemetryLogger = this.loggerCallback && this.loggerCallback();\r\n\t\t\t\tif (telemetryLogger) {\r\n\t\t\t\t\t// Sampling this telemetry event to 5%\r\n\t\t\t\t\ttelemetryLogger.log_Event(TelemetryEvent.SurveyActivity.LogActivity.EventsReprocessed,\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tActivityNames: JSON.stringify(activityNames),\r\n\t\t\t\t\t\t\tCount: queuedActivities.length,\r\n\t\t\t\t\t\t\tDropped: pendingActivityCount - queuedActivities.length,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t0.05);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// replay all the queued activities one by one as the floodgate engine has started now\r\n\t\t\t\tqueuedActivities.map((queuedActivity) => this.logActivity_core(\r\n\t\t\t\t\tqueuedActivity.activityName, queuedActivity.logType, queuedActivity.increment, queuedActivity.timestamp, context));\r\n\t\t\t}\r\n\r\n\t\t\tpendingActivityCount = 0;\r\n\t\t\tthis.resetQueuedActivities();\r\n\t\t}\r\n\r\n\t\tthis.logActivity_core(activityName, logType, increment, timestamp, context);\r\n\t}\r\n\r\n\tprivate logActivity_core(activityName: string,\r\n\t\tlogType: SurveyActivityListener.LogActionType,\r\n\t\tincrement: number,\r\n\t\ttimestamp: Date,\r\n\t\tcontext: IActivityListener.IActivityContext): void {\r\n\t\tconst indexedTrackers: IndexedTracker[] = this.trackedActivityMap[activityName];\r\n\t\tif (!indexedTrackers || indexedTrackers.length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet indices: number[] = [];\r\n\r\n\t\t// If we have more than one tracker shuffle trackers to randomize which is evaluated first\r\n\t\tif (indexedTrackers.length > 1) {\r\n\t\t\tindices = new Array(indexedTrackers.length);\r\n\t\t\tfor (let i = 0; i < indices.length; i++) {\r\n\t\t\t\tindices[i] = i;\r\n\t\t\t}\r\n\t\t\tindices = fyShuffle(indices); // shuffle and reassign\r\n\t\t} else {\r\n\t\t\tindices.push(0); // just have a zero. Shuffling is not needed.\r\n\t\t}\r\n\r\n\t\t// Loop through trackers in shuffled order\r\n\t\tfor (const index of indices) {\r\n\t\t\tconst tracker: IndexedTracker = indexedTrackers[index];\r\n\t\t\tswitch (logType) {\r\n\t\t\t\tcase SurveyActivityListener.LogActionType.StartTime: {\r\n\t\t\t\t\ttracker.tracker.startTime(tracker.index, timestamp);\r\n\t\t\t\t\tcontinue; // Look at the next tracker. Increment not needed.\r\n\t\t\t\t}\r\n\t\t\t\tcase SurveyActivityListener.LogActionType.StopTime: {\r\n\t\t\t\t\tincrement = tracker.tracker.stopTime(tracker.index, timestamp);\r\n\t\t\t\t\t// fall through to increment the activity as well.\r\n\t\t\t\t}\r\n\t\t\t\tcase SurveyActivityListener.LogActionType.Increment: {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tdefault: {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (context) {\r\n\t\t\t\tconst trackerSurveyId = tracker.surveyId;\r\n\t\t\t\tthis.activityContext[trackerSurveyId] = this.activityContext[trackerSurveyId] || [];\r\n\t\t\t\tthis.activityContext[trackerSurveyId].push({ activityName, context });\r\n\t\t\t}\r\n\r\n\t\t\tconst result: ActivityTracker.IncrementResult = tracker.tracker.incrementActivity(tracker.index, increment);\r\n\t\t\tif (result === ActivityTracker.IncrementResult.AllActivitiesActivated) {\r\n\t\t\t\t// Check the activated surveys list to ensure whether any previous survey is still in process\r\n\t\t\t\t// If not, the length should be 1 and call to execute this survey right away\r\n\t\t\t\t// This should only happen if calling to Governance Service, due to the call is asynchronous\r\n\t\t\t\tthis.executeCallback(tracker.surveyId);\r\n\t\t\t\tbreak;\r\n\t\t\t\t/* Breaking here to let one and only one callback to be made from a logActivity call.\r\n\t\t\t\tThis ensures only one survey can fully 'trigger' for a logActivity call. Others that would also\r\n\t\t\t\thave triggered must wait until the next call to trigger (without there being a cooldown, of course).\r\n\t\t\t\t*/\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate executeCallback(surveyId: string): void {\r\n\t\tthis.callback.run(surveyId, this.activityContext[surveyId]);\r\n\t}\r\n\r\n\tprivate copyObject(target: {}, source: {}) {\r\n\t\tObject.keys(source).forEach((key) => {\r\n\t\t\ttarget[key] = source[key];\r\n\t\t});\r\n\t}\r\n}\r\n\r\nmodule SurveyActivityListener {\r\n\texport interface IActivityListenerCallback {\r\n\t\trun(surveyId: string, contextData: IContextData[]): void;\r\n\t\tshouldAcceptActivity(activityName: string): boolean;\r\n\t}\r\n\r\n\texport const enum LogActionType {\r\n\t\tIncrement,\r\n\t\tStartTime,\r\n\t\tStopTime,\r\n\t}\r\n\r\n\texport interface IQueuedActivityParams {\r\n\t\tactivityName: string;\r\n\t\tlogType: SurveyActivityListener.LogActionType;\r\n\t\tincrement: number;\r\n\t\ttimestamp: Date;\r\n\t}\r\n}\r\n\r\nexport = SurveyActivityListener;\r\n","import { IFloodgateSetting } from \"../Api/IFloodgateSetting\";\r\nimport { IFloodgateSettingStorageCallback } from \"../Api/IFloodgateSettingStorageCallback\";\r\nimport * as IFloodgateStorageProvider from \"../Api/IFloodgateStorageProvider\";\r\nimport { TelemetryEvent } from \"../Constants\";\r\nimport { FloodgateEngine } from \"../FloodgateEngine\";\r\nimport * as StateProviderHelpers from \"../StateProviderHelpers\";\r\nimport * as Utils from \"../Utils\";\r\nimport FileType = IFloodgateStorageProvider.FileType;\r\nimport StateListType = StateProviderHelpers.StateListType;\r\n\r\nconst { getDistantPast, isBoolean, isDate, isNOU, isString, isUtcDatetimeString, stringToDate } = Utils;\r\n\r\nexport class CampaignState {\r\n\t/**\r\n\t * Method to deserialize a JSON object to class object\r\n\t * @param input: JSON object\r\n\t * Returns class object\r\n\t */\r\n\tpublic static deserialize(input: any): CampaignState {\r\n\t\tlet result: CampaignState;\r\n\r\n\t\tif (!input) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tresult = new CampaignState(\r\n\t\t\t\tinput.CampaignId,\r\n\t\t\t\tinput.LastNominationTimeUtc,\r\n\t\t\t\tinput.LastNominationBuildNumber,\r\n\t\t\t\tinput.DeleteAfterSecondsWhenStale,\r\n\t\t\t\tfalse, // ForceCandidacy\r\n\t\t\t\tinput.IsCandidate,\r\n\t\t\t\tinput.DidCandidateTriggerSurvey,\r\n\t\t\t\tinput.LastSurveyActivatedTimeUtc,\r\n\t\t\t\tinput.LastSurveyId,\r\n\t\t\t\tinput.LastSurveyStartTimeUtc,\r\n\t\t\t\tinput.LastSurveyExpirationTimeUtc,\r\n\t\t\t\tinput.LastCooldownEndTimeUtc,\r\n\t\t\t);\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(TelemetryEvent.CampaignState.Deserialize.Failed, { ErrorMessage: e.toString() });\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// The Campaign to which this state corresponds\r\n\t// @SerializedName(\"CampaignId\")\r\n\tpublic CampaignId: string;\r\n\r\n\t// The last time the candidacy was evaluated\r\n\t// @SerializedName(\"LastNominationTimeUtc\")\r\n\tpublic LastNominationTimeUtc: Date;\r\n\r\n\t// The build number from the last time the candidacy was evaluated\r\n\t// @SerializedName(\"LastNominationBuildNumber\")\r\n\tpublic LastNominationBuildNumber: string;\r\n\r\n\t// Amount of time to delay cleanup of this state from storage, when it's campaign definition is no longer present\r\n\t// @SerializedName(\"DeleteAfterSecondsWhenStale\")\r\n\tpublic DeleteAfterSecondsWhenStale: number;\r\n\r\n\t// Manual setting that can be used to force this client to be a candidate for this campaign. Not persisted to the file.\r\n\tpublic ForceCandidacy: boolean;\r\n\r\n\t// Whether or not the user is currently a candidate or anti-candidate\r\n\t// @SerializedName(\"IsCandidate\")\r\n\tpublic IsCandidate: boolean;\r\n\r\n\t// Whether or not the user triggered a survey when they are a Candidate.\r\n\t// If isCandidate is false, then this value is meaningless.\r\n\t// If isCandidate is true, then this is used to pick a different campaign cooldown time\r\n\t// @SerializedName(\"DidCandidateTriggerSurvey\")\r\n\tpublic DidCandidateTriggerSurvey: boolean;\r\n\r\n\t// The date the last survey was activated\r\n\t// @SerializedName(\"LastSurveyActivatedTimeUtc\")\r\n\tpublic LastSurveyActivatedTimeUtc: Date;\r\n\r\n\t// region Properties of the most recently generated survey.\u0010\r\n\r\n\t// When isCandidate == true for the current election time, this is used to regenerate the same Survey definition\r\n\t// each time we are invoked\r\n\t// Consider: Putting this in its own subclass\r\n\r\n\t// The surveyId for the most recently generated survey in this campaign (can differ from campaignId, and is\r\n\t// used to guarantee a given survey is shown once)\r\n\t// @SerializedName(\"LastSurveyId\")\r\n\tpublic LastSurveyId: string;\r\n\r\n\t// The start time of the most recently generated survey\r\n\t// @SerializedName(\"LastSurveyStartTimeUtc\")\r\n\tpublic LastSurveyStartTimeUtc: Date;\r\n\r\n\t// The expiration time of the most recently generated survey\r\n\t// @SerializedName(\"LastSurveyExpirationTimeUtc\")\r\n\tpublic LastSurveyExpirationTimeUtc: Date;\r\n\r\n\t// The cooldown end time of the most recently generated survey\r\n\t// @SerializedName(\"LastCooldownEndTimeUtc\")\r\n\tpublic LastCooldownEndTimeUtc: Date;\r\n\r\n\tpublic constructor(campaignId: string, lastNominationTime: Date, lastNominationBuildNumber: string, deleteAfterSecondsWhenStale: number,\r\n\t\tForceCandidacy: boolean, isCandidate: boolean, didCandidateTriggerSurvey: boolean, lastSurveyActivatedTime: Date,\r\n\t\tlastSurveyId: string, lastSurveyStartTime: Date, lastSurveyExpirationTime: Date, lastCooldownEndTimeUtc: Date) {\r\n\t\tthis.CampaignId = campaignId;\r\n\t\tthis.LastNominationTimeUtc = lastNominationTime;\r\n\t\tthis.LastNominationBuildNumber = lastNominationBuildNumber;\r\n\t\tthis.DeleteAfterSecondsWhenStale = deleteAfterSecondsWhenStale;\r\n\t\tthis.ForceCandidacy = ForceCandidacy;\r\n\t\tthis.IsCandidate = isCandidate;\r\n\t\tthis.DidCandidateTriggerSurvey = didCandidateTriggerSurvey;\r\n\t\tthis.LastSurveyActivatedTimeUtc = lastSurveyActivatedTime;\r\n\t\tthis.LastSurveyId = lastSurveyId;\r\n\t\tthis.LastSurveyStartTimeUtc = lastSurveyStartTime;\r\n\t\tthis.LastSurveyExpirationTimeUtc = lastSurveyExpirationTime;\r\n\t\tthis.LastCooldownEndTimeUtc = lastCooldownEndTimeUtc;\r\n\r\n\t\tif (!this.validate()) {\r\n\t\t\tthrow new Error(\"Constructor arguments are not valid\");\r\n\t\t}\r\n\t}\r\n\r\n\tpublic validate(): boolean {\r\n\t\tif (!this.CampaignId || !isString(this.CampaignId)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.LastNominationBuildNumber)\r\n\t\t\t|| !isString(this.LastNominationBuildNumber)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!Utils.isNumber(this.DeleteAfterSecondsWhenStale) || this.DeleteAfterSecondsWhenStale < 0) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!isBoolean(this.IsCandidate) || !isBoolean(this.DidCandidateTriggerSurvey)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this.IsCandidate) {\r\n\t\t\t// Disallow the following null's if isCandidate == true\r\n\t\t\tif (isNOU(this.LastSurveyStartTimeUtc) || isNOU(this.LastSurveyExpirationTimeUtc)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\t// LastSurveyId could be \"\"\r\n\t\t\tif (!isString(this.LastSurveyId)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.DidCandidateTriggerSurvey) {\r\n\t\t\t// Disallow the following null's if didCandidateTriggerSurvey == true\r\n\t\t\tif (isNOU(this.LastSurveyActivatedTimeUtc)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNOU(this.LastSurveyId)) {\r\n\t\t\tthis.LastSurveyId = \"\";\r\n\t\t} else if (!isString(this.LastSurveyId)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// LastNominationTime does not allow null\r\n\t\tif (isUtcDatetimeString(this.LastNominationTimeUtc)) {\r\n\t\t\tthis.LastNominationTimeUtc = stringToDate(this.LastNominationTimeUtc);\r\n\t\t// invalidate if it's not a Date object\r\n\t\t} else if (!isDate(this.LastNominationTimeUtc)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Set value to distance past if value not provided\r\n\t\tif (isNOU(this.LastSurveyActivatedTimeUtc)) {\r\n\t\t\tthis.LastSurveyActivatedTimeUtc = getDistantPast();\r\n\t\t// check if it's UTC date time string, possibly coming from deserialize method\r\n\t\t} else if (isUtcDatetimeString(this.LastSurveyActivatedTimeUtc)) {\r\n\t\t\tthis.LastSurveyActivatedTimeUtc = stringToDate(this.LastSurveyActivatedTimeUtc);\r\n\t\t// invalidate if it's not a Date object\r\n\t\t} else if (!isDate(this.LastSurveyActivatedTimeUtc)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Set value to distance past if value not provided\r\n\t\tif (isNOU(this.LastSurveyStartTimeUtc)) {\r\n\t\t\tthis.LastSurveyStartTimeUtc = getDistantPast();\r\n\t\t// check if it's string, possibly coming from deserialize method\r\n\t\t} else if (isUtcDatetimeString(this.LastSurveyStartTimeUtc)) {\r\n\t\t\tthis.LastSurveyStartTimeUtc = stringToDate(this.LastSurveyStartTimeUtc);\r\n\t\t// invalidate if it's not a Date object\r\n\t\t} else if (!isDate(this.LastSurveyStartTimeUtc)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Set value to distance past if value not provided\r\n\t\tif (isNOU(this.LastSurveyExpirationTimeUtc)) {\r\n\t\t\tthis.LastSurveyExpirationTimeUtc = getDistantPast();\r\n\t\t// check if it's string, possibly coming from deserialize method\r\n\t\t} else if (isUtcDatetimeString(this.LastSurveyExpirationTimeUtc)) {\r\n\t\t\tthis.LastSurveyExpirationTimeUtc = stringToDate(this.LastSurveyExpirationTimeUtc);\r\n\t\t} else if (!isDate(this.LastSurveyExpirationTimeUtc)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Set value to distance past if value not provided\r\n\t\tif (isNOU(this.LastCooldownEndTimeUtc)) {\r\n\t\t\tthis.LastCooldownEndTimeUtc = getDistantPast();\r\n\t\t// check if it's string, possibly coming from deserialize method\r\n\t\t} else if (isUtcDatetimeString(this.LastCooldownEndTimeUtc)) {\r\n\t\t\tthis.LastCooldownEndTimeUtc = stringToDate(this.LastCooldownEndTimeUtc);\r\n\t\t} else if (!isDate(this.LastCooldownEndTimeUtc)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Record that the current survey was taken on this date\r\n\t *\r\n\t * @param date date\r\n\t * @param cooldownSeconds number\r\n\t */\r\n\tpublic markCurrentSurveyTakenOnDate(date: Date, cooldownSeconds: number, isSurveyComplete: boolean): void {\r\n\t\tthis.DidCandidateTriggerSurvey = isSurveyComplete;\r\n\t\tthis.LastSurveyActivatedTimeUtc = date != null ? date : new Date();\r\n\t\tthis.LastCooldownEndTimeUtc = Utils.addSecondsWithoutOverflow(this.LastSurveyActivatedTimeUtc, cooldownSeconds);\r\n\t}\r\n\r\n\tpublic getCooldownStartDate(): Date {\r\n\t\tif (!this.IsCandidate) {\r\n\t\t\treturn this.LastNominationTimeUtc;\r\n\t\t}\r\n\r\n\t\tif (this.DidCandidateTriggerSurvey) {\r\n\t\t\treturn this.LastSurveyActivatedTimeUtc;\r\n\t\t}\r\n\r\n\t\t// In practice this wil be equal to lastNominationTime, but\r\n\t\t// distribution models like a ramp effectively cause us to\r\n\t\t// shift our \"effective nomination date\" forward with the survey start date\r\n\t\treturn this.LastSurveyStartTimeUtc;\r\n\t}\r\n\r\n\t// endregion\r\n}\r\n\r\nexport interface ICampaignStateProvider {\r\n\tload(): CampaignState[];\r\n\r\n\tsave(campaignStates: CampaignState[]): void;\r\n}\r\n\r\nexport class CampaignStateProviderFactory {\r\n\tpublic static make(fileBasedStorage: IFloodgateStorageProvider,\r\n\t\thostBasedStorage: IFloodgateSettingStorageCallback): ICampaignStateProvider {\r\n\t\tif (hostBasedStorage) {\r\n\t\t\treturn new HostBasedCampaignStateProvider(fileBasedStorage, hostBasedStorage);\r\n\t\t}\r\n\r\n\t\treturn new FileBasedCampaignStateProvider(fileBasedStorage);\r\n\t}\r\n}\r\n\r\n/**\r\n * Class representing what is stored in the file.\r\n */\r\nclass FileData {\r\n\t// @SerializedName(\"CampaignStates\")\r\n\tpublic CampaignStates: CampaignState[];\r\n\r\n}\r\n\r\nexport class HostBasedCampaignStateProvider implements ICampaignStateProvider {\r\n\tprivate fileBasedStateProvider: ICampaignStateProvider;\r\n\tprivate hostBasedStorage: IFloodgateSettingStorageCallback;\r\n\r\n\tpublic constructor(fileBasedStorage: IFloodgateStorageProvider, hostBasedStorage: IFloodgateSettingStorageCallback) {\r\n\t\tif (!hostBasedStorage) {\r\n\t\t\tthrow new Error(\"host-based storage must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.hostBasedStorage = hostBasedStorage;\r\n\r\n\t\t// file-based provider is optional\r\n\t\tif (fileBasedStorage) {\r\n\t\t\tthis.fileBasedStateProvider = new FileBasedCampaignStateProvider(fileBasedStorage);\r\n\t\t}\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic load(): CampaignState[] {\r\n\t\tconst statesFromHost: CampaignState[] = this.getStatesFromHost();\r\n\r\n\t\tlet statesFromFile: CampaignState[];\r\n\t\tif (this.fileBasedStateProvider) {\r\n\t\t\tstatesFromFile = this.fileBasedStateProvider.load();\r\n\t\t}\r\n\r\n\t\tconst StateCollections = StateProviderHelpers.MergeAndUpdateCampaignStates(statesFromFile, statesFromHost);\r\n\t\treturn StateCollections.find(StateListType.Merged);\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic save(campaignStates: CampaignState[]): void {\r\n\t\tif (!campaignStates) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst statesFromHost: CampaignState[] = this.getStatesFromHost();\r\n\t\tconst StateCollections = StateProviderHelpers.MergeAndUpdateCampaignStates(campaignStates, statesFromHost);\r\n\t\tconst toBeUpdatedStates: CampaignState[] = StateCollections.find(StateListType.ToBeUpdated);\r\n\t\tconst mergedStates: CampaignState[] = StateCollections.find(StateListType.Merged);\r\n\r\n\t\t// write delta_data to host\r\n\t\tif (toBeUpdatedStates) {\r\n\t\t\ttoBeUpdatedStates.forEach((state) => {\r\n\t\t\t\tconst stateValue: string = StateProviderHelpers.makeSettingItemValue(JSON.stringify(state));\r\n\t\t\t\tthis.hostBasedStorage.upsertSettingItem(FileType[FileType.CampaignStates], state.CampaignId, stateValue);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Write merged data to File\r\n\t\tif (this.fileBasedStateProvider) {\r\n\t\t\tthis.fileBasedStateProvider.save(mergedStates);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getStatesFromHost(): CampaignState[] {\r\n\t\tconst states: CampaignState[] = [];\r\n\t\tconst settings: IFloodgateSetting = this.hostBasedStorage.readSettingList(FileType[FileType.CampaignStates]);\r\n\r\n\t\tfor (const key in settings) {\r\n\t\t\tif (!settings.hasOwnProperty(key)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst value = settings[key];\r\n\t\t\tconst dataString: string = StateProviderHelpers.extractSettingItemValueSubString(value);\r\n\r\n\t\t\tlet itemObject: any = {};\r\n\t\t\ttry {\r\n\t\t\t\titemObject = JSON.parse(dataString);\r\n\r\n\t\t\t\tconst newState: CampaignState = CampaignState.deserialize(itemObject);\r\n\t\t\t\tif (newState) {\r\n\t\t\t\t\tstates.push(newState);\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\t\tTelemetryEvent.HostBasedCampaignStateProvider.GetStatesFromHost.Failed,\r\n\t\t\t\t\t{ ErrorMessage: \"Json parsing/deserializing failed. \" + e.toString() + \". Input:\" + dataString });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn states;\r\n\t}\r\n}\r\n\r\nexport class FileBasedCampaignStateProvider implements ICampaignStateProvider {\r\n\tprivate storage: IFloodgateStorageProvider;\r\n\r\n\tpublic constructor(storage: IFloodgateStorageProvider) {\r\n\t\tif (!storage) {\r\n\t\t\tthrow new Error(\"storage must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.storage = storage;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic load(): CampaignState[] {\r\n\t\tconst readString: string = this.storage.read(FileType.CampaignStates);\r\n\t\tif (!readString) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet fileData: FileData;\r\n\t\ttry {\r\n\t\t\tfileData = JSON.parse(readString);\r\n\r\n\t\t\tconst result: CampaignState[] = [];\r\n\t\t\tif (fileData && fileData.CampaignStates) {\r\n\t\t\t\tfileData.CampaignStates.forEach((state) => {\r\n\t\t\t\t\tconst newState: CampaignState = CampaignState.deserialize(state);\r\n\r\n\t\t\t\t\tif (newState) {\r\n\t\t\t\t\t\tresult.push(newState);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.FileBasedCampaignStateProvider.Load.Failed,\r\n\t\t\t\t{ ErrorMessage: \"Json parsing/deserializing failed. \" + e.toString() + \". Input:\" + readString });\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic save(campaignStates: CampaignState[]): void {\r\n\t\tif (!campaignStates) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst fileData = new FileData();\r\n\t\tfileData.CampaignStates = campaignStates;\r\n\t\tconst writeString: string = JSON.stringify(fileData);\r\n\t\tthis.storage.write(FileType.CampaignStates, writeString);\r\n\t}\r\n}\r\n","import { IFloodgateSetting } from \"./Api/IFloodgateSetting\";\r\nimport { IFloodgateSettingStorageCallback } from \"./Api/IFloodgateSettingStorageCallback\";\r\nimport * as IFloodgateStorageProvider from \"./Api/IFloodgateStorageProvider\";\r\nimport FileType = IFloodgateStorageProvider.FileType;\r\nimport * as ISurvey from \"./Api/ISurvey\";\r\nimport { IDictionary, ISerializable } from \"./Common\";\r\nimport { TelemetryEvent } from \"./Constants\";\r\nimport { FloodgateEngine } from \"./FloodgateEngine\";\r\nimport * as StateProviderHelpers from \"./StateProviderHelpers\";\r\nimport { SurveyStatCollection } from \"./SurveyStatCollection\";\r\nimport * as Utils from \"./Utils\";\r\n\r\n/**\r\n * StatCollection for activated surveys. Should be used to track the SurveyIds\r\n * that have been recently shown to a user\r\n */\r\n// TODO (gachoi) Check if this applies - VSOBug: 1443010 One bad Stat object fails the entire serialization\r\nexport class SurveyStatCollectionActivation extends SurveyStatCollection implements ISerializable {\r\n\t/**\r\n\t * Load from Json\r\n\t */\r\n\tpublic static fromJson(json: string): SurveyStatCollectionActivation {\r\n\t\tconst statCollection = new SurveyStatCollectionActivation();\r\n\r\n\t\tif (!json) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.SurveyStatCollectionActivation.FromJson.Failed, { ErrorMessage: \"Input json is null or empty.\" });\r\n\t\t\treturn statCollection;\r\n\t\t}\r\n\r\n\t\tlet readStats: SurveyStatCollectionActivation;\r\n\t\ttry {\r\n\t\t\treadStats = JSON.parse(json);\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.SurveyStatCollectionActivation.FromJson.Failed, { ErrorMessage: \"Json parsing failed. \" + e.toString() });\r\n\t\t\treturn statCollection;\r\n\t\t}\r\n\r\n\t\tif (!statCollection.deserialize(readStats)) {\r\n\t\t\treturn new SurveyStatCollectionActivation();\r\n\t\t}\r\n\r\n\t\treturn statCollection;\r\n\t}\r\n\r\n\t/**\r\n\t * Convert to Json\r\n\t */\r\n\tpublic static toJson(object: SurveyStatCollectionActivation): string {\r\n\t\tif (!object) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.SurveyStatCollectionActivation.ToJson.Failed, { ErrorMessage: \"Input json is null or empty.\" });\r\n\t\t\tobject = new SurveyStatCollectionActivation();\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(object);\r\n\t}\r\n\r\n\t/**\r\n\t * Add another SurveyStatCollectionActivation object\r\n\t */\r\n\tpublic accumulate(other: SurveyStatCollectionActivation): void {\r\n\t\tif (!other) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst stats: IDictionary = other.getStats();\r\n\t\t// SurveyActivationStats accumulation simply overwrites any keys from 'other' into our collection\r\n\t\tfor (const key in stats) {\r\n\t\t\tif (stats.hasOwnProperty(key)) {\r\n\t\t\t\tthis.addStats(key, stats[key]);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method to deserialize SurveyStatCollectionActivation\r\n\t * @param input: collection of SurveyStatCollectionActivation\r\n\t * Returns result of validation check\r\n\t */\r\n\tpublic deserialize(input: any): boolean {\r\n\t\tconst rawStats: IDictionary = input.Surveys;\r\n\t\tconst now = new Date();\r\n\r\n\t\tfor (const key in rawStats) {\r\n\t\t\tif (rawStats.hasOwnProperty(key)) {\r\n\t\t\t\tconst newStat = new SurveyActivationStats();\r\n\r\n\t\t\t\tif (newStat.deserialize(rawStats[key]) && newStat.ExpirationTimeUtc > now) {\r\n\t\t\t\t\tthis.addStats(key, newStat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Validate the Surveys\r\n\t * Returns false if validation fails\r\n\t */\r\n\tpublic validate(): boolean {\r\n\t\treturn Utils.isObject(this.getStats());\r\n\t}\r\n}\r\n\r\nexport interface ISurveyActivationStatsProvider {\r\n\tload(): SurveyStatCollectionActivation;\r\n\r\n\tsave(surveyStatCollectionActivation: SurveyStatCollectionActivation): void;\r\n}\r\n\r\nexport class SurveyActivationStatsProviderFactory {\r\n\tpublic static make(fileBasedStorage: IFloodgateStorageProvider,\r\n\t\thostBasedStorage: IFloodgateSettingStorageCallback): ISurveyActivationStatsProvider {\r\n\t\tif (hostBasedStorage) {\r\n\t\t\treturn new HostBasedSurveyActivationStatsProvider(fileBasedStorage, hostBasedStorage);\r\n\t\t}\r\n\r\n\t\treturn new FileBasedSurveyActivationStatsProvider(fileBasedStorage);\r\n\t}\r\n}\r\n\r\nexport class HostBasedSurveyActivationStatsProvider implements ISurveyActivationStatsProvider {\r\n\tprivate fileBasedStorageProvider: FileBasedSurveyActivationStatsProvider;\r\n\tprivate hostBasedStorage: IFloodgateSettingStorageCallback;\r\n\r\n\tpublic constructor(fileBasedStorageProvider: IFloodgateStorageProvider, hostBasedStorage: IFloodgateSettingStorageCallback) {\r\n\t\tif (!hostBasedStorage) {\r\n\t\t\tthrow new Error(\"host-based storage must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.hostBasedStorage = hostBasedStorage;\r\n\r\n\t\t// file based provider is optional\r\n\t\tif (fileBasedStorageProvider) {\r\n\t\t\tthis.fileBasedStorageProvider = new FileBasedSurveyActivationStatsProvider(fileBasedStorageProvider);\r\n\t\t}\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic load(): SurveyStatCollectionActivation {\r\n\t\tconst surveyStatsFromHost: SurveyStatCollectionActivation = this.getSurveyStatsFromHost();\r\n\r\n\t\tlet surveyStatsFromFile: SurveyStatCollectionActivation = new SurveyStatCollectionActivation();\r\n\t\tif (this.fileBasedStorageProvider) {\r\n\t\t\tsurveyStatsFromFile = this.fileBasedStorageProvider.load();\r\n\t\t}\r\n\r\n\t\tconst surveyStatsCollections = StateProviderHelpers.MergeAndUpdateSurveyActivationStats(surveyStatsFromFile, surveyStatsFromHost);\r\n\t\treturn surveyStatsCollections.find(StateProviderHelpers.StateListType.Merged);\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic save(stats: SurveyStatCollectionActivation): void {\r\n\t\tif (!stats) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst statsFromHost: SurveyStatCollectionActivation = this.getSurveyStatsFromHost();\r\n\t\tconst statCollection = StateProviderHelpers.MergeAndUpdateSurveyActivationStats(stats, statsFromHost);\r\n\t\tconst toBeUpdatedStats: SurveyStatCollectionActivation = statCollection.find(StateProviderHelpers.StateListType.ToBeUpdated);\r\n\t\tconst mergedStates: SurveyStatCollectionActivation = statCollection.find(StateProviderHelpers.StateListType.Merged);\r\n\r\n\t\t// write delta_data to Roaming\r\n\t\tif (toBeUpdatedStats) {\r\n\t\t\tconst toBeUpdatedStatsDictionary: IDictionary = toBeUpdatedStats.getStats();\r\n\t\t\tfor (const surveyId in toBeUpdatedStatsDictionary) {\r\n\t\t\t\tif (toBeUpdatedStatsDictionary.hasOwnProperty(surveyId)) {\r\n\t\t\t\t\tconst item: string = StateProviderHelpers.makeSettingItemValue(\r\n\t\t\t\t\t\tJSON.stringify(toBeUpdatedStatsDictionary[surveyId]));\r\n\r\n\t\t\t\t\tthis.hostBasedStorage.upsertSettingItem(FileType[FileType.SurveyActivationStats],\r\n\t\t\t\t\t\tsurveyId, item);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Write merged data to File\r\n\t\tif (this.fileBasedStorageProvider) {\r\n\t\t\tthis.fileBasedStorageProvider.save(mergedStates);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getSurveyStatsFromHost(): SurveyStatCollectionActivation {\r\n\t\tconst statsCollection: SurveyStatCollectionActivation = new SurveyStatCollectionActivation();\r\n\t\tconst itemData: IFloodgateSetting = this.hostBasedStorage.readSettingList(FileType[FileType.SurveyActivationStats]);\r\n\r\n\t\tconst now = new Date();\r\n\t\tfor (const surveyId in itemData) {\r\n\t\t\tif (!itemData.hasOwnProperty(surveyId)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst dataString: string = StateProviderHelpers.extractSettingItemValueSubString(itemData[surveyId]);\r\n\t\t\tconst newStats: SurveyActivationStats = new SurveyActivationStats();\r\n\t\t\ttry {\r\n\t\t\t\tconst readStats: SurveyActivationStats = JSON.parse(dataString);\r\n\t\t\t\tnewStats.deserialize(readStats);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\t\tTelemetryEvent.HostBasedSurveyActivationStatsProvider.GetSurveyStatsFromHost.Failed,\r\n\t\t\t\t\t{ ErrorMessage: \"Json parsing/deserializing failed. \" + e.toString() + \". Input:\" + dataString });\r\n\t\t\t}\r\n\r\n\t\t\tif (newStats.ExpirationTimeUtc <= now) {\r\n\t\t\t\t// Delete survey stat from host storage if it's expired.\r\n\t\t\t\tthis.hostBasedStorage.deleteSettingItem(FileType[FileType.SurveyActivationStats], surveyId);\r\n\t\t\t} else {\r\n\t\t\t\tstatsCollection.addStats(surveyId, newStats);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn statsCollection;\r\n\t}\r\n}\r\nexport class FileBasedSurveyActivationStatsProvider implements ISurveyActivationStatsProvider {\r\n\tprivate storage: IFloodgateStorageProvider;\r\n\r\n\tpublic constructor(storage: IFloodgateStorageProvider) {\r\n\t\tif (!storage) {\r\n\t\t\tthrow new Error(\"storage must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.storage = storage;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic load(): SurveyStatCollectionActivation {\r\n\t\tconst readString: string = this.storage.read(IFloodgateStorageProvider.FileType.SurveyActivationStats);\r\n\t\tif (!readString) {\r\n\t\t\treturn new SurveyStatCollectionActivation();\r\n\t\t}\r\n\r\n\t\treturn SurveyStatCollectionActivation.fromJson(readString);\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic save(surveyStatCollectionActivation: SurveyStatCollectionActivation): void {\r\n\t\tif (!surveyStatCollectionActivation) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst writeString: string = SurveyStatCollectionActivation.toJson(surveyStatCollectionActivation);\r\n\t\tthis.storage.write(IFloodgateStorageProvider.FileType.SurveyActivationStats, writeString);\r\n\t}\r\n}\r\n\r\nexport class SurveyActivationStats implements ISerializable {\r\n\t// The following property names match JSON property names for proper serialization/deserialization\r\n\tpublic ExpirationTimeUtc: Date;\r\n\tpublic ActivationTimeUtc: Date;\r\n\tpublic Type: ISurvey.Type;\r\n\tpublic SurveyLaunchCount = 0;\r\n\tpublic SurveyLaunchCountPerSession = 0;\r\n\r\n\t/**\r\n\t * Method to deserialize a JSON object to class object\r\n\t * @param input: JSON object\r\n\t * Returns result of validation check\r\n\t */\r\n\tpublic deserialize(input: any): boolean {\r\n\t\tthis.ActivationTimeUtc = input.ActivationTimeUtc;\r\n\t\tthis.ExpirationTimeUtc = input.ExpirationTimeUtc;\r\n\t\tthis.Type = input.Type;\r\n\t\tthis.SurveyLaunchCount = input.SurveyLaunchCount ?? 0;\r\n\t\tthis.SurveyLaunchCountPerSession = input.SurveyLaunchCountPerSession ?? 0;\r\n\r\n\t\treturn this.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Method to call after deserialization to validate generated object.\r\n\t * Returns false if not valid.\r\n\t */\r\n\tpublic validate(): boolean {\r\n\t\t// make it a date object if it's a valid UTC date time value\r\n\t\tif (Utils.isUtcDatetimeString(this.ActivationTimeUtc)) {\r\n\t\t\tthis.ActivationTimeUtc = Utils.stringToDate(this.ActivationTimeUtc);\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// make it a date object if it's a valid UTC date time value\r\n\t\tif (Utils.isUtcDatetimeString(this.ExpirationTimeUtc)) {\r\n\t\t\tthis.ExpirationTimeUtc = Utils.stringToDate(this.ExpirationTimeUtc);\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!Utils.isNumber(this.SurveyLaunchCount) ||\r\n\t\t\t!Utils.isNumber(this.SurveyLaunchCountPerSession)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn Utils.isEnumValue(this.Type, ISurvey.Type);\r\n\t}\r\n}\r\n","import { IDictionary } from \"./Common\";\r\n\r\n/**\r\n * Generic class for managing a collection of survey stats. Includes read-from/write-to json structures or a file,\r\n * as well as merge routines for combining collections\r\n */\r\nexport abstract class SurveyStatCollection {\r\n\t// The following property name matches the JSON root key name for proper serialization/ deserialization\r\n\tprivate Surveys: IDictionary = {};\r\n\r\n\tpublic constructor() {\r\n\t\tthis.Surveys = {};\r\n\t}\r\n\r\n\t/**\r\n\t * Add stats. Overwrites if already exists.\r\n\t */\r\n\tpublic addStats(surveyId: string, stats: TStats): void {\r\n\t\tthis.Surveys[surveyId] = stats;\r\n\t}\r\n\r\n\t/**\r\n\t * Get a SurveyActivationStats object by surveyId. Returns null if surveyId is not found\r\n\t */\r\n\tpublic getBySurveyId(surveyId: string): TStats {\r\n\t\treturn (this.Surveys[surveyId]);\r\n\t}\r\n\r\n\t/**\r\n\t * Get all stats available\r\n\t */\r\n\tpublic getStats(): IDictionary {\r\n\t\treturn this.Surveys;\r\n\t}\r\n}\r\n","import { ICVSurveyComponent } from \"src/Api/Api\";\r\nimport * as ISurveyComponent from \"../Api/ISurveyComponent\";\r\n\r\nclass CVSurveyComponent implements ICVSurveyComponent {\r\n\tpublic static make(data: CVSurveyComponent.CVSurveyComponentData): ICVSurveyComponent {\r\n\t\ttry {\r\n\t\t\treturn new CVSurveyComponent(data);\r\n\t\t} catch (e) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate data: CVSurveyComponent.CVSurveyComponentData;\r\n\r\n\tpublic constructor(data: CVSurveyComponent.CVSurveyComponentData) {\r\n\t\tif (!data) {\r\n\t\t\tthrow new Error(\"data must not be null\");\r\n\t\t}\r\n\t\tif (!data.customerVoiceFormId) {\r\n\t\t\tthrow new Error(\"data.formID must not be null or empty\");\r\n\t\t}\r\n\r\n\t\tthis.data = data;\r\n\t}\r\n\r\n\tpublic getType(): ISurveyComponent.Type {\r\n\t\treturn ISurveyComponent.Type.CVSurvey;\r\n\t}\r\n\r\n\tpublic getFormId(): string {\r\n\t\treturn this.data.customerVoiceFormId;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getDomElements(doc: Document): Element[] {\r\n\t\tif (!doc) {\r\n\t\t\tthrow new Error(\"Document must not be null\");\r\n\t\t}\r\n\t\tconst element: Element = doc.createElement(ISurveyComponent.DOM_CVSURVEY_TAGNAME);\r\n\t\treturn [element];\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getJsonElements(): object {\r\n\t\tconst result: object = {};\r\n\r\n\t\tresult[ISurveyComponent.JSON_CVSURVEY_KEYNAME] = this.getFormId();\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic getComponentJson(): object {\r\n\t\treturn {\r\n\t\t\t[ISurveyComponent.JSON_CVSURVEYFORMID_KEYNAME]: this.getFormId(),\r\n\t\t};\r\n\t}\r\n}\r\n\r\nmodule CVSurveyComponent {\r\n\texport class CVSurveyComponentData {\r\n\t\tpublic customerVoiceFormId: string;\r\n\t}\r\n}\r\n\r\nexport = CVSurveyComponent;\r\n","import { IFloodgateSetting } from \"./Api/IFloodgateSetting\";\r\nimport { IFloodgateSettingStorageCallback } from \"./Api/IFloodgateSettingStorageCallback\";\r\nimport * as IFloodgateStorageProvider from \"./Api/IFloodgateStorageProvider\";\r\nimport { TelemetryEvent } from \"./Constants\";\r\nimport { FloodgateEngine } from \"./FloodgateEngine\";\r\nimport { GovernedChannelType } from \"./GovernedChannel\";\r\nimport * as StateProviderHelpers from \"./StateProviderHelpers\";\r\nimport * as Utils from \"./Utils\";\r\nimport FileType = IFloodgateStorageProvider.FileType;\r\nimport StateListType = StateProviderHelpers.StateListType;\r\n\r\nexport class GovernedChannelState {\r\n\t/**\r\n\t * Method to deserialize a JSON object to class object\r\n\t * @param input: JSON object\r\n\t * Returns class object\r\n\t */\r\n\tpublic static deserialize(input: any): GovernedChannelState {\r\n\t\tlet result: GovernedChannelState;\r\n\r\n\t\tif (!input) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t// Validation is handled by GovernedChannelState's constructor\r\n\t\ttry {\r\n\t\t\tresult = new GovernedChannelState(\r\n\t\t\t\tinput.ChannelType,\r\n\t\t\t\tinput.CooldownStartTimeUtc,\r\n\t\t\t);\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.GovernedChannelState.Deserialize.Failed, { ErrorMessage: e.toString() });\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\t// @SerializedName(\"ChannelType\")\r\n\tprivate ChannelType: GovernedChannelType;\r\n\r\n\t// @SerializedName(\"CooldownStartTimeUtc\")\r\n\tprivate CooldownStartTimeUtc: Date;\r\n\r\n\tpublic constructor(type: GovernedChannelType, cooldownStartTime: Date) {\r\n\t\tthis.ChannelType = type;\r\n\t\tthis.CooldownStartTimeUtc = cooldownStartTime;\r\n\r\n\t\tif (!this.validate()) {\r\n\t\t\tthrow new Error(\"Constructor arguments are not valid\");\r\n\t\t}\r\n\t}\r\n\r\n\tpublic validate(): boolean {\r\n\t\tif (!Utils.isEnumValue(this.ChannelType, GovernedChannelType)) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// make it a date object if it's a valid UTC date time value\r\n\t\tif (Utils.isUtcDatetimeString(this.CooldownStartTimeUtc)) {\r\n\t\t\tthis.CooldownStartTimeUtc = Utils.stringToDate(this.CooldownStartTimeUtc);\r\n\t\t// Allow null and bad cooldownStartTime\r\n\t\t} else if (Utils.isNOU(this.CooldownStartTimeUtc) || !Utils.isDate(this.CooldownStartTimeUtc)) {\r\n\t\t\tthis.CooldownStartTimeUtc = Utils.getDistantPast();\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\tpublic getType(): GovernedChannelType {\r\n\t\treturn this.ChannelType;\r\n\t}\r\n\r\n\tpublic getCooldownStartTime(): Date {\r\n\t\treturn this.CooldownStartTimeUtc;\r\n\t}\r\n}\r\n\r\nexport interface IGovernedChannelStateProvider {\r\n\tload(): GovernedChannelState[];\r\n\r\n\tsave(channels: GovernedChannelState[]): void;\r\n}\r\n\r\nexport class GovernedChannelStateProviderFactory {\r\n\tpublic static make(fileBasedStorage: IFloodgateStorageProvider,\r\n\t\thostBasedStorage: IFloodgateSettingStorageCallback): IGovernedChannelStateProvider {\r\n\t\tif (hostBasedStorage) {\r\n\t\t\treturn new HostBasedGovernedChannelStateProvider(fileBasedStorage, hostBasedStorage);\r\n\t\t}\r\n\r\n\t\treturn new FileBasedGovernedChannelStateProvider(fileBasedStorage);\r\n\t}\r\n}\r\n\r\n/**\r\n * Class representing what is stored in the file.\r\n */\r\nclass FileData {\r\n\t// @SerializedName(\"ChannelStates\")\r\n\tpublic ChannelStates: GovernedChannelState[];\r\n}\r\n\r\nexport class HostBasedGovernedChannelStateProvider implements IGovernedChannelStateProvider {\r\n\tprivate fileBasedStateProvider: IGovernedChannelStateProvider;\r\n\tprivate hostBasedStorage: IFloodgateSettingStorageCallback;\r\n\r\n\tpublic constructor(fileBasedStorage: IFloodgateStorageProvider, hostBasedStorage: IFloodgateSettingStorageCallback) {\r\n\t\tif (!hostBasedStorage) {\r\n\t\t\tthrow new Error(\"host-based storage must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.hostBasedStorage = hostBasedStorage;\r\n\r\n\t\t// file-based provider is optional\r\n\t\tif (fileBasedStorage) {\r\n\t\t\tthis.fileBasedStateProvider = new FileBasedGovernedChannelStateProvider(fileBasedStorage);\r\n\t\t}\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic load(): GovernedChannelState[] {\r\n\t\tconst statesFromHost: GovernedChannelState[] = this.getStatesFromHost();\r\n\r\n\t\tlet statesFromFile: GovernedChannelState[];\r\n\t\tif (this.fileBasedStateProvider) {\r\n\t\t\tstatesFromFile = this.fileBasedStateProvider.load();\r\n\t\t}\r\n\r\n\t\tconst StateCollections = StateProviderHelpers.MergeAndUpdateGovernedChannelStates(statesFromFile, statesFromHost);\r\n\t\treturn StateCollections.find(StateListType.Merged);\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic save(states: GovernedChannelState[]): void {\r\n\t\tif (!states) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst statesFromHost: GovernedChannelState[] = this.getStatesFromHost();\r\n\t\tconst StateCollections = StateProviderHelpers.MergeAndUpdateGovernedChannelStates(states, statesFromHost);\r\n\t\tconst toBeUpdatedStates: GovernedChannelState[] = StateCollections.find(StateListType.ToBeUpdated);\r\n\t\tconst mergedStates: GovernedChannelState[] = StateCollections.find(StateListType.Merged);\r\n\r\n\t\t// write delta_data to Host\r\n\t\tif (toBeUpdatedStates) {\r\n\t\t\ttoBeUpdatedStates.forEach((state) => {\r\n\t\t\t\tconst stateValue: string = StateProviderHelpers.makeSettingItemValue(JSON.stringify(state));\r\n\t\t\t\tthis.hostBasedStorage.upsertSettingItem(FileType[FileType.GovernedChannelStates], String(state.getType()), stateValue);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// Write merged data to File\r\n\t\tif (this.fileBasedStateProvider) {\r\n\t\t\tthis.fileBasedStateProvider.save(mergedStates);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getStatesFromHost(): GovernedChannelState[] {\r\n\t\tconst states: GovernedChannelState[] = [];\r\n\t\tconst settings: IFloodgateSetting = this.hostBasedStorage.readSettingList(FileType[FileType.GovernedChannelStates]);\r\n\r\n\t\tfor (const key in settings) {\r\n\t\t\tif (!settings.hasOwnProperty(key)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst value = settings[key];\r\n\t\t\tconst dataString: string = StateProviderHelpers.extractSettingItemValueSubString(value);\r\n\r\n\t\t\tlet itemObject: any = {};\r\n\t\t\ttry {\r\n\t\t\t\titemObject = JSON.parse(dataString);\r\n\r\n\t\t\t\tconst newState: GovernedChannelState = GovernedChannelState.deserialize(itemObject);\r\n\t\t\t\tif (newState) {\r\n\t\t\t\t\tstates.push(newState);\r\n\t\t\t\t}\r\n\t\t\t} catch (e) {\r\n\t\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\t\tTelemetryEvent.HostBasedGovernedChannelStateProvider.GetStatesFromHost.Failed,\r\n\t\t\t\t\t{ ErrorMessage: \"Json parsing/deserializing failed. \" + e.toString() + \". Input:\" + dataString });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn states;\r\n\t}\r\n}\r\n\r\nexport class FileBasedGovernedChannelStateProvider implements IGovernedChannelStateProvider {\r\n\tprivate storage: IFloodgateStorageProvider;\r\n\r\n\tpublic constructor(storage: IFloodgateStorageProvider) {\r\n\t\tif (!storage) {\r\n\t\t\tthrow new Error(\"storage must not be null\");\r\n\t\t}\r\n\r\n\t\tthis.storage = storage;\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic load(): GovernedChannelState[] {\r\n\t\t// Load channel state from file using _storageProvider (get back string)\r\n\t\tconst readString: string = this.storage.read(FileType.GovernedChannelStates);\r\n\t\tif (!readString) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tlet fileData: FileData;\r\n\t\ttry {\r\n\t\t\tfileData = JSON.parse(readString);\r\n\r\n\t\t\tconst result: GovernedChannelState[] = [];\r\n\r\n\t\t\tif (fileData && fileData.ChannelStates) {\r\n\t\t\t\tfileData.ChannelStates.forEach((state) => {\r\n\t\t\t\t\tconst newState: GovernedChannelState = GovernedChannelState.deserialize(state);\r\n\r\n\t\t\t\t\tif (newState) {\r\n\t\t\t\t\t\tresult.push(newState);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\treturn result;\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.FileBasedGovernedChannelStateProvider.Load.Failed,\r\n\t\t\t\t{ ErrorMessage: \"Json parsing/deserializing failed. \" + e.toString() + \". Input:\" + readString });\r\n\t\t\treturn [];\r\n\t\t}\r\n\t}\r\n\r\n\t// @Override\r\n\tpublic save(states: GovernedChannelState[]): void {\r\n\t\tif (!states) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst fileData = new FileData();\r\n\t\tfileData.ChannelStates = states;\r\n\t\tconst writeString: string = JSON.stringify(fileData);\r\n\r\n\t\tthis.storage.write(FileType.GovernedChannelStates, writeString);\r\n\t}\r\n}\r\n","import { IDictionary, ISerializable } from \"./Common\";\r\nimport { TelemetryEvent } from \"./Constants\";\r\nimport { FloodgateEngine } from \"./FloodgateEngine\";\r\nimport { SurveyStatCollection } from \"./SurveyStatCollection\";\r\nimport * as Utils from \"./Utils\";\r\n\r\n/**\r\n * StatCollection for EventActivity counts. Should be used to store/merge\r\n * aggregate values between sessions tracking the same surveys/events\r\n * E.g. A survey that activates after 3 boots.\r\n */\r\n// TODO (gachoi) check the following - VSOBug: 1443010 One bad Stat object fails the entire serialization\r\nexport class SurveyStatCollectionEventActivity extends SurveyStatCollection implements ISerializable {\r\n\r\n\t/**\r\n\t * Load from Json\r\n\t */\r\n\tpublic static fromJson(json: string): SurveyStatCollectionEventActivity {\r\n\t\tconst statCollection = new SurveyStatCollectionEventActivity();\r\n\r\n\t\tif (!json) {\r\n\t\t\treturn statCollection;\r\n\t\t}\r\n\r\n\t\tlet readStats: SurveyStatCollectionEventActivity;\r\n\t\ttry {\r\n\t\t\treadStats = JSON.parse(json);\r\n\t\t} catch (e) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.SurveyStatCollectionEventActivity.FromJson.Failed,\r\n\t\t\t\t{ ErrorMessage: \"Json parsing failed. \" + e.toString() });\r\n\t\t\treturn statCollection;\r\n\t\t}\r\n\r\n\t\tif (!statCollection.deserialize(readStats)) {\r\n\t\t\treturn new SurveyStatCollectionEventActivity();\r\n\t\t}\r\n\r\n\t\treturn statCollection;\r\n\t}\r\n\r\n\t/**\r\n\t * Convert to Json\r\n\t */\r\n\tpublic static toJson(object: SurveyStatCollectionEventActivity): string {\r\n\t\tif (!object) {\r\n\t\t\tFloodgateEngine.getTelemetryLogger().log_Event(\r\n\t\t\t\tTelemetryEvent.SurveyStatCollectionEventActivity.ToJson.Failed,\r\n\t\t\t\t{ ErrorMessage: \"Input json is null or empty.\" });\r\n\t\t\tobject = new SurveyStatCollectionEventActivity();\r\n\t\t}\r\n\r\n\t\treturn JSON.stringify(object);\r\n\t}\r\n\r\n\t/**\r\n\t * Add another SurveyStatCollectionEventActivity object\r\n\t */\r\n\tpublic accumulate(other: SurveyStatCollectionEventActivity): void {\r\n\t\tif (!other) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst stats: IDictionary = other.getStats();\r\n\t\t// SurveyEventActivityStats accumulation simply overwrites any keys from 'other' into our collection\r\n\t\tfor (const key in stats) {\r\n\t\t\tif (stats.hasOwnProperty(key)) {\r\n\t\t\t\tlet ourStats: SurveyEventActivityStats = this.getBySurveyId(key);\r\n\r\n\t\t\t\t// If it does not already exist\r\n\t\t\t\tif (!ourStats) {\r\n\t\t\t\t\tourStats = new SurveyEventActivityStats();\r\n\t\t\t\t\tourStats.Counts = [];\r\n\t\t\t\t\tthis.addStats(key, ourStats);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tourStats.ExpirationTimeUtc = stats[key].ExpirationTimeUtc;\r\n\r\n\t\t\t\t// If for some reason the other counts array is larger, resize ourStats.counts\r\n\t\t\t\tif (ourStats.Counts.length < stats[key].Counts.length) {\r\n\t\t\t\t\tconst resizedCounts: number[] = ourStats.Counts.slice();\r\n\t\t\t\t\tourStats.Counts = resizedCounts;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let i = 0; i < stats[key].Counts.length; i++) {\r\n\t\t\t\t\tif (!ourStats.Counts[i]) {\r\n\t\t\t\t\t\tourStats.Counts[i] = 0;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tourStats.Counts[i] += stats[key].Counts[i];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method to deserialize SurveyStatCollectionEventActivity\r\n\t * @param input: collection of SurveyStatCollectionEventActivity\r\n\t * Returns result of validation check\r\n\t */\r\n\tpublic deserialize(input: any): boolean {\r\n\t\tconst rawStats: IDictionary = input.Surveys;\r\n\t\tconst now = new Date();\r\n\r\n\t\tfor (const key in rawStats) {\r\n\t\t\tif (rawStats.hasOwnProperty(key)) {\r\n\t\t\t\tconst newStat = new SurveyEventActivityStats();\r\n\r\n\t\t\t\tif (newStat.deserialize(rawStats[key]) && newStat.ExpirationTimeUtc > now) {\r\n\t\t\t\t\tthis.addStats(key, newStat);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Validate the Surveys\r\n\t * Returns false if validation fails\r\n\t */\r\n\tpublic validate(): boolean {\r\n\t\treturn Utils.isObject(this.getStats());\r\n\t}\r\n}\r\n\r\nexport class SurveyEventActivityStats implements ISerializable {\r\n\t// The following property names match JSON property names for proper serialization/deserialization\r\n\tpublic ExpirationTimeUtc: Date;\r\n\tpublic Counts: number[];\r\n\r\n\t/**\r\n\t * Method to deserialize a JSON object to class object\r\n\t * @param input: JSON object\r\n\t * Returns result of validation check\r\n\t */\r\n\tpublic deserialize(input: any): boolean {\r\n\t\tthis.ExpirationTimeUtc = input.ExpirationTimeUtc;\r\n\t\tthis.Counts = input.Counts;\r\n\r\n\t\treturn this.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Method to call after deserialization to validate generated object.\r\n\t * Returns false if not valid.\r\n\t */\r\n\tpublic validate(): boolean {\r\n\t\tif (!this.Counts) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.Counts.length; i++) {\r\n\t\t\tconst val: number = this.Counts[i];\r\n\r\n\t\t\tif (!Utils.isNumber(val)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif (val < 0) {\r\n\t\t\t\tthis.Counts[i] = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// make it a date object if it's a valid UTC date time value\r\n\t\tif (Utils.isUtcDatetimeString(this.ExpirationTimeUtc)) {\r\n\t\t\tthis.ExpirationTimeUtc = Utils.stringToDate(this.ExpirationTimeUtc);\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n","/* eslint-disable */\r\n/*!\r\n * html2canvas 1.4.1 \r\n * Copyright (c) 2022 Niklas von Hertzen \r\n * Released under MIT License\r\n *\r\n * THIS VERSION IS FROM THE FOLLOWING FORK: https://github.com/shhnjk/html2canvas\r\n *\r\n */\r\n(function (global, factory) {\r\n typeof exports === \"object\" && typeof module !== \"undefined\"\r\n ? (module.exports = factory())\r\n : typeof define === \"function\" && define.amd\r\n ? define(factory)\r\n : ((global =\r\n typeof globalThis !== \"undefined\" ? globalThis : global || self),\r\n (global.html2canvas = factory()));\r\n})(this, function () {\r\n \"use strict\";\r\n\r\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n var extendStatics = function (d, b) {\r\n extendStatics =\r\n Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array &&\r\n function (d, b) {\r\n d.__proto__ = b;\r\n }) ||\r\n function (d, b) {\r\n for (var p in b)\r\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\r\n };\r\n return extendStatics(d, b);\r\n };\r\n\r\n function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\r\n \"Class extends value \" + String(b) + \" is not a constructor or null\"\r\n );\r\n extendStatics(d, b);\r\n function __() {\r\n this.constructor = d;\r\n }\r\n d.prototype =\r\n b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\r\n }\r\n\r\n var __assign = function () {\r\n __assign =\r\n Object.assign ||\r\n function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s)\r\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) {\r\n return value instanceof P\r\n ? value\r\n : new P(function (resolve) {\r\n resolve(value);\r\n });\r\n }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) {\r\n try {\r\n step(generator.next(value));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n }\r\n function rejected(value) {\r\n try {\r\n step(generator[\"throw\"](value));\r\n } catch (e) {\r\n reject(e);\r\n }\r\n }\r\n function step(result) {\r\n result.done\r\n ? resolve(result.value)\r\n : adopt(result.value).then(fulfilled, rejected);\r\n }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\r\n\r\n function __generator(thisArg, body) {\r\n var _ = {\r\n label: 0,\r\n sent: function () {\r\n if (t[0] & 1) throw t[1];\r\n return t[1];\r\n },\r\n trys: [],\r\n ops: [],\r\n },\r\n f,\r\n y,\r\n t,\r\n g;\r\n return (\r\n (g = { next: verb(0), throw: verb(1), return: verb(2) }),\r\n typeof Symbol === \"function\" &&\r\n (g[Symbol.iterator] = function () {\r\n return this;\r\n }),\r\n g\r\n );\r\n function verb(n) {\r\n return function (v) {\r\n return step([n, v]);\r\n };\r\n }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_)\r\n try {\r\n if (\r\n ((f = 1),\r\n y &&\r\n (t =\r\n op[0] & 2\r\n ? y[\"return\"]\r\n : op[0]\r\n ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0)\r\n : y.next) &&\r\n !(t = t.call(y, op[1])).done)\r\n )\r\n return t;\r\n if (((y = 0), t)) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0:\r\n case 1:\r\n t = op;\r\n break;\r\n case 4:\r\n _.label++;\r\n return { value: op[1], done: false };\r\n case 5:\r\n _.label++;\r\n y = op[1];\r\n op = [0];\r\n continue;\r\n case 7:\r\n op = _.ops.pop();\r\n _.trys.pop();\r\n continue;\r\n default:\r\n if (\r\n !((t = _.trys), (t = t.length > 0 && t[t.length - 1])) &&\r\n (op[0] === 6 || op[0] === 2)\r\n ) {\r\n _ = 0;\r\n continue;\r\n }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {\r\n _.label = op[1];\r\n break;\r\n }\r\n if (op[0] === 6 && _.label < t[1]) {\r\n _.label = t[1];\r\n t = op;\r\n break;\r\n }\r\n if (t && _.label < t[2]) {\r\n _.label = t[2];\r\n _.ops.push(op);\r\n break;\r\n }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop();\r\n continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) {\r\n op = [6, e];\r\n y = 0;\r\n } finally {\r\n f = t = 0;\r\n }\r\n if (op[0] & 5) throw op[1];\r\n return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n }\r\n\r\n function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2)\r\n for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n }\r\n\r\n var Bounds = /** @class */ (function () {\r\n function Bounds(left, top, width, height) {\r\n this.left = left;\r\n this.top = top;\r\n this.width = width;\r\n this.height = height;\r\n }\r\n Bounds.prototype.add = function (x, y, w, h) {\r\n return new Bounds(\r\n this.left + x,\r\n this.top + y,\r\n this.width + w,\r\n this.height + h\r\n );\r\n };\r\n Bounds.fromClientRect = function (context, clientRect) {\r\n return new Bounds(\r\n clientRect.left + context.windowBounds.left,\r\n clientRect.top + context.windowBounds.top,\r\n clientRect.width,\r\n clientRect.height\r\n );\r\n };\r\n Bounds.fromDOMRectList = function (context, domRectList) {\r\n var domRect = Array.from(domRectList).find(function (rect) {\r\n return rect.width !== 0;\r\n });\r\n return domRect\r\n ? new Bounds(\r\n domRect.left + context.windowBounds.left,\r\n domRect.top + context.windowBounds.top,\r\n domRect.width,\r\n domRect.height\r\n )\r\n : Bounds.EMPTY;\r\n };\r\n Bounds.EMPTY = new Bounds(0, 0, 0, 0);\r\n return Bounds;\r\n })();\r\n var parseBounds = function (context, node) {\r\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\r\n };\r\n var parseDocumentSize = function (document) {\r\n var body = document.body;\r\n var documentElement = document.documentElement;\r\n if (!body || !documentElement) {\r\n throw new Error(\"Unable to get document size\");\r\n }\r\n var width = Math.max(\r\n Math.max(body.scrollWidth, documentElement.scrollWidth),\r\n Math.max(body.offsetWidth, documentElement.offsetWidth),\r\n Math.max(body.clientWidth, documentElement.clientWidth)\r\n );\r\n var height = Math.max(\r\n Math.max(body.scrollHeight, documentElement.scrollHeight),\r\n Math.max(body.offsetHeight, documentElement.offsetHeight),\r\n Math.max(body.clientHeight, documentElement.clientHeight)\r\n );\r\n return new Bounds(0, 0, width, height);\r\n };\r\n\r\n /*\r\n * css-line-break 2.1.0 \r\n * Copyright (c) 2022 Niklas von Hertzen \r\n * Released under MIT License\r\n */\r\n var toCodePoints$1 = function (str) {\r\n var codePoints = [];\r\n var i = 0;\r\n var length = str.length;\r\n while (i < length) {\r\n var value = str.charCodeAt(i++);\r\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\r\n var extra = str.charCodeAt(i++);\r\n if ((extra & 0xfc00) === 0xdc00) {\r\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\r\n } else {\r\n codePoints.push(value);\r\n i--;\r\n }\r\n } else {\r\n codePoints.push(value);\r\n }\r\n }\r\n return codePoints;\r\n };\r\n var fromCodePoint$1 = function () {\r\n var codePoints = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n codePoints[_i] = arguments[_i];\r\n }\r\n if (String.fromCodePoint) {\r\n return String.fromCodePoint.apply(String, codePoints);\r\n }\r\n var length = codePoints.length;\r\n if (!length) {\r\n return \"\";\r\n }\r\n var codeUnits = [];\r\n var index = -1;\r\n var result = \"\";\r\n while (++index < length) {\r\n var codePoint = codePoints[index];\r\n if (codePoint <= 0xffff) {\r\n codeUnits.push(codePoint);\r\n } else {\r\n codePoint -= 0x10000;\r\n codeUnits.push(\r\n (codePoint >> 10) + 0xd800,\r\n (codePoint % 0x400) + 0xdc00\r\n );\r\n }\r\n if (index + 1 === length || codeUnits.length > 0x4000) {\r\n result += String.fromCharCode.apply(String, codeUnits);\r\n codeUnits.length = 0;\r\n }\r\n }\r\n return result;\r\n };\r\n var chars$2 =\r\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Use a lookup table to find the index.\r\n var lookup$2 = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\r\n for (var i$2 = 0; i$2 < chars$2.length; i$2++) {\r\n lookup$2[chars$2.charCodeAt(i$2)] = i$2;\r\n }\r\n\r\n /*\r\n * utrie 1.0.2 \r\n * Copyright (c) 2022 Niklas von Hertzen \r\n * Released under MIT License\r\n */\r\n var chars$1$1 =\r\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Use a lookup table to find the index.\r\n var lookup$1$1 = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\r\n for (var i$1$1 = 0; i$1$1 < chars$1$1.length; i$1$1++) {\r\n lookup$1$1[chars$1$1.charCodeAt(i$1$1)] = i$1$1;\r\n }\r\n var decode$1 = function (base64) {\r\n var bufferLength = base64.length * 0.75,\r\n len = base64.length,\r\n i,\r\n p = 0,\r\n encoded1,\r\n encoded2,\r\n encoded3,\r\n encoded4;\r\n if (base64[base64.length - 1] === \"=\") {\r\n bufferLength--;\r\n if (base64[base64.length - 2] === \"=\") {\r\n bufferLength--;\r\n }\r\n }\r\n var buffer =\r\n typeof ArrayBuffer !== \"undefined\" &&\r\n typeof Uint8Array !== \"undefined\" &&\r\n typeof Uint8Array.prototype.slice !== \"undefined\"\r\n ? new ArrayBuffer(bufferLength)\r\n : new Array(bufferLength);\r\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\r\n for (i = 0; i < len; i += 4) {\r\n encoded1 = lookup$1$1[base64.charCodeAt(i)];\r\n encoded2 = lookup$1$1[base64.charCodeAt(i + 1)];\r\n encoded3 = lookup$1$1[base64.charCodeAt(i + 2)];\r\n encoded4 = lookup$1$1[base64.charCodeAt(i + 3)];\r\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\r\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\r\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\r\n }\r\n return buffer;\r\n };\r\n var polyUint16Array$1 = function (buffer) {\r\n var length = buffer.length;\r\n var bytes = [];\r\n for (var i = 0; i < length; i += 2) {\r\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\r\n }\r\n return bytes;\r\n };\r\n var polyUint32Array$1 = function (buffer) {\r\n var length = buffer.length;\r\n var bytes = [];\r\n for (var i = 0; i < length; i += 4) {\r\n bytes.push(\r\n (buffer[i + 3] << 24) |\r\n (buffer[i + 2] << 16) |\r\n (buffer[i + 1] << 8) |\r\n buffer[i]\r\n );\r\n }\r\n return bytes;\r\n };\r\n\r\n /** Shift size for getting the index-2 table offset. */\r\n var UTRIE2_SHIFT_2$1 = 5;\r\n /** Shift size for getting the index-1 table offset. */\r\n var UTRIE2_SHIFT_1$1 = 6 + 5;\r\n /**\r\n * Shift size for shifting left the index array values.\r\n * Increases possible data size with 16-bit index values at the cost\r\n * of compactability.\r\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\r\n */\r\n var UTRIE2_INDEX_SHIFT$1 = 2;\r\n /**\r\n * Difference between the two shift sizes,\r\n * for getting an index-1 offset from an index-2 offset. 6=11-5\r\n */\r\n var UTRIE2_SHIFT_1_2$1 = UTRIE2_SHIFT_1$1 - UTRIE2_SHIFT_2$1;\r\n /**\r\n * The part of the index-2 table for U+D800..U+DBFF stores values for\r\n * lead surrogate code _units_ not code _points_.\r\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\r\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\r\n */\r\n var UTRIE2_LSCP_INDEX_2_OFFSET$1 = 0x10000 >> UTRIE2_SHIFT_2$1;\r\n /** Number of entries in a data block. 32=0x20 */\r\n var UTRIE2_DATA_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_2$1;\r\n /** Mask for getting the lower bits for the in-data-block offset. */\r\n var UTRIE2_DATA_MASK$1 = UTRIE2_DATA_BLOCK_LENGTH$1 - 1;\r\n var UTRIE2_LSCP_INDEX_2_LENGTH$1 = 0x400 >> UTRIE2_SHIFT_2$1;\r\n /** Count the lengths of both BMP pieces. 2080=0x820 */\r\n var UTRIE2_INDEX_2_BMP_LENGTH$1 =\r\n UTRIE2_LSCP_INDEX_2_OFFSET$1 + UTRIE2_LSCP_INDEX_2_LENGTH$1;\r\n /**\r\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\r\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\r\n */\r\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 = UTRIE2_INDEX_2_BMP_LENGTH$1;\r\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH$1 =\r\n 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\r\n /**\r\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\r\n * Variable length, for code points up to highStart, where the last single-value range starts.\r\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\r\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\r\n *\r\n * The part of the index-2 table for supplementary code points starts\r\n * after this index-1 table.\r\n *\r\n * Both the index-1 table and the following part of the index-2 table\r\n * are omitted completely if there is only BMP data.\r\n */\r\n var UTRIE2_INDEX_1_OFFSET$1 =\r\n UTRIE2_UTF8_2B_INDEX_2_OFFSET$1 + UTRIE2_UTF8_2B_INDEX_2_LENGTH$1;\r\n /**\r\n * Number of index-1 entries for the BMP. 32=0x20\r\n * This part of the index-1 table is omitted from the serialized form.\r\n */\r\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 = 0x10000 >> UTRIE2_SHIFT_1$1;\r\n /** Number of entries in an index-2 block. 64=0x40 */\r\n var UTRIE2_INDEX_2_BLOCK_LENGTH$1 = 1 << UTRIE2_SHIFT_1_2$1;\r\n /** Mask for getting the lower bits for the in-index-2-block offset. */\r\n var UTRIE2_INDEX_2_MASK$1 = UTRIE2_INDEX_2_BLOCK_LENGTH$1 - 1;\r\n var slice16$1 = function (view, start, end) {\r\n if (view.slice) {\r\n return view.slice(start, end);\r\n }\r\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\r\n };\r\n var slice32$1 = function (view, start, end) {\r\n if (view.slice) {\r\n return view.slice(start, end);\r\n }\r\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\r\n };\r\n var createTrieFromBase64$1 = function (base64, _byteLength) {\r\n var buffer = decode$1(base64);\r\n var view32 = Array.isArray(buffer)\r\n ? polyUint32Array$1(buffer)\r\n : new Uint32Array(buffer);\r\n var view16 = Array.isArray(buffer)\r\n ? polyUint16Array$1(buffer)\r\n : new Uint16Array(buffer);\r\n var headerLength = 24;\r\n var index = slice16$1(view16, headerLength / 2, view32[4] / 2);\r\n var data =\r\n view32[5] === 2\r\n ? slice16$1(view16, (headerLength + view32[4]) / 2)\r\n : slice32$1(view32, Math.ceil((headerLength + view32[4]) / 4));\r\n return new Trie$1(view32[0], view32[1], view32[2], view32[3], index, data);\r\n };\r\n var Trie$1 = /** @class */ (function () {\r\n function Trie(\r\n initialValue,\r\n errorValue,\r\n highStart,\r\n highValueIndex,\r\n index,\r\n data\r\n ) {\r\n this.initialValue = initialValue;\r\n this.errorValue = errorValue;\r\n this.highStart = highStart;\r\n this.highValueIndex = highValueIndex;\r\n this.index = index;\r\n this.data = data;\r\n }\r\n /**\r\n * Get the value for a code point as stored in the Trie.\r\n *\r\n * @param codePoint the code point\r\n * @return the value\r\n */\r\n Trie.prototype.get = function (codePoint) {\r\n var ix;\r\n if (codePoint >= 0) {\r\n if (\r\n codePoint < 0x0d800 ||\r\n (codePoint > 0x0dbff && codePoint <= 0x0ffff)\r\n ) {\r\n // Ordinary BMP code point, excluding leading surrogates.\r\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\r\n // 16 bit data is stored in the index array itself.\r\n ix = this.index[codePoint >> UTRIE2_SHIFT_2$1];\r\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\r\n return this.data[ix];\r\n }\r\n if (codePoint <= 0xffff) {\r\n // Lead Surrogate Code Point. A Separate index section is stored for\r\n // lead surrogate code units and code points.\r\n // The main index has the code unit data.\r\n // For this function, we need the code point data.\r\n // Note: this expression could be refactored for slightly improved efficiency, but\r\n // surrogate code points will be so rare in practice that it's not worth it.\r\n ix =\r\n this.index[\r\n UTRIE2_LSCP_INDEX_2_OFFSET$1 +\r\n ((codePoint - 0xd800) >> UTRIE2_SHIFT_2$1)\r\n ];\r\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\r\n return this.data[ix];\r\n }\r\n if (codePoint < this.highStart) {\r\n // Supplemental code point, use two-level lookup.\r\n ix =\r\n UTRIE2_INDEX_1_OFFSET$1 -\r\n UTRIE2_OMITTED_BMP_INDEX_1_LENGTH$1 +\r\n (codePoint >> UTRIE2_SHIFT_1$1);\r\n ix = this.index[ix];\r\n ix += (codePoint >> UTRIE2_SHIFT_2$1) & UTRIE2_INDEX_2_MASK$1;\r\n ix = this.index[ix];\r\n ix = (ix << UTRIE2_INDEX_SHIFT$1) + (codePoint & UTRIE2_DATA_MASK$1);\r\n return this.data[ix];\r\n }\r\n if (codePoint <= 0x10ffff) {\r\n return this.data[this.highValueIndex];\r\n }\r\n }\r\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\r\n return this.errorValue;\r\n };\r\n return Trie;\r\n })();\r\n\r\n /*\r\n * base64-arraybuffer 1.0.2 \r\n * Copyright (c) 2022 Niklas von Hertzen \r\n * Released under MIT License\r\n */\r\n var chars$3 =\r\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Use a lookup table to find the index.\r\n var lookup$3 = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\r\n for (var i$3 = 0; i$3 < chars$3.length; i$3++) {\r\n lookup$3[chars$3.charCodeAt(i$3)] = i$3;\r\n }\r\n\r\n var base64$1 =\r\n \"KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==\";\r\n\r\n var LETTER_NUMBER_MODIFIER = 50;\r\n // Non-tailorable Line Breaking Classes\r\n var BK = 1; // Cause a line break (after)\r\n var CR$1 = 2; // Cause a line break (after), except between CR and LF\r\n var LF$1 = 3; // Cause a line break (after)\r\n var CM = 4; // Prohibit a line break between the character and the preceding character\r\n var NL = 5; // Cause a line break (after)\r\n var WJ = 7; // Prohibit line breaks before and after\r\n var ZW = 8; // Provide a break opportunity\r\n var GL = 9; // Prohibit line breaks before and after\r\n var SP = 10; // Enable indirect line breaks\r\n var ZWJ$1 = 11; // Prohibit line breaks within joiner sequences\r\n // Break Opportunities\r\n var B2 = 12; // Provide a line break opportunity before and after the character\r\n var BA = 13; // Generally provide a line break opportunity after the character\r\n var BB = 14; // Generally provide a line break opportunity before the character\r\n var HY = 15; // Provide a line break opportunity after the character, except in numeric context\r\n var CB = 16; // Provide a line break opportunity contingent on additional information\r\n // Characters Prohibiting Certain Breaks\r\n var CL = 17; // Prohibit line breaks before\r\n var CP = 18; // Prohibit line breaks before\r\n var EX = 19; // Prohibit line breaks before\r\n var IN = 20; // Allow only indirect line breaks between pairs\r\n var NS = 21; // Allow only indirect line breaks before\r\n var OP = 22; // Prohibit line breaks after\r\n var QU = 23; // Act like they are both opening and closing\r\n // Numeric Context\r\n var IS = 24; // Prevent breaks after any and before numeric\r\n var NU = 25; // Form numeric expressions for line breaking purposes\r\n var PO = 26; // Do not break following a numeric expression\r\n var PR = 27; // Do not break in front of a numeric expression\r\n var SY = 28; // Prevent a break before; and allow a break after\r\n // Other Characters\r\n var AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\r\n var AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\r\n var CJ = 31; // Treat as NS or ID for strict or normal breaking.\r\n var EB = 32; // Do not break from following Emoji Modifier\r\n var EM = 33; // Do not break from preceding Emoji Base\r\n var H2 = 34; // Form Korean syllable blocks\r\n var H3 = 35; // Form Korean syllable blocks\r\n var HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\r\n var ID = 37; // Break before or after; except in some numeric context\r\n var JL = 38; // Form Korean syllable blocks\r\n var JV = 39; // Form Korean syllable blocks\r\n var JT = 40; // Form Korean syllable blocks\r\n var RI$1 = 41; // Keep pairs together. For pairs; break before and after other classes\r\n var SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\r\n var XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\r\n var ea_OP = [0x2329, 0xff08];\r\n var BREAK_MANDATORY = \"!\";\r\n var BREAK_NOT_ALLOWED$1 = \"×\";\r\n var BREAK_ALLOWED$1 = \"÷\";\r\n var UnicodeTrie$1 = createTrieFromBase64$1(base64$1);\r\n var ALPHABETICS = [AL, HL];\r\n var HARD_LINE_BREAKS = [BK, CR$1, LF$1, NL];\r\n var SPACE$1 = [SP, ZW];\r\n var PREFIX_POSTFIX = [PR, PO];\r\n var LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE$1);\r\n var KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\r\n var HYPHEN = [HY, BA];\r\n var codePointsToCharacterClasses = function (codePoints, lineBreak) {\r\n if (lineBreak === void 0) {\r\n lineBreak = \"strict\";\r\n }\r\n var types = [];\r\n var indices = [];\r\n var categories = [];\r\n codePoints.forEach(function (codePoint, index) {\r\n var classType = UnicodeTrie$1.get(codePoint);\r\n if (classType > LETTER_NUMBER_MODIFIER) {\r\n categories.push(true);\r\n classType -= LETTER_NUMBER_MODIFIER;\r\n } else {\r\n categories.push(false);\r\n }\r\n if ([\"normal\", \"auto\", \"loose\"].indexOf(lineBreak) !== -1) {\r\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\r\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\r\n indices.push(index);\r\n return types.push(CB);\r\n }\r\n }\r\n if (classType === CM || classType === ZWJ$1) {\r\n // LB10 Treat any remaining combining mark or ZWJ as AL.\r\n if (index === 0) {\r\n indices.push(index);\r\n return types.push(AL);\r\n }\r\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\r\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\r\n var prev = types[index - 1];\r\n if (LINE_BREAKS.indexOf(prev) === -1) {\r\n indices.push(indices[index - 1]);\r\n return types.push(prev);\r\n }\r\n indices.push(index);\r\n return types.push(AL);\r\n }\r\n indices.push(index);\r\n if (classType === CJ) {\r\n return types.push(lineBreak === \"strict\" ? NS : ID);\r\n }\r\n if (classType === SA) {\r\n return types.push(AL);\r\n }\r\n if (classType === AI) {\r\n return types.push(AL);\r\n }\r\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\r\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\r\n // to take into account the actual line breaking properties for these characters.\r\n if (classType === XX) {\r\n if (\r\n (codePoint >= 0x20000 && codePoint <= 0x2fffd) ||\r\n (codePoint >= 0x30000 && codePoint <= 0x3fffd)\r\n ) {\r\n return types.push(ID);\r\n } else {\r\n return types.push(AL);\r\n }\r\n }\r\n types.push(classType);\r\n });\r\n return [indices, types, categories];\r\n };\r\n var isAdjacentWithSpaceIgnored = function (a, b, currentIndex, classTypes) {\r\n var current = classTypes[currentIndex];\r\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\r\n var i = currentIndex;\r\n while (i <= classTypes.length) {\r\n i++;\r\n var next = classTypes[i];\r\n if (next === b) {\r\n return true;\r\n }\r\n if (next !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n if (current === SP) {\r\n var i = currentIndex;\r\n while (i > 0) {\r\n i--;\r\n var prev = classTypes[i];\r\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\r\n var n = currentIndex;\r\n while (n <= classTypes.length) {\r\n n++;\r\n var next = classTypes[n];\r\n if (next === b) {\r\n return true;\r\n }\r\n if (next !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n if (prev !== SP) {\r\n break;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n var previousNonSpaceClassType = function (currentIndex, classTypes) {\r\n var i = currentIndex;\r\n while (i >= 0) {\r\n var type = classTypes[i];\r\n if (type === SP) {\r\n i--;\r\n } else {\r\n return type;\r\n }\r\n }\r\n return 0;\r\n };\r\n var _lineBreakAtIndex = function (\r\n codePoints,\r\n classTypes,\r\n indicies,\r\n index,\r\n forbiddenBreaks\r\n ) {\r\n if (indicies[index] === 0) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n var currentIndex = index - 1;\r\n if (\r\n Array.isArray(forbiddenBreaks) &&\r\n forbiddenBreaks[currentIndex] === true\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n var beforeIndex = currentIndex - 1;\r\n var afterIndex = currentIndex + 1;\r\n var current = classTypes[currentIndex];\r\n // LB4 Always break after hard line breaks.\r\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\r\n var before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\r\n var next = classTypes[afterIndex];\r\n if (current === CR$1 && next === LF$1) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\r\n return BREAK_MANDATORY;\r\n }\r\n // LB6 Do not break before hard line breaks.\r\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB7 Do not break before spaces or zero width space.\r\n if (SPACE$1.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\r\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\r\n return BREAK_ALLOWED$1;\r\n }\r\n // LB8a Do not break after a zero width joiner.\r\n if (UnicodeTrie$1.get(codePoints[currentIndex]) === ZWJ$1) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // zwj emojis\r\n if (\r\n (current === EB || current === EM) &&\r\n UnicodeTrie$1.get(codePoints[afterIndex]) === ZWJ$1\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB11 Do not break before or after Word joiner and related characters.\r\n if (current === WJ || next === WJ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB12 Do not break after NBSP and related characters.\r\n if (current === GL) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\r\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\r\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB14 Do not break after ‘[’, even after spaces.\r\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB15 Do not break within ‘”[’, even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB17 Do not break within ‘——’, even with intervening spaces.\r\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB18 Break after spaces.\r\n if (current === SP) {\r\n return BREAK_ALLOWED$1;\r\n }\r\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\r\n if (current === QU || next === QU) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB20 Break before and after unresolved CB.\r\n if (next === CB || current === CB) {\r\n return BREAK_ALLOWED$1;\r\n }\r\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\r\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB21a Don't break after Hebrew + Hyphen.\r\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB21b Don’t break between Solidus and Hebrew letters.\r\n if (current === SY && next === HL) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB22 Do not break before ellipsis.\r\n if (next === IN) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB23 Do not break between digits and letters.\r\n if (\r\n (ALPHABETICS.indexOf(next) !== -1 && current === NU) ||\r\n (ALPHABETICS.indexOf(current) !== -1 && next === NU)\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\r\n if (\r\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\r\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\r\n if (\r\n (ALPHABETICS.indexOf(current) !== -1 &&\r\n PREFIX_POSTFIX.indexOf(next) !== -1) ||\r\n (PREFIX_POSTFIX.indexOf(current) !== -1 &&\r\n ALPHABETICS.indexOf(next) !== -1)\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB25 Do not break between the following pairs of classes relevant to numbers:\r\n if (\r\n // (PR | PO) × ( OP | HY )? NU\r\n ([PR, PO].indexOf(current) !== -1 &&\r\n (next === NU ||\r\n ([OP, HY].indexOf(next) !== -1 &&\r\n classTypes[afterIndex + 1] === NU))) ||\r\n // ( OP | HY ) × NU\r\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\r\n // NU ×\t(NU | SY | IS)\r\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\r\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\r\n var prevIndex = currentIndex;\r\n while (prevIndex >= 0) {\r\n var type = classTypes[prevIndex];\r\n if (type === NU) {\r\n return BREAK_NOT_ALLOWED$1;\r\n } else if ([SY, IS].indexOf(type) !== -1) {\r\n prevIndex--;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\r\n if ([PR, PO].indexOf(next) !== -1) {\r\n var prevIndex =\r\n [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\r\n while (prevIndex >= 0) {\r\n var type = classTypes[prevIndex];\r\n if (type === NU) {\r\n return BREAK_NOT_ALLOWED$1;\r\n } else if ([SY, IS].indexOf(type) !== -1) {\r\n prevIndex--;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n // LB26 Do not break a Korean syllable.\r\n if (\r\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\r\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\r\n ([JT, H3].indexOf(current) !== -1 && next === JT)\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB27 Treat a Korean Syllable Block the same as ID.\r\n if (\r\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 &&\r\n [IN, PO].indexOf(next) !== -1) ||\r\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB28 Do not break between alphabetics (“at”).\r\n if (\r\n ALPHABETICS.indexOf(current) !== -1 &&\r\n ALPHABETICS.indexOf(next) !== -1\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\r\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\r\n if (\r\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\r\n next === OP &&\r\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\r\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\r\n ) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\r\n // indicators preceding the position of the break.\r\n if (current === RI$1 && next === RI$1) {\r\n var i = indicies[currentIndex];\r\n var count = 1;\r\n while (i > 0) {\r\n i--;\r\n if (classTypes[i] === RI$1) {\r\n count++;\r\n } else {\r\n break;\r\n }\r\n }\r\n if (count % 2 !== 0) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n }\r\n // LB30b Do not break between an emoji base and an emoji modifier.\r\n if (current === EB && next === EM) {\r\n return BREAK_NOT_ALLOWED$1;\r\n }\r\n return BREAK_ALLOWED$1;\r\n };\r\n var cssFormattedClasses = function (codePoints, options) {\r\n if (!options) {\r\n options = { lineBreak: \"normal\", wordBreak: \"normal\" };\r\n }\r\n var _a = codePointsToCharacterClasses(codePoints, options.lineBreak),\r\n indicies = _a[0],\r\n classTypes = _a[1],\r\n isLetterNumber = _a[2];\r\n if (\r\n options.wordBreak === \"break-all\" ||\r\n options.wordBreak === \"break-word\"\r\n ) {\r\n classTypes = classTypes.map(function (type) {\r\n return [NU, AL, SA].indexOf(type) !== -1 ? ID : type;\r\n });\r\n }\r\n var forbiddenBreakpoints =\r\n options.wordBreak === \"keep-all\"\r\n ? isLetterNumber.map(function (letterNumber, i) {\r\n return (\r\n letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff\r\n );\r\n })\r\n : undefined;\r\n return [indicies, classTypes, forbiddenBreakpoints];\r\n };\r\n var Break = /** @class */ (function () {\r\n function Break(codePoints, lineBreak, start, end) {\r\n this.codePoints = codePoints;\r\n this.required = lineBreak === BREAK_MANDATORY;\r\n this.start = start;\r\n this.end = end;\r\n }\r\n Break.prototype.slice = function () {\r\n return fromCodePoint$1.apply(\r\n void 0,\r\n this.codePoints.slice(this.start, this.end)\r\n );\r\n };\r\n return Break;\r\n })();\r\n var LineBreaker = function (str, options) {\r\n var codePoints = toCodePoints$1(str);\r\n var _a = cssFormattedClasses(codePoints, options),\r\n indicies = _a[0],\r\n classTypes = _a[1],\r\n forbiddenBreakpoints = _a[2];\r\n var length = codePoints.length;\r\n var lastEnd = 0;\r\n var nextIndex = 0;\r\n return {\r\n next: function () {\r\n if (nextIndex >= length) {\r\n return { done: true, value: null };\r\n }\r\n var lineBreak = BREAK_NOT_ALLOWED$1;\r\n while (\r\n nextIndex < length &&\r\n (lineBreak = _lineBreakAtIndex(\r\n codePoints,\r\n classTypes,\r\n indicies,\r\n ++nextIndex,\r\n forbiddenBreakpoints\r\n )) === BREAK_NOT_ALLOWED$1\r\n ) {}\r\n if (lineBreak !== BREAK_NOT_ALLOWED$1 || nextIndex === length) {\r\n var value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\r\n lastEnd = nextIndex;\r\n return { value: value, done: false };\r\n }\r\n return { done: true, value: null };\r\n },\r\n };\r\n };\r\n\r\n // https://www.w3.org/TR/css-syntax-3\r\n var FLAG_UNRESTRICTED = 1 << 0;\r\n var FLAG_ID = 1 << 1;\r\n var FLAG_INTEGER = 1 << 2;\r\n var FLAG_NUMBER = 1 << 3;\r\n var LINE_FEED = 0x000a;\r\n var SOLIDUS = 0x002f;\r\n var REVERSE_SOLIDUS = 0x005c;\r\n var CHARACTER_TABULATION = 0x0009;\r\n var SPACE = 0x0020;\r\n var QUOTATION_MARK = 0x0022;\r\n var EQUALS_SIGN = 0x003d;\r\n var NUMBER_SIGN = 0x0023;\r\n var DOLLAR_SIGN = 0x0024;\r\n var PERCENTAGE_SIGN = 0x0025;\r\n var APOSTROPHE = 0x0027;\r\n var LEFT_PARENTHESIS = 0x0028;\r\n var RIGHT_PARENTHESIS = 0x0029;\r\n var LOW_LINE = 0x005f;\r\n var HYPHEN_MINUS = 0x002d;\r\n var EXCLAMATION_MARK = 0x0021;\r\n var LESS_THAN_SIGN = 0x003c;\r\n var GREATER_THAN_SIGN = 0x003e;\r\n var COMMERCIAL_AT = 0x0040;\r\n var LEFT_SQUARE_BRACKET = 0x005b;\r\n var RIGHT_SQUARE_BRACKET = 0x005d;\r\n var CIRCUMFLEX_ACCENT = 0x003d;\r\n var LEFT_CURLY_BRACKET = 0x007b;\r\n var QUESTION_MARK = 0x003f;\r\n var RIGHT_CURLY_BRACKET = 0x007d;\r\n var VERTICAL_LINE = 0x007c;\r\n var TILDE = 0x007e;\r\n var CONTROL = 0x0080;\r\n var REPLACEMENT_CHARACTER = 0xfffd;\r\n var ASTERISK = 0x002a;\r\n var PLUS_SIGN = 0x002b;\r\n var COMMA = 0x002c;\r\n var COLON = 0x003a;\r\n var SEMICOLON = 0x003b;\r\n var FULL_STOP = 0x002e;\r\n var NULL = 0x0000;\r\n var BACKSPACE = 0x0008;\r\n var LINE_TABULATION = 0x000b;\r\n var SHIFT_OUT = 0x000e;\r\n var INFORMATION_SEPARATOR_ONE = 0x001f;\r\n var DELETE = 0x007f;\r\n var EOF = -1;\r\n var ZERO = 0x0030;\r\n var a = 0x0061;\r\n var e = 0x0065;\r\n var f = 0x0066;\r\n var u = 0x0075;\r\n var z = 0x007a;\r\n var A = 0x0041;\r\n var E = 0x0045;\r\n var F = 0x0046;\r\n var U = 0x0055;\r\n var Z = 0x005a;\r\n var isDigit = function (codePoint) {\r\n return codePoint >= ZERO && codePoint <= 0x0039;\r\n };\r\n var isSurrogateCodePoint = function (codePoint) {\r\n return codePoint >= 0xd800 && codePoint <= 0xdfff;\r\n };\r\n var isHex = function (codePoint) {\r\n return (\r\n isDigit(codePoint) ||\r\n (codePoint >= A && codePoint <= F) ||\r\n (codePoint >= a && codePoint <= f)\r\n );\r\n };\r\n var isLowerCaseLetter = function (codePoint) {\r\n return codePoint >= a && codePoint <= z;\r\n };\r\n var isUpperCaseLetter = function (codePoint) {\r\n return codePoint >= A && codePoint <= Z;\r\n };\r\n var isLetter = function (codePoint) {\r\n return isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\r\n };\r\n var isNonASCIICodePoint = function (codePoint) {\r\n return codePoint >= CONTROL;\r\n };\r\n var isWhiteSpace = function (codePoint) {\r\n return (\r\n codePoint === LINE_FEED ||\r\n codePoint === CHARACTER_TABULATION ||\r\n codePoint === SPACE\r\n );\r\n };\r\n var isNameStartCodePoint = function (codePoint) {\r\n return (\r\n isLetter(codePoint) ||\r\n isNonASCIICodePoint(codePoint) ||\r\n codePoint === LOW_LINE\r\n );\r\n };\r\n var isNameCodePoint = function (codePoint) {\r\n return (\r\n isNameStartCodePoint(codePoint) ||\r\n isDigit(codePoint) ||\r\n codePoint === HYPHEN_MINUS\r\n );\r\n };\r\n var isNonPrintableCodePoint = function (codePoint) {\r\n return (\r\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\r\n codePoint === LINE_TABULATION ||\r\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\r\n codePoint === DELETE\r\n );\r\n };\r\n var isValidEscape = function (c1, c2) {\r\n if (c1 !== REVERSE_SOLIDUS) {\r\n return false;\r\n }\r\n return c2 !== LINE_FEED;\r\n };\r\n var isIdentifierStart = function (c1, c2, c3) {\r\n if (c1 === HYPHEN_MINUS) {\r\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\r\n } else if (isNameStartCodePoint(c1)) {\r\n return true;\r\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n var isNumberStart = function (c1, c2, c3) {\r\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\r\n if (isDigit(c2)) {\r\n return true;\r\n }\r\n return c2 === FULL_STOP && isDigit(c3);\r\n }\r\n if (c1 === FULL_STOP) {\r\n return isDigit(c2);\r\n }\r\n return isDigit(c1);\r\n };\r\n var stringToNumber = function (codePoints) {\r\n var c = 0;\r\n var sign = 1;\r\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\r\n if (codePoints[c] === HYPHEN_MINUS) {\r\n sign = -1;\r\n }\r\n c++;\r\n }\r\n var integers = [];\r\n while (isDigit(codePoints[c])) {\r\n integers.push(codePoints[c++]);\r\n }\r\n var int = integers.length\r\n ? parseInt(fromCodePoint$1.apply(void 0, integers), 10)\r\n : 0;\r\n if (codePoints[c] === FULL_STOP) {\r\n c++;\r\n }\r\n var fraction = [];\r\n while (isDigit(codePoints[c])) {\r\n fraction.push(codePoints[c++]);\r\n }\r\n var fracd = fraction.length;\r\n var frac = fracd\r\n ? parseInt(fromCodePoint$1.apply(void 0, fraction), 10)\r\n : 0;\r\n if (codePoints[c] === E || codePoints[c] === e) {\r\n c++;\r\n }\r\n var expsign = 1;\r\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\r\n if (codePoints[c] === HYPHEN_MINUS) {\r\n expsign = -1;\r\n }\r\n c++;\r\n }\r\n var exponent = [];\r\n while (isDigit(codePoints[c])) {\r\n exponent.push(codePoints[c++]);\r\n }\r\n var exp = exponent.length\r\n ? parseInt(fromCodePoint$1.apply(void 0, exponent), 10)\r\n : 0;\r\n return (\r\n sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp)\r\n );\r\n };\r\n var LEFT_PARENTHESIS_TOKEN = {\r\n type: 2 /* LEFT_PARENTHESIS_TOKEN */,\r\n };\r\n var RIGHT_PARENTHESIS_TOKEN = {\r\n type: 3 /* RIGHT_PARENTHESIS_TOKEN */,\r\n };\r\n var COMMA_TOKEN = { type: 4 /* COMMA_TOKEN */ };\r\n var SUFFIX_MATCH_TOKEN = { type: 13 /* SUFFIX_MATCH_TOKEN */ };\r\n var PREFIX_MATCH_TOKEN = { type: 8 /* PREFIX_MATCH_TOKEN */ };\r\n var COLUMN_TOKEN = { type: 21 /* COLUMN_TOKEN */ };\r\n var DASH_MATCH_TOKEN = { type: 9 /* DASH_MATCH_TOKEN */ };\r\n var INCLUDE_MATCH_TOKEN = { type: 10 /* INCLUDE_MATCH_TOKEN */ };\r\n var LEFT_CURLY_BRACKET_TOKEN = {\r\n type: 11 /* LEFT_CURLY_BRACKET_TOKEN */,\r\n };\r\n var RIGHT_CURLY_BRACKET_TOKEN = {\r\n type: 12 /* RIGHT_CURLY_BRACKET_TOKEN */,\r\n };\r\n var SUBSTRING_MATCH_TOKEN = { type: 14 /* SUBSTRING_MATCH_TOKEN */ };\r\n var BAD_URL_TOKEN = { type: 23 /* BAD_URL_TOKEN */ };\r\n var BAD_STRING_TOKEN = { type: 1 /* BAD_STRING_TOKEN */ };\r\n var CDO_TOKEN = { type: 25 /* CDO_TOKEN */ };\r\n var CDC_TOKEN = { type: 24 /* CDC_TOKEN */ };\r\n var COLON_TOKEN = { type: 26 /* COLON_TOKEN */ };\r\n var SEMICOLON_TOKEN = { type: 27 /* SEMICOLON_TOKEN */ };\r\n var LEFT_SQUARE_BRACKET_TOKEN = {\r\n type: 28 /* LEFT_SQUARE_BRACKET_TOKEN */,\r\n };\r\n var RIGHT_SQUARE_BRACKET_TOKEN = {\r\n type: 29 /* RIGHT_SQUARE_BRACKET_TOKEN */,\r\n };\r\n var WHITESPACE_TOKEN = { type: 31 /* WHITESPACE_TOKEN */ };\r\n var EOF_TOKEN = { type: 32 /* EOF_TOKEN */ };\r\n var Tokenizer = /** @class */ (function () {\r\n function Tokenizer() {\r\n this._value = [];\r\n }\r\n Tokenizer.prototype.write = function (chunk) {\r\n this._value = this._value.concat(toCodePoints$1(chunk));\r\n };\r\n Tokenizer.prototype.read = function () {\r\n var tokens = [];\r\n var token = this.consumeToken();\r\n while (token !== EOF_TOKEN) {\r\n tokens.push(token);\r\n token = this.consumeToken();\r\n }\r\n return tokens;\r\n };\r\n Tokenizer.prototype.consumeToken = function () {\r\n var codePoint = this.consumeCodePoint();\r\n switch (codePoint) {\r\n case QUOTATION_MARK:\r\n return this.consumeStringToken(QUOTATION_MARK);\r\n case NUMBER_SIGN:\r\n var c1 = this.peekCodePoint(0);\r\n var c2 = this.peekCodePoint(1);\r\n var c3 = this.peekCodePoint(2);\r\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\r\n var flags = isIdentifierStart(c1, c2, c3)\r\n ? FLAG_ID\r\n : FLAG_UNRESTRICTED;\r\n var value = this.consumeName();\r\n return { type: 5 /* HASH_TOKEN */, value: value, flags: flags };\r\n }\r\n break;\r\n case DOLLAR_SIGN:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return SUFFIX_MATCH_TOKEN;\r\n }\r\n break;\r\n case APOSTROPHE:\r\n return this.consumeStringToken(APOSTROPHE);\r\n case LEFT_PARENTHESIS:\r\n return LEFT_PARENTHESIS_TOKEN;\r\n case RIGHT_PARENTHESIS:\r\n return RIGHT_PARENTHESIS_TOKEN;\r\n case ASTERISK:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return SUBSTRING_MATCH_TOKEN;\r\n }\r\n break;\r\n case PLUS_SIGN:\r\n if (\r\n isNumberStart(\r\n codePoint,\r\n this.peekCodePoint(0),\r\n this.peekCodePoint(1)\r\n )\r\n ) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeNumericToken();\r\n }\r\n break;\r\n case COMMA:\r\n return COMMA_TOKEN;\r\n case HYPHEN_MINUS:\r\n var e1 = codePoint;\r\n var e2 = this.peekCodePoint(0);\r\n var e3 = this.peekCodePoint(1);\r\n if (isNumberStart(e1, e2, e3)) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeNumericToken();\r\n }\r\n if (isIdentifierStart(e1, e2, e3)) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeIdentLikeToken();\r\n }\r\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\r\n this.consumeCodePoint();\r\n this.consumeCodePoint();\r\n return CDC_TOKEN;\r\n }\r\n break;\r\n case FULL_STOP:\r\n if (\r\n isNumberStart(\r\n codePoint,\r\n this.peekCodePoint(0),\r\n this.peekCodePoint(1)\r\n )\r\n ) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeNumericToken();\r\n }\r\n break;\r\n case SOLIDUS:\r\n if (this.peekCodePoint(0) === ASTERISK) {\r\n this.consumeCodePoint();\r\n while (true) {\r\n var c = this.consumeCodePoint();\r\n if (c === ASTERISK) {\r\n c = this.consumeCodePoint();\r\n if (c === SOLIDUS) {\r\n return this.consumeToken();\r\n }\r\n }\r\n if (c === EOF) {\r\n return this.consumeToken();\r\n }\r\n }\r\n }\r\n break;\r\n case COLON:\r\n return COLON_TOKEN;\r\n case SEMICOLON:\r\n return SEMICOLON_TOKEN;\r\n case LESS_THAN_SIGN:\r\n if (\r\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\r\n this.peekCodePoint(1) === HYPHEN_MINUS &&\r\n this.peekCodePoint(2) === HYPHEN_MINUS\r\n ) {\r\n this.consumeCodePoint();\r\n this.consumeCodePoint();\r\n return CDO_TOKEN;\r\n }\r\n break;\r\n case COMMERCIAL_AT:\r\n var a1 = this.peekCodePoint(0);\r\n var a2 = this.peekCodePoint(1);\r\n var a3 = this.peekCodePoint(2);\r\n if (isIdentifierStart(a1, a2, a3)) {\r\n var value = this.consumeName();\r\n return { type: 7 /* AT_KEYWORD_TOKEN */, value: value };\r\n }\r\n break;\r\n case LEFT_SQUARE_BRACKET:\r\n return LEFT_SQUARE_BRACKET_TOKEN;\r\n case REVERSE_SOLIDUS:\r\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeIdentLikeToken();\r\n }\r\n break;\r\n case RIGHT_SQUARE_BRACKET:\r\n return RIGHT_SQUARE_BRACKET_TOKEN;\r\n case CIRCUMFLEX_ACCENT:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return PREFIX_MATCH_TOKEN;\r\n }\r\n break;\r\n case LEFT_CURLY_BRACKET:\r\n return LEFT_CURLY_BRACKET_TOKEN;\r\n case RIGHT_CURLY_BRACKET:\r\n return RIGHT_CURLY_BRACKET_TOKEN;\r\n case u:\r\n case U:\r\n var u1 = this.peekCodePoint(0);\r\n var u2 = this.peekCodePoint(1);\r\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\r\n this.consumeCodePoint();\r\n this.consumeUnicodeRangeToken();\r\n }\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeIdentLikeToken();\r\n case VERTICAL_LINE:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return DASH_MATCH_TOKEN;\r\n }\r\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\r\n this.consumeCodePoint();\r\n return COLUMN_TOKEN;\r\n }\r\n break;\r\n case TILDE:\r\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\r\n this.consumeCodePoint();\r\n return INCLUDE_MATCH_TOKEN;\r\n }\r\n break;\r\n case EOF:\r\n return EOF_TOKEN;\r\n }\r\n if (isWhiteSpace(codePoint)) {\r\n this.consumeWhiteSpace();\r\n return WHITESPACE_TOKEN;\r\n }\r\n if (isDigit(codePoint)) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeNumericToken();\r\n }\r\n if (isNameStartCodePoint(codePoint)) {\r\n this.reconsumeCodePoint(codePoint);\r\n return this.consumeIdentLikeToken();\r\n }\r\n return { type: 6 /* DELIM_TOKEN */, value: fromCodePoint$1(codePoint) };\r\n };\r\n Tokenizer.prototype.consumeCodePoint = function () {\r\n var value = this._value.shift();\r\n return typeof value === \"undefined\" ? -1 : value;\r\n };\r\n Tokenizer.prototype.reconsumeCodePoint = function (codePoint) {\r\n this._value.unshift(codePoint);\r\n };\r\n Tokenizer.prototype.peekCodePoint = function (delta) {\r\n if (delta >= this._value.length) {\r\n return -1;\r\n }\r\n return this._value[delta];\r\n };\r\n Tokenizer.prototype.consumeUnicodeRangeToken = function () {\r\n var digits = [];\r\n var codePoint = this.consumeCodePoint();\r\n while (isHex(codePoint) && digits.length < 6) {\r\n digits.push(codePoint);\r\n codePoint = this.consumeCodePoint();\r\n }\r\n var questionMarks = false;\r\n while (codePoint === QUESTION_MARK && digits.length < 6) {\r\n digits.push(codePoint);\r\n codePoint = this.consumeCodePoint();\r\n questionMarks = true;\r\n }\r\n if (questionMarks) {\r\n var start_1 = parseInt(\r\n fromCodePoint$1.apply(\r\n void 0,\r\n digits.map(function (digit) {\r\n return digit === QUESTION_MARK ? ZERO : digit;\r\n })\r\n ),\r\n 16\r\n );\r\n var end = parseInt(\r\n fromCodePoint$1.apply(\r\n void 0,\r\n digits.map(function (digit) {\r\n return digit === QUESTION_MARK ? F : digit;\r\n })\r\n ),\r\n 16\r\n );\r\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start_1, end: end };\r\n }\r\n var start = parseInt(fromCodePoint$1.apply(void 0, digits), 16);\r\n if (\r\n this.peekCodePoint(0) === HYPHEN_MINUS &&\r\n isHex(this.peekCodePoint(1))\r\n ) {\r\n this.consumeCodePoint();\r\n codePoint = this.consumeCodePoint();\r\n var endDigits = [];\r\n while (isHex(codePoint) && endDigits.length < 6) {\r\n endDigits.push(codePoint);\r\n codePoint = this.consumeCodePoint();\r\n }\r\n var end = parseInt(fromCodePoint$1.apply(void 0, endDigits), 16);\r\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: end };\r\n } else {\r\n return { type: 30 /* UNICODE_RANGE_TOKEN */, start: start, end: start };\r\n }\r\n };\r\n Tokenizer.prototype.consumeIdentLikeToken = function () {\r\n var value = this.consumeName();\r\n if (\r\n value.toLowerCase() === \"url\" &&\r\n this.peekCodePoint(0) === LEFT_PARENTHESIS\r\n ) {\r\n this.consumeCodePoint();\r\n return this.consumeUrlToken();\r\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\r\n this.consumeCodePoint();\r\n return { type: 19 /* FUNCTION_TOKEN */, value: value };\r\n }\r\n return { type: 20 /* IDENT_TOKEN */, value: value };\r\n };\r\n Tokenizer.prototype.consumeUrlToken = function () {\r\n var value = [];\r\n this.consumeWhiteSpace();\r\n if (this.peekCodePoint(0) === EOF) {\r\n return { type: 22 /* URL_TOKEN */, value: \"\" };\r\n }\r\n var next = this.peekCodePoint(0);\r\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\r\n var stringToken = this.consumeStringToken(this.consumeCodePoint());\r\n if (stringToken.type === 0 /* STRING_TOKEN */) {\r\n this.consumeWhiteSpace();\r\n if (\r\n this.peekCodePoint(0) === EOF ||\r\n this.peekCodePoint(0) === RIGHT_PARENTHESIS\r\n ) {\r\n this.consumeCodePoint();\r\n return { type: 22 /* URL_TOKEN */, value: stringToken.value };\r\n }\r\n }\r\n this.consumeBadUrlRemnants();\r\n return BAD_URL_TOKEN;\r\n }\r\n while (true) {\r\n var codePoint = this.consumeCodePoint();\r\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\r\n return {\r\n type: 22 /* URL_TOKEN */,\r\n value: fromCodePoint$1.apply(void 0, value),\r\n };\r\n } else if (isWhiteSpace(codePoint)) {\r\n this.consumeWhiteSpace();\r\n if (\r\n this.peekCodePoint(0) === EOF ||\r\n this.peekCodePoint(0) === RIGHT_PARENTHESIS\r\n ) {\r\n this.consumeCodePoint();\r\n return {\r\n type: 22 /* URL_TOKEN */,\r\n value: fromCodePoint$1.apply(void 0, value),\r\n };\r\n }\r\n this.consumeBadUrlRemnants();\r\n return BAD_URL_TOKEN;\r\n } else if (\r\n codePoint === QUOTATION_MARK ||\r\n codePoint === APOSTROPHE ||\r\n codePoint === LEFT_PARENTHESIS ||\r\n isNonPrintableCodePoint(codePoint)\r\n ) {\r\n this.consumeBadUrlRemnants();\r\n return BAD_URL_TOKEN;\r\n } else if (codePoint === REVERSE_SOLIDUS) {\r\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n value.push(this.consumeEscapedCodePoint());\r\n } else {\r\n this.consumeBadUrlRemnants();\r\n return BAD_URL_TOKEN;\r\n }\r\n } else {\r\n value.push(codePoint);\r\n }\r\n }\r\n };\r\n Tokenizer.prototype.consumeWhiteSpace = function () {\r\n while (isWhiteSpace(this.peekCodePoint(0))) {\r\n this.consumeCodePoint();\r\n }\r\n };\r\n Tokenizer.prototype.consumeBadUrlRemnants = function () {\r\n while (true) {\r\n var codePoint = this.consumeCodePoint();\r\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\r\n return;\r\n }\r\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n this.consumeEscapedCodePoint();\r\n }\r\n }\r\n };\r\n Tokenizer.prototype.consumeStringSlice = function (count) {\r\n var SLICE_STACK_SIZE = 50000;\r\n var value = \"\";\r\n while (count > 0) {\r\n var amount = Math.min(SLICE_STACK_SIZE, count);\r\n value += fromCodePoint$1.apply(void 0, this._value.splice(0, amount));\r\n count -= amount;\r\n }\r\n this._value.shift();\r\n return value;\r\n };\r\n Tokenizer.prototype.consumeStringToken = function (endingCodePoint) {\r\n var value = \"\";\r\n var i = 0;\r\n do {\r\n var codePoint = this._value[i];\r\n if (\r\n codePoint === EOF ||\r\n codePoint === undefined ||\r\n codePoint === endingCodePoint\r\n ) {\r\n value += this.consumeStringSlice(i);\r\n return { type: 0 /* STRING_TOKEN */, value: value };\r\n }\r\n if (codePoint === LINE_FEED) {\r\n this._value.splice(0, i);\r\n return BAD_STRING_TOKEN;\r\n }\r\n if (codePoint === REVERSE_SOLIDUS) {\r\n var next = this._value[i + 1];\r\n if (next !== EOF && next !== undefined) {\r\n if (next === LINE_FEED) {\r\n value += this.consumeStringSlice(i);\r\n i = -1;\r\n this._value.shift();\r\n } else if (isValidEscape(codePoint, next)) {\r\n value += this.consumeStringSlice(i);\r\n value += fromCodePoint$1(this.consumeEscapedCodePoint());\r\n i = -1;\r\n }\r\n }\r\n }\r\n i++;\r\n } while (true);\r\n };\r\n Tokenizer.prototype.consumeNumber = function () {\r\n var repr = [];\r\n var type = FLAG_INTEGER;\r\n var c1 = this.peekCodePoint(0);\r\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\r\n repr.push(this.consumeCodePoint());\r\n }\r\n while (isDigit(this.peekCodePoint(0))) {\r\n repr.push(this.consumeCodePoint());\r\n }\r\n c1 = this.peekCodePoint(0);\r\n var c2 = this.peekCodePoint(1);\r\n if (c1 === FULL_STOP && isDigit(c2)) {\r\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\r\n type = FLAG_NUMBER;\r\n while (isDigit(this.peekCodePoint(0))) {\r\n repr.push(this.consumeCodePoint());\r\n }\r\n }\r\n c1 = this.peekCodePoint(0);\r\n c2 = this.peekCodePoint(1);\r\n var c3 = this.peekCodePoint(2);\r\n if (\r\n (c1 === E || c1 === e) &&\r\n (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) ||\r\n isDigit(c2))\r\n ) {\r\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\r\n type = FLAG_NUMBER;\r\n while (isDigit(this.peekCodePoint(0))) {\r\n repr.push(this.consumeCodePoint());\r\n }\r\n }\r\n return [stringToNumber(repr), type];\r\n };\r\n Tokenizer.prototype.consumeNumericToken = function () {\r\n var _a = this.consumeNumber(),\r\n number = _a[0],\r\n flags = _a[1];\r\n var c1 = this.peekCodePoint(0);\r\n var c2 = this.peekCodePoint(1);\r\n var c3 = this.peekCodePoint(2);\r\n if (isIdentifierStart(c1, c2, c3)) {\r\n var unit = this.consumeName();\r\n return {\r\n type: 15 /* DIMENSION_TOKEN */,\r\n number: number,\r\n flags: flags,\r\n unit: unit,\r\n };\r\n }\r\n if (c1 === PERCENTAGE_SIGN) {\r\n this.consumeCodePoint();\r\n return {\r\n type: 16 /* PERCENTAGE_TOKEN */,\r\n number: number,\r\n flags: flags,\r\n };\r\n }\r\n return { type: 17 /* NUMBER_TOKEN */, number: number, flags: flags };\r\n };\r\n Tokenizer.prototype.consumeEscapedCodePoint = function () {\r\n var codePoint = this.consumeCodePoint();\r\n if (isHex(codePoint)) {\r\n var hex = fromCodePoint$1(codePoint);\r\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\r\n hex += fromCodePoint$1(this.consumeCodePoint());\r\n }\r\n if (isWhiteSpace(this.peekCodePoint(0))) {\r\n this.consumeCodePoint();\r\n }\r\n var hexCodePoint = parseInt(hex, 16);\r\n if (\r\n hexCodePoint === 0 ||\r\n isSurrogateCodePoint(hexCodePoint) ||\r\n hexCodePoint > 0x10ffff\r\n ) {\r\n return REPLACEMENT_CHARACTER;\r\n }\r\n return hexCodePoint;\r\n }\r\n if (codePoint === EOF) {\r\n return REPLACEMENT_CHARACTER;\r\n }\r\n return codePoint;\r\n };\r\n Tokenizer.prototype.consumeName = function () {\r\n var result = \"\";\r\n while (true) {\r\n var codePoint = this.consumeCodePoint();\r\n if (isNameCodePoint(codePoint)) {\r\n result += fromCodePoint$1(codePoint);\r\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\r\n result += fromCodePoint$1(this.consumeEscapedCodePoint());\r\n } else {\r\n this.reconsumeCodePoint(codePoint);\r\n return result;\r\n }\r\n }\r\n };\r\n return Tokenizer;\r\n })();\r\n\r\n var Parser = /** @class */ (function () {\r\n function Parser(tokens) {\r\n this._tokens = tokens;\r\n }\r\n Parser.create = function (value) {\r\n var tokenizer = new Tokenizer();\r\n tokenizer.write(value);\r\n return new Parser(tokenizer.read());\r\n };\r\n Parser.parseValue = function (value) {\r\n return Parser.create(value).parseComponentValue();\r\n };\r\n Parser.parseValues = function (value) {\r\n return Parser.create(value).parseComponentValues();\r\n };\r\n Parser.prototype.parseComponentValue = function () {\r\n var token = this.consumeToken();\r\n while (token.type === 31 /* WHITESPACE_TOKEN */) {\r\n token = this.consumeToken();\r\n }\r\n if (token.type === 32 /* EOF_TOKEN */) {\r\n throw new SyntaxError(\r\n \"Error parsing CSS component value, unexpected EOF\"\r\n );\r\n }\r\n this.reconsumeToken(token);\r\n var value = this.consumeComponentValue();\r\n do {\r\n token = this.consumeToken();\r\n } while (token.type === 31 /* WHITESPACE_TOKEN */);\r\n if (token.type === 32 /* EOF_TOKEN */) {\r\n return value;\r\n }\r\n throw new SyntaxError(\r\n \"Error parsing CSS component value, multiple values found when expecting only one\"\r\n );\r\n };\r\n Parser.prototype.parseComponentValues = function () {\r\n var values = [];\r\n while (true) {\r\n var value = this.consumeComponentValue();\r\n if (value.type === 32 /* EOF_TOKEN */) {\r\n return values;\r\n }\r\n values.push(value);\r\n values.push();\r\n }\r\n };\r\n Parser.prototype.consumeComponentValue = function () {\r\n var token = this.consumeToken();\r\n switch (token.type) {\r\n case 11 /* LEFT_CURLY_BRACKET_TOKEN */:\r\n case 28 /* LEFT_SQUARE_BRACKET_TOKEN */:\r\n case 2 /* LEFT_PARENTHESIS_TOKEN */:\r\n return this.consumeSimpleBlock(token.type);\r\n case 19 /* FUNCTION_TOKEN */:\r\n return this.consumeFunction(token);\r\n }\r\n return token;\r\n };\r\n Parser.prototype.consumeSimpleBlock = function (type) {\r\n var block = { type: type, values: [] };\r\n var token = this.consumeToken();\r\n while (true) {\r\n if (\r\n token.type === 32 /* EOF_TOKEN */ ||\r\n isEndingTokenFor(token, type)\r\n ) {\r\n return block;\r\n }\r\n this.reconsumeToken(token);\r\n block.values.push(this.consumeComponentValue());\r\n token = this.consumeToken();\r\n }\r\n };\r\n Parser.prototype.consumeFunction = function (functionToken) {\r\n var cssFunction = {\r\n name: functionToken.value,\r\n values: [],\r\n type: 18 /* FUNCTION */,\r\n };\r\n while (true) {\r\n var token = this.consumeToken();\r\n if (\r\n token.type === 32 /* EOF_TOKEN */ ||\r\n token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */\r\n ) {\r\n return cssFunction;\r\n }\r\n this.reconsumeToken(token);\r\n cssFunction.values.push(this.consumeComponentValue());\r\n }\r\n };\r\n Parser.prototype.consumeToken = function () {\r\n var token = this._tokens.shift();\r\n return typeof token === \"undefined\" ? EOF_TOKEN : token;\r\n };\r\n Parser.prototype.reconsumeToken = function (token) {\r\n this._tokens.unshift(token);\r\n };\r\n return Parser;\r\n })();\r\n var isDimensionToken = function (token) {\r\n return token.type === 15 /* DIMENSION_TOKEN */;\r\n };\r\n var isNumberToken = function (token) {\r\n return token.type === 17 /* NUMBER_TOKEN */;\r\n };\r\n var isIdentToken = function (token) {\r\n return token.type === 20 /* IDENT_TOKEN */;\r\n };\r\n var isStringToken = function (token) {\r\n return token.type === 0 /* STRING_TOKEN */;\r\n };\r\n var isIdentWithValue = function (token, value) {\r\n return isIdentToken(token) && token.value === value;\r\n };\r\n var nonWhiteSpace = function (token) {\r\n return token.type !== 31 /* WHITESPACE_TOKEN */;\r\n };\r\n var nonFunctionArgSeparator = function (token) {\r\n return (\r\n token.type !== 31 /* WHITESPACE_TOKEN */ &&\r\n token.type !== 4 /* COMMA_TOKEN */\r\n );\r\n };\r\n var parseFunctionArgs = function (tokens) {\r\n var args = [];\r\n var arg = [];\r\n tokens.forEach(function (token) {\r\n if (token.type === 4 /* COMMA_TOKEN */) {\r\n if (arg.length === 0) {\r\n throw new Error(\"Error parsing function args, zero tokens for arg\");\r\n }\r\n args.push(arg);\r\n arg = [];\r\n return;\r\n }\r\n if (token.type !== 31 /* WHITESPACE_TOKEN */) {\r\n arg.push(token);\r\n }\r\n });\r\n if (arg.length) {\r\n args.push(arg);\r\n }\r\n return args;\r\n };\r\n var isEndingTokenFor = function (token, type) {\r\n if (\r\n type === 11 /* LEFT_CURLY_BRACKET_TOKEN */ &&\r\n token.type === 12 /* RIGHT_CURLY_BRACKET_TOKEN */\r\n ) {\r\n return true;\r\n }\r\n if (\r\n type === 28 /* LEFT_SQUARE_BRACKET_TOKEN */ &&\r\n token.type === 29 /* RIGHT_SQUARE_BRACKET_TOKEN */\r\n ) {\r\n return true;\r\n }\r\n return (\r\n type === 2 /* LEFT_PARENTHESIS_TOKEN */ &&\r\n token.type === 3 /* RIGHT_PARENTHESIS_TOKEN */\r\n );\r\n };\r\n\r\n var isLength = function (token) {\r\n return (\r\n token.type === 17 /* NUMBER_TOKEN */ ||\r\n token.type === 15 /* DIMENSION_TOKEN */\r\n );\r\n };\r\n\r\n var isLengthPercentage = function (token) {\r\n return token.type === 16 /* PERCENTAGE_TOKEN */ || isLength(token);\r\n };\r\n var parseLengthPercentageTuple = function (tokens) {\r\n return tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\r\n };\r\n var ZERO_LENGTH = {\r\n type: 17 /* NUMBER_TOKEN */,\r\n number: 0,\r\n flags: FLAG_INTEGER,\r\n };\r\n var FIFTY_PERCENT = {\r\n type: 16 /* PERCENTAGE_TOKEN */,\r\n number: 50,\r\n flags: FLAG_INTEGER,\r\n };\r\n var HUNDRED_PERCENT = {\r\n type: 16 /* PERCENTAGE_TOKEN */,\r\n number: 100,\r\n flags: FLAG_INTEGER,\r\n };\r\n var getAbsoluteValueForTuple = function (tuple, width, height) {\r\n var x = tuple[0],\r\n y = tuple[1];\r\n return [\r\n getAbsoluteValue(x, width),\r\n getAbsoluteValue(typeof y !== \"undefined\" ? y : x, height),\r\n ];\r\n };\r\n var getAbsoluteValue = function (token, parent) {\r\n if (token.type === 16 /* PERCENTAGE_TOKEN */) {\r\n return (token.number / 100) * parent;\r\n }\r\n if (isDimensionToken(token)) {\r\n switch (token.unit) {\r\n case \"rem\":\r\n case \"em\":\r\n return 16 * token.number; // TODO use correct font-size\r\n case \"px\":\r\n default:\r\n return token.number;\r\n }\r\n }\r\n return token.number;\r\n };\r\n\r\n var DEG = \"deg\";\r\n var GRAD = \"grad\";\r\n var RAD = \"rad\";\r\n var TURN = \"turn\";\r\n var angle = {\r\n name: \"angle\",\r\n parse: function (_context, value) {\r\n if (value.type === 15 /* DIMENSION_TOKEN */) {\r\n switch (value.unit) {\r\n case DEG:\r\n return (Math.PI * value.number) / 180;\r\n case GRAD:\r\n return (Math.PI / 200) * value.number;\r\n case RAD:\r\n return value.number;\r\n case TURN:\r\n return Math.PI * 2 * value.number;\r\n }\r\n }\r\n throw new Error(\"Unsupported angle type\");\r\n },\r\n };\r\n var isAngle = function (value) {\r\n if (value.type === 15 /* DIMENSION_TOKEN */) {\r\n if (\r\n value.unit === DEG ||\r\n value.unit === GRAD ||\r\n value.unit === RAD ||\r\n value.unit === TURN\r\n ) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n var parseNamedSide = function (tokens) {\r\n var sideOrCorner = tokens\r\n .filter(isIdentToken)\r\n .map(function (ident) {\r\n return ident.value;\r\n })\r\n .join(\" \");\r\n switch (sideOrCorner) {\r\n case \"to bottom right\":\r\n case \"to right bottom\":\r\n case \"left top\":\r\n case \"top left\":\r\n return [ZERO_LENGTH, ZERO_LENGTH];\r\n case \"to top\":\r\n case \"bottom\":\r\n return deg(0);\r\n case \"to bottom left\":\r\n case \"to left bottom\":\r\n case \"right top\":\r\n case \"top right\":\r\n return [ZERO_LENGTH, HUNDRED_PERCENT];\r\n case \"to right\":\r\n case \"left\":\r\n return deg(90);\r\n case \"to top left\":\r\n case \"to left top\":\r\n case \"right bottom\":\r\n case \"bottom right\":\r\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\r\n case \"to bottom\":\r\n case \"top\":\r\n return deg(180);\r\n case \"to top right\":\r\n case \"to right top\":\r\n case \"left bottom\":\r\n case \"bottom left\":\r\n return [HUNDRED_PERCENT, ZERO_LENGTH];\r\n case \"to left\":\r\n case \"right\":\r\n return deg(270);\r\n }\r\n return 0;\r\n };\r\n var deg = function (deg) {\r\n return (Math.PI * deg) / 180;\r\n };\r\n\r\n var color$1 = {\r\n name: \"color\",\r\n parse: function (context, value) {\r\n if (value.type === 18 /* FUNCTION */) {\r\n var colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\r\n if (typeof colorFunction === \"undefined\") {\r\n throw new Error(\r\n 'Attempting to parse an unsupported color function \"' +\r\n value.name +\r\n '\"'\r\n );\r\n }\r\n return colorFunction(context, value.values);\r\n }\r\n if (value.type === 5 /* HASH_TOKEN */) {\r\n if (value.value.length === 3) {\r\n var r = value.value.substring(0, 1);\r\n var g = value.value.substring(1, 2);\r\n var b = value.value.substring(2, 3);\r\n return pack(\r\n parseInt(r + r, 16),\r\n parseInt(g + g, 16),\r\n parseInt(b + b, 16),\r\n 1\r\n );\r\n }\r\n if (value.value.length === 4) {\r\n var r = value.value.substring(0, 1);\r\n var g = value.value.substring(1, 2);\r\n var b = value.value.substring(2, 3);\r\n var a = value.value.substring(3, 4);\r\n return pack(\r\n parseInt(r + r, 16),\r\n parseInt(g + g, 16),\r\n parseInt(b + b, 16),\r\n parseInt(a + a, 16) / 255\r\n );\r\n }\r\n if (value.value.length === 6) {\r\n var r = value.value.substring(0, 2);\r\n var g = value.value.substring(2, 4);\r\n var b = value.value.substring(4, 6);\r\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\r\n }\r\n if (value.value.length === 8) {\r\n var r = value.value.substring(0, 2);\r\n var g = value.value.substring(2, 4);\r\n var b = value.value.substring(4, 6);\r\n var a = value.value.substring(6, 8);\r\n return pack(\r\n parseInt(r, 16),\r\n parseInt(g, 16),\r\n parseInt(b, 16),\r\n parseInt(a, 16) / 255\r\n );\r\n }\r\n }\r\n if (value.type === 20 /* IDENT_TOKEN */) {\r\n var namedColor = COLORS[value.value.toUpperCase()];\r\n if (typeof namedColor !== \"undefined\") {\r\n return namedColor;\r\n }\r\n }\r\n return COLORS.TRANSPARENT;\r\n },\r\n };\r\n var isTransparent = function (color) {\r\n return (0xff & color) === 0;\r\n };\r\n var asString = function (color) {\r\n var alpha = 0xff & color;\r\n var blue = 0xff & (color >> 8);\r\n var green = 0xff & (color >> 16);\r\n var red = 0xff & (color >> 24);\r\n return alpha < 255\r\n ? \"rgba(\" + red + \",\" + green + \",\" + blue + \",\" + alpha / 255 + \")\"\r\n : \"rgb(\" + red + \",\" + green + \",\" + blue + \")\";\r\n };\r\n var pack = function (r, g, b, a) {\r\n return (\r\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0\r\n );\r\n };\r\n var getTokenColorValue = function (token, i) {\r\n if (token.type === 17 /* NUMBER_TOKEN */) {\r\n return token.number;\r\n }\r\n if (token.type === 16 /* PERCENTAGE_TOKEN */) {\r\n var max = i === 3 ? 1 : 255;\r\n return i === 3\r\n ? (token.number / 100) * max\r\n : Math.round((token.number / 100) * max);\r\n }\r\n return 0;\r\n };\r\n var rgb = function (_context, args) {\r\n var tokens = args.filter(nonFunctionArgSeparator);\r\n if (tokens.length === 3) {\r\n var _a = tokens.map(getTokenColorValue),\r\n r = _a[0],\r\n g = _a[1],\r\n b = _a[2];\r\n return pack(r, g, b, 1);\r\n }\r\n if (tokens.length === 4) {\r\n var _b = tokens.map(getTokenColorValue),\r\n r = _b[0],\r\n g = _b[1],\r\n b = _b[2],\r\n a = _b[3];\r\n return pack(r, g, b, a);\r\n }\r\n return 0;\r\n };\r\n function hue2rgb(t1, t2, hue) {\r\n if (hue < 0) {\r\n hue += 1;\r\n }\r\n if (hue >= 1) {\r\n hue -= 1;\r\n }\r\n if (hue < 1 / 6) {\r\n return (t2 - t1) * hue * 6 + t1;\r\n } else if (hue < 1 / 2) {\r\n return t2;\r\n } else if (hue < 2 / 3) {\r\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\r\n } else {\r\n return t1;\r\n }\r\n }\r\n var hsl = function (context, args) {\r\n var tokens = args.filter(nonFunctionArgSeparator);\r\n var hue = tokens[0],\r\n saturation = tokens[1],\r\n lightness = tokens[2],\r\n alpha = tokens[3];\r\n var h =\r\n (hue.type === 17 /* NUMBER_TOKEN */\r\n ? deg(hue.number)\r\n : angle.parse(context, hue)) /\r\n (Math.PI * 2);\r\n var s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\r\n var l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\r\n var a =\r\n typeof alpha !== \"undefined\" && isLengthPercentage(alpha)\r\n ? getAbsoluteValue(alpha, 1)\r\n : 1;\r\n if (s === 0) {\r\n return pack(l * 255, l * 255, l * 255, 1);\r\n }\r\n var t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\r\n var t1 = l * 2 - t2;\r\n var r = hue2rgb(t1, t2, h + 1 / 3);\r\n var g = hue2rgb(t1, t2, h);\r\n var b = hue2rgb(t1, t2, h - 1 / 3);\r\n return pack(r * 255, g * 255, b * 255, a);\r\n };\r\n var SUPPORTED_COLOR_FUNCTIONS = {\r\n hsl: hsl,\r\n hsla: hsl,\r\n rgb: rgb,\r\n rgba: rgb,\r\n };\r\n var parseColor = function (context, value) {\r\n return color$1.parse(context, Parser.create(value).parseComponentValue());\r\n };\r\n var COLORS = {\r\n ALICEBLUE: 0xf0f8ffff,\r\n ANTIQUEWHITE: 0xfaebd7ff,\r\n AQUA: 0x00ffffff,\r\n AQUAMARINE: 0x7fffd4ff,\r\n AZURE: 0xf0ffffff,\r\n BEIGE: 0xf5f5dcff,\r\n BISQUE: 0xffe4c4ff,\r\n BLACK: 0x000000ff,\r\n BLANCHEDALMOND: 0xffebcdff,\r\n BLUE: 0x0000ffff,\r\n BLUEVIOLET: 0x8a2be2ff,\r\n BROWN: 0xa52a2aff,\r\n BURLYWOOD: 0xdeb887ff,\r\n CADETBLUE: 0x5f9ea0ff,\r\n CHARTREUSE: 0x7fff00ff,\r\n CHOCOLATE: 0xd2691eff,\r\n CORAL: 0xff7f50ff,\r\n CORNFLOWERBLUE: 0x6495edff,\r\n CORNSILK: 0xfff8dcff,\r\n CRIMSON: 0xdc143cff,\r\n CYAN: 0x00ffffff,\r\n DARKBLUE: 0x00008bff,\r\n DARKCYAN: 0x008b8bff,\r\n DARKGOLDENROD: 0xb886bbff,\r\n DARKGRAY: 0xa9a9a9ff,\r\n DARKGREEN: 0x006400ff,\r\n DARKGREY: 0xa9a9a9ff,\r\n DARKKHAKI: 0xbdb76bff,\r\n DARKMAGENTA: 0x8b008bff,\r\n DARKOLIVEGREEN: 0x556b2fff,\r\n DARKORANGE: 0xff8c00ff,\r\n DARKORCHID: 0x9932ccff,\r\n DARKRED: 0x8b0000ff,\r\n DARKSALMON: 0xe9967aff,\r\n DARKSEAGREEN: 0x8fbc8fff,\r\n DARKSLATEBLUE: 0x483d8bff,\r\n DARKSLATEGRAY: 0x2f4f4fff,\r\n DARKSLATEGREY: 0x2f4f4fff,\r\n DARKTURQUOISE: 0x00ced1ff,\r\n DARKVIOLET: 0x9400d3ff,\r\n DEEPPINK: 0xff1493ff,\r\n DEEPSKYBLUE: 0x00bfffff,\r\n DIMGRAY: 0x696969ff,\r\n DIMGREY: 0x696969ff,\r\n DODGERBLUE: 0x1e90ffff,\r\n FIREBRICK: 0xb22222ff,\r\n FLORALWHITE: 0xfffaf0ff,\r\n FORESTGREEN: 0x228b22ff,\r\n FUCHSIA: 0xff00ffff,\r\n GAINSBORO: 0xdcdcdcff,\r\n GHOSTWHITE: 0xf8f8ffff,\r\n GOLD: 0xffd700ff,\r\n GOLDENROD: 0xdaa520ff,\r\n GRAY: 0x808080ff,\r\n GREEN: 0x008000ff,\r\n GREENYELLOW: 0xadff2fff,\r\n GREY: 0x808080ff,\r\n HONEYDEW: 0xf0fff0ff,\r\n HOTPINK: 0xff69b4ff,\r\n INDIANRED: 0xcd5c5cff,\r\n INDIGO: 0x4b0082ff,\r\n IVORY: 0xfffff0ff,\r\n KHAKI: 0xf0e68cff,\r\n LAVENDER: 0xe6e6faff,\r\n LAVENDERBLUSH: 0xfff0f5ff,\r\n LAWNGREEN: 0x7cfc00ff,\r\n LEMONCHIFFON: 0xfffacdff,\r\n LIGHTBLUE: 0xadd8e6ff,\r\n LIGHTCORAL: 0xf08080ff,\r\n LIGHTCYAN: 0xe0ffffff,\r\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\r\n LIGHTGRAY: 0xd3d3d3ff,\r\n LIGHTGREEN: 0x90ee90ff,\r\n LIGHTGREY: 0xd3d3d3ff,\r\n LIGHTPINK: 0xffb6c1ff,\r\n LIGHTSALMON: 0xffa07aff,\r\n LIGHTSEAGREEN: 0x20b2aaff,\r\n LIGHTSKYBLUE: 0x87cefaff,\r\n LIGHTSLATEGRAY: 0x778899ff,\r\n LIGHTSLATEGREY: 0x778899ff,\r\n LIGHTSTEELBLUE: 0xb0c4deff,\r\n LIGHTYELLOW: 0xffffe0ff,\r\n LIME: 0x00ff00ff,\r\n LIMEGREEN: 0x32cd32ff,\r\n LINEN: 0xfaf0e6ff,\r\n MAGENTA: 0xff00ffff,\r\n MAROON: 0x800000ff,\r\n MEDIUMAQUAMARINE: 0x66cdaaff,\r\n MEDIUMBLUE: 0x0000cdff,\r\n MEDIUMORCHID: 0xba55d3ff,\r\n MEDIUMPURPLE: 0x9370dbff,\r\n MEDIUMSEAGREEN: 0x3cb371ff,\r\n MEDIUMSLATEBLUE: 0x7b68eeff,\r\n MEDIUMSPRINGGREEN: 0x00fa9aff,\r\n MEDIUMTURQUOISE: 0x48d1ccff,\r\n MEDIUMVIOLETRED: 0xc71585ff,\r\n MIDNIGHTBLUE: 0x191970ff,\r\n MINTCREAM: 0xf5fffaff,\r\n MISTYROSE: 0xffe4e1ff,\r\n MOCCASIN: 0xffe4b5ff,\r\n NAVAJOWHITE: 0xffdeadff,\r\n NAVY: 0x000080ff,\r\n OLDLACE: 0xfdf5e6ff,\r\n OLIVE: 0x808000ff,\r\n OLIVEDRAB: 0x6b8e23ff,\r\n ORANGE: 0xffa500ff,\r\n ORANGERED: 0xff4500ff,\r\n ORCHID: 0xda70d6ff,\r\n PALEGOLDENROD: 0xeee8aaff,\r\n PALEGREEN: 0x98fb98ff,\r\n PALETURQUOISE: 0xafeeeeff,\r\n PALEVIOLETRED: 0xdb7093ff,\r\n PAPAYAWHIP: 0xffefd5ff,\r\n PEACHPUFF: 0xffdab9ff,\r\n PERU: 0xcd853fff,\r\n PINK: 0xffc0cbff,\r\n PLUM: 0xdda0ddff,\r\n POWDERBLUE: 0xb0e0e6ff,\r\n PURPLE: 0x800080ff,\r\n REBECCAPURPLE: 0x663399ff,\r\n RED: 0xff0000ff,\r\n ROSYBROWN: 0xbc8f8fff,\r\n ROYALBLUE: 0x4169e1ff,\r\n SADDLEBROWN: 0x8b4513ff,\r\n SALMON: 0xfa8072ff,\r\n SANDYBROWN: 0xf4a460ff,\r\n SEAGREEN: 0x2e8b57ff,\r\n SEASHELL: 0xfff5eeff,\r\n SIENNA: 0xa0522dff,\r\n SILVER: 0xc0c0c0ff,\r\n SKYBLUE: 0x87ceebff,\r\n SLATEBLUE: 0x6a5acdff,\r\n SLATEGRAY: 0x708090ff,\r\n SLATEGREY: 0x708090ff,\r\n SNOW: 0xfffafaff,\r\n SPRINGGREEN: 0x00ff7fff,\r\n STEELBLUE: 0x4682b4ff,\r\n TAN: 0xd2b48cff,\r\n TEAL: 0x008080ff,\r\n THISTLE: 0xd8bfd8ff,\r\n TOMATO: 0xff6347ff,\r\n TRANSPARENT: 0x00000000,\r\n TURQUOISE: 0x40e0d0ff,\r\n VIOLET: 0xee82eeff,\r\n WHEAT: 0xf5deb3ff,\r\n WHITE: 0xffffffff,\r\n WHITESMOKE: 0xf5f5f5ff,\r\n YELLOW: 0xffff00ff,\r\n YELLOWGREEN: 0x9acd32ff,\r\n };\r\n\r\n var backgroundClip = {\r\n name: \"background-clip\",\r\n initialValue: \"border-box\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n return tokens.map(function (token) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case \"padding-box\":\r\n return 1 /* PADDING_BOX */;\r\n case \"content-box\":\r\n return 2 /* CONTENT_BOX */;\r\n }\r\n }\r\n return 0 /* BORDER_BOX */;\r\n });\r\n },\r\n };\r\n\r\n var backgroundColor = {\r\n name: \"background-color\",\r\n initialValue: \"transparent\",\r\n prefix: false,\r\n type: 3 /* TYPE_VALUE */,\r\n format: \"color\",\r\n };\r\n\r\n var parseColorStop = function (context, args) {\r\n var color = color$1.parse(context, args[0]);\r\n var stop = args[1];\r\n return stop && isLengthPercentage(stop)\r\n ? { color: color, stop: stop }\r\n : { color: color, stop: null };\r\n };\r\n var processColorStops = function (stops, lineLength) {\r\n var first = stops[0];\r\n var last = stops[stops.length - 1];\r\n if (first.stop === null) {\r\n first.stop = ZERO_LENGTH;\r\n }\r\n if (last.stop === null) {\r\n last.stop = HUNDRED_PERCENT;\r\n }\r\n var processStops = [];\r\n var previous = 0;\r\n for (var i = 0; i < stops.length; i++) {\r\n var stop_1 = stops[i].stop;\r\n if (stop_1 !== null) {\r\n var absoluteValue = getAbsoluteValue(stop_1, lineLength);\r\n if (absoluteValue > previous) {\r\n processStops.push(absoluteValue);\r\n } else {\r\n processStops.push(previous);\r\n }\r\n previous = absoluteValue;\r\n } else {\r\n processStops.push(null);\r\n }\r\n }\r\n var gapBegin = null;\r\n for (var i = 0; i < processStops.length; i++) {\r\n var stop_2 = processStops[i];\r\n if (stop_2 === null) {\r\n if (gapBegin === null) {\r\n gapBegin = i;\r\n }\r\n } else if (gapBegin !== null) {\r\n var gapLength = i - gapBegin;\r\n var beforeGap = processStops[gapBegin - 1];\r\n var gapValue = (stop_2 - beforeGap) / (gapLength + 1);\r\n for (var g = 1; g <= gapLength; g++) {\r\n processStops[gapBegin + g - 1] = gapValue * g;\r\n }\r\n gapBegin = null;\r\n }\r\n }\r\n return stops.map(function (_a, i) {\r\n var color = _a.color;\r\n return {\r\n color: color,\r\n stop: Math.max(Math.min(1, processStops[i] / lineLength), 0),\r\n };\r\n });\r\n };\r\n var getAngleFromCorner = function (corner, width, height) {\r\n var centerX = width / 2;\r\n var centerY = height / 2;\r\n var x = getAbsoluteValue(corner[0], width) - centerX;\r\n var y = centerY - getAbsoluteValue(corner[1], height);\r\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\r\n };\r\n var calculateGradientDirection = function (angle, width, height) {\r\n var radian =\r\n typeof angle === \"number\"\r\n ? angle\r\n : getAngleFromCorner(angle, width, height);\r\n var lineLength =\r\n Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\r\n var halfWidth = width / 2;\r\n var halfHeight = height / 2;\r\n var halfLineLength = lineLength / 2;\r\n var yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\r\n var xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\r\n return [\r\n lineLength,\r\n halfWidth - xDiff,\r\n halfWidth + xDiff,\r\n halfHeight - yDiff,\r\n halfHeight + yDiff,\r\n ];\r\n };\r\n var distance = function (a, b) {\r\n return Math.sqrt(a * a + b * b);\r\n };\r\n var findCorner = function (width, height, x, y, closest) {\r\n var corners = [\r\n [0, 0],\r\n [0, height],\r\n [width, 0],\r\n [width, height],\r\n ];\r\n return corners.reduce(\r\n function (stat, corner) {\r\n var cx = corner[0],\r\n cy = corner[1];\r\n var d = distance(x - cx, y - cy);\r\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\r\n return {\r\n optimumCorner: corner,\r\n optimumDistance: d,\r\n };\r\n }\r\n return stat;\r\n },\r\n {\r\n optimumDistance: closest ? Infinity : -Infinity,\r\n optimumCorner: null,\r\n }\r\n ).optimumCorner;\r\n };\r\n var calculateRadius = function (gradient, x, y, width, height) {\r\n var rx = 0;\r\n var ry = 0;\r\n switch (gradient.size) {\r\n case 0 /* CLOSEST_SIDE */:\r\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\r\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\r\n if (gradient.shape === 0 /* CIRCLE */) {\r\n rx = ry = Math.min(\r\n Math.abs(x),\r\n Math.abs(x - width),\r\n Math.abs(y),\r\n Math.abs(y - height)\r\n );\r\n } else if (gradient.shape === 1 /* ELLIPSE */) {\r\n rx = Math.min(Math.abs(x), Math.abs(x - width));\r\n ry = Math.min(Math.abs(y), Math.abs(y - height));\r\n }\r\n break;\r\n case 2 /* CLOSEST_CORNER */:\r\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\r\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\r\n if (gradient.shape === 0 /* CIRCLE */) {\r\n rx = ry = Math.min(\r\n distance(x, y),\r\n distance(x, y - height),\r\n distance(x - width, y),\r\n distance(x - width, y - height)\r\n );\r\n } else if (gradient.shape === 1 /* ELLIPSE */) {\r\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\r\n var c =\r\n Math.min(Math.abs(y), Math.abs(y - height)) /\r\n Math.min(Math.abs(x), Math.abs(x - width));\r\n var _a = findCorner(width, height, x, y, true),\r\n cx = _a[0],\r\n cy = _a[1];\r\n rx = distance(cx - x, (cy - y) / c);\r\n ry = c * rx;\r\n }\r\n break;\r\n case 1 /* FARTHEST_SIDE */:\r\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\r\n if (gradient.shape === 0 /* CIRCLE */) {\r\n rx = ry = Math.max(\r\n Math.abs(x),\r\n Math.abs(x - width),\r\n Math.abs(y),\r\n Math.abs(y - height)\r\n );\r\n } else if (gradient.shape === 1 /* ELLIPSE */) {\r\n rx = Math.max(Math.abs(x), Math.abs(x - width));\r\n ry = Math.max(Math.abs(y), Math.abs(y - height));\r\n }\r\n break;\r\n case 3 /* FARTHEST_CORNER */:\r\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\r\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\r\n if (gradient.shape === 0 /* CIRCLE */) {\r\n rx = ry = Math.max(\r\n distance(x, y),\r\n distance(x, y - height),\r\n distance(x - width, y),\r\n distance(x - width, y - height)\r\n );\r\n } else if (gradient.shape === 1 /* ELLIPSE */) {\r\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\r\n var c =\r\n Math.max(Math.abs(y), Math.abs(y - height)) /\r\n Math.max(Math.abs(x), Math.abs(x - width));\r\n var _b = findCorner(width, height, x, y, false),\r\n cx = _b[0],\r\n cy = _b[1];\r\n rx = distance(cx - x, (cy - y) / c);\r\n ry = c * rx;\r\n }\r\n break;\r\n }\r\n if (Array.isArray(gradient.size)) {\r\n rx = getAbsoluteValue(gradient.size[0], width);\r\n ry =\r\n gradient.size.length === 2\r\n ? getAbsoluteValue(gradient.size[1], height)\r\n : rx;\r\n }\r\n return [rx, ry];\r\n };\r\n\r\n var linearGradient = function (context, tokens) {\r\n var angle$1 = deg(180);\r\n var stops = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n if (i === 0) {\r\n var firstToken = arg[0];\r\n if (\r\n firstToken.type === 20 /* IDENT_TOKEN */ &&\r\n firstToken.value === \"to\"\r\n ) {\r\n angle$1 = parseNamedSide(arg);\r\n return;\r\n } else if (isAngle(firstToken)) {\r\n angle$1 = angle.parse(context, firstToken);\r\n return;\r\n }\r\n }\r\n var colorStop = parseColorStop(context, arg);\r\n stops.push(colorStop);\r\n });\r\n return { angle: angle$1, stops: stops, type: 1 /* LINEAR_GRADIENT */ };\r\n };\r\n\r\n var prefixLinearGradient = function (context, tokens) {\r\n var angle$1 = deg(180);\r\n var stops = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n if (i === 0) {\r\n var firstToken = arg[0];\r\n if (\r\n firstToken.type === 20 /* IDENT_TOKEN */ &&\r\n [\"top\", \"left\", \"right\", \"bottom\"].indexOf(firstToken.value) !== -1\r\n ) {\r\n angle$1 = parseNamedSide(arg);\r\n return;\r\n } else if (isAngle(firstToken)) {\r\n angle$1 = (angle.parse(context, firstToken) + deg(270)) % deg(360);\r\n return;\r\n }\r\n }\r\n var colorStop = parseColorStop(context, arg);\r\n stops.push(colorStop);\r\n });\r\n return {\r\n angle: angle$1,\r\n stops: stops,\r\n type: 1 /* LINEAR_GRADIENT */,\r\n };\r\n };\r\n\r\n var webkitGradient = function (context, tokens) {\r\n var angle = deg(180);\r\n var stops = [];\r\n var type = 1; /* LINEAR_GRADIENT */\r\n var shape = 0; /* CIRCLE */\r\n var size = 3; /* FARTHEST_CORNER */\r\n var position = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n var firstToken = arg[0];\r\n if (i === 0) {\r\n if (isIdentToken(firstToken) && firstToken.value === \"linear\") {\r\n type = 1 /* LINEAR_GRADIENT */;\r\n return;\r\n } else if (isIdentToken(firstToken) && firstToken.value === \"radial\") {\r\n type = 2 /* RADIAL_GRADIENT */;\r\n return;\r\n }\r\n }\r\n if (firstToken.type === 18 /* FUNCTION */) {\r\n if (firstToken.name === \"from\") {\r\n var color = color$1.parse(context, firstToken.values[0]);\r\n stops.push({ stop: ZERO_LENGTH, color: color });\r\n } else if (firstToken.name === \"to\") {\r\n var color = color$1.parse(context, firstToken.values[0]);\r\n stops.push({ stop: HUNDRED_PERCENT, color: color });\r\n } else if (firstToken.name === \"color-stop\") {\r\n var values = firstToken.values.filter(nonFunctionArgSeparator);\r\n if (values.length === 2) {\r\n var color = color$1.parse(context, values[1]);\r\n var stop_1 = values[0];\r\n if (isNumberToken(stop_1)) {\r\n stops.push({\r\n stop: {\r\n type: 16 /* PERCENTAGE_TOKEN */,\r\n number: stop_1.number * 100,\r\n flags: stop_1.flags,\r\n },\r\n color: color,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n });\r\n return type === 1 /* LINEAR_GRADIENT */\r\n ? {\r\n angle: (angle + deg(180)) % deg(360),\r\n stops: stops,\r\n type: type,\r\n }\r\n : {\r\n size: size,\r\n shape: shape,\r\n stops: stops,\r\n position: position,\r\n type: type,\r\n };\r\n };\r\n\r\n var CLOSEST_SIDE = \"closest-side\";\r\n var FARTHEST_SIDE = \"farthest-side\";\r\n var CLOSEST_CORNER = \"closest-corner\";\r\n var FARTHEST_CORNER = \"farthest-corner\";\r\n var CIRCLE = \"circle\";\r\n var ELLIPSE = \"ellipse\";\r\n var COVER = \"cover\";\r\n var CONTAIN = \"contain\";\r\n var radialGradient = function (context, tokens) {\r\n var shape = 0; /* CIRCLE */\r\n var size = 3; /* FARTHEST_CORNER */\r\n var stops = [];\r\n var position = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n var isColorStop = true;\r\n if (i === 0) {\r\n var isAtPosition_1 = false;\r\n isColorStop = arg.reduce(function (acc, token) {\r\n if (isAtPosition_1) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case \"center\":\r\n position.push(FIFTY_PERCENT);\r\n return acc;\r\n case \"top\":\r\n case \"left\":\r\n position.push(ZERO_LENGTH);\r\n return acc;\r\n case \"right\":\r\n case \"bottom\":\r\n position.push(HUNDRED_PERCENT);\r\n return acc;\r\n }\r\n } else if (isLengthPercentage(token) || isLength(token)) {\r\n position.push(token);\r\n }\r\n } else if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case CIRCLE:\r\n shape = 0 /* CIRCLE */;\r\n return false;\r\n case ELLIPSE:\r\n shape = 1 /* ELLIPSE */;\r\n return false;\r\n case \"at\":\r\n isAtPosition_1 = true;\r\n return false;\r\n case CLOSEST_SIDE:\r\n size = 0 /* CLOSEST_SIDE */;\r\n return false;\r\n case COVER:\r\n case FARTHEST_SIDE:\r\n size = 1 /* FARTHEST_SIDE */;\r\n return false;\r\n case CONTAIN:\r\n case CLOSEST_CORNER:\r\n size = 2 /* CLOSEST_CORNER */;\r\n return false;\r\n case FARTHEST_CORNER:\r\n size = 3 /* FARTHEST_CORNER */;\r\n return false;\r\n }\r\n } else if (isLength(token) || isLengthPercentage(token)) {\r\n if (!Array.isArray(size)) {\r\n size = [];\r\n }\r\n size.push(token);\r\n return false;\r\n }\r\n return acc;\r\n }, isColorStop);\r\n }\r\n if (isColorStop) {\r\n var colorStop = parseColorStop(context, arg);\r\n stops.push(colorStop);\r\n }\r\n });\r\n return {\r\n size: size,\r\n shape: shape,\r\n stops: stops,\r\n position: position,\r\n type: 2 /* RADIAL_GRADIENT */,\r\n };\r\n };\r\n\r\n var prefixRadialGradient = function (context, tokens) {\r\n var shape = 0; /* CIRCLE */\r\n var size = 3; /* FARTHEST_CORNER */\r\n var stops = [];\r\n var position = [];\r\n parseFunctionArgs(tokens).forEach(function (arg, i) {\r\n var isColorStop = true;\r\n if (i === 0) {\r\n isColorStop = arg.reduce(function (acc, token) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case \"center\":\r\n position.push(FIFTY_PERCENT);\r\n return false;\r\n case \"top\":\r\n case \"left\":\r\n position.push(ZERO_LENGTH);\r\n return false;\r\n case \"right\":\r\n case \"bottom\":\r\n position.push(HUNDRED_PERCENT);\r\n return false;\r\n }\r\n } else if (isLengthPercentage(token) || isLength(token)) {\r\n position.push(token);\r\n return false;\r\n }\r\n return acc;\r\n }, isColorStop);\r\n } else if (i === 1) {\r\n isColorStop = arg.reduce(function (acc, token) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case CIRCLE:\r\n shape = 0 /* CIRCLE */;\r\n return false;\r\n case ELLIPSE:\r\n shape = 1 /* ELLIPSE */;\r\n return false;\r\n case CONTAIN:\r\n case CLOSEST_SIDE:\r\n size = 0 /* CLOSEST_SIDE */;\r\n return false;\r\n case FARTHEST_SIDE:\r\n size = 1 /* FARTHEST_SIDE */;\r\n return false;\r\n case CLOSEST_CORNER:\r\n size = 2 /* CLOSEST_CORNER */;\r\n return false;\r\n case COVER:\r\n case FARTHEST_CORNER:\r\n size = 3 /* FARTHEST_CORNER */;\r\n return false;\r\n }\r\n } else if (isLength(token) || isLengthPercentage(token)) {\r\n if (!Array.isArray(size)) {\r\n size = [];\r\n }\r\n size.push(token);\r\n return false;\r\n }\r\n return acc;\r\n }, isColorStop);\r\n }\r\n if (isColorStop) {\r\n var colorStop = parseColorStop(context, arg);\r\n stops.push(colorStop);\r\n }\r\n });\r\n return {\r\n size: size,\r\n shape: shape,\r\n stops: stops,\r\n position: position,\r\n type: 2 /* RADIAL_GRADIENT */,\r\n };\r\n };\r\n\r\n var isLinearGradient = function (background) {\r\n return background.type === 1 /* LINEAR_GRADIENT */;\r\n };\r\n var isRadialGradient = function (background) {\r\n return background.type === 2 /* RADIAL_GRADIENT */;\r\n };\r\n var image = {\r\n name: \"image\",\r\n parse: function (context, value) {\r\n if (value.type === 22 /* URL_TOKEN */) {\r\n var image_1 = { url: value.value, type: 0 /* URL */ };\r\n context.cache.addImage(value.value);\r\n return image_1;\r\n }\r\n if (value.type === 18 /* FUNCTION */) {\r\n var imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\r\n if (typeof imageFunction === \"undefined\") {\r\n throw new Error(\r\n 'Attempting to parse an unsupported image function \"' +\r\n value.name +\r\n '\"'\r\n );\r\n }\r\n return imageFunction(context, value.values);\r\n }\r\n throw new Error(\"Unsupported image type \" + value.type);\r\n },\r\n };\r\n function isSupportedImage(value) {\r\n return (\r\n !(value.type === 20 /* IDENT_TOKEN */ && value.value === \"none\") &&\r\n (value.type !== 18 /* FUNCTION */ ||\r\n !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\r\n );\r\n }\r\n var SUPPORTED_IMAGE_FUNCTIONS = {\r\n \"linear-gradient\": linearGradient,\r\n \"-moz-linear-gradient\": prefixLinearGradient,\r\n \"-ms-linear-gradient\": prefixLinearGradient,\r\n \"-o-linear-gradient\": prefixLinearGradient,\r\n \"-webkit-linear-gradient\": prefixLinearGradient,\r\n \"radial-gradient\": radialGradient,\r\n \"-moz-radial-gradient\": prefixRadialGradient,\r\n \"-ms-radial-gradient\": prefixRadialGradient,\r\n \"-o-radial-gradient\": prefixRadialGradient,\r\n \"-webkit-radial-gradient\": prefixRadialGradient,\r\n \"-webkit-gradient\": webkitGradient,\r\n };\r\n\r\n var backgroundImage = {\r\n name: \"background-image\",\r\n initialValue: \"none\",\r\n type: 1 /* LIST */,\r\n prefix: false,\r\n parse: function (context, tokens) {\r\n if (tokens.length === 0) {\r\n return [];\r\n }\r\n var first = tokens[0];\r\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === \"none\") {\r\n return [];\r\n }\r\n return tokens\r\n .filter(function (value) {\r\n return nonFunctionArgSeparator(value) && isSupportedImage(value);\r\n })\r\n .map(function (value) {\r\n return image.parse(context, value);\r\n });\r\n },\r\n };\r\n\r\n var backgroundOrigin = {\r\n name: \"background-origin\",\r\n initialValue: \"border-box\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n return tokens.map(function (token) {\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case \"padding-box\":\r\n return 1 /* PADDING_BOX */;\r\n case \"content-box\":\r\n return 2 /* CONTENT_BOX */;\r\n }\r\n }\r\n return 0 /* BORDER_BOX */;\r\n });\r\n },\r\n };\r\n\r\n var backgroundPosition = {\r\n name: \"background-position\",\r\n initialValue: \"0% 0%\",\r\n type: 1 /* LIST */,\r\n prefix: false,\r\n parse: function (_context, tokens) {\r\n return parseFunctionArgs(tokens)\r\n .map(function (values) {\r\n return values.filter(isLengthPercentage);\r\n })\r\n .map(parseLengthPercentageTuple);\r\n },\r\n };\r\n\r\n var backgroundRepeat = {\r\n name: \"background-repeat\",\r\n initialValue: \"repeat\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n return parseFunctionArgs(tokens)\r\n .map(function (values) {\r\n return values\r\n .filter(isIdentToken)\r\n .map(function (token) {\r\n return token.value;\r\n })\r\n .join(\" \");\r\n })\r\n .map(parseBackgroundRepeat);\r\n },\r\n };\r\n var parseBackgroundRepeat = function (value) {\r\n switch (value) {\r\n case \"no-repeat\":\r\n return 1 /* NO_REPEAT */;\r\n case \"repeat-x\":\r\n case \"repeat no-repeat\":\r\n return 2 /* REPEAT_X */;\r\n case \"repeat-y\":\r\n case \"no-repeat repeat\":\r\n return 3 /* REPEAT_Y */;\r\n case \"repeat\":\r\n default:\r\n return 0 /* REPEAT */;\r\n }\r\n };\r\n\r\n var BACKGROUND_SIZE;\r\n (function (BACKGROUND_SIZE) {\r\n BACKGROUND_SIZE[\"AUTO\"] = \"auto\";\r\n BACKGROUND_SIZE[\"CONTAIN\"] = \"contain\";\r\n BACKGROUND_SIZE[\"COVER\"] = \"cover\";\r\n })(BACKGROUND_SIZE || (BACKGROUND_SIZE = {}));\r\n var backgroundSize = {\r\n name: \"background-size\",\r\n initialValue: \"0\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n return parseFunctionArgs(tokens).map(function (values) {\r\n return values.filter(isBackgroundSizeInfoToken);\r\n });\r\n },\r\n };\r\n var isBackgroundSizeInfoToken = function (value) {\r\n return isIdentToken(value) || isLengthPercentage(value);\r\n };\r\n\r\n var borderColorForSide = function (side) {\r\n return {\r\n name: \"border-\" + side + \"-color\",\r\n initialValue: \"transparent\",\r\n prefix: false,\r\n type: 3 /* TYPE_VALUE */,\r\n format: \"color\",\r\n };\r\n };\r\n var borderTopColor = borderColorForSide(\"top\");\r\n var borderRightColor = borderColorForSide(\"right\");\r\n var borderBottomColor = borderColorForSide(\"bottom\");\r\n var borderLeftColor = borderColorForSide(\"left\");\r\n\r\n var borderRadiusForSide = function (side) {\r\n return {\r\n name: \"border-radius-\" + side,\r\n initialValue: \"0 0\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n return parseLengthPercentageTuple(tokens.filter(isLengthPercentage));\r\n },\r\n };\r\n };\r\n var borderTopLeftRadius = borderRadiusForSide(\"top-left\");\r\n var borderTopRightRadius = borderRadiusForSide(\"top-right\");\r\n var borderBottomRightRadius = borderRadiusForSide(\"bottom-right\");\r\n var borderBottomLeftRadius = borderRadiusForSide(\"bottom-left\");\r\n\r\n var borderStyleForSide = function (side) {\r\n return {\r\n name: \"border-\" + side + \"-style\",\r\n initialValue: \"solid\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, style) {\r\n switch (style) {\r\n case \"none\":\r\n return 0 /* NONE */;\r\n case \"dashed\":\r\n return 2 /* DASHED */;\r\n case \"dotted\":\r\n return 3 /* DOTTED */;\r\n case \"double\":\r\n return 4 /* DOUBLE */;\r\n }\r\n return 1 /* SOLID */;\r\n },\r\n };\r\n };\r\n var borderTopStyle = borderStyleForSide(\"top\");\r\n var borderRightStyle = borderStyleForSide(\"right\");\r\n var borderBottomStyle = borderStyleForSide(\"bottom\");\r\n var borderLeftStyle = borderStyleForSide(\"left\");\r\n\r\n var borderWidthForSide = function (side) {\r\n return {\r\n name: \"border-\" + side + \"-width\",\r\n initialValue: \"0\",\r\n type: 0 /* VALUE */,\r\n prefix: false,\r\n parse: function (_context, token) {\r\n if (isDimensionToken(token)) {\r\n return token.number;\r\n }\r\n return 0;\r\n },\r\n };\r\n };\r\n var borderTopWidth = borderWidthForSide(\"top\");\r\n var borderRightWidth = borderWidthForSide(\"right\");\r\n var borderBottomWidth = borderWidthForSide(\"bottom\");\r\n var borderLeftWidth = borderWidthForSide(\"left\");\r\n\r\n var color = {\r\n name: \"color\",\r\n initialValue: \"transparent\",\r\n prefix: false,\r\n type: 3 /* TYPE_VALUE */,\r\n format: \"color\",\r\n };\r\n\r\n var direction = {\r\n name: \"direction\",\r\n initialValue: \"ltr\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, direction) {\r\n switch (direction) {\r\n case \"rtl\":\r\n return 1 /* RTL */;\r\n case \"ltr\":\r\n default:\r\n return 0 /* LTR */;\r\n }\r\n },\r\n };\r\n\r\n var display = {\r\n name: \"display\",\r\n initialValue: \"inline-block\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n return tokens.filter(isIdentToken).reduce(function (bit, token) {\r\n return bit | parseDisplayValue(token.value);\r\n }, 0 /* NONE */);\r\n },\r\n };\r\n var parseDisplayValue = function (display) {\r\n switch (display) {\r\n case \"block\":\r\n case \"-webkit-box\":\r\n return 2 /* BLOCK */;\r\n case \"inline\":\r\n return 4 /* INLINE */;\r\n case \"run-in\":\r\n return 8 /* RUN_IN */;\r\n case \"flow\":\r\n return 16 /* FLOW */;\r\n case \"flow-root\":\r\n return 32 /* FLOW_ROOT */;\r\n case \"table\":\r\n return 64 /* TABLE */;\r\n case \"flex\":\r\n case \"-webkit-flex\":\r\n return 128 /* FLEX */;\r\n case \"grid\":\r\n case \"-ms-grid\":\r\n return 256 /* GRID */;\r\n case \"ruby\":\r\n return 512 /* RUBY */;\r\n case \"subgrid\":\r\n return 1024 /* SUBGRID */;\r\n case \"list-item\":\r\n return 2048 /* LIST_ITEM */;\r\n case \"table-row-group\":\r\n return 4096 /* TABLE_ROW_GROUP */;\r\n case \"table-header-group\":\r\n return 8192 /* TABLE_HEADER_GROUP */;\r\n case \"table-footer-group\":\r\n return 16384 /* TABLE_FOOTER_GROUP */;\r\n case \"table-row\":\r\n return 32768 /* TABLE_ROW */;\r\n case \"table-cell\":\r\n return 65536 /* TABLE_CELL */;\r\n case \"table-column-group\":\r\n return 131072 /* TABLE_COLUMN_GROUP */;\r\n case \"table-column\":\r\n return 262144 /* TABLE_COLUMN */;\r\n case \"table-caption\":\r\n return 524288 /* TABLE_CAPTION */;\r\n case \"ruby-base\":\r\n return 1048576 /* RUBY_BASE */;\r\n case \"ruby-text\":\r\n return 2097152 /* RUBY_TEXT */;\r\n case \"ruby-base-container\":\r\n return 4194304 /* RUBY_BASE_CONTAINER */;\r\n case \"ruby-text-container\":\r\n return 8388608 /* RUBY_TEXT_CONTAINER */;\r\n case \"contents\":\r\n return 16777216 /* CONTENTS */;\r\n case \"inline-block\":\r\n return 33554432 /* INLINE_BLOCK */;\r\n case \"inline-list-item\":\r\n return 67108864 /* INLINE_LIST_ITEM */;\r\n case \"inline-table\":\r\n return 134217728 /* INLINE_TABLE */;\r\n case \"inline-flex\":\r\n return 268435456 /* INLINE_FLEX */;\r\n case \"inline-grid\":\r\n return 536870912 /* INLINE_GRID */;\r\n }\r\n return 0 /* NONE */;\r\n };\r\n\r\n var float = {\r\n name: \"float\",\r\n initialValue: \"none\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, float) {\r\n switch (float) {\r\n case \"left\":\r\n return 1 /* LEFT */;\r\n case \"right\":\r\n return 2 /* RIGHT */;\r\n case \"inline-start\":\r\n return 3 /* INLINE_START */;\r\n case \"inline-end\":\r\n return 4 /* INLINE_END */;\r\n }\r\n return 0 /* NONE */;\r\n },\r\n };\r\n\r\n var letterSpacing = {\r\n name: \"letter-spacing\",\r\n initialValue: \"0\",\r\n prefix: false,\r\n type: 0 /* VALUE */,\r\n parse: function (_context, token) {\r\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === \"normal\") {\r\n return 0;\r\n }\r\n if (token.type === 17 /* NUMBER_TOKEN */) {\r\n return token.number;\r\n }\r\n if (token.type === 15 /* DIMENSION_TOKEN */) {\r\n return token.number;\r\n }\r\n return 0;\r\n },\r\n };\r\n\r\n var LINE_BREAK;\r\n (function (LINE_BREAK) {\r\n LINE_BREAK[\"NORMAL\"] = \"normal\";\r\n LINE_BREAK[\"STRICT\"] = \"strict\";\r\n })(LINE_BREAK || (LINE_BREAK = {}));\r\n var lineBreak = {\r\n name: \"line-break\",\r\n initialValue: \"normal\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, lineBreak) {\r\n switch (lineBreak) {\r\n case \"strict\":\r\n return LINE_BREAK.STRICT;\r\n case \"normal\":\r\n default:\r\n return LINE_BREAK.NORMAL;\r\n }\r\n },\r\n };\r\n\r\n var lineHeight = {\r\n name: \"line-height\",\r\n initialValue: \"normal\",\r\n prefix: false,\r\n type: 4 /* TOKEN_VALUE */,\r\n };\r\n var computeLineHeight = function (token, fontSize) {\r\n if (isIdentToken(token) && token.value === \"normal\") {\r\n return 1.2 * fontSize;\r\n } else if (token.type === 17 /* NUMBER_TOKEN */) {\r\n return fontSize * token.number;\r\n } else if (isLengthPercentage(token)) {\r\n return getAbsoluteValue(token, fontSize);\r\n }\r\n return fontSize;\r\n };\r\n\r\n var listStyleImage = {\r\n name: \"list-style-image\",\r\n initialValue: \"none\",\r\n type: 0 /* VALUE */,\r\n prefix: false,\r\n parse: function (context, token) {\r\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === \"none\") {\r\n return null;\r\n }\r\n return image.parse(context, token);\r\n },\r\n };\r\n\r\n var listStylePosition = {\r\n name: \"list-style-position\",\r\n initialValue: \"outside\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, position) {\r\n switch (position) {\r\n case \"inside\":\r\n return 0 /* INSIDE */;\r\n case \"outside\":\r\n default:\r\n return 1 /* OUTSIDE */;\r\n }\r\n },\r\n };\r\n\r\n var listStyleType = {\r\n name: \"list-style-type\",\r\n initialValue: \"none\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, type) {\r\n switch (type) {\r\n case \"disc\":\r\n return 0 /* DISC */;\r\n case \"circle\":\r\n return 1 /* CIRCLE */;\r\n case \"square\":\r\n return 2 /* SQUARE */;\r\n case \"decimal\":\r\n return 3 /* DECIMAL */;\r\n case \"cjk-decimal\":\r\n return 4 /* CJK_DECIMAL */;\r\n case \"decimal-leading-zero\":\r\n return 5 /* DECIMAL_LEADING_ZERO */;\r\n case \"lower-roman\":\r\n return 6 /* LOWER_ROMAN */;\r\n case \"upper-roman\":\r\n return 7 /* UPPER_ROMAN */;\r\n case \"lower-greek\":\r\n return 8 /* LOWER_GREEK */;\r\n case \"lower-alpha\":\r\n return 9 /* LOWER_ALPHA */;\r\n case \"upper-alpha\":\r\n return 10 /* UPPER_ALPHA */;\r\n case \"arabic-indic\":\r\n return 11 /* ARABIC_INDIC */;\r\n case \"armenian\":\r\n return 12 /* ARMENIAN */;\r\n case \"bengali\":\r\n return 13 /* BENGALI */;\r\n case \"cambodian\":\r\n return 14 /* CAMBODIAN */;\r\n case \"cjk-earthly-branch\":\r\n return 15 /* CJK_EARTHLY_BRANCH */;\r\n case \"cjk-heavenly-stem\":\r\n return 16 /* CJK_HEAVENLY_STEM */;\r\n case \"cjk-ideographic\":\r\n return 17 /* CJK_IDEOGRAPHIC */;\r\n case \"devanagari\":\r\n return 18 /* DEVANAGARI */;\r\n case \"ethiopic-numeric\":\r\n return 19 /* ETHIOPIC_NUMERIC */;\r\n case \"georgian\":\r\n return 20 /* GEORGIAN */;\r\n case \"gujarati\":\r\n return 21 /* GUJARATI */;\r\n case \"gurmukhi\":\r\n return 22 /* GURMUKHI */;\r\n case \"hebrew\":\r\n return 22 /* HEBREW */;\r\n case \"hiragana\":\r\n return 23 /* HIRAGANA */;\r\n case \"hiragana-iroha\":\r\n return 24 /* HIRAGANA_IROHA */;\r\n case \"japanese-formal\":\r\n return 25 /* JAPANESE_FORMAL */;\r\n case \"japanese-informal\":\r\n return 26 /* JAPANESE_INFORMAL */;\r\n case \"kannada\":\r\n return 27 /* KANNADA */;\r\n case \"katakana\":\r\n return 28 /* KATAKANA */;\r\n case \"katakana-iroha\":\r\n return 29 /* KATAKANA_IROHA */;\r\n case \"khmer\":\r\n return 30 /* KHMER */;\r\n case \"korean-hangul-formal\":\r\n return 31 /* KOREAN_HANGUL_FORMAL */;\r\n case \"korean-hanja-formal\":\r\n return 32 /* KOREAN_HANJA_FORMAL */;\r\n case \"korean-hanja-informal\":\r\n return 33 /* KOREAN_HANJA_INFORMAL */;\r\n case \"lao\":\r\n return 34 /* LAO */;\r\n case \"lower-armenian\":\r\n return 35 /* LOWER_ARMENIAN */;\r\n case \"malayalam\":\r\n return 36 /* MALAYALAM */;\r\n case \"mongolian\":\r\n return 37 /* MONGOLIAN */;\r\n case \"myanmar\":\r\n return 38 /* MYANMAR */;\r\n case \"oriya\":\r\n return 39 /* ORIYA */;\r\n case \"persian\":\r\n return 40 /* PERSIAN */;\r\n case \"simp-chinese-formal\":\r\n return 41 /* SIMP_CHINESE_FORMAL */;\r\n case \"simp-chinese-informal\":\r\n return 42 /* SIMP_CHINESE_INFORMAL */;\r\n case \"tamil\":\r\n return 43 /* TAMIL */;\r\n case \"telugu\":\r\n return 44 /* TELUGU */;\r\n case \"thai\":\r\n return 45 /* THAI */;\r\n case \"tibetan\":\r\n return 46 /* TIBETAN */;\r\n case \"trad-chinese-formal\":\r\n return 47 /* TRAD_CHINESE_FORMAL */;\r\n case \"trad-chinese-informal\":\r\n return 48 /* TRAD_CHINESE_INFORMAL */;\r\n case \"upper-armenian\":\r\n return 49 /* UPPER_ARMENIAN */;\r\n case \"disclosure-open\":\r\n return 50 /* DISCLOSURE_OPEN */;\r\n case \"disclosure-closed\":\r\n return 51 /* DISCLOSURE_CLOSED */;\r\n case \"none\":\r\n default:\r\n return -1 /* NONE */;\r\n }\r\n },\r\n };\r\n\r\n var marginForSide = function (side) {\r\n return {\r\n name: \"margin-\" + side,\r\n initialValue: \"0\",\r\n prefix: false,\r\n type: 4 /* TOKEN_VALUE */,\r\n };\r\n };\r\n var marginTop = marginForSide(\"top\");\r\n var marginRight = marginForSide(\"right\");\r\n var marginBottom = marginForSide(\"bottom\");\r\n var marginLeft = marginForSide(\"left\");\r\n\r\n var overflow = {\r\n name: \"overflow\",\r\n initialValue: \"visible\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n return tokens.filter(isIdentToken).map(function (overflow) {\r\n switch (overflow.value) {\r\n case \"hidden\":\r\n return 1 /* HIDDEN */;\r\n case \"scroll\":\r\n return 2 /* SCROLL */;\r\n case \"clip\":\r\n return 3 /* CLIP */;\r\n case \"auto\":\r\n return 4 /* AUTO */;\r\n case \"visible\":\r\n default:\r\n return 0 /* VISIBLE */;\r\n }\r\n });\r\n },\r\n };\r\n\r\n var overflowWrap = {\r\n name: \"overflow-wrap\",\r\n initialValue: \"normal\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, overflow) {\r\n switch (overflow) {\r\n case \"break-word\":\r\n return \"break-word\" /* BREAK_WORD */;\r\n case \"normal\":\r\n default:\r\n return \"normal\" /* NORMAL */;\r\n }\r\n },\r\n };\r\n\r\n var paddingForSide = function (side) {\r\n return {\r\n name: \"padding-\" + side,\r\n initialValue: \"0\",\r\n prefix: false,\r\n type: 3 /* TYPE_VALUE */,\r\n format: \"length-percentage\",\r\n };\r\n };\r\n var paddingTop = paddingForSide(\"top\");\r\n var paddingRight = paddingForSide(\"right\");\r\n var paddingBottom = paddingForSide(\"bottom\");\r\n var paddingLeft = paddingForSide(\"left\");\r\n\r\n var textAlign = {\r\n name: \"text-align\",\r\n initialValue: \"left\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, textAlign) {\r\n switch (textAlign) {\r\n case \"right\":\r\n return 2 /* RIGHT */;\r\n case \"center\":\r\n case \"justify\":\r\n return 1 /* CENTER */;\r\n case \"left\":\r\n default:\r\n return 0 /* LEFT */;\r\n }\r\n },\r\n };\r\n\r\n var position = {\r\n name: \"position\",\r\n initialValue: \"static\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, position) {\r\n switch (position) {\r\n case \"relative\":\r\n return 1 /* RELATIVE */;\r\n case \"absolute\":\r\n return 2 /* ABSOLUTE */;\r\n case \"fixed\":\r\n return 3 /* FIXED */;\r\n case \"sticky\":\r\n return 4 /* STICKY */;\r\n }\r\n return 0 /* STATIC */;\r\n },\r\n };\r\n\r\n var textShadow = {\r\n name: \"text-shadow\",\r\n initialValue: \"none\",\r\n type: 1 /* LIST */,\r\n prefix: false,\r\n parse: function (context, tokens) {\r\n if (tokens.length === 1 && isIdentWithValue(tokens[0], \"none\")) {\r\n return [];\r\n }\r\n return parseFunctionArgs(tokens).map(function (values) {\r\n var shadow = {\r\n color: COLORS.TRANSPARENT,\r\n offsetX: ZERO_LENGTH,\r\n offsetY: ZERO_LENGTH,\r\n blur: ZERO_LENGTH,\r\n };\r\n var c = 0;\r\n for (var i = 0; i < values.length; i++) {\r\n var token = values[i];\r\n if (isLength(token)) {\r\n if (c === 0) {\r\n shadow.offsetX = token;\r\n } else if (c === 1) {\r\n shadow.offsetY = token;\r\n } else {\r\n shadow.blur = token;\r\n }\r\n c++;\r\n } else {\r\n shadow.color = color$1.parse(context, token);\r\n }\r\n }\r\n return shadow;\r\n });\r\n },\r\n };\r\n\r\n var textTransform = {\r\n name: \"text-transform\",\r\n initialValue: \"none\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, textTransform) {\r\n switch (textTransform) {\r\n case \"uppercase\":\r\n return 2 /* UPPERCASE */;\r\n case \"lowercase\":\r\n return 1 /* LOWERCASE */;\r\n case \"capitalize\":\r\n return 3 /* CAPITALIZE */;\r\n }\r\n return 0 /* NONE */;\r\n },\r\n };\r\n\r\n var transform$1 = {\r\n name: \"transform\",\r\n initialValue: \"none\",\r\n prefix: true,\r\n type: 0 /* VALUE */,\r\n parse: function (_context, token) {\r\n if (token.type === 20 /* IDENT_TOKEN */ && token.value === \"none\") {\r\n return null;\r\n }\r\n if (token.type === 18 /* FUNCTION */) {\r\n var transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\r\n if (typeof transformFunction === \"undefined\") {\r\n throw new Error(\r\n 'Attempting to parse an unsupported transform function \"' +\r\n token.name +\r\n '\"'\r\n );\r\n }\r\n return transformFunction(token.values);\r\n }\r\n return null;\r\n },\r\n };\r\n var matrix = function (args) {\r\n var values = args\r\n .filter(function (arg) {\r\n return arg.type === 17 /* NUMBER_TOKEN */;\r\n })\r\n .map(function (arg) {\r\n return arg.number;\r\n });\r\n return values.length === 6 ? values : null;\r\n };\r\n // doesn't support 3D transforms at the moment\r\n var matrix3d = function (args) {\r\n var values = args\r\n .filter(function (arg) {\r\n return arg.type === 17 /* NUMBER_TOKEN */;\r\n })\r\n .map(function (arg) {\r\n return arg.number;\r\n });\r\n var a1 = values[0],\r\n b1 = values[1];\r\n values[2];\r\n values[3];\r\n var a2 = values[4],\r\n b2 = values[5];\r\n values[6];\r\n values[7];\r\n values[8];\r\n values[9];\r\n values[10];\r\n values[11];\r\n var a4 = values[12],\r\n b4 = values[13];\r\n values[14];\r\n values[15];\r\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\r\n };\r\n var SUPPORTED_TRANSFORM_FUNCTIONS = {\r\n matrix: matrix,\r\n matrix3d: matrix3d,\r\n };\r\n\r\n var DEFAULT_VALUE = {\r\n type: 16 /* PERCENTAGE_TOKEN */,\r\n number: 50,\r\n flags: FLAG_INTEGER,\r\n };\r\n var DEFAULT = [DEFAULT_VALUE, DEFAULT_VALUE];\r\n var transformOrigin = {\r\n name: \"transform-origin\",\r\n initialValue: \"50% 50%\",\r\n prefix: true,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n var origins = tokens.filter(isLengthPercentage);\r\n if (origins.length !== 2) {\r\n return DEFAULT;\r\n }\r\n return [origins[0], origins[1]];\r\n },\r\n };\r\n\r\n var visibility = {\r\n name: \"visible\",\r\n initialValue: \"none\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, visibility) {\r\n switch (visibility) {\r\n case \"hidden\":\r\n return 1 /* HIDDEN */;\r\n case \"collapse\":\r\n return 2 /* COLLAPSE */;\r\n case \"visible\":\r\n default:\r\n return 0 /* VISIBLE */;\r\n }\r\n },\r\n };\r\n\r\n var WORD_BREAK;\r\n (function (WORD_BREAK) {\r\n WORD_BREAK[\"NORMAL\"] = \"normal\";\r\n WORD_BREAK[\"BREAK_ALL\"] = \"break-all\";\r\n WORD_BREAK[\"KEEP_ALL\"] = \"keep-all\";\r\n })(WORD_BREAK || (WORD_BREAK = {}));\r\n var wordBreak = {\r\n name: \"word-break\",\r\n initialValue: \"normal\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, wordBreak) {\r\n switch (wordBreak) {\r\n case \"break-all\":\r\n return WORD_BREAK.BREAK_ALL;\r\n case \"keep-all\":\r\n return WORD_BREAK.KEEP_ALL;\r\n case \"normal\":\r\n default:\r\n return WORD_BREAK.NORMAL;\r\n }\r\n },\r\n };\r\n\r\n var zIndex = {\r\n name: \"z-index\",\r\n initialValue: \"auto\",\r\n prefix: false,\r\n type: 0 /* VALUE */,\r\n parse: function (_context, token) {\r\n if (token.type === 20 /* IDENT_TOKEN */) {\r\n return { auto: true, order: 0 };\r\n }\r\n if (isNumberToken(token)) {\r\n return { auto: false, order: token.number };\r\n }\r\n throw new Error(\"Invalid z-index number parsed\");\r\n },\r\n };\r\n\r\n var time = {\r\n name: \"time\",\r\n parse: function (_context, value) {\r\n if (value.type === 15 /* DIMENSION_TOKEN */) {\r\n switch (value.unit.toLowerCase()) {\r\n case \"s\":\r\n return 1000 * value.number;\r\n case \"ms\":\r\n return value.number;\r\n }\r\n }\r\n throw new Error(\"Unsupported time type\");\r\n },\r\n };\r\n\r\n var opacity = {\r\n name: \"opacity\",\r\n initialValue: \"1\",\r\n type: 0 /* VALUE */,\r\n prefix: false,\r\n parse: function (_context, token) {\r\n if (isNumberToken(token)) {\r\n return token.number;\r\n }\r\n return 1;\r\n },\r\n };\r\n\r\n var textDecorationColor = {\r\n name: \"text-decoration-color\",\r\n initialValue: \"transparent\",\r\n prefix: false,\r\n type: 3 /* TYPE_VALUE */,\r\n format: \"color\",\r\n };\r\n\r\n var textDecorationLine = {\r\n name: \"text-decoration-line\",\r\n initialValue: \"none\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n return tokens\r\n .filter(isIdentToken)\r\n .map(function (token) {\r\n switch (token.value) {\r\n case \"underline\":\r\n return 1 /* UNDERLINE */;\r\n case \"overline\":\r\n return 2 /* OVERLINE */;\r\n case \"line-through\":\r\n return 3 /* LINE_THROUGH */;\r\n case \"none\":\r\n return 4 /* BLINK */;\r\n }\r\n return 0 /* NONE */;\r\n })\r\n .filter(function (line) {\r\n return line !== 0 /* NONE */;\r\n });\r\n },\r\n };\r\n\r\n var fontFamily = {\r\n name: \"font-family\",\r\n initialValue: \"\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n var accumulator = [];\r\n var results = [];\r\n tokens.forEach(function (token) {\r\n switch (token.type) {\r\n case 20 /* IDENT_TOKEN */:\r\n case 0 /* STRING_TOKEN */:\r\n accumulator.push(token.value);\r\n break;\r\n case 17 /* NUMBER_TOKEN */:\r\n accumulator.push(token.number.toString());\r\n break;\r\n case 4 /* COMMA_TOKEN */:\r\n results.push(accumulator.join(\" \"));\r\n accumulator.length = 0;\r\n break;\r\n }\r\n });\r\n if (accumulator.length) {\r\n results.push(accumulator.join(\" \"));\r\n }\r\n return results.map(function (result) {\r\n return result.indexOf(\" \") === -1 ? result : \"'\" + result + \"'\";\r\n });\r\n },\r\n };\r\n\r\n var fontSize = {\r\n name: \"font-size\",\r\n initialValue: \"0\",\r\n prefix: false,\r\n type: 3 /* TYPE_VALUE */,\r\n format: \"length\",\r\n };\r\n\r\n var fontWeight = {\r\n name: \"font-weight\",\r\n initialValue: \"normal\",\r\n type: 0 /* VALUE */,\r\n prefix: false,\r\n parse: function (_context, token) {\r\n if (isNumberToken(token)) {\r\n return token.number;\r\n }\r\n if (isIdentToken(token)) {\r\n switch (token.value) {\r\n case \"bold\":\r\n return 700;\r\n case \"normal\":\r\n default:\r\n return 400;\r\n }\r\n }\r\n return 400;\r\n },\r\n };\r\n\r\n var fontVariant = {\r\n name: \"font-variant\",\r\n initialValue: \"none\",\r\n type: 1 /* LIST */,\r\n prefix: false,\r\n parse: function (_context, tokens) {\r\n return tokens.filter(isIdentToken).map(function (token) {\r\n return token.value;\r\n });\r\n },\r\n };\r\n\r\n var fontStyle = {\r\n name: \"font-style\",\r\n initialValue: \"normal\",\r\n prefix: false,\r\n type: 2 /* IDENT_VALUE */,\r\n parse: function (_context, overflow) {\r\n switch (overflow) {\r\n case \"oblique\":\r\n return \"oblique\" /* OBLIQUE */;\r\n case \"italic\":\r\n return \"italic\" /* ITALIC */;\r\n case \"normal\":\r\n default:\r\n return \"normal\" /* NORMAL */;\r\n }\r\n },\r\n };\r\n\r\n var contains = function (bit, value) {\r\n return (bit & value) !== 0;\r\n };\r\n\r\n var content = {\r\n name: \"content\",\r\n initialValue: \"none\",\r\n type: 1 /* LIST */,\r\n prefix: false,\r\n parse: function (_context, tokens) {\r\n if (tokens.length === 0) {\r\n return [];\r\n }\r\n var first = tokens[0];\r\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === \"none\") {\r\n return [];\r\n }\r\n return tokens;\r\n },\r\n };\r\n\r\n var counterIncrement = {\r\n name: \"counter-increment\",\r\n initialValue: \"none\",\r\n prefix: true,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n var first = tokens[0];\r\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === \"none\") {\r\n return null;\r\n }\r\n var increments = [];\r\n var filtered = tokens.filter(nonWhiteSpace);\r\n for (var i = 0; i < filtered.length; i++) {\r\n var counter = filtered[i];\r\n var next = filtered[i + 1];\r\n if (counter.type === 20 /* IDENT_TOKEN */) {\r\n var increment = next && isNumberToken(next) ? next.number : 1;\r\n increments.push({ counter: counter.value, increment: increment });\r\n }\r\n }\r\n return increments;\r\n },\r\n };\r\n\r\n var counterReset = {\r\n name: \"counter-reset\",\r\n initialValue: \"none\",\r\n prefix: true,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n if (tokens.length === 0) {\r\n return [];\r\n }\r\n var resets = [];\r\n var filtered = tokens.filter(nonWhiteSpace);\r\n for (var i = 0; i < filtered.length; i++) {\r\n var counter = filtered[i];\r\n var next = filtered[i + 1];\r\n if (isIdentToken(counter) && counter.value !== \"none\") {\r\n var reset = next && isNumberToken(next) ? next.number : 0;\r\n resets.push({ counter: counter.value, reset: reset });\r\n }\r\n }\r\n return resets;\r\n },\r\n };\r\n\r\n var duration = {\r\n name: \"duration\",\r\n initialValue: \"0s\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (context, tokens) {\r\n return tokens.filter(isDimensionToken).map(function (token) {\r\n return time.parse(context, token);\r\n });\r\n },\r\n };\r\n\r\n var quotes = {\r\n name: \"quotes\",\r\n initialValue: \"none\",\r\n prefix: true,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n if (tokens.length === 0) {\r\n return null;\r\n }\r\n var first = tokens[0];\r\n if (first.type === 20 /* IDENT_TOKEN */ && first.value === \"none\") {\r\n return null;\r\n }\r\n var quotes = [];\r\n var filtered = tokens.filter(isStringToken);\r\n if (filtered.length % 2 !== 0) {\r\n return null;\r\n }\r\n for (var i = 0; i < filtered.length; i += 2) {\r\n var open_1 = filtered[i].value;\r\n var close_1 = filtered[i + 1].value;\r\n quotes.push({ open: open_1, close: close_1 });\r\n }\r\n return quotes;\r\n },\r\n };\r\n var getQuote = function (quotes, depth, open) {\r\n if (!quotes) {\r\n return \"\";\r\n }\r\n var quote = quotes[Math.min(depth, quotes.length - 1)];\r\n if (!quote) {\r\n return \"\";\r\n }\r\n return open ? quote.open : quote.close;\r\n };\r\n\r\n var boxShadow = {\r\n name: \"box-shadow\",\r\n initialValue: \"none\",\r\n type: 1 /* LIST */,\r\n prefix: false,\r\n parse: function (context, tokens) {\r\n if (tokens.length === 1 && isIdentWithValue(tokens[0], \"none\")) {\r\n return [];\r\n }\r\n return parseFunctionArgs(tokens).map(function (values) {\r\n var shadow = {\r\n color: 0x000000ff,\r\n offsetX: ZERO_LENGTH,\r\n offsetY: ZERO_LENGTH,\r\n blur: ZERO_LENGTH,\r\n spread: ZERO_LENGTH,\r\n inset: false,\r\n };\r\n var c = 0;\r\n for (var i = 0; i < values.length; i++) {\r\n var token = values[i];\r\n if (isIdentWithValue(token, \"inset\")) {\r\n shadow.inset = true;\r\n } else if (isLength(token)) {\r\n if (c === 0) {\r\n shadow.offsetX = token;\r\n } else if (c === 1) {\r\n shadow.offsetY = token;\r\n } else if (c === 2) {\r\n shadow.blur = token;\r\n } else {\r\n shadow.spread = token;\r\n }\r\n c++;\r\n } else {\r\n shadow.color = color$1.parse(context, token);\r\n }\r\n }\r\n return shadow;\r\n });\r\n },\r\n };\r\n\r\n var paintOrder = {\r\n name: \"paint-order\",\r\n initialValue: \"normal\",\r\n prefix: false,\r\n type: 1 /* LIST */,\r\n parse: function (_context, tokens) {\r\n var DEFAULT_VALUE = [0 /* FILL */, 1 /* STROKE */, 2 /* MARKERS */];\r\n var layers = [];\r\n tokens.filter(isIdentToken).forEach(function (token) {\r\n switch (token.value) {\r\n case \"stroke\":\r\n layers.push(1 /* STROKE */);\r\n break;\r\n case \"fill\":\r\n layers.push(0 /* FILL */);\r\n break;\r\n case \"markers\":\r\n layers.push(2 /* MARKERS */);\r\n break;\r\n }\r\n });\r\n DEFAULT_VALUE.forEach(function (value) {\r\n if (layers.indexOf(value) === -1) {\r\n layers.push(value);\r\n }\r\n });\r\n return layers;\r\n },\r\n };\r\n\r\n var webkitTextStrokeColor = {\r\n name: \"-webkit-text-stroke-color\",\r\n initialValue: \"currentcolor\",\r\n prefix: false,\r\n type: 3 /* TYPE_VALUE */,\r\n format: \"color\",\r\n };\r\n\r\n var webkitTextStrokeWidth = {\r\n name: \"-webkit-text-stroke-width\",\r\n initialValue: \"0\",\r\n type: 0 /* VALUE */,\r\n prefix: false,\r\n parse: function (_context, token) {\r\n if (isDimensionToken(token)) {\r\n return token.number;\r\n }\r\n return 0;\r\n },\r\n };\r\n\r\n var CSSParsedDeclaration = /** @class */ (function () {\r\n function CSSParsedDeclaration(context, declaration) {\r\n var _a, _b;\r\n this.animationDuration = parse(\r\n context,\r\n duration,\r\n declaration.animationDuration\r\n );\r\n this.backgroundClip = parse(\r\n context,\r\n backgroundClip,\r\n declaration.backgroundClip\r\n );\r\n this.backgroundColor = parse(\r\n context,\r\n backgroundColor,\r\n declaration.backgroundColor\r\n );\r\n this.backgroundImage = parse(\r\n context,\r\n backgroundImage,\r\n declaration.backgroundImage\r\n );\r\n this.backgroundOrigin = parse(\r\n context,\r\n backgroundOrigin,\r\n declaration.backgroundOrigin\r\n );\r\n this.backgroundPosition = parse(\r\n context,\r\n backgroundPosition,\r\n declaration.backgroundPosition\r\n );\r\n this.backgroundRepeat = parse(\r\n context,\r\n backgroundRepeat,\r\n declaration.backgroundRepeat\r\n );\r\n this.backgroundSize = parse(\r\n context,\r\n backgroundSize,\r\n declaration.backgroundSize\r\n );\r\n this.borderTopColor = parse(\r\n context,\r\n borderTopColor,\r\n declaration.borderTopColor\r\n );\r\n this.borderRightColor = parse(\r\n context,\r\n borderRightColor,\r\n declaration.borderRightColor\r\n );\r\n this.borderBottomColor = parse(\r\n context,\r\n borderBottomColor,\r\n declaration.borderBottomColor\r\n );\r\n this.borderLeftColor = parse(\r\n context,\r\n borderLeftColor,\r\n declaration.borderLeftColor\r\n );\r\n this.borderTopLeftRadius = parse(\r\n context,\r\n borderTopLeftRadius,\r\n declaration.borderTopLeftRadius\r\n );\r\n this.borderTopRightRadius = parse(\r\n context,\r\n borderTopRightRadius,\r\n declaration.borderTopRightRadius\r\n );\r\n this.borderBottomRightRadius = parse(\r\n context,\r\n borderBottomRightRadius,\r\n declaration.borderBottomRightRadius\r\n );\r\n this.borderBottomLeftRadius = parse(\r\n context,\r\n borderBottomLeftRadius,\r\n declaration.borderBottomLeftRadius\r\n );\r\n this.borderTopStyle = parse(\r\n context,\r\n borderTopStyle,\r\n declaration.borderTopStyle\r\n );\r\n this.borderRightStyle = parse(\r\n context,\r\n borderRightStyle,\r\n declaration.borderRightStyle\r\n );\r\n this.borderBottomStyle = parse(\r\n context,\r\n borderBottomStyle,\r\n declaration.borderBottomStyle\r\n );\r\n this.borderLeftStyle = parse(\r\n context,\r\n borderLeftStyle,\r\n declaration.borderLeftStyle\r\n );\r\n this.borderTopWidth = parse(\r\n context,\r\n borderTopWidth,\r\n declaration.borderTopWidth\r\n );\r\n this.borderRightWidth = parse(\r\n context,\r\n borderRightWidth,\r\n declaration.borderRightWidth\r\n );\r\n this.borderBottomWidth = parse(\r\n context,\r\n borderBottomWidth,\r\n declaration.borderBottomWidth\r\n );\r\n this.borderLeftWidth = parse(\r\n context,\r\n borderLeftWidth,\r\n declaration.borderLeftWidth\r\n );\r\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\r\n this.color = parse(context, color, declaration.color);\r\n this.direction = parse(context, direction, declaration.direction);\r\n this.display = parse(context, display, declaration.display);\r\n this.float = parse(context, float, declaration.cssFloat);\r\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\r\n this.fontSize = parse(context, fontSize, declaration.fontSize);\r\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\r\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\r\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\r\n this.letterSpacing = parse(\r\n context,\r\n letterSpacing,\r\n declaration.letterSpacing\r\n );\r\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\r\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\r\n this.listStyleImage = parse(\r\n context,\r\n listStyleImage,\r\n declaration.listStyleImage\r\n );\r\n this.listStylePosition = parse(\r\n context,\r\n listStylePosition,\r\n declaration.listStylePosition\r\n );\r\n this.listStyleType = parse(\r\n context,\r\n listStyleType,\r\n declaration.listStyleType\r\n );\r\n this.marginTop = parse(context, marginTop, declaration.marginTop);\r\n this.marginRight = parse(context, marginRight, declaration.marginRight);\r\n this.marginBottom = parse(\r\n context,\r\n marginBottom,\r\n declaration.marginBottom\r\n );\r\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\r\n this.opacity = parse(context, opacity, declaration.opacity);\r\n var overflowTuple = parse(context, overflow, declaration.overflow);\r\n this.overflowX = overflowTuple[0];\r\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\r\n this.overflowWrap = parse(\r\n context,\r\n overflowWrap,\r\n declaration.overflowWrap\r\n );\r\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\r\n this.paddingRight = parse(\r\n context,\r\n paddingRight,\r\n declaration.paddingRight\r\n );\r\n this.paddingBottom = parse(\r\n context,\r\n paddingBottom,\r\n declaration.paddingBottom\r\n );\r\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\r\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\r\n this.position = parse(context, position, declaration.position);\r\n this.textAlign = parse(context, textAlign, declaration.textAlign);\r\n this.textDecorationColor = parse(\r\n context,\r\n textDecorationColor,\r\n (_a = declaration.textDecorationColor) !== null && _a !== void 0\r\n ? _a\r\n : declaration.color\r\n );\r\n this.textDecorationLine = parse(\r\n context,\r\n textDecorationLine,\r\n (_b = declaration.textDecorationLine) !== null && _b !== void 0\r\n ? _b\r\n : declaration.textDecoration\r\n );\r\n this.textShadow = parse(context, textShadow, declaration.textShadow);\r\n this.textTransform = parse(\r\n context,\r\n textTransform,\r\n declaration.textTransform\r\n );\r\n this.transform = parse(context, transform$1, declaration.transform);\r\n this.transformOrigin = parse(\r\n context,\r\n transformOrigin,\r\n declaration.transformOrigin\r\n );\r\n this.visibility = parse(context, visibility, declaration.visibility);\r\n this.webkitTextStrokeColor = parse(\r\n context,\r\n webkitTextStrokeColor,\r\n declaration.webkitTextStrokeColor\r\n );\r\n this.webkitTextStrokeWidth = parse(\r\n context,\r\n webkitTextStrokeWidth,\r\n declaration.webkitTextStrokeWidth\r\n );\r\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\r\n this.zIndex = parse(context, zIndex, declaration.zIndex);\r\n }\r\n CSSParsedDeclaration.prototype.isVisible = function () {\r\n return (\r\n this.display > 0 &&\r\n this.opacity > 0 &&\r\n this.visibility === 0 /* VISIBLE */\r\n );\r\n };\r\n CSSParsedDeclaration.prototype.isTransparent = function () {\r\n return isTransparent(this.backgroundColor);\r\n };\r\n CSSParsedDeclaration.prototype.isTransformed = function () {\r\n return this.transform !== null;\r\n };\r\n CSSParsedDeclaration.prototype.isPositioned = function () {\r\n return this.position !== 0 /* STATIC */;\r\n };\r\n CSSParsedDeclaration.prototype.isPositionedWithZIndex = function () {\r\n return this.isPositioned() && !this.zIndex.auto;\r\n };\r\n CSSParsedDeclaration.prototype.isFloating = function () {\r\n return this.float !== 0 /* NONE */;\r\n };\r\n CSSParsedDeclaration.prototype.isInlineLevel = function () {\r\n return (\r\n contains(this.display, 4 /* INLINE */) ||\r\n contains(this.display, 33554432 /* INLINE_BLOCK */) ||\r\n contains(this.display, 268435456 /* INLINE_FLEX */) ||\r\n contains(this.display, 536870912 /* INLINE_GRID */) ||\r\n contains(this.display, 67108864 /* INLINE_LIST_ITEM */) ||\r\n contains(this.display, 134217728 /* INLINE_TABLE */)\r\n );\r\n };\r\n return CSSParsedDeclaration;\r\n })();\r\n var CSSParsedPseudoDeclaration = /** @class */ (function () {\r\n function CSSParsedPseudoDeclaration(context, declaration) {\r\n this.content = parse(context, content, declaration.content);\r\n this.quotes = parse(context, quotes, declaration.quotes);\r\n }\r\n return CSSParsedPseudoDeclaration;\r\n })();\r\n var CSSParsedCounterDeclaration = /** @class */ (function () {\r\n function CSSParsedCounterDeclaration(context, declaration) {\r\n this.counterIncrement = parse(\r\n context,\r\n counterIncrement,\r\n declaration.counterIncrement\r\n );\r\n this.counterReset = parse(\r\n context,\r\n counterReset,\r\n declaration.counterReset\r\n );\r\n }\r\n return CSSParsedCounterDeclaration;\r\n })();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var parse = function (context, descriptor, style) {\r\n var tokenizer = new Tokenizer();\r\n var value =\r\n style !== null && typeof style !== \"undefined\"\r\n ? style.toString()\r\n : descriptor.initialValue;\r\n tokenizer.write(value);\r\n var parser = new Parser(tokenizer.read());\r\n switch (descriptor.type) {\r\n case 2 /* IDENT_VALUE */:\r\n var token = parser.parseComponentValue();\r\n return descriptor.parse(\r\n context,\r\n isIdentToken(token) ? token.value : descriptor.initialValue\r\n );\r\n case 0 /* VALUE */:\r\n return descriptor.parse(context, parser.parseComponentValue());\r\n case 1 /* LIST */:\r\n return descriptor.parse(context, parser.parseComponentValues());\r\n case 4 /* TOKEN_VALUE */:\r\n return parser.parseComponentValue();\r\n case 3 /* TYPE_VALUE */:\r\n switch (descriptor.format) {\r\n case \"angle\":\r\n return angle.parse(context, parser.parseComponentValue());\r\n case \"color\":\r\n return color$1.parse(context, parser.parseComponentValue());\r\n case \"image\":\r\n return image.parse(context, parser.parseComponentValue());\r\n case \"length\":\r\n var length_1 = parser.parseComponentValue();\r\n return isLength(length_1) ? length_1 : ZERO_LENGTH;\r\n case \"length-percentage\":\r\n var value_1 = parser.parseComponentValue();\r\n return isLengthPercentage(value_1) ? value_1 : ZERO_LENGTH;\r\n case \"time\":\r\n return time.parse(context, parser.parseComponentValue());\r\n }\r\n break;\r\n }\r\n };\r\n\r\n var elementDebuggerAttribute = \"data-html2canvas-debug\";\r\n var getElementDebugType = function (element) {\r\n var attribute = element.getAttribute(elementDebuggerAttribute);\r\n switch (attribute) {\r\n case \"all\":\r\n return 1 /* ALL */;\r\n case \"clone\":\r\n return 2 /* CLONE */;\r\n case \"parse\":\r\n return 3 /* PARSE */;\r\n case \"render\":\r\n return 4 /* RENDER */;\r\n default:\r\n return 0 /* NONE */;\r\n }\r\n };\r\n var isDebugging = function (element, type) {\r\n var elementType = getElementDebugType(element);\r\n return elementType === 1 /* ALL */ || type === elementType;\r\n };\r\n\r\n var ElementContainer = /** @class */ (function () {\r\n function ElementContainer(context, element) {\r\n this.context = context;\r\n this.textNodes = [];\r\n this.elements = [];\r\n this.flags = 0;\r\n if (isDebugging(element, 3 /* PARSE */)) {\r\n debugger;\r\n }\r\n this.styles = new CSSParsedDeclaration(\r\n context,\r\n window.getComputedStyle(element, null)\r\n );\r\n if (isHTMLElementNode(element)) {\r\n if (\r\n this.styles.animationDuration.some(function (duration) {\r\n return duration > 0;\r\n })\r\n ) {\r\n element.style.animationDuration = \"0s\";\r\n }\r\n if (this.styles.transform !== null) {\r\n // getBoundingClientRect takes transforms into account\r\n element.style.transform = \"none\";\r\n }\r\n }\r\n this.bounds = parseBounds(this.context, element);\r\n if (isDebugging(element, 4 /* RENDER */)) {\r\n this.flags |= 16 /* DEBUG_RENDER */;\r\n }\r\n }\r\n return ElementContainer;\r\n })();\r\n\r\n /*\r\n * text-segmentation 1.0.3 \r\n * Copyright (c) 2022 Niklas von Hertzen \r\n * Released under MIT License\r\n */\r\n var base64 =\r\n \"AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=\";\r\n\r\n /*\r\n * utrie 1.0.2 \r\n * Copyright (c) 2022 Niklas von Hertzen \r\n * Released under MIT License\r\n */\r\n var chars$1 =\r\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Use a lookup table to find the index.\r\n var lookup$1 = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\r\n for (var i$1 = 0; i$1 < chars$1.length; i$1++) {\r\n lookup$1[chars$1.charCodeAt(i$1)] = i$1;\r\n }\r\n var decode = function (base64) {\r\n var bufferLength = base64.length * 0.75,\r\n len = base64.length,\r\n i,\r\n p = 0,\r\n encoded1,\r\n encoded2,\r\n encoded3,\r\n encoded4;\r\n if (base64[base64.length - 1] === \"=\") {\r\n bufferLength--;\r\n if (base64[base64.length - 2] === \"=\") {\r\n bufferLength--;\r\n }\r\n }\r\n var buffer =\r\n typeof ArrayBuffer !== \"undefined\" &&\r\n typeof Uint8Array !== \"undefined\" &&\r\n typeof Uint8Array.prototype.slice !== \"undefined\"\r\n ? new ArrayBuffer(bufferLength)\r\n : new Array(bufferLength);\r\n var bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\r\n for (i = 0; i < len; i += 4) {\r\n encoded1 = lookup$1[base64.charCodeAt(i)];\r\n encoded2 = lookup$1[base64.charCodeAt(i + 1)];\r\n encoded3 = lookup$1[base64.charCodeAt(i + 2)];\r\n encoded4 = lookup$1[base64.charCodeAt(i + 3)];\r\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\r\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\r\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\r\n }\r\n return buffer;\r\n };\r\n var polyUint16Array = function (buffer) {\r\n var length = buffer.length;\r\n var bytes = [];\r\n for (var i = 0; i < length; i += 2) {\r\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\r\n }\r\n return bytes;\r\n };\r\n var polyUint32Array = function (buffer) {\r\n var length = buffer.length;\r\n var bytes = [];\r\n for (var i = 0; i < length; i += 4) {\r\n bytes.push(\r\n (buffer[i + 3] << 24) |\r\n (buffer[i + 2] << 16) |\r\n (buffer[i + 1] << 8) |\r\n buffer[i]\r\n );\r\n }\r\n return bytes;\r\n };\r\n\r\n /** Shift size for getting the index-2 table offset. */\r\n var UTRIE2_SHIFT_2 = 5;\r\n /** Shift size for getting the index-1 table offset. */\r\n var UTRIE2_SHIFT_1 = 6 + 5;\r\n /**\r\n * Shift size for shifting left the index array values.\r\n * Increases possible data size with 16-bit index values at the cost\r\n * of compactability.\r\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\r\n */\r\n var UTRIE2_INDEX_SHIFT = 2;\r\n /**\r\n * Difference between the two shift sizes,\r\n * for getting an index-1 offset from an index-2 offset. 6=11-5\r\n */\r\n var UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\r\n /**\r\n * The part of the index-2 table for U+D800..U+DBFF stores values for\r\n * lead surrogate code _units_ not code _points_.\r\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\r\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\r\n */\r\n var UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\r\n /** Number of entries in a data block. 32=0x20 */\r\n var UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\r\n /** Mask for getting the lower bits for the in-data-block offset. */\r\n var UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\r\n var UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\r\n /** Count the lengths of both BMP pieces. 2080=0x820 */\r\n var UTRIE2_INDEX_2_BMP_LENGTH =\r\n UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\r\n /**\r\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\r\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\r\n */\r\n var UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\r\n var UTRIE2_UTF8_2B_INDEX_2_LENGTH =\r\n 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\r\n /**\r\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\r\n * Variable length, for code points up to highStart, where the last single-value range starts.\r\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\r\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\r\n *\r\n * The part of the index-2 table for supplementary code points starts\r\n * after this index-1 table.\r\n *\r\n * Both the index-1 table and the following part of the index-2 table\r\n * are omitted completely if there is only BMP data.\r\n */\r\n var UTRIE2_INDEX_1_OFFSET =\r\n UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\r\n /**\r\n * Number of index-1 entries for the BMP. 32=0x20\r\n * This part of the index-1 table is omitted from the serialized form.\r\n */\r\n var UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\r\n /** Number of entries in an index-2 block. 64=0x40 */\r\n var UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\r\n /** Mask for getting the lower bits for the in-index-2-block offset. */\r\n var UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\r\n var slice16 = function (view, start, end) {\r\n if (view.slice) {\r\n return view.slice(start, end);\r\n }\r\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\r\n };\r\n var slice32 = function (view, start, end) {\r\n if (view.slice) {\r\n return view.slice(start, end);\r\n }\r\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\r\n };\r\n var createTrieFromBase64 = function (base64, _byteLength) {\r\n var buffer = decode(base64);\r\n var view32 = Array.isArray(buffer)\r\n ? polyUint32Array(buffer)\r\n : new Uint32Array(buffer);\r\n var view16 = Array.isArray(buffer)\r\n ? polyUint16Array(buffer)\r\n : new Uint16Array(buffer);\r\n var headerLength = 24;\r\n var index = slice16(view16, headerLength / 2, view32[4] / 2);\r\n var data =\r\n view32[5] === 2\r\n ? slice16(view16, (headerLength + view32[4]) / 2)\r\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\r\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\r\n };\r\n var Trie = /** @class */ (function () {\r\n function Trie(\r\n initialValue,\r\n errorValue,\r\n highStart,\r\n highValueIndex,\r\n index,\r\n data\r\n ) {\r\n this.initialValue = initialValue;\r\n this.errorValue = errorValue;\r\n this.highStart = highStart;\r\n this.highValueIndex = highValueIndex;\r\n this.index = index;\r\n this.data = data;\r\n }\r\n /**\r\n * Get the value for a code point as stored in the Trie.\r\n *\r\n * @param codePoint the code point\r\n * @return the value\r\n */\r\n Trie.prototype.get = function (codePoint) {\r\n var ix;\r\n if (codePoint >= 0) {\r\n if (\r\n codePoint < 0x0d800 ||\r\n (codePoint > 0x0dbff && codePoint <= 0x0ffff)\r\n ) {\r\n // Ordinary BMP code point, excluding leading surrogates.\r\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\r\n // 16 bit data is stored in the index array itself.\r\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n if (codePoint <= 0xffff) {\r\n // Lead Surrogate Code Point. A Separate index section is stored for\r\n // lead surrogate code units and code points.\r\n // The main index has the code unit data.\r\n // For this function, we need the code point data.\r\n // Note: this expression could be refactored for slightly improved efficiency, but\r\n // surrogate code points will be so rare in practice that it's not worth it.\r\n ix =\r\n this.index[\r\n UTRIE2_LSCP_INDEX_2_OFFSET +\r\n ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)\r\n ];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n if (codePoint < this.highStart) {\r\n // Supplemental code point, use two-level lookup.\r\n ix =\r\n UTRIE2_INDEX_1_OFFSET -\r\n UTRIE2_OMITTED_BMP_INDEX_1_LENGTH +\r\n (codePoint >> UTRIE2_SHIFT_1);\r\n ix = this.index[ix];\r\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\r\n ix = this.index[ix];\r\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\r\n return this.data[ix];\r\n }\r\n if (codePoint <= 0x10ffff) {\r\n return this.data[this.highValueIndex];\r\n }\r\n }\r\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\r\n return this.errorValue;\r\n };\r\n return Trie;\r\n })();\r\n\r\n /*\r\n * base64-arraybuffer 1.0.2 \r\n * Copyright (c) 2022 Niklas von Hertzen \r\n * Released under MIT License\r\n */\r\n var chars =\r\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n // Use a lookup table to find the index.\r\n var lookup = typeof Uint8Array === \"undefined\" ? [] : new Uint8Array(256);\r\n for (var i = 0; i < chars.length; i++) {\r\n lookup[chars.charCodeAt(i)] = i;\r\n }\r\n\r\n var Prepend = 1;\r\n var CR = 2;\r\n var LF = 3;\r\n var Control = 4;\r\n var Extend = 5;\r\n var SpacingMark = 7;\r\n var L = 8;\r\n var V = 9;\r\n var T = 10;\r\n var LV = 11;\r\n var LVT = 12;\r\n var ZWJ = 13;\r\n var Extended_Pictographic = 14;\r\n var RI = 15;\r\n var toCodePoints = function (str) {\r\n var codePoints = [];\r\n var i = 0;\r\n var length = str.length;\r\n while (i < length) {\r\n var value = str.charCodeAt(i++);\r\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\r\n var extra = str.charCodeAt(i++);\r\n if ((extra & 0xfc00) === 0xdc00) {\r\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\r\n } else {\r\n codePoints.push(value);\r\n i--;\r\n }\r\n } else {\r\n codePoints.push(value);\r\n }\r\n }\r\n return codePoints;\r\n };\r\n var fromCodePoint = function () {\r\n var codePoints = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n codePoints[_i] = arguments[_i];\r\n }\r\n if (String.fromCodePoint) {\r\n return String.fromCodePoint.apply(String, codePoints);\r\n }\r\n var length = codePoints.length;\r\n if (!length) {\r\n return \"\";\r\n }\r\n var codeUnits = [];\r\n var index = -1;\r\n var result = \"\";\r\n while (++index < length) {\r\n var codePoint = codePoints[index];\r\n if (codePoint <= 0xffff) {\r\n codeUnits.push(codePoint);\r\n } else {\r\n codePoint -= 0x10000;\r\n codeUnits.push(\r\n (codePoint >> 10) + 0xd800,\r\n (codePoint % 0x400) + 0xdc00\r\n );\r\n }\r\n if (index + 1 === length || codeUnits.length > 0x4000) {\r\n result += String.fromCharCode.apply(String, codeUnits);\r\n codeUnits.length = 0;\r\n }\r\n }\r\n return result;\r\n };\r\n var UnicodeTrie = createTrieFromBase64(base64);\r\n var BREAK_NOT_ALLOWED = \"×\";\r\n var BREAK_ALLOWED = \"÷\";\r\n var codePointToClass = function (codePoint) {\r\n return UnicodeTrie.get(codePoint);\r\n };\r\n var _graphemeBreakAtIndex = function (_codePoints, classTypes, index) {\r\n var prevIndex = index - 2;\r\n var prev = classTypes[prevIndex];\r\n var current = classTypes[index - 1];\r\n var next = classTypes[index];\r\n // GB3 Do not break between a CR and LF\r\n if (current === CR && next === LF) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // GB4 Otherwise, break before and after controls.\r\n if (current === CR || current === LF || current === Control) {\r\n return BREAK_ALLOWED;\r\n }\r\n // GB5\r\n if (next === CR || next === LF || next === Control) {\r\n return BREAK_ALLOWED;\r\n }\r\n // Do not break Hangul syllable sequences.\r\n // GB6\r\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // GB7\r\n if ((current === LV || current === V) && (next === V || next === T)) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // GB8\r\n if ((current === LVT || current === T) && next === T) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // GB9 Do not break before extending characters or ZWJ.\r\n if (next === ZWJ || next === Extend) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // Do not break before SpacingMarks, or after Prepend characters.\r\n // GB9a\r\n if (next === SpacingMark) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // GB9a\r\n if (current === Prepend) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\r\n if (current === ZWJ && next === Extended_Pictographic) {\r\n while (prev === Extend) {\r\n prev = classTypes[--prevIndex];\r\n }\r\n if (prev === Extended_Pictographic) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n }\r\n // GB12 Do not break within emoji flag sequences.\r\n // That is, do not break between regional indicator (RI) symbols\r\n // if there is an odd number of RI characters before the break point.\r\n if (current === RI && next === RI) {\r\n var countRI = 0;\r\n while (prev === RI) {\r\n countRI++;\r\n prev = classTypes[--prevIndex];\r\n }\r\n if (countRI % 2 === 0) {\r\n return BREAK_NOT_ALLOWED;\r\n }\r\n }\r\n return BREAK_ALLOWED;\r\n };\r\n var GraphemeBreaker = function (str) {\r\n var codePoints = toCodePoints(str);\r\n var length = codePoints.length;\r\n var index = 0;\r\n var lastEnd = 0;\r\n var classTypes = codePoints.map(codePointToClass);\r\n return {\r\n next: function () {\r\n if (index >= length) {\r\n return { done: true, value: null };\r\n }\r\n var graphemeBreak = BREAK_NOT_ALLOWED;\r\n while (\r\n index < length &&\r\n (graphemeBreak = _graphemeBreakAtIndex(\r\n codePoints,\r\n classTypes,\r\n ++index\r\n )) === BREAK_NOT_ALLOWED\r\n ) {}\r\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\r\n var value = fromCodePoint.apply(\r\n null,\r\n codePoints.slice(lastEnd, index)\r\n );\r\n lastEnd = index;\r\n return { value: value, done: false };\r\n }\r\n return { done: true, value: null };\r\n },\r\n };\r\n };\r\n var splitGraphemes = function (str) {\r\n var breaker = GraphemeBreaker(str);\r\n var graphemes = [];\r\n var bk;\r\n while (!(bk = breaker.next()).done) {\r\n if (bk.value) {\r\n graphemes.push(bk.value.slice());\r\n }\r\n }\r\n return graphemes;\r\n };\r\n\r\n var testRangeBounds = function (document) {\r\n var TEST_HEIGHT = 123;\r\n if (document.createRange) {\r\n var range = document.createRange();\r\n if (range.getBoundingClientRect) {\r\n var testElement = document.createElement(\"boundtest\");\r\n testElement.style.height = TEST_HEIGHT + \"px\";\r\n testElement.style.display = \"block\";\r\n document.body.appendChild(testElement);\r\n range.selectNode(testElement);\r\n var rangeBounds = range.getBoundingClientRect();\r\n var rangeHeight = Math.round(rangeBounds.height);\r\n document.body.removeChild(testElement);\r\n if (rangeHeight === TEST_HEIGHT) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n var testIOSLineBreak = function (document) {\r\n var testElement = document.createElement(\"boundtest\");\r\n testElement.style.width = \"50px\";\r\n testElement.style.display = \"block\";\r\n testElement.style.fontSize = \"12px\";\r\n testElement.style.letterSpacing = \"0px\";\r\n testElement.style.wordSpacing = \"0px\";\r\n document.body.appendChild(testElement);\r\n var range = document.createRange();\r\n testElement.innerHTML =\r\n typeof \"\".repeat === \"function\" ? \"👨\".repeat(10) : \"\";\r\n var node = testElement.firstChild;\r\n var textList = toCodePoints$1(node.data).map(function (i) {\r\n return fromCodePoint$1(i);\r\n });\r\n var offset = 0;\r\n var prev = {};\r\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\r\n var supports = textList.every(function (text, i) {\r\n range.setStart(node, offset);\r\n range.setEnd(node, offset + text.length);\r\n var rect = range.getBoundingClientRect();\r\n offset += text.length;\r\n var boundAhead = rect.x > prev.x || rect.y > prev.y;\r\n prev = rect;\r\n if (i === 0) {\r\n return true;\r\n }\r\n return boundAhead;\r\n });\r\n document.body.removeChild(testElement);\r\n return supports;\r\n };\r\n var testCORS = function () {\r\n return typeof new Image().crossOrigin !== \"undefined\";\r\n };\r\n var testResponseType = function () {\r\n return typeof new XMLHttpRequest().responseType === \"string\";\r\n };\r\n var testSVG = function (document) {\r\n var img = new Image();\r\n var canvas = document.createElement(\"canvas\");\r\n var ctx = canvas.getContext(\"2d\");\r\n if (!ctx) {\r\n return false;\r\n }\r\n img.src =\r\n \"data:image/svg+xml,\";\r\n try {\r\n ctx.drawImage(img, 0, 0);\r\n canvas.toDataURL();\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n var isGreenPixel = function (data) {\r\n return data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\r\n };\r\n var testForeignObject = function (document) {\r\n var canvas = document.createElement(\"canvas\");\r\n var size = 100;\r\n canvas.width = size;\r\n canvas.height = size;\r\n var ctx = canvas.getContext(\"2d\");\r\n if (!ctx) {\r\n return Promise.reject(false);\r\n }\r\n ctx.fillStyle = \"rgb(0, 255, 0)\";\r\n ctx.fillRect(0, 0, size, size);\r\n var img = new Image();\r\n var greenImageSrc = canvas.toDataURL();\r\n img.src = greenImageSrc;\r\n var svg = createForeignObjectSVG(size, size, 0, 0, img);\r\n ctx.fillStyle = \"red\";\r\n ctx.fillRect(0, 0, size, size);\r\n return loadSerializedSVG$1(svg)\r\n .then(function (img) {\r\n ctx.drawImage(img, 0, 0);\r\n var data = ctx.getImageData(0, 0, size, size).data;\r\n ctx.fillStyle = \"red\";\r\n ctx.fillRect(0, 0, size, size);\r\n var node = document.createElement(\"div\");\r\n node.style.backgroundImage = \"url(\" + greenImageSrc + \")\";\r\n node.style.height = size + \"px\";\r\n // Firefox 55 does not render inline tags\r\n return isGreenPixel(data)\r\n ? loadSerializedSVG$1(createForeignObjectSVG(size, size, 0, 0, node))\r\n : Promise.reject(false);\r\n })\r\n .then(function (img) {\r\n ctx.drawImage(img, 0, 0);\r\n // Edge does not render background-images\r\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\r\n })\r\n .catch(function () {\r\n return false;\r\n });\r\n };\r\n var createForeignObjectSVG = function (width, height, x, y, node) {\r\n var xmlns = \"http://www.w3.org/2000/svg\";\r\n var svg = document.createElementNS(xmlns, \"svg\");\r\n var foreignObject = document.createElementNS(xmlns, \"foreignObject\");\r\n svg.setAttributeNS(null, \"width\", width.toString());\r\n svg.setAttributeNS(null, \"height\", height.toString());\r\n foreignObject.setAttributeNS(null, \"width\", \"100%\");\r\n foreignObject.setAttributeNS(null, \"height\", \"100%\");\r\n foreignObject.setAttributeNS(null, \"x\", x.toString());\r\n foreignObject.setAttributeNS(null, \"y\", y.toString());\r\n foreignObject.setAttributeNS(null, \"externalResourcesRequired\", \"true\");\r\n svg.appendChild(foreignObject);\r\n foreignObject.appendChild(node);\r\n return svg;\r\n };\r\n var loadSerializedSVG$1 = function (svg) {\r\n return new Promise(function (resolve, reject) {\r\n var img = new Image();\r\n img.onload = function () {\r\n return resolve(img);\r\n };\r\n img.onerror = reject;\r\n img.src =\r\n \"data:image/svg+xml;charset=utf-8,\" +\r\n encodeURIComponent(new XMLSerializer().serializeToString(svg));\r\n });\r\n };\r\n var FEATURES = {\r\n get SUPPORT_RANGE_BOUNDS() {\r\n var value = testRangeBounds(document);\r\n Object.defineProperty(FEATURES, \"SUPPORT_RANGE_BOUNDS\", { value: value });\r\n return value;\r\n },\r\n get SUPPORT_WORD_BREAKING() {\r\n var value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\r\n Object.defineProperty(FEATURES, \"SUPPORT_WORD_BREAKING\", {\r\n value: value,\r\n });\r\n return value;\r\n },\r\n get SUPPORT_SVG_DRAWING() {\r\n var value = testSVG(document);\r\n Object.defineProperty(FEATURES, \"SUPPORT_SVG_DRAWING\", { value: value });\r\n return value;\r\n },\r\n get SUPPORT_FOREIGNOBJECT_DRAWING() {\r\n var value =\r\n typeof Array.from === \"function\" && typeof window.fetch === \"function\"\r\n ? testForeignObject(document)\r\n : Promise.resolve(false);\r\n Object.defineProperty(FEATURES, \"SUPPORT_FOREIGNOBJECT_DRAWING\", {\r\n value: value,\r\n });\r\n return value;\r\n },\r\n get SUPPORT_CORS_IMAGES() {\r\n var value = testCORS();\r\n Object.defineProperty(FEATURES, \"SUPPORT_CORS_IMAGES\", { value: value });\r\n return value;\r\n },\r\n get SUPPORT_RESPONSE_TYPE() {\r\n var value = testResponseType();\r\n Object.defineProperty(FEATURES, \"SUPPORT_RESPONSE_TYPE\", {\r\n value: value,\r\n });\r\n return value;\r\n },\r\n get SUPPORT_CORS_XHR() {\r\n var value = \"withCredentials\" in new XMLHttpRequest();\r\n Object.defineProperty(FEATURES, \"SUPPORT_CORS_XHR\", { value: value });\r\n return value;\r\n },\r\n get SUPPORT_NATIVE_TEXT_SEGMENTATION() {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var value = !!(typeof Intl !== \"undefined\" && Intl.Segmenter);\r\n Object.defineProperty(FEATURES, \"SUPPORT_NATIVE_TEXT_SEGMENTATION\", {\r\n value: value,\r\n });\r\n return value;\r\n },\r\n };\r\n\r\n var TextBounds = /** @class */ (function () {\r\n function TextBounds(text, bounds) {\r\n this.text = text;\r\n this.bounds = bounds;\r\n }\r\n return TextBounds;\r\n })();\r\n var parseTextBounds = function (context, value, styles, node) {\r\n var textList = breakText(value, styles);\r\n var textBounds = [];\r\n var offset = 0;\r\n textList.forEach(function (text) {\r\n if (styles.textDecorationLine.length || text.trim().length > 0) {\r\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\r\n var clientRects = createRange(\r\n node,\r\n offset,\r\n text.length\r\n ).getClientRects();\r\n if (clientRects.length > 1) {\r\n var subSegments = segmentGraphemes(text);\r\n var subOffset_1 = 0;\r\n subSegments.forEach(function (subSegment) {\r\n textBounds.push(\r\n new TextBounds(\r\n subSegment,\r\n Bounds.fromDOMRectList(\r\n context,\r\n createRange(\r\n node,\r\n subOffset_1 + offset,\r\n subSegment.length\r\n ).getClientRects()\r\n )\r\n )\r\n );\r\n subOffset_1 += subSegment.length;\r\n });\r\n } else {\r\n textBounds.push(\r\n new TextBounds(text, Bounds.fromDOMRectList(context, clientRects))\r\n );\r\n }\r\n } else {\r\n var replacementNode = node.splitText(text.length);\r\n textBounds.push(\r\n new TextBounds(text, getWrapperBounds(context, node))\r\n );\r\n node = replacementNode;\r\n }\r\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\r\n node = node.splitText(text.length);\r\n }\r\n offset += text.length;\r\n });\r\n return textBounds;\r\n };\r\n var getWrapperBounds = function (context, node) {\r\n var ownerDocument = node.ownerDocument;\r\n if (ownerDocument) {\r\n var wrapper = ownerDocument.createElement(\"html2canvaswrapper\");\r\n wrapper.appendChild(node.cloneNode(true));\r\n var parentNode = node.parentNode;\r\n if (parentNode) {\r\n parentNode.replaceChild(wrapper, node);\r\n var bounds = parseBounds(context, wrapper);\r\n if (wrapper.firstChild) {\r\n parentNode.replaceChild(wrapper.firstChild, wrapper);\r\n }\r\n return bounds;\r\n }\r\n }\r\n return Bounds.EMPTY;\r\n };\r\n var createRange = function (node, offset, length) {\r\n var ownerDocument = node.ownerDocument;\r\n if (!ownerDocument) {\r\n throw new Error(\"Node has no owner document\");\r\n }\r\n var range = ownerDocument.createRange();\r\n range.setStart(node, offset);\r\n range.setEnd(node, offset + length);\r\n return range;\r\n };\r\n var segmentGraphemes = function (value) {\r\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var segmenter = new Intl.Segmenter(void 0, { granularity: \"grapheme\" });\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return Array.from(segmenter.segment(value)).map(function (segment) {\r\n return segment.segment;\r\n });\r\n }\r\n return splitGraphemes(value);\r\n };\r\n var segmentWords = function (value, styles) {\r\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var segmenter = new Intl.Segmenter(void 0, {\r\n granularity: \"word\",\r\n });\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n return Array.from(segmenter.segment(value)).map(function (segment) {\r\n return segment.segment;\r\n });\r\n }\r\n return breakWords(value, styles);\r\n };\r\n var breakText = function (value, styles) {\r\n return styles.letterSpacing !== 0\r\n ? segmentGraphemes(value)\r\n : segmentWords(value, styles);\r\n };\r\n // https://drafts.csswg.org/css-text/#word-separator\r\n var wordSeparators = [\r\n 0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091,\r\n ];\r\n var breakWords = function (str, styles) {\r\n var breaker = LineBreaker(str, {\r\n lineBreak: styles.lineBreak,\r\n wordBreak:\r\n styles.overflowWrap === \"break-word\" /* BREAK_WORD */\r\n ? \"break-word\"\r\n : styles.wordBreak,\r\n });\r\n var words = [];\r\n var bk;\r\n var _loop_1 = function () {\r\n if (bk.value) {\r\n var value = bk.value.slice();\r\n var codePoints = toCodePoints$1(value);\r\n var word_1 = \"\";\r\n codePoints.forEach(function (codePoint) {\r\n if (wordSeparators.indexOf(codePoint) === -1) {\r\n word_1 += fromCodePoint$1(codePoint);\r\n } else {\r\n if (word_1.length) {\r\n words.push(word_1);\r\n }\r\n words.push(fromCodePoint$1(codePoint));\r\n word_1 = \"\";\r\n }\r\n });\r\n if (word_1.length) {\r\n words.push(word_1);\r\n }\r\n }\r\n };\r\n while (!(bk = breaker.next()).done) {\r\n _loop_1();\r\n }\r\n return words;\r\n };\r\n\r\n var TextContainer = /** @class */ (function () {\r\n function TextContainer(context, node, styles) {\r\n this.text = transform(node.data, styles.textTransform);\r\n this.textBounds = parseTextBounds(context, this.text, styles, node);\r\n }\r\n return TextContainer;\r\n })();\r\n var transform = function (text, transform) {\r\n switch (transform) {\r\n case 1 /* LOWERCASE */:\r\n return text.toLowerCase();\r\n case 3 /* CAPITALIZE */:\r\n return text.replace(CAPITALIZE, capitalize);\r\n case 2 /* UPPERCASE */:\r\n return text.toUpperCase();\r\n default:\r\n return text;\r\n }\r\n };\r\n var CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\r\n var capitalize = function (m, p1, p2) {\r\n if (m.length > 0) {\r\n return p1 + p2.toUpperCase();\r\n }\r\n return m;\r\n };\r\n\r\n var ImageElementContainer = /** @class */ (function (_super) {\r\n __extends(ImageElementContainer, _super);\r\n function ImageElementContainer(context, img) {\r\n var _this = _super.call(this, context, img) || this;\r\n _this.src = img.currentSrc || img.src;\r\n _this.intrinsicWidth = img.naturalWidth;\r\n _this.intrinsicHeight = img.naturalHeight;\r\n _this.context.cache.addImage(_this.src);\r\n return _this;\r\n }\r\n return ImageElementContainer;\r\n })(ElementContainer);\r\n\r\n var CanvasElementContainer = /** @class */ (function (_super) {\r\n __extends(CanvasElementContainer, _super);\r\n function CanvasElementContainer(context, canvas) {\r\n var _this = _super.call(this, context, canvas) || this;\r\n _this.canvas = canvas;\r\n _this.intrinsicWidth = canvas.width;\r\n _this.intrinsicHeight = canvas.height;\r\n return _this;\r\n }\r\n return CanvasElementContainer;\r\n })(ElementContainer);\r\n\r\n var SVGElementContainer = /** @class */ (function (_super) {\r\n __extends(SVGElementContainer, _super);\r\n function SVGElementContainer(context, img) {\r\n var _this = _super.call(this, context, img) || this;\r\n var s = new XMLSerializer();\r\n var bounds = parseBounds(context, img);\r\n img.setAttribute(\"width\", bounds.width + \"px\");\r\n img.setAttribute(\"height\", bounds.height + \"px\");\r\n _this.svg =\r\n \"data:image/svg+xml,\" + encodeURIComponent(s.serializeToString(img));\r\n _this.intrinsicWidth = img.width.baseVal.value;\r\n _this.intrinsicHeight = img.height.baseVal.value;\r\n _this.context.cache.addImage(_this.svg);\r\n return _this;\r\n }\r\n return SVGElementContainer;\r\n })(ElementContainer);\r\n\r\n var LIElementContainer = /** @class */ (function (_super) {\r\n __extends(LIElementContainer, _super);\r\n function LIElementContainer(context, element) {\r\n var _this = _super.call(this, context, element) || this;\r\n _this.value = element.value;\r\n return _this;\r\n }\r\n return LIElementContainer;\r\n })(ElementContainer);\r\n\r\n var OLElementContainer = /** @class */ (function (_super) {\r\n __extends(OLElementContainer, _super);\r\n function OLElementContainer(context, element) {\r\n var _this = _super.call(this, context, element) || this;\r\n _this.start = element.start;\r\n _this.reversed =\r\n typeof element.reversed === \"boolean\" && element.reversed === true;\r\n return _this;\r\n }\r\n return OLElementContainer;\r\n })(ElementContainer);\r\n\r\n var CHECKBOX_BORDER_RADIUS = [\r\n {\r\n type: 15 /* DIMENSION_TOKEN */,\r\n flags: 0,\r\n unit: \"px\",\r\n number: 3,\r\n },\r\n ];\r\n var RADIO_BORDER_RADIUS = [\r\n {\r\n type: 16 /* PERCENTAGE_TOKEN */,\r\n flags: 0,\r\n number: 50,\r\n },\r\n ];\r\n var reformatInputBounds = function (bounds) {\r\n if (bounds.width > bounds.height) {\r\n return new Bounds(\r\n bounds.left + (bounds.width - bounds.height) / 2,\r\n bounds.top,\r\n bounds.height,\r\n bounds.height\r\n );\r\n } else if (bounds.width < bounds.height) {\r\n return new Bounds(\r\n bounds.left,\r\n bounds.top + (bounds.height - bounds.width) / 2,\r\n bounds.width,\r\n bounds.width\r\n );\r\n }\r\n return bounds;\r\n };\r\n var getInputValue = function (node) {\r\n var value =\r\n node.type === PINPUT\r\n ? new Array(node.value.length + 1).join(\"\\u2022\")\r\n : node.value;\r\n return value.length === 0 ? node.placeholder || \"\" : value;\r\n };\r\n var CHECKBOX = \"checkbox\";\r\n var RADIO = \"radio\";\r\n var PINPUT = \"password\";\r\n var INPUT_COLOR = 0x2a2a2aff;\r\n var InputElementContainer = /** @class */ (function (_super) {\r\n __extends(InputElementContainer, _super);\r\n function InputElementContainer(context, input) {\r\n var _this = _super.call(this, context, input) || this;\r\n _this.type = input.type.toLowerCase();\r\n _this.checked = input.checked;\r\n _this.value = getInputValue(input);\r\n if (_this.type === CHECKBOX || _this.type === RADIO) {\r\n _this.styles.backgroundColor = 0xdededeff;\r\n _this.styles.borderTopColor =\r\n _this.styles.borderRightColor =\r\n _this.styles.borderBottomColor =\r\n _this.styles.borderLeftColor =\r\n 0xa5a5a5ff;\r\n _this.styles.borderTopWidth =\r\n _this.styles.borderRightWidth =\r\n _this.styles.borderBottomWidth =\r\n _this.styles.borderLeftWidth =\r\n 1;\r\n _this.styles.borderTopStyle =\r\n _this.styles.borderRightStyle =\r\n _this.styles.borderBottomStyle =\r\n _this.styles.borderLeftStyle =\r\n 1 /* SOLID */;\r\n _this.styles.backgroundClip = [0 /* BORDER_BOX */];\r\n _this.styles.backgroundOrigin = [0 /* BORDER_BOX */];\r\n _this.bounds = reformatInputBounds(_this.bounds);\r\n }\r\n switch (_this.type) {\r\n case CHECKBOX:\r\n _this.styles.borderTopRightRadius =\r\n _this.styles.borderTopLeftRadius =\r\n _this.styles.borderBottomRightRadius =\r\n _this.styles.borderBottomLeftRadius =\r\n CHECKBOX_BORDER_RADIUS;\r\n break;\r\n case RADIO:\r\n _this.styles.borderTopRightRadius =\r\n _this.styles.borderTopLeftRadius =\r\n _this.styles.borderBottomRightRadius =\r\n _this.styles.borderBottomLeftRadius =\r\n RADIO_BORDER_RADIUS;\r\n break;\r\n }\r\n return _this;\r\n }\r\n return InputElementContainer;\r\n })(ElementContainer);\r\n\r\n var SelectElementContainer = /** @class */ (function (_super) {\r\n __extends(SelectElementContainer, _super);\r\n function SelectElementContainer(context, element) {\r\n var _this = _super.call(this, context, element) || this;\r\n var option = element.options[element.selectedIndex || 0];\r\n _this.value = option ? option.text || \"\" : \"\";\r\n return _this;\r\n }\r\n return SelectElementContainer;\r\n })(ElementContainer);\r\n\r\n var TextareaElementContainer = /** @class */ (function (_super) {\r\n __extends(TextareaElementContainer, _super);\r\n function TextareaElementContainer(context, element) {\r\n var _this = _super.call(this, context, element) || this;\r\n _this.value = element.value;\r\n return _this;\r\n }\r\n return TextareaElementContainer;\r\n })(ElementContainer);\r\n\r\n var IFrameElementContainer = /** @class */ (function (_super) {\r\n __extends(IFrameElementContainer, _super);\r\n function IFrameElementContainer(context, iframe) {\r\n var _this = _super.call(this, context, iframe) || this;\r\n _this.src = iframe.src;\r\n _this.width = parseInt(iframe.width, 10) || 0;\r\n _this.height = parseInt(iframe.height, 10) || 0;\r\n _this.backgroundColor = _this.styles.backgroundColor;\r\n try {\r\n if (\r\n iframe.contentWindow &&\r\n iframe.contentWindow.document &&\r\n iframe.contentWindow.document.documentElement\r\n ) {\r\n _this.tree = parseTree(\r\n context,\r\n iframe.contentWindow.document.documentElement\r\n );\r\n // http://www.w3.org/TR/css3-background/#special-backgrounds\r\n var documentBackgroundColor = iframe.contentWindow.document\r\n .documentElement\r\n ? parseColor(\r\n context,\r\n getComputedStyle(iframe.contentWindow.document.documentElement)\r\n .backgroundColor\r\n )\r\n : COLORS.TRANSPARENT;\r\n var bodyBackgroundColor = iframe.contentWindow.document.body\r\n ? parseColor(\r\n context,\r\n getComputedStyle(iframe.contentWindow.document.body)\r\n .backgroundColor\r\n )\r\n : COLORS.TRANSPARENT;\r\n _this.backgroundColor = isTransparent(documentBackgroundColor)\r\n ? isTransparent(bodyBackgroundColor)\r\n ? _this.styles.backgroundColor\r\n : bodyBackgroundColor\r\n : documentBackgroundColor;\r\n }\r\n } catch (e) {}\r\n return _this;\r\n }\r\n return IFrameElementContainer;\r\n })(ElementContainer);\r\n\r\n var LIST_OWNERS = [\"OL\", \"UL\", \"MENU\"];\r\n var parseNodeTree = function (context, node, parent, root) {\r\n for (\r\n var childNode = node.firstChild, nextNode = void 0;\r\n childNode;\r\n childNode = nextNode\r\n ) {\r\n nextNode = childNode.nextSibling;\r\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\r\n parent.textNodes.push(\r\n new TextContainer(context, childNode, parent.styles)\r\n );\r\n } else if (isElementNode(childNode)) {\r\n if (isSlotElement(childNode) && childNode.assignedNodes) {\r\n childNode.assignedNodes().forEach(function (childNode) {\r\n return parseNodeTree(context, childNode, parent, root);\r\n });\r\n } else {\r\n var container = createContainer(context, childNode);\r\n if (container.styles.isVisible()) {\r\n if (createsRealStackingContext(childNode, container, root)) {\r\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\r\n } else if (createsStackingContext(container.styles)) {\r\n container.flags |= 2 /* CREATES_STACKING_CONTEXT */;\r\n }\r\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\r\n container.flags |= 8 /* IS_LIST_OWNER */;\r\n }\r\n parent.elements.push(container);\r\n childNode.slot;\r\n if (childNode.shadowRoot) {\r\n parseNodeTree(context, childNode.shadowRoot, container, root);\r\n } else if (\r\n !isTextareaElement(childNode) &&\r\n !isSVGElement(childNode) &&\r\n !isSelectElement(childNode)\r\n ) {\r\n parseNodeTree(context, childNode, container, root);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n };\r\n var createContainer = function (context, element) {\r\n if (isImageElement(element)) {\r\n return new ImageElementContainer(context, element);\r\n }\r\n if (isCanvasElement(element)) {\r\n return new CanvasElementContainer(context, element);\r\n }\r\n if (isSVGElement(element)) {\r\n return new SVGElementContainer(context, element);\r\n }\r\n if (isLIElement(element)) {\r\n return new LIElementContainer(context, element);\r\n }\r\n if (isOLElement(element)) {\r\n return new OLElementContainer(context, element);\r\n }\r\n if (isInputElement(element)) {\r\n return new InputElementContainer(context, element);\r\n }\r\n if (isSelectElement(element)) {\r\n return new SelectElementContainer(context, element);\r\n }\r\n if (isTextareaElement(element)) {\r\n return new TextareaElementContainer(context, element);\r\n }\r\n if (isIFrameElement(element)) {\r\n return new IFrameElementContainer(context, element);\r\n }\r\n return new ElementContainer(context, element);\r\n };\r\n var parseTree = function (context, element) {\r\n var container = createContainer(context, element);\r\n container.flags |= 4 /* CREATES_REAL_STACKING_CONTEXT */;\r\n parseNodeTree(context, element, container, container);\r\n return container;\r\n };\r\n var createsRealStackingContext = function (node, container, root) {\r\n return (\r\n container.styles.isPositionedWithZIndex() ||\r\n container.styles.opacity < 1 ||\r\n container.styles.isTransformed() ||\r\n (isBodyElement(node) && root.styles.isTransparent())\r\n );\r\n };\r\n var createsStackingContext = function (styles) {\r\n return styles.isPositioned() || styles.isFloating();\r\n };\r\n var isTextNode = function (node) {\r\n return node.nodeType === Node.TEXT_NODE;\r\n };\r\n var isElementNode = function (node) {\r\n return node.nodeType === Node.ELEMENT_NODE;\r\n };\r\n var isHTMLElementNode = function (node) {\r\n return (\r\n isElementNode(node) &&\r\n typeof node.style !== \"undefined\" &&\r\n !isSVGElementNode(node)\r\n );\r\n };\r\n var isSVGElementNode = function (element) {\r\n return typeof element.className === \"object\";\r\n };\r\n var isLIElement = function (node) {\r\n return node.tagName === \"LI\";\r\n };\r\n var isOLElement = function (node) {\r\n return node.tagName === \"OL\";\r\n };\r\n var isInputElement = function (node) {\r\n return node.tagName === \"INPUT\";\r\n };\r\n var isHTMLElement = function (node) {\r\n return node.tagName === \"HTML\";\r\n };\r\n var isSVGElement = function (node) {\r\n return node.tagName === \"svg\";\r\n };\r\n var isBodyElement = function (node) {\r\n return node.tagName === \"BODY\";\r\n };\r\n var isCanvasElement = function (node) {\r\n return node.tagName === \"CANVAS\";\r\n };\r\n var isVideoElement = function (node) {\r\n return node.tagName === \"VIDEO\";\r\n };\r\n var isImageElement = function (node) {\r\n return node.tagName === \"IMG\";\r\n };\r\n var isIFrameElement = function (node) {\r\n return node.tagName === \"IFRAME\";\r\n };\r\n var isStyleElement = function (node) {\r\n return node.tagName === \"STYLE\";\r\n };\r\n var isScriptElement = function (node) {\r\n return node.tagName === \"SCRIPT\";\r\n };\r\n var isTextareaElement = function (node) {\r\n return node.tagName === \"TEXTAREA\";\r\n };\r\n var isSelectElement = function (node) {\r\n return node.tagName === \"SELECT\";\r\n };\r\n var isSlotElement = function (node) {\r\n return node.tagName === \"SLOT\";\r\n };\r\n // https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\r\n var isCustomElement = function (node) {\r\n return node.tagName.indexOf(\"-\") > 0;\r\n };\r\n\r\n var CounterState = /** @class */ (function () {\r\n function CounterState() {\r\n this.counters = {};\r\n }\r\n CounterState.prototype.getCounterValue = function (name) {\r\n var counter = this.counters[name];\r\n if (counter && counter.length) {\r\n return counter[counter.length - 1];\r\n }\r\n return 1;\r\n };\r\n CounterState.prototype.getCounterValues = function (name) {\r\n var counter = this.counters[name];\r\n return counter ? counter : [];\r\n };\r\n CounterState.prototype.pop = function (counters) {\r\n var _this = this;\r\n counters.forEach(function (counter) {\r\n return _this.counters[counter].pop();\r\n });\r\n };\r\n CounterState.prototype.parse = function (style) {\r\n var _this = this;\r\n var counterIncrement = style.counterIncrement;\r\n var counterReset = style.counterReset;\r\n var canReset = true;\r\n if (counterIncrement !== null) {\r\n counterIncrement.forEach(function (entry) {\r\n var counter = _this.counters[entry.counter];\r\n if (counter && entry.increment !== 0) {\r\n canReset = false;\r\n if (!counter.length) {\r\n counter.push(1);\r\n }\r\n counter[Math.max(0, counter.length - 1)] += entry.increment;\r\n }\r\n });\r\n }\r\n var counterNames = [];\r\n if (canReset) {\r\n counterReset.forEach(function (entry) {\r\n var counter = _this.counters[entry.counter];\r\n counterNames.push(entry.counter);\r\n if (!counter) {\r\n counter = _this.counters[entry.counter] = [];\r\n }\r\n counter.push(entry.reset);\r\n });\r\n }\r\n return counterNames;\r\n };\r\n return CounterState;\r\n })();\r\n var ROMAN_UPPER = {\r\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\r\n values: [\r\n \"M\",\r\n \"CM\",\r\n \"D\",\r\n \"CD\",\r\n \"C\",\r\n \"XC\",\r\n \"L\",\r\n \"XL\",\r\n \"X\",\r\n \"IX\",\r\n \"V\",\r\n \"IV\",\r\n \"I\",\r\n ],\r\n };\r\n var ARMENIAN = {\r\n integers: [\r\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600,\r\n 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6,\r\n 5, 4, 3, 2, 1,\r\n ],\r\n values: [\r\n \"Ք\",\r\n \"Փ\",\r\n \"Ւ\",\r\n \"Ց\",\r\n \"Ր\",\r\n \"Տ\",\r\n \"Վ\",\r\n \"Ս\",\r\n \"Ռ\",\r\n \"Ջ\",\r\n \"Պ\",\r\n \"Չ\",\r\n \"Ո\",\r\n \"Շ\",\r\n \"Ն\",\r\n \"Յ\",\r\n \"Մ\",\r\n \"Ճ\",\r\n \"Ղ\",\r\n \"Ձ\",\r\n \"Հ\",\r\n \"Կ\",\r\n \"Ծ\",\r\n \"Խ\",\r\n \"Լ\",\r\n \"Ի\",\r\n \"Ժ\",\r\n \"Թ\",\r\n \"Ը\",\r\n \"Է\",\r\n \"Զ\",\r\n \"Ե\",\r\n \"Դ\",\r\n \"Գ\",\r\n \"Բ\",\r\n \"Ա\",\r\n ],\r\n };\r\n var HEBREW = {\r\n integers: [\r\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300,\r\n 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 19, 18, 17, 16, 15, 10, 9, 8, 7,\r\n 6, 5, 4, 3, 2, 1,\r\n ],\r\n values: [\r\n \"י׳\",\r\n \"ט׳\",\r\n \"ח׳\",\r\n \"ז׳\",\r\n \"ו׳\",\r\n \"ה׳\",\r\n \"ד׳\",\r\n \"ג׳\",\r\n \"ב׳\",\r\n \"א׳\",\r\n \"ת\",\r\n \"ש\",\r\n \"ר\",\r\n \"ק\",\r\n \"צ\",\r\n \"פ\",\r\n \"ע\",\r\n \"ס\",\r\n \"נ\",\r\n \"מ\",\r\n \"ל\",\r\n \"כ\",\r\n \"יט\",\r\n \"יח\",\r\n \"יז\",\r\n \"טז\",\r\n \"טו\",\r\n \"י\",\r\n \"ט\",\r\n \"ח\",\r\n \"ז\",\r\n \"ו\",\r\n \"ה\",\r\n \"ד\",\r\n \"ג\",\r\n \"ב\",\r\n \"א\",\r\n ],\r\n };\r\n var GEORGIAN = {\r\n integers: [\r\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800,\r\n 700, 600, 500, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20, 10, 9,\r\n 8, 7, 6, 5, 4, 3, 2, 1,\r\n ],\r\n values: [\r\n \"ჵ\",\r\n \"ჰ\",\r\n \"ჯ\",\r\n \"ჴ\",\r\n \"ხ\",\r\n \"ჭ\",\r\n \"წ\",\r\n \"ძ\",\r\n \"ც\",\r\n \"ჩ\",\r\n \"შ\",\r\n \"ყ\",\r\n \"ღ\",\r\n \"ქ\",\r\n \"ფ\",\r\n \"ჳ\",\r\n \"ტ\",\r\n \"ს\",\r\n \"რ\",\r\n \"ჟ\",\r\n \"პ\",\r\n \"ო\",\r\n \"ჲ\",\r\n \"ნ\",\r\n \"მ\",\r\n \"ლ\",\r\n \"კ\",\r\n \"ი\",\r\n \"თ\",\r\n \"ჱ\",\r\n \"ზ\",\r\n \"ვ\",\r\n \"ე\",\r\n \"დ\",\r\n \"გ\",\r\n \"ბ\",\r\n \"ა\",\r\n ],\r\n };\r\n var createAdditiveCounter = function (\r\n value,\r\n min,\r\n max,\r\n symbols,\r\n fallback,\r\n suffix\r\n ) {\r\n if (value < min || value > max) {\r\n return createCounterText(value, fallback, suffix.length > 0);\r\n }\r\n return (\r\n symbols.integers.reduce(function (string, integer, index) {\r\n while (value >= integer) {\r\n value -= integer;\r\n string += symbols.values[index];\r\n }\r\n return string;\r\n }, \"\") + suffix\r\n );\r\n };\r\n var createCounterStyleWithSymbolResolver = function (\r\n value,\r\n codePointRangeLength,\r\n isNumeric,\r\n resolver\r\n ) {\r\n var string = \"\";\r\n do {\r\n if (!isNumeric) {\r\n value--;\r\n }\r\n string = resolver(value) + string;\r\n value /= codePointRangeLength;\r\n } while (value * codePointRangeLength >= codePointRangeLength);\r\n return string;\r\n };\r\n var createCounterStyleFromRange = function (\r\n value,\r\n codePointRangeStart,\r\n codePointRangeEnd,\r\n isNumeric,\r\n suffix\r\n ) {\r\n var codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\r\n return (\r\n (value < 0 ? \"-\" : \"\") +\r\n (createCounterStyleWithSymbolResolver(\r\n Math.abs(value),\r\n codePointRangeLength,\r\n isNumeric,\r\n function (codePoint) {\r\n return fromCodePoint$1(\r\n Math.floor(codePoint % codePointRangeLength) + codePointRangeStart\r\n );\r\n }\r\n ) +\r\n suffix)\r\n );\r\n };\r\n var createCounterStyleFromSymbols = function (value, symbols, suffix) {\r\n if (suffix === void 0) {\r\n suffix = \". \";\r\n }\r\n var codePointRangeLength = symbols.length;\r\n return (\r\n createCounterStyleWithSymbolResolver(\r\n Math.abs(value),\r\n codePointRangeLength,\r\n false,\r\n function (codePoint) {\r\n return symbols[Math.floor(codePoint % codePointRangeLength)];\r\n }\r\n ) + suffix\r\n );\r\n };\r\n var CJK_ZEROS = 1 << 0;\r\n var CJK_TEN_COEFFICIENTS = 1 << 1;\r\n var CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\r\n var CJK_HUNDRED_COEFFICIENTS = 1 << 3;\r\n var createCJKCounter = function (\r\n value,\r\n numbers,\r\n multipliers,\r\n negativeSign,\r\n suffix,\r\n flags\r\n ) {\r\n if (value < -9999 || value > 9999) {\r\n return createCounterText(value, 4 /* CJK_DECIMAL */, suffix.length > 0);\r\n }\r\n var tmp = Math.abs(value);\r\n var string = suffix;\r\n if (tmp === 0) {\r\n return numbers[0] + string;\r\n }\r\n for (var digit = 0; tmp > 0 && digit <= 4; digit++) {\r\n var coefficient = tmp % 10;\r\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== \"\") {\r\n string = numbers[coefficient] + string;\r\n } else if (\r\n coefficient > 1 ||\r\n (coefficient === 1 && digit === 0) ||\r\n (coefficient === 1 &&\r\n digit === 1 &&\r\n contains(flags, CJK_TEN_COEFFICIENTS)) ||\r\n (coefficient === 1 &&\r\n digit === 1 &&\r\n contains(flags, CJK_TEN_HIGH_COEFFICIENTS) &&\r\n value > 100) ||\r\n (coefficient === 1 &&\r\n digit > 1 &&\r\n contains(flags, CJK_HUNDRED_COEFFICIENTS))\r\n ) {\r\n string =\r\n numbers[coefficient] +\r\n (digit > 0 ? multipliers[digit - 1] : \"\") +\r\n string;\r\n } else if (coefficient === 1 && digit > 0) {\r\n string = multipliers[digit - 1] + string;\r\n }\r\n tmp = Math.floor(tmp / 10);\r\n }\r\n return (value < 0 ? negativeSign : \"\") + string;\r\n };\r\n var CHINESE_INFORMAL_MULTIPLIERS = \"十百千萬\";\r\n var CHINESE_FORMAL_MULTIPLIERS = \"拾佰仟萬\";\r\n var JAPANESE_NEGATIVE = \"マイナス\";\r\n var KOREAN_NEGATIVE = \"마이너스\";\r\n var createCounterText = function (value, type, appendSuffix) {\r\n var defaultSuffix = appendSuffix ? \". \" : \"\";\r\n var cjkSuffix = appendSuffix ? \"、\" : \"\";\r\n var koreanSuffix = appendSuffix ? \", \" : \"\";\r\n var spaceSuffix = appendSuffix ? \" \" : \"\";\r\n switch (type) {\r\n case 0 /* DISC */:\r\n return \"•\" + spaceSuffix;\r\n case 1 /* CIRCLE */:\r\n return \"◦\" + spaceSuffix;\r\n case 2 /* SQUARE */:\r\n return \"◾\" + spaceSuffix;\r\n case 5 /* DECIMAL_LEADING_ZERO */:\r\n var string = createCounterStyleFromRange(\r\n value,\r\n 48,\r\n 57,\r\n true,\r\n defaultSuffix\r\n );\r\n return string.length < 4 ? \"0\" + string : string;\r\n case 4 /* CJK_DECIMAL */:\r\n return createCounterStyleFromSymbols(\r\n value,\r\n \"〇一二三四五六七八九\",\r\n cjkSuffix\r\n );\r\n case 6 /* LOWER_ROMAN */:\r\n return createAdditiveCounter(\r\n value,\r\n 1,\r\n 3999,\r\n ROMAN_UPPER,\r\n 3 /* DECIMAL */,\r\n defaultSuffix\r\n ).toLowerCase();\r\n case 7 /* UPPER_ROMAN */:\r\n return createAdditiveCounter(\r\n value,\r\n 1,\r\n 3999,\r\n ROMAN_UPPER,\r\n 3 /* DECIMAL */,\r\n defaultSuffix\r\n );\r\n case 8 /* LOWER_GREEK */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 945,\r\n 969,\r\n false,\r\n defaultSuffix\r\n );\r\n case 9 /* LOWER_ALPHA */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 97,\r\n 122,\r\n false,\r\n defaultSuffix\r\n );\r\n case 10 /* UPPER_ALPHA */:\r\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\r\n case 11 /* ARABIC_INDIC */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 1632,\r\n 1641,\r\n true,\r\n defaultSuffix\r\n );\r\n case 12 /* ARMENIAN */:\r\n case 49 /* UPPER_ARMENIAN */:\r\n return createAdditiveCounter(\r\n value,\r\n 1,\r\n 9999,\r\n ARMENIAN,\r\n 3 /* DECIMAL */,\r\n defaultSuffix\r\n );\r\n case 35 /* LOWER_ARMENIAN */:\r\n return createAdditiveCounter(\r\n value,\r\n 1,\r\n 9999,\r\n ARMENIAN,\r\n 3 /* DECIMAL */,\r\n defaultSuffix\r\n ).toLowerCase();\r\n case 13 /* BENGALI */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 2534,\r\n 2543,\r\n true,\r\n defaultSuffix\r\n );\r\n case 14 /* CAMBODIAN */:\r\n case 30 /* KHMER */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 6112,\r\n 6121,\r\n true,\r\n defaultSuffix\r\n );\r\n case 15 /* CJK_EARTHLY_BRANCH */:\r\n return createCounterStyleFromSymbols(\r\n value,\r\n \"子丑寅卯辰巳午未申酉戌亥\",\r\n cjkSuffix\r\n );\r\n case 16 /* CJK_HEAVENLY_STEM */:\r\n return createCounterStyleFromSymbols(\r\n value,\r\n \"甲乙丙丁戊己庚辛壬癸\",\r\n cjkSuffix\r\n );\r\n case 17 /* CJK_IDEOGRAPHIC */:\r\n case 48 /* TRAD_CHINESE_INFORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"零一二三四五六七八九\",\r\n CHINESE_INFORMAL_MULTIPLIERS,\r\n \"負\",\r\n cjkSuffix,\r\n CJK_TEN_COEFFICIENTS |\r\n CJK_TEN_HIGH_COEFFICIENTS |\r\n CJK_HUNDRED_COEFFICIENTS\r\n );\r\n case 47 /* TRAD_CHINESE_FORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"零壹貳參肆伍陸柒捌玖\",\r\n CHINESE_FORMAL_MULTIPLIERS,\r\n \"負\",\r\n cjkSuffix,\r\n CJK_ZEROS |\r\n CJK_TEN_COEFFICIENTS |\r\n CJK_TEN_HIGH_COEFFICIENTS |\r\n CJK_HUNDRED_COEFFICIENTS\r\n );\r\n case 42 /* SIMP_CHINESE_INFORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"零一二三四五六七八九\",\r\n CHINESE_INFORMAL_MULTIPLIERS,\r\n \"负\",\r\n cjkSuffix,\r\n CJK_TEN_COEFFICIENTS |\r\n CJK_TEN_HIGH_COEFFICIENTS |\r\n CJK_HUNDRED_COEFFICIENTS\r\n );\r\n case 41 /* SIMP_CHINESE_FORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"零壹贰叁肆伍陆柒捌玖\",\r\n CHINESE_FORMAL_MULTIPLIERS,\r\n \"负\",\r\n cjkSuffix,\r\n CJK_ZEROS |\r\n CJK_TEN_COEFFICIENTS |\r\n CJK_TEN_HIGH_COEFFICIENTS |\r\n CJK_HUNDRED_COEFFICIENTS\r\n );\r\n case 26 /* JAPANESE_INFORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"〇一二三四五六七八九\",\r\n \"十百千万\",\r\n JAPANESE_NEGATIVE,\r\n cjkSuffix,\r\n 0\r\n );\r\n case 25 /* JAPANESE_FORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"零壱弐参四伍六七八九\",\r\n \"拾百千万\",\r\n JAPANESE_NEGATIVE,\r\n cjkSuffix,\r\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\r\n );\r\n case 31 /* KOREAN_HANGUL_FORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"영일이삼사오육칠팔구\",\r\n \"십백천만\",\r\n KOREAN_NEGATIVE,\r\n koreanSuffix,\r\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\r\n );\r\n case 33 /* KOREAN_HANJA_INFORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"零一二三四五六七八九\",\r\n \"十百千萬\",\r\n KOREAN_NEGATIVE,\r\n koreanSuffix,\r\n 0\r\n );\r\n case 32 /* KOREAN_HANJA_FORMAL */:\r\n return createCJKCounter(\r\n value,\r\n \"零壹貳參四五六七八九\",\r\n \"拾百千\",\r\n KOREAN_NEGATIVE,\r\n koreanSuffix,\r\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\r\n );\r\n case 18 /* DEVANAGARI */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0x966,\r\n 0x96f,\r\n true,\r\n defaultSuffix\r\n );\r\n case 20 /* GEORGIAN */:\r\n return createAdditiveCounter(\r\n value,\r\n 1,\r\n 19999,\r\n GEORGIAN,\r\n 3 /* DECIMAL */,\r\n defaultSuffix\r\n );\r\n case 21 /* GUJARATI */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xae6,\r\n 0xaef,\r\n true,\r\n defaultSuffix\r\n );\r\n case 22 /* GURMUKHI */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xa66,\r\n 0xa6f,\r\n true,\r\n defaultSuffix\r\n );\r\n case 22 /* HEBREW */:\r\n return createAdditiveCounter(\r\n value,\r\n 1,\r\n 10999,\r\n HEBREW,\r\n 3 /* DECIMAL */,\r\n defaultSuffix\r\n );\r\n case 23 /* HIRAGANA */:\r\n return createCounterStyleFromSymbols(\r\n value,\r\n \"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん\"\r\n );\r\n case 24 /* HIRAGANA_IROHA */:\r\n return createCounterStyleFromSymbols(\r\n value,\r\n \"いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす\"\r\n );\r\n case 27 /* KANNADA */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xce6,\r\n 0xcef,\r\n true,\r\n defaultSuffix\r\n );\r\n case 28 /* KATAKANA */:\r\n return createCounterStyleFromSymbols(\r\n value,\r\n \"アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン\",\r\n cjkSuffix\r\n );\r\n case 29 /* KATAKANA_IROHA */:\r\n return createCounterStyleFromSymbols(\r\n value,\r\n \"イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス\",\r\n cjkSuffix\r\n );\r\n case 34 /* LAO */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xed0,\r\n 0xed9,\r\n true,\r\n defaultSuffix\r\n );\r\n case 37 /* MONGOLIAN */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0x1810,\r\n 0x1819,\r\n true,\r\n defaultSuffix\r\n );\r\n case 38 /* MYANMAR */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0x1040,\r\n 0x1049,\r\n true,\r\n defaultSuffix\r\n );\r\n case 39 /* ORIYA */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xb66,\r\n 0xb6f,\r\n true,\r\n defaultSuffix\r\n );\r\n case 40 /* PERSIAN */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0x6f0,\r\n 0x6f9,\r\n true,\r\n defaultSuffix\r\n );\r\n case 43 /* TAMIL */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xbe6,\r\n 0xbef,\r\n true,\r\n defaultSuffix\r\n );\r\n case 44 /* TELUGU */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xc66,\r\n 0xc6f,\r\n true,\r\n defaultSuffix\r\n );\r\n case 45 /* THAI */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xe50,\r\n 0xe59,\r\n true,\r\n defaultSuffix\r\n );\r\n case 46 /* TIBETAN */:\r\n return createCounterStyleFromRange(\r\n value,\r\n 0xf20,\r\n 0xf29,\r\n true,\r\n defaultSuffix\r\n );\r\n case 3 /* DECIMAL */:\r\n default:\r\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\r\n }\r\n };\r\n\r\n /// \r\n var htmlEscape = function (str) {\r\n if (!str) return \"\";\r\n var escaped = \"\";\r\n str.split(\"\").forEach(function (char) {\r\n if (char == \"&\") {\r\n char = \"&\";\r\n } else if (char == \"'\") {\r\n char = \"'\";\r\n } else if (char == '\"') {\r\n char = \""\";\r\n } else if (char == \"<\") {\r\n char = \"<\";\r\n } else if (char == \">\") {\r\n char = \">\";\r\n }\r\n escaped += char;\r\n });\r\n return escaped;\r\n };\r\n var createDocType = function (doctype) {\r\n if (!doctype) return \"\";\r\n var name = htmlEscape(doctype.name);\r\n var internalSubset = htmlEscape(doctype.internalSubset);\r\n var publicId = doctype.publicId\r\n ? '\"' + htmlEscape(doctype.publicId) + '\"'\r\n : \"\";\r\n var systemId = doctype.systemId\r\n ? '\"' + htmlEscape(doctype.systemId) + '\"'\r\n : \"\";\r\n return (\r\n \"\"\r\n );\r\n };\r\n var doctypePolicy;\r\n if (window.trustedTypes) {\r\n doctypePolicy = window.trustedTypes.createPolicy(\"html2canvas\", {\r\n // @ts-ignore\r\n createHTML: function (ignored, doctype) {\r\n return createDocType(doctype);\r\n },\r\n });\r\n }\r\n var serializeDoctype = function (doctype) {\r\n if (doctypePolicy !== undefined) {\r\n return doctypePolicy.createHTML(\"\", doctype);\r\n } else {\r\n return createDocType(doctype);\r\n }\r\n };\r\n\r\n var IGNORE_ATTRIBUTE = \"data-html2canvas-ignore\";\r\n var DocumentCloner = /** @class */ (function () {\r\n function DocumentCloner(context, element, options) {\r\n this.context = context;\r\n this.options = options;\r\n this.scrolledElements = [];\r\n this.referenceElement = element;\r\n this.counters = new CounterState();\r\n this.quoteDepth = 0;\r\n if (!element.ownerDocument) {\r\n throw new Error(\"Cloned element does not have an owner document\");\r\n }\r\n this.documentElement = this.cloneNode(\r\n element.ownerDocument.documentElement,\r\n false\r\n );\r\n }\r\n DocumentCloner.prototype.toIFrame = function (ownerDocument, windowSize) {\r\n var _this = this;\r\n var iframe = createIFrameContainer(ownerDocument, windowSize);\r\n if (!iframe.contentWindow) {\r\n return Promise.reject(\"Unable to find iframe window\");\r\n }\r\n var scrollX = ownerDocument.defaultView.pageXOffset;\r\n var scrollY = ownerDocument.defaultView.pageYOffset;\r\n var cloneWindow = iframe.contentWindow;\r\n var documentClone = cloneWindow.document;\r\n /* Chrome doesn't detect relative background-images assigned in inline \r\n\t\r\n\tcommentsOffice\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n`,\r\n\t\t\t\t\t\ttag: Tags.Div,\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: IDs.ThanksPanelVerticalContainer,\r\n\t\t\t\t\t\ttag: Tags.Div,\r\n\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tclasses: [\r\n\t\t\t\t\t\t\t\t\tClasses.FontTitle,\r\n\t\t\t\t\t\t\t\t\tClasses.TextAlignLeft,\r\n\t\t\t\t\t\t\t\t\tClasses.FormQuestionMiddleText,\r\n\t\t\t\t\t\t\t\t\tClasses.ThanksPanelTitle,\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tinnerText: UIStrings.getUIStrings().ThanksPanel?.Title,\r\n\t\t\t\t\t\t\t\ttag: Tags.Div,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tclasses: [\r\n\t\t\t\t\t\t\t\t\tClasses.FontSubText,\r\n\t\t\t\t\t\t\t\t\tClasses.TextAlignLeft,\r\n\t\t\t\t\t\t\t\t\tClasses.ThanksPanelMessage,\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t// changed from innerText to innerHTML for rendering clickable Links\r\n\t\t\t\t\t\t\t\tinnerHTML: GetThankYouPageText(),\r\n\t\t\t\t\t\t\t\ttag: Tags.Div,\r\n\t\t\t\t\t\t\t\tid: IDs.ThanksPanelParagraph,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\tclasses: [\r\n\t\t\t\t\t\t\t\t\tClasses.SubmitButton,\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\tid: IDs.ThanksPanelCloseButton,\r\n\t\t\t\t\t\t\t\tinnerText: UIStrings.getUIStrings().ThanksPanel?.Close,\r\n\t\t\t\t\t\t\t\tariaLabel: UIStrings.getUIStrings().ThanksPanel?.Close,\r\n\t\t\t\t\t\t\t\ttag: Tags.Button,\r\n\t\t\t\t\t\t\t\trole: Roles.Button,\r\n\t\t\t\t\t\t\t\tattributes: [\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: \"aria-label\",\r\n\t\t\t\t\t\t\t\t\t\tvalue: UIStrings.getUIStrings().ThanksPanel?.Title + \" \" +\r\n\t\t\t\t\t\t\t\t\t\t\tUIStrings.getUIStrings().ThanksPanel?.AppreciateText + \" \" +\r\n\t\t\t\t\t\t\t\t\t\t\tUIStrings.getUIStrings().ThanksPanel?.Close,\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\tname: \"type\",\r\n\t\t\t\t\t\t\t\t\t\tvalue: \"button\",\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t],\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\t// added to create margins after Close button\r\n\t\t\t\t\t\tinnerHTML: \"
\",\r\n\t\t\t\t\t\ttag: Tags.Div,\r\n\t\t\t\t\t},\r\n\t\t\t\t],\r\n\t\t\t},\r\n\t\t],\r\n\t\tclasses: [Classes.Hidden],\r\n\t\tid: containerId,\r\n\t};\r\n\treturn formSchema;\r\n}\r\n\r\n/**\r\n * The id for the container. This is the id of the top-most element and should\r\n * be unique to each form\r\n */\r\nexport let containerId: string = IDs.ThanksPanelContainer;\r\n\r\n/**\r\n * This method executes form\r\n * specific logic when the pane is opened\r\n * @param panelType panel type\r\n */\r\nexport function onSelect(panelType: PanelType): void {\r\n\tif (panelType !== PanelType.Thanks) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tdocument.getElementById(IDs.ThanksPanelCloseButton).focus();\r\n}\r\n\r\n/**\r\n * Form template type\r\n */\r\nexport let type: PanelTemplateType = PanelTemplateType.Thanks;\r\n","import { FeedbackType } from \"../../../Constants\";\r\nimport { IUIAsJson } from \"../../Renderer\";\r\nimport { IDs } from \"../../UiConstants\";\r\nimport { FormTemplateType } from \"./FormTemplateType\";\r\n\r\nexport function generate(): IUIAsJson {\r\n\treturn undefined;\r\n}\r\n\r\nexport let containerId: string = IDs.FeedbackPortalIdeaContainer;\r\n\r\nexport function onSelect(feedbackType: FeedbackType): void {\r\n\t /* tslint:disable : no-empty */\r\n}\r\n\r\nexport let type: FormTemplateType = FormTemplateType.FeedbackPortalIdea;\r\n","/**\r\n * BellyBand.ts\r\n *\r\n * Module for the BellyBand UI\r\n */\r\n\r\nimport { FeedbackType, PanelType } from \"./../../Constants\";\r\nimport { Classes, IDs } from \"./../UiConstants\";\r\nimport * as Events from \"./Events\";\r\nimport * as Layout from \"./Layout\";\r\nimport * as Renderer from \"./../Renderer\";\r\nimport * as Utils from \"./../Utils\";\r\nimport * as WindowProperties from \"./../../WindowProperties\";\r\nimport { IFormTemplate } from \"./FormTemplates/IFormTemplate\";\r\nimport * as BasicFormTemplate from \"./FormTemplates/BasicFormTemplate\";\r\nimport * as ThanksPanelTemplate from \"./PanelTemplates/ThanksPanelTemplate\";\r\nimport * as FeedbackPortalIdeaTemplate from \"./FormTemplates/FeedbackPortalIdeaTemplate\";\r\nimport * as Configuration from \"./../../Configuration/Configuration\";\r\nimport { IPanelTemplate } from \"./PanelTemplates/IPanelTemplate\";\r\n\r\n/**\r\n * UI initialization for multi, including creating all feedback related HTML elements and setting\r\n * initial visibility of elements\r\n */\r\nexport function createMulti(onClose: () => void) {\r\n\t// Create the panelType -> IPanelTemplate mapping\r\n\tlet panelTemplates: { [key: number]: IPanelTemplate } = {};\r\n\tif (Configuration.get().getInAppFeedbackInitOptions().isShowThanks) {\r\n\t\tpanelTemplates[PanelType.Thanks] = ThanksPanelTemplate;\r\n\t}\r\n\r\n\t// Create the feedbackType -> IFormTemplate mapping\r\n\tlet formTemplates: {[key: number]: IFormTemplate} = {};\r\n\tlet transitionEnabled: boolean = Configuration.get().getInAppFeedbackInitOptions().transitionEnabled;\r\n\tformTemplates[FeedbackType.Smile] = BasicFormTemplate;\r\n\tformTemplates[FeedbackType.Frown] = BasicFormTemplate;\r\n\r\n\tif (Configuration.get().getInAppFeedbackInitOptions().feedbackForumUrl !== undefined) {\r\n\t\tformTemplates[FeedbackType.IdeaRedirect] = FeedbackPortalIdeaTemplate;\r\n\t} else {\r\n\t\tformTemplates[FeedbackType.Idea] = BasicFormTemplate;\r\n\t}\r\n\r\n\tif (Configuration.get().getInAppFeedbackInitOptions().bugForm) {\r\n\t\tformTemplates[FeedbackType.Bug] = BasicFormTemplate;\r\n\t}\r\n\r\n\tcreate(Renderer.elementFromJson(Layout.generateMulti(formTemplates, panelTemplates)));\r\n\r\n\tlet useNarrowScreenLayout = WindowProperties.isNarrow();\r\n\r\n\tEvents.registerMulti(\r\n\t\tformTemplates,\r\n\t\tpanelTemplates,\r\n\t\tuseNarrowScreenLayout,\r\n\t\ttransitionEnabled,\r\n\t\tfunction (submitted: boolean) {\r\n\t\t\tUtils.setElementVisibility(IDs.OverlayBackground, false);\r\n\t\t\tUtils.deleteElementById(IDs.OverlayBackground);\r\n\t\t\tConfiguration.get().getInAppFeedbackInitOptions().onDismiss(submitted);\r\n\t\t\tonClose();\r\n\t\t}\r\n\t);\r\n\r\n\t// If the screen size is narrow, add the Narrow class to the outermost div so that \r\n\t// the CSS used corresponds to the small screen UI\r\n\tif (useNarrowScreenLayout) {\r\n\t\tUtils.addClassById(IDs.OverlayBackground, Classes.NarrowLayout);\r\n\t}\r\n}\r\n\r\n/**\r\n * UI initialization for single, including creating all feedback related HTML elements and setting\r\n * initial visibility of elements\r\n * @return {void}\r\n */\r\nexport function createSingle(onClose: () => void, feedbackType: FeedbackType) {\r\n\t// Create the panelType -> IPanelTemplate mapping\r\n\tlet panelTemplates: { [key: number]: IPanelTemplate } = {};\r\n\tif (Configuration.get().getInAppFeedbackInitOptions().isShowThanks) {\r\n\t\tpanelTemplates[PanelType.Thanks] = ThanksPanelTemplate;\r\n\t}\r\n\r\n\tcreate(Renderer.elementFromJson(Layout.generateSingle(panelTemplates)));\r\n\r\n\tEvents.registerSingle(\r\n\t\tfeedbackType,\r\n\t\tpanelTemplates,\r\n\t\tfunction (submitted: boolean) {\r\n\t\t\tUtils.setElementVisibility(IDs.OverlayBackground, false);\r\n\t\t\tUtils.deleteElementById(IDs.OverlayBackground);\r\n\t\t\tConfiguration.get().getInAppFeedbackInitOptions().onDismiss(submitted);\r\n\t\t\tonClose();\r\n\t\t}\r\n\t);\r\n\r\n\tUtils.addClassById(IDs.OverlayBackground, Classes.SingleLayout);\r\n\tUtils.ScreenshotPreviewByCheckbox(IDs.SingleFormScreenshotCheckbox, IDs.SingleFormScreenshotPreview);\r\n}\r\n\r\n/**\r\n * Attach the UI element to the DOM.\r\n * @param userInterface the UI element\r\n */\r\nfunction create(userInterface: Element) {\r\n\tdocument.body.insertBefore(userInterface, document.body.firstChild);\r\n\r\n\tUtils.setElementVisibility(IDs.OverlayBackground, true);\r\n\r\n\tif (Utils.getInternetExplorerVersion() > 9 || Utils.getInternetExplorerVersion() === -1) {\r\n\t\t// Show the main feedback UI after a certain time to wait for the CSS keyframes animation to finish if \r\n\t\t// the browser is IE10 and above or non-IE\r\n\t\tsetTimeout(onMainContainerRender, 900);\r\n\t} else {\r\n\t\tonMainContainerRender();\r\n\t}\r\n}\r\n\r\n/**\r\n * Code to run when the main container animation has completed.\r\n */\r\nfunction onMainContainerRender(): void {\r\n\t// Show the MainContentHolder inside the MainContainer\r\n\tUtils.setElementVisibility(IDs.MainContentHolder, true);\r\n\tif (document.getElementById(IDs.OverallSmileAnchor)) {\r\n\t\t// Multi feedback\r\n\t\tdocument.getElementById(IDs.OverallSmileAnchor).focus();\r\n\r\n\t\t// If screenshot checkbox is selected, display the preview\r\n\t\tUtils.ScreenshotPreviewByCheckbox(IDs.BasicFormScreenshotCheckbox, IDs.BasicFormScreenshotPreview);\r\n\t} else if (document.getElementById(IDs.SingleFormComment)) {\r\n\t\t// Single feedback\r\n\t\tdocument.getElementById(IDs.SingleFormComment).focus();\r\n\r\n\t\t// If screenshot checkbox is selected, display the preview\r\n\t\tUtils.ScreenshotPreviewByCheckbox(IDs.SingleFormScreenshotCheckbox, IDs.SingleFormScreenshotPreview);\r\n\t}\r\n}\r\n\r\n/**\r\n * UI dismiss. Delete all feedback related HTML elements\r\n * @return {void}\r\n */\r\nexport function dismiss(): void {\r\n\treturn;\r\n}\r\n","/**\r\n * WindowProperties.ts\r\n *\r\n * Module to track window properties.\r\n */\r\n\r\n/**\r\n * Is the window narrow?\r\n * @returns True if it is, false otherwise\r\n */\r\nexport function isNarrow(): boolean {\r\n\tlet narrowScreenBoundary: number = 800;\r\n\r\n\tif (window.innerWidth) {\r\n\t\treturn window.innerWidth < narrowScreenBoundary;\r\n\t}\r\n\r\n\t// if we can't find the width; go with narrow.\r\n\treturn true;\r\n}\r\n","/**\r\n * App_inAppFeedback.ts\r\n *\r\n * The entry point for inAppFeedback.\r\n */\r\n\r\nimport * as CommonApp from \"./CommonApp\";\r\nimport * as CommonUI from \"./CommonUI\";\r\nimport * as Configuration from \"./Configuration/Configuration\";\r\nimport * as Logging from \"./Logging/Logging\";\r\nimport * as UI from \"./UI/BellyBand/BellyBand\";\r\nimport * as Window from \"./Window/Window\";\r\nimport { ILaunchOptionsInAppFeedback } from \"./Configuration/ILaunchOptions\";\r\nimport { OCPSValues, FeedbackStatus } from \"./Constants\";\r\n\r\n/**\r\n * Has inAppFeedback been initialized\r\n */\r\nlet initialized: boolean = false;\r\n\r\n/**\r\n * Initialize\r\n * @returns A promise which will be rejected if the call fails.\r\n */\r\nexport function initialize(): Promise {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tif (!initialized) {\r\n\t\t\ttry {\r\n\t\t\t\tCommonApp.initialize();\r\n\t\t\t} catch (err) {\r\n\t\t\t\treject(\"CommonApp initialization failed: {\" + err + \"}\");\r\n\t\t\t}\r\n\r\n\t\t\tCommonUI.initialize()\r\n\t\t\t.then(\r\n\t\t\t\tfunction onInitializeFulfilled() {\r\n\t\t\t\t\tConfiguration.get().setInAppFeedbackInitOptions(Window.get().OfficeBrowserFeedback.initOptions);\r\n\t\t\t\t\tinitialized = true;\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t\t.catch(\r\n\t\t\t\tfunction onInitializeRejected(err) { reject(\"Initialization failed: {\" + err + \"}\"); }\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tresolve();\r\n\t\t}\r\n\t});\r\n}\r\n\r\n/**\r\n * Has the control been opened. Prevents more than one dialog being generated.\r\n */\r\nlet opened: boolean = false;\r\n\r\n/**\r\n * Handler to launch the multi feedback dialog\r\n * @param launchOptions optional feedback properties\r\n * @returns A promise which will be rejected if the call fails.\r\n */\r\nexport function multiFeedback(launchOptions?: ILaunchOptionsInAppFeedback): Promise {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tif (opened) {\r\n\t\t\treject(\"Control already open\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tinitialize()\r\n\t\t.then(\r\n\t\t\tfunction onInitializeFulfilled() {\r\n\t\t\t\tConfiguration.get().setInAppFeedbackLaunchOptions(launchOptions);\r\n\t\t\t\tUI.createMulti(function () { opened = false; });\r\n\t\t\t\tLogging.getLogger().logEvent(Logging.EventIds.InApp.UI.Picker.Shown.VALUE,\r\n\t\t\t\t\tLogging.LogLevel.Critical,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tIsBugEnabled: Configuration.get().getInAppFeedbackInitOptions().bugForm,\r\n\t\t\t\t\t});\r\n\t\t\t\topened = true;\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t)\r\n\t\t.catch(\r\n\t\t\tfunction onInitializeRejected(err) { reject(\"Initialization failed: {\" + err + \"}\"); }\r\n\t\t);\r\n\t});\r\n}\r\n\r\n/**\r\n * Handler to launch the single feedback dialog\r\n * @param feedbackType the feedback type\r\n * @param launchOptions optional feedback properties\r\n * @returns A promise which will be rejected if the call fails.\r\n */\r\nexport function singleFeedback(feedbackType: string, launchOptions?: ILaunchOptionsInAppFeedback): Promise {\r\n\treturn new Promise((resolve, reject) => {\r\n\t\tif (opened) {\r\n\t\t\treject(\"Control already open\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet feedbackTypeEnum = Configuration.validateFeedbackType(feedbackType);\r\n\r\n\t\tinitialize()\r\n\t\t.then(\r\n\t\t\tfunction onInitializeFulfilled() {\r\n\t\t\t\tConfiguration.get().setInAppFeedbackLaunchOptions(launchOptions);\r\n\t\t\t\tUI.createSingle(function () { opened = false; }, feedbackTypeEnum);\r\n\t\t\t\tLogging.getLogger().logEvent(Logging.EventIds.InApp.UI.Form.Shown.VALUE,\r\n\t\t\t\t\tLogging.LogLevel.Critical,\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tFeedbackType: feedbackTypeEnum,\r\n\t\t\t\t\t});\r\n\t\t\t\topened = true;\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t)\r\n\t\t.catch(\r\n\t\t\tfunction onInitializeRejected(err) { reject(\"Initialization failed: {\" + err + \"}\"); }\r\n\t\t);\r\n\t});\r\n}\r\n\r\nexport function getFeedbackStatus(): FeedbackStatus {\r\n\r\n\tif (Window.get().OfficeBrowserFeedback.initOptions.isCommercialHost &&\r\n\tWindow.get().OfficeBrowserFeedback.initOptions.sendFeedbackPolicyValue === OCPSValues.Disabled) {\r\n\t\treturn FeedbackStatus.DisabledByAdmin;\r\n\t}\r\n\r\n\tif (!Configuration.get().determineAADCPolicy(Window.get().OfficeBrowserFeedback.initOptions.authenticationType,\r\n\tWindow.get().OfficeBrowserFeedback.initOptions.ageGroup)) {\r\n\t\treturn FeedbackStatus.DisabledByAgeGroup;\r\n\t}\r\n\r\n\treturn FeedbackStatus.Enabled;\r\n}\r\n\r\n/**\r\n * Reset the inappfeedback module. Used in unit tests.\r\n */\r\nexport function reset() {\r\n\tCommonApp.reset();\r\n\tCommonUI.reset();\r\n\tinitialized = false;\r\n\topened = false;\r\n}\r\n\r\n/* Make the FeedbackDialog methods available globally */\r\nWindow.setMultiFeedback(multiFeedback);\r\nWindow.setSingleFeedback(singleFeedback);\r\nWindow.setFeedbackStatus(getFeedbackStatus);\r\n"],"sourceRoot":""}