{ "version": 3, "sources": [ "Areas/LNRS/js/ts.bundle.js", "Areas/ScoreCCF/js/Vendor/loglevel.min.js", "Areas/ScoreCCF/js/Vendor/jquery-3.5.1.js", "Areas/ScoreCCF/js/jquery.noconflict.js", "Areas/ScoreCCF/js/Vendor/jquery.touchSwipe.js", "Areas/ScoreCCF/js/Vendor/underscore.js", "Areas/ScoreCCF/js/Events/EventManager.js", "Areas/ScoreCCF/js/Events/ModulesLoadedEvent.js", "Areas/ScoreCCF/js/extensions.js", "Areas/ScoreCCF/js/jquery.extensions.js", "Areas/ScoreCCF/js/ModuleLoader.js", "Areas/ScoreCCF/js/Vendor/jquery.migrate.js", "Areas/ScoreCCF/js/polyfills/promise.min.js", "Areas/ScoreCCF/js/polyfills/object-assign.min.js", "Areas/ScoreCCF/js/XPerience/XPElementBase.js", "Areas/ScoreCCF/js/XPerience/XPActionBase.js", "Areas/ScoreCCF/js/XPerience/Actions/CompleteGoalAction.js", "Areas/ScoreCCF/js/XPerience/Actions/ContactVisitWithTheProfileCard.js", "Areas/ScoreCCF/js/Utils/global.js", "Areas/ScoreCCF/js/XPerience/Actions/ShowAlertMessage.js", "Areas/ScoreCCF/js/XPerience/Actions/TrackClientEventAction.js", "Areas/ScoreCCF/js/XPerience/XPConditionBase.js", "Areas/ScoreCCF/js/XPerience/Conditions/ClickedCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/GetsFocusCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/LosesFocusCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/OncePerPageViewCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/SlideChangedCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/SlideChangingCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/VideoHasPlayedExactNSecondsCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/VideoHasPlayedNSecondsOrMoreCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/VideoIsFinishedCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/VideoIsPausedCondition.js", "Areas/ScoreCCF/js/XPerience/Conditions/VideoStartsToPlayCondition.js", "Areas/ScoreCCF/js/XPerience/Contracts/UXModuleLike.js", "Areas/ScoreCCF/js/XPerience/Contracts/XPContracts.js", "Areas/ScoreCCF/js/XPerience/Elements.js", "Areas/ScoreCCF/js/XPerience/Enums/XPEnums.js", "Areas/ScoreCCF/js/Xperience/Enums/XPEnums.js", "Areas/ScoreCCF/js/XPerience/Utils/XPConditionJunction.js", "Areas/ScoreCCF/js/XPerience/XPActionLoader.js", "Areas/ScoreCCF/js/XPerience/XPConditionLoader.js", "Areas/ScoreCCF/js/XPerience/XPRuleLoader.js", "Areas/ScoreCCF/js/Vendor/require.async.js", "Areas/ScoreCCF/js/Vendor/require.depend.js", "Areas/ScoreCCF/js/Vendor/require.propertyParser.js", "Areas/ScoreCCF/js/Vendor/require.font.js", "Areas/ScoreCCF/js/Vendor/require.goog.js", "Areas/ScoreCCF/js/Vendor/require.image.js", "Areas/ScoreCCF/js/Vendor/require.text.js", "Areas/ScoreCCF/js/Vendor/require.json.js", "Areas/ScoreCCF/js/Vendor/Markdown.Converter.js", "Areas/ScoreCCF/js/Vendor/require.mdown.js", "Areas/ScoreCCF/js/Vendor/require.noext.js", "Areas/ScoreBootstrapUI/js/Vendor/bootstrap.min.js", "Areas/ScoreBootstrapUI/js/BootstrapUI.amdfix.js", "Areas/ScoreBootstrapUI/js/BootstrapUI.js", "Areas/ScoreBootstrapUI/js/Utils/ErrorHandler.js", "Areas/ScoreBootstrapUI/js/Vendor/jquery.validate.1.12.0.min.js", "Areas/ScoreBootstrapUI/js/Vendor/jquery.validate.unobtrusive.min.js", "Areas/ScoreBootstrapUI/js/Vendor/jquery.unobtrusive-ajax.min.js", "Areas/ScoreBootstrapUI/js/score.jquery.validate.unobtrusive.js", "Areas/ScoreBootstrapUI/js/Vendor/jquery.matchHeight-min.js", "Areas/ScoreBootstrapUI/js/Vendor/knockout.min.js", "Areas/ScoreBootstrapUI/js/knockout.extended.js", "Areas/ScoreBootstrapUI/js/Vendor/jquery.imagesLoaded.min.js", "Areas/ScoreBootstrapUI/js/Vendor/typeahead.jquery.js", "Areas/ScoreBootstrapUI/js/vendor/picturefill.min.js", "Areas/ScoreBootstrapUI/js/vendor/bootstrap-slider.min.js", "Areas/ScoreBootstrapUI/js/Vendor/css.escape.js", "Areas/ScoreBootstrapUI/js/Vendor/slick.js", "Areas/LNRS/js/vendor/jquery.dotdotdot.min.js", "Areas/LNRS/js/vendor/lightslider.js", "Areas/LNRS/js/vendor/bootstrap-select.js", "Areas/LNRS/js/vendor/moment.min.js", "Areas/LNRS/js/vendor/bootstrap-datetimepicker.min.js", "Areas/LNRS/js/vendor/jquery.inputmask.bundle.min.js", "Areas/LNRS/js/vendor/bootstrap-scrollspy.js", "Areas/LNRS/js/vendor/youtube.api.js", "Areas/LNRS/js/vendor/d3.min.js", "Areas/LNRS/js/vendor/ScrollMagic.min.js", "Areas/LNRS/js/Utility/UrlHelper.js", "Areas/LNRS/js/Track/GoalsManager.js", "Areas/LNRS/js/Track/DataLayerManager.js", "Areas/LNRS/js/Track/Events.js", "Areas/LNRS/js/Track/TrackVideos.js", "Areas/LNRS/js/Track/TrackNavigation.js", "Areas/LNRS/js/Track/TrackLinks.js", "Areas/LNRS/js/Track/TrackScroll.js", "Areas/LNRS/js/Track/TrackSearches.js", "Areas/LNRS/js/Track/TrackFilters.js", "Areas/LNRS/js/Track/TrackPageEvents.js", "Areas/LNRS/js/Track/TrackForms.js", "Areas/LNRS/js/Track/TrackBounceRate.js", "Areas/LNRS/js/Track/AnalyticsDispatcher.js", "Areas/LNRS/js/Adobe/AdobeScript.js", "Areas/LNRS/js/Utility/ErrorHandler.js", "Areas/LNRS/js/main.js", "Areas/LNRS/js/Components/Templates/HierarchicalMenuItemTemplate.html!text", "Areas/LNRS/js/components/hierarchicalmenuwidget.js", "Areas/LNRS/js/GeoLocate/Redirect.js", "Areas/LNRS/js/Products/ProductsCollection.js", "Areas/LNRS/js/PressRoom/Templates/PressRoomListingTemplate.html!text", "Areas/LNRS/js/PressRoom/Templates/PressRoomGridTemplate.html!text", "Areas/LNRS/js/PressRoom/PressRoomListing.js", "Areas/LNRS/js/search/custom/hierarchicalrefinmentlist.js", "Areas/LNRS/js/search/custom/resourcerefinementlist.js", "Areas/LNRS/js/Search/GlobalSearchBox.js", "Areas/LNRS/js/Search/Search.js", "Areas/LNRS/js/Search/SearchActiveFiltersSelection.js", "Areas/LNRS/js/Search/SearchBox.js", "Areas/LNRS/js/Search/SearchFilters.js", "Areas/LNRS/js/Search/Templates/SearchResultsItem.html!text", "Areas/LNRS/js/Search/SearchResults.js", "Areas/LNRS/js/Search/SearchResultsPagination.js", "Areas/ScoreBootstrapUI/js/Components/Accordion.js", "Areas/ScoreBootstrapUI/js/Components/AccordionPanel.js", "Areas/ScoreBootstrapUI/js/Components/BackToTop.js", "Areas/ScoreBootstrapUI/js/Components/BasicMenuItem.js", "Areas/ScoreBootstrapUI/js/Components/BrightcoveVideo.js", "Areas/ScoreBootstrapUI/js/Components/Button.js", "Areas/ScoreBootstrapUI/js/Components/ButtonMenuItem.js", "Areas/ScoreBootstrapUI/js/Components/Carousel.js", "Areas/ScoreBootstrapUI/js/Components/CarouselPane.js", "Areas/ScoreBootstrapUI/js/Utils/window.js", "Areas/ScoreBootstrapUI/js/Base/PictureAsBackground.js", "Areas/ScoreBootstrapUI/js/Components/CarouselPicturePane.js", "Areas/ScoreBootstrapUI/js/Models/Comments/CommentsRequest.js", "Areas/ScoreBootstrapUI/js/Models/Comments/PostCommentModel.js", "Areas/ScoreBootstrapUI/js/Models/Comments/CommentsClient.js", "Areas/ScoreBootstrapUI/js/Models/Comments/CommentsResult.js", "Areas/ScoreBootstrapUI/js/Models/Comments/CommentModel.js", "Areas/ScoreBootstrapUI/js/Utils/Enums.js", "Areas/ScoreBootstrapUI/js/Components/Comments.js", "Areas/ScoreBootstrapUI/js/Events/SearchRequestChangeEvent.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/ActiveFacets.js", "Areas/ScoreBootstrapUI/js/Utils/UrlHelper.js", "Areas/ScoreBootstrapUI/js/Models/SitecoreId.js", "Areas/ScoreBootstrapUI/js/Models/Search/IndexableItemBase.js", "Areas/ScoreBootstrapUI/js/Events/SearchResponseEvent.js", "Areas/ScoreBootstrapUI/js/Models/Search/FacetPanel.js", "Areas/ScoreBootstrapUI/js/Models/Search/FacetRangePanel.js", "Areas/ScoreBootstrapUI/js/Models/Search/FacetRatingsPanel.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/FacetContainer.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/SearchResultsBase.js", "Areas/ScoreBootstrapUI/js/Models/Tile.js", "Areas/ScoreBootstrapUI/js/Models/Search/SearchRequest.js", "Areas/ScoreBootstrapUI/js/Events/MultiViewSearchResultsEvent.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/MultiViewSearchResults.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/QuickView.js", "Areas/ScoreBootstrapUI/js/Models/Search/SimpleSearchClient.js", "Areas/ScoreBootstrapUI/js/Models/Search/SuggestionSection.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/SearchBox.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/SearchClient.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/SearchQueryMessage.js", "Areas/ScoreBootstrapUI/js/Models/Search/PromoTile.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/SearchResults.js", "Areas/ScoreBootstrapUI/js/Components/ContentSearch/SearchResultsView.js", "Areas/ScoreBootstrapUI/js/Components/GoogleMap.js", "Areas/ScoreBootstrapUI/js/Components/IFrame.js", "Areas/ScoreBootstrapUI/js/Components/KalturaVideo.js", "Areas/ScoreBootstrapUI/js/Components/MegaMenuButtonMenu.js", "Areas/ScoreBootstrapUI/js/Components/MegaMenuItem.js", "Areas/ScoreBootstrapUI/js/Components/MenuListImageLink.js", "Areas/ScoreBootstrapUI/js/Components/MenuListItem.js", "Areas/ScoreBootstrapUI/js/Components/Modal.js", "Areas/ScoreBootstrapUI/js/Models/Liking/PageLikingModel.js", "Areas/ScoreBootstrapUI/js/Components/PageLike.js", "Areas/ScoreBootstrapUI/js/Components/Panel.js", "Areas/ScoreBootstrapUI/js/Components/Picture.js", "Areas/ScoreBootstrapUI/js/Components/PictureHero.js", "Areas/ScoreBootstrapUI/js/Components/PictureHighlight.js", "Areas/ScoreBootstrapUI/js/Components/PictureStripe.js", "Areas/ScoreBootstrapUI/js/Components/PictureStyleBox.js", "Areas/ScoreBootstrapUI/js/Components/SlickSlider.js", "Areas/ScoreBootstrapUI/js/Components/SplitButtnMenu.js", "Areas/ScoreBootstrapUI/js/Components/StyleBox.js", "Areas/ScoreBootstrapUI/js/Components/TabPanel.js", "Areas/ScoreBootstrapUI/js/Components/TabSet.js", "Areas/ScoreBootstrapUI/js/Components/VimeoVideo.js", "Areas/ScoreBootstrapUI/js/Components/YoutubeVideo.js", "Areas/LNRS/js/Components/Charts/Base.js", "Areas/LNRS/js/Components/Charts/bar.js", "Areas/LNRS/js/Components/Charts/base.js", "Areas/LNRS/js/Components/Charts/chartStylebox.js", "Areas/LNRS/js/Components/Charts/donut.js", "Areas/LNRS/js/Components/Charts/gauge.js", "Areas/LNRS/js/Components/Charts/legend.js", "Areas/LNRS/js/Components/Charts/line.js", "Areas/LNRS/js/Components/Charts/Templates/MapPopupTemplate.html!text", "Areas/LNRS/js/Components/Charts/map.js", "Areas/LNRS/js/Components/Charts/pie.js", "Areas/LNRS/js/Components/Containers/Stripes/CustomStripe.js", "Areas/LNRS/js/Components/Content/Collections/StickyAnchorMenu.js", "Areas/LNRS/js/Components/Content/CustomHighlight.js", "Areas/LNRS/js/Components/Content/Features/ThreeLvlTab.js", "Areas/LNRS/js/Components/Content/Headers/CustomSectionHero.js", "Areas/LNRS/js/Components/Content/Panels/CookieDisclaimerAlert.js", "Areas/LNRS/js/Components/ContentSlider.js", "Areas/LNRS/js/Components/Forms/EloquaGeneral.js", "Areas/LNRS/js/Components/Forms/ValidationOptions.js", "Areas/LNRS/js/Components/Forms/NonEloquaBase.js", "Areas/LNRS/js/Components/Forms/Feedback.js", "Areas/LNRS/js/Components/Forms/MediaContact.js", "Areas/LNRS/js/Components/Forms/SpeakerRequest.js", "Areas/LNRS/js/Components/HierarchicalMenuWidget.js", "Areas/LNRS/js/Components/IndustrySection.js", "Areas/LNRS/js/Components/Jobs/JobDetails.js", "Areas/LNRS/js/Components/Jobs/JobSearchFilters.js", "Areas/LNRS/js/Components/Jobs/Templates/JobSearchResultsItem.html!text", "Areas/LNRS/js/Components/Jobs/JobSearchResults.js", "Areas/LNRS/js/Components/Templates/ProductIndexProductNameTemplate.html!text", "Areas/LNRS/js/Components/Templates/ProductIndexResultsTemplate.html!text", "Areas/LNRS/js/Components/ProductIndex.js", "Areas/LNRS/js/Components/Social/SiteSocialSharing.js", "Areas/LNRS/js/Components/Social/SocialEmail.js", "Areas/LNRS/js/Components/Social/SocialFacebook.js", "Areas/LNRS/js/Components/Social/SocialGoogleplus.js", "Areas/LNRS/js/Components/Social/SocialLinkedin.js", "Areas/LNRS/js/Components/Social/SocialTwitter.js", "Areas/LNRS/js/Components/StickyFooter.js", "Areas/LNRS/js/Components/TabSetMobileDropDown.js", "Areas/LNRS/js/Components/TabSetMobileSlider.js" ], "names": [], "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5jDA;AACA;AACA,ACFA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACr7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9gDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACriBA;AACA;AACA,ACFA;AACA;AACA,ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACz0CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACbA;AACA;AACA;AACA;AACA,ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxgDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpCA;AACA;AACA;AACA;AACA;AACA,ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACp8FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/oCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACt1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACRA;AACA;AACA,ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACVA;AACA;AACA;AACA,ACHA;AACA;AACA,ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjoCA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxBA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7DA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACreA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AClgBA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACxpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC7KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACtLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjNA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACpHA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA,ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA", "file": "LNRS.bundle.js", "sourcesContent": [ "define(\"Utility/SiteContext\", [\"require\", \"exports\"], function (require, exports) {\r\n \"use strict\";\r\n var SiteContext = /** @class */ (function () {\r\n function SiteContext() {\r\n }\r\n SiteContext.prototype.isPageEditor = function () {\r\n if (typeof Sitecore == \"undefined\") {\r\n return false;\r\n }\r\n if (typeof Sitecore.PageModes == \"undefined\" || Sitecore.PageModes == null) {\r\n return false;\r\n }\r\n return Sitecore.PageModes.PageEditor != null;\r\n };\r\n SiteContext.prototype.getContextLanguage = function () {\r\n return document.getElementsByTagName(\"body\")[0].getAttribute(\"data-page-language-name\"); //document.documentElement.lang;\r\n };\r\n return SiteContext;\r\n }());\r\n return new SiteContext();\r\n});\r\n///\r\ndefine(\"Globalization/Dictionary\", [\"require\", \"exports\", \"jquery\", \"Utility/SiteContext\"], function (require, exports, $, siteContext) {\r\n \"use strict\";\r\n var Dictionary = /** @class */ (function () {\r\n function Dictionary() {\r\n this.loadValues();\r\n }\r\n Dictionary.prototype.translate = function (key) {\r\n return this.values != null ? this.values[key] || key : key;\r\n };\r\n Dictionary.prototype.getContextLanguage = function () {\r\n return siteContext.getContextLanguage();\r\n };\r\n Dictionary.prototype.loadValues = function () {\r\n var language = this.getContextLanguage();\r\n var valuesUrl = \"/temp/dictionary.\" + language + \".json\";\r\n // We disable browser's cache to ensure translations are up to date\r\n $.ajax({ cache: false, async: false, url: valuesUrl })\r\n .done(function (data) {\r\n this.values = Object.freeze(data);\r\n }.bind(this))\r\n .fail(function () {\r\n console.error(\"Couldn't load dictionary values\");\r\n });\r\n };\r\n return Dictionary;\r\n }());\r\n return new Dictionary();\r\n});\r\ndefine(\"BriteVerifyValidation/BriteVerifyValidationHelper\", [\"require\", \"exports\", \"jquery\", \"Globalization/Dictionary\"], function (require, exports, $, dictionary) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var BriteVerifyValidationHelper = /** @class */ (function () {\r\n function BriteVerifyValidationHelper() {\r\n // Tracks the validation state\r\n this.isPhoneValidForBriteVerify = null;\r\n this.isEmailValidForBriteVerify = null;\r\n }\r\n BriteVerifyValidationHelper.prototype.checkDuplicateCountryCodeInPhoneNo = function (form) {\r\n if (!form.find(\"#WorkPhone\").val()) {\r\n return;\r\n }\r\n var countryPhoneCodeElement = form.find('[name=\"CountryPhoneCode\"]');\r\n var countryPhoneCode = countryPhoneCodeElement.length > 0\r\n ? countryPhoneCodeElement.find(':selected').text()\r\n : null;\r\n if (countryPhoneCode) {\r\n var countryCodeMatch = countryPhoneCode.match(/(\\+\\d+)/);\r\n var workPhone = form.find(\"#WorkPhone\").val();\r\n var updatedWorkPhone = workPhone.replace(countryCodeMatch[0], \"\").trim();\r\n // Check if the selected country is part of the North American Numbering Plan (NANP),\r\n // which includes the US, Canada, and certain Caribbean nations.\r\n // NANP country codes follow the pattern: +1-XXX (e.g., +1-473 for Grenada, +1-876 for Jamaica).\r\n var nanpCodeMatch = countryPhoneCode.match(/\\+1-\\d{3}/);\r\n if (nanpCodeMatch) {\r\n // Matches \"-XXX\" with the optional trailing dash at the start of the phone number (only if it follows a NANP format)\r\n var nanpPrefixPattern = /^-\\d{3}-?/;\r\n updatedWorkPhone = updatedWorkPhone.replace(nanpPrefixPattern, \"\").trim();\r\n }\r\n form.find(\"#WorkPhone\").val(updatedWorkPhone).valid();\r\n }\r\n };\r\n BriteVerifyValidationHelper.prototype.verifyPhoneWithCountryCode = function (form, validatePhone) {\r\n //Check duplicate country code\r\n this.checkDuplicateCountryCodeInPhoneNo(form);\r\n // Check if the phone should be validated and if the WorkPhone field has a value\r\n if (!validatePhone || !form.find(\"#WorkPhone\").val()) {\r\n return;\r\n }\r\n // Retrieve the selected country phone code, if the element exists\r\n var countryPhoneCodeElement = form.find('[name=\"CountryPhoneCode\"]');\r\n var countryPhoneCode = countryPhoneCodeElement.length > 0\r\n ? countryPhoneCodeElement.find(':selected').text()\r\n : null;\r\n // Extract the phone code if it exists (only numbers and \"+\" sign)\r\n var phoneCodeMatch = countryPhoneCode ? countryPhoneCode.match(/(\\+\\d+)/) : null;\r\n // Set phoneInput, using the extracted phone code if available, or default to workPhone\r\n var workPhone = form.find(\"#WorkPhone\").val();\r\n var phoneInput = phoneCodeMatch ? phoneCodeMatch[0] + workPhone : workPhone;\r\n var self = this;\r\n // Make the AJAX request to verify the phone\r\n $.ajax({\r\n url: \"/VerifyPhone\",\r\n method: 'POST',\r\n data: { phone: phoneInput },\r\n success: function (response) {\r\n console.log(\"BriteVerify Api results:\", response);\r\n self.isPhoneValidForBriteVerify = response.isPhoneValid;\r\n // Trigger error if the phone is invalid\r\n if (!response.isPhoneValid) {\r\n self.triggerError(form, \"WorkPhone\", dictionary.translate(\"Briteverify Invalid Phone Message\"));\r\n }\r\n else\r\n self.clearErrorMessage(form, \"WorkPhone\");\r\n },\r\n error: function (error) {\r\n console.error(\"Error during Brite Verify API request:\", error);\r\n }\r\n });\r\n };\r\n BriteVerifyValidationHelper.prototype.validateWorkEmail = function (form, isBusinessServicesForm) {\r\n var workEmail = form.find(\"#WorkEmail\").val();\r\n var country = form.find(\"#Country\").val();\r\n // Remove the confirmation message if it already exists\r\n form.find('div#confirm-submitting-personal-email').remove();\r\n var self = this;\r\n if (workEmail) {\r\n $.ajax({\r\n url: \"/VerifyEmail\",\r\n method: 'POST',\r\n data: { email: workEmail, country: country },\r\n success: function (response) {\r\n console.log(\"BriteVerify Api results:\", response);\r\n self.isEmailValidForBriteVerify = response.isEmailValid;\r\n if (!response.isEmailValid) {\r\n if (response.isBlockedEmail) {\r\n self.triggerError(form, \"WorkEmail\", dictionary.translate(\"Briteverify Blocked Email Message\"));\r\n }\r\n else {\r\n self.triggerError(form, \"WorkEmail\", dictionary.translate(\"Briteverify Invalid Email Message\"));\r\n }\r\n return;\r\n }\r\n if (response.isPersonalEmail) {\r\n if (isBusinessServicesForm) {\r\n self.addCheckboxAndTextToBusinessServicesForms(form);\r\n self.triggerError(form, \"WorkEmail\", dictionary.translate(\"Briteverify Personal Email Error Message\"));\r\n }\r\n else {\r\n // Non-BS forms should not accept personal emails\r\n self.isEmailValidForBriteVerify = false;\r\n self.triggerError(form, \"WorkEmail\", dictionary.translate(\"Briteverify Invalid Email Message\"));\r\n }\r\n return;\r\n }\r\n },\r\n error: function (error) {\r\n console.error(\"Error during Brite Verify API request:\", error);\r\n }\r\n });\r\n }\r\n };\r\n BriteVerifyValidationHelper.prototype.addCheckboxAndTextToBusinessServicesForms = function (form) {\r\n // Remove the div if it already exists\r\n form.find('div#confirm-submitting-personal-email').remove();\r\n var submitButton = form.find('button[type=\"submit\"]');\r\n if (submitButton.length) {\r\n var parentDiv = submitButton.closest('div');\r\n if (parentDiv) {\r\n // Create the new div\r\n var newDiv = document.createElement('div');\r\n newDiv.className = 'form-group long';\r\n newDiv.id = 'confirm-submitting-personal-email';\r\n // Create the span element\r\n var confirmMessage = dictionary.translate('Briteverify Personal Email Submission Confirmation Message');\r\n var span = document.createElement('span');\r\n span.textContent = confirmMessage;\r\n span.style.color = '#ed1c24';\r\n span.style.fontSize = '14px';\r\n // Create the checkbox element\r\n var checkbox = document.createElement('input');\r\n checkbox.type = 'checkbox';\r\n checkbox.id = 'acceptPersonalEmail';\r\n checkbox.style.marginLeft = '5px';\r\n checkbox.style.width = '16px';\r\n checkbox.style.height = '16px';\r\n // Append the span and checkbox to the new div\r\n newDiv.appendChild(span);\r\n newDiv.appendChild(checkbox);\r\n // Insert the new div before the parent div of the submit button\r\n parentDiv.before(newDiv);\r\n var self_1 = this;\r\n $(checkbox).on('click', function () {\r\n if ($(this).is(':checked')) {\r\n $(this).removeClass(\"accept-personal-mail-error\");\r\n self_1.clearErrorMessage(form, \"WorkEmail\");\r\n }\r\n else {\r\n $(this).addClass(\"accept-personal-mail-error\");\r\n self_1.triggerError(form, \"WorkEmail\", dictionary.translate(\"Briteverify Personal Email Error Message\"));\r\n }\r\n });\r\n }\r\n }\r\n };\r\n BriteVerifyValidationHelper.prototype.triggerError = function (form, fieldName, message) {\r\n var errorMessage = message;\r\n // If no custom message is provided, fetch the appropriate error message attribute\r\n if (!errorMessage) {\r\n if (fieldName === \"WorkPhone\") {\r\n errorMessage = form.find(\"#\" + fieldName).attr(\"data-val-phonewithcountrycode\");\r\n }\r\n else if (fieldName === \"WorkEmail\") {\r\n errorMessage = form.find(\"#\" + fieldName).attr(\"data-val-regex\");\r\n }\r\n }\r\n if (errorMessage) {\r\n // Remove any previous error class and set the error message\r\n form\r\n .find(\"[data-valmsg-for=\\\"\" + fieldName + \"\\\"]\")\r\n .removeClass()\r\n .addClass(\"field-validation-error\")\r\n .html(\"\" + errorMessage + \"\");\r\n // Add input-validation-error class and set aria-invalid to true\r\n form\r\n .find(\"#\" + fieldName)\r\n .addClass(\"input-validation-error\")\r\n .attr(\"aria-invalid\", \"true\");\r\n }\r\n };\r\n BriteVerifyValidationHelper.prototype.clearErrorMessage = function (form, fieldName) {\r\n if (!form || !fieldName)\r\n return;\r\n // Remove the error message and reset classes\r\n form\r\n .find(\"[data-valmsg-for=\\\"\" + fieldName + \"\\\"]\")\r\n .removeClass(\"field-validation-error\")\r\n .html(\"\"); // Clear the error message content\r\n // Remove input-validation-error class and reset aria-invalid\r\n form\r\n .find(\"#\" + fieldName)\r\n .removeClass(\"input-validation-error\")\r\n .attr(\"aria-invalid\", \"false\");\r\n };\r\n return BriteVerifyValidationHelper;\r\n }());\r\n exports.default = new BriteVerifyValidationHelper();\r\n});\r\n///\r\ndefine(\"Components/Buttons/VideoModalButton\", [\"require\", \"exports\", \"jquery\", \"eventManager\", \"//www.youtube.com/iframe_api\", \"//player.vimeo.com/api/player.js\"], function (require, exports, $) {\r\n \"use strict\";\r\n var eventManager = require(\"eventManager\");\r\n var vimeoPlayer = require(\"//player.vimeo.com/api/player.js\");\r\n var VideoModalButton = /** @class */ (function () {\r\n function VideoModalButton(args) {\r\n this.$scope = $(args.scope);\r\n this.autoplay = args.autoplay;\r\n this.showVimeo = args.showVimeo;\r\n this.vimeoAutoplay = args.vimeoAutoplay;\r\n this.stateChangeMessages = [];\r\n $(\".modal\", args.scope).on('shown.bs.modal', function () {\r\n if (this.showVimeo) {\r\n if (this.vimeoAutoplay) {\r\n this.player.play();\r\n }\r\n }\r\n else {\r\n if (this.autoplay) {\r\n this.play();\r\n }\r\n }\r\n }.bind(this));\r\n $(\".modal\", args.scope).on('hidden.bs.modal', function () {\r\n if (this.showVimeo) {\r\n this.player.pause();\r\n }\r\n else {\r\n if (this.autoplay) {\r\n this.pause();\r\n }\r\n }\r\n }.bind(this));\r\n if (this.showVimeo) {\r\n var videoId = this.$scope.find('iframe').attr('id');\r\n console.log(videoId);\r\n if (!videoId) {\r\n var lastVideoModal = $(\".video-modal-button.last\");\r\n if (lastVideoModal.length > 0) {\r\n videoId = $(lastVideoModal).find('iframe').attr('id');\r\n }\r\n }\r\n Object.defineProperties(this, {\r\n videoId: { enumerable: true, value: videoId },\r\n player: { enumerable: false, value: new vimeoPlayer(videoId) }\r\n });\r\n }\r\n else {\r\n YT.ready(function () {\r\n var videoId = this.$scope.find('iframe').attr('id');\r\n Object.defineProperties(this, {\r\n videoId: { enumerable: true, value: videoId },\r\n player: { enumerable: false, value: new YT.Player(videoId) }\r\n });\r\n this.player.addEventListener(\"onStateChange\", this.transmitStateChange.bind(this));\r\n }.bind(this));\r\n }\r\n }\r\n VideoModalButton.prototype.play = function () {\r\n this.$scope.find('iframe')\r\n .get(0)\r\n .contentWindow\r\n .postMessage(JSON.stringify({\r\n 'event': 'command',\r\n 'func': 'playVideo',\r\n 'args': [],\r\n 'id': 'test-player'\r\n }), \"*\");\r\n };\r\n VideoModalButton.prototype.pause = function () {\r\n this.$scope.find('iframe')\r\n .get(0)\r\n .contentWindow\r\n .postMessage(JSON.stringify({\r\n 'event': 'command',\r\n 'func': 'pauseVideo',\r\n 'args': [],\r\n 'id': 'test-player'\r\n }), \"*\");\r\n };\r\n VideoModalButton.prototype.addStateChangeMessage = function (message) {\r\n if (!message)\r\n return;\r\n if (this.stateChangeMessages.indexOf(message) > -1) {\r\n console.log(\"Component is already registered for event \" + message);\r\n return;\r\n }\r\n this.stateChangeMessages.push(message);\r\n };\r\n VideoModalButton.prototype.transmitStateChange = function () {\r\n var messages = this.stateChangeMessages;\r\n if (messages.length) {\r\n messages.forEach(function (ev) {\r\n eventManager.trigger(ev, this, this.player);\r\n }.bind(this));\r\n }\r\n };\r\n return VideoModalButton;\r\n }());\r\n function init(args) {\r\n return new VideoModalButton(args);\r\n }\r\n define(\"VideoModalButton\", [], function () {\r\n return init;\r\n });\r\n return init;\r\n});\r\ndefine(\"Validation/UnobtrusiveValidationExtensions\", [\"require\", \"exports\", \"jquery\"], function (require, exports, $) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var UnobtrusiveValidationExtensions = /** @class */ (function () {\r\n function UnobtrusiveValidationExtensions() {\r\n }\r\n UnobtrusiveValidationExtensions.prototype.resetFormValidation = function (form) {\r\n // We need to remove previous validation set by $.validator.unobtrusive.parse()\r\n // in order to attach additional score validation adapters (requiredor) to the form\r\n // http://stackoverflow.com/questions/14902581/unobtrusive-validation-not-working-with-dynamic-content\r\n var $form = $(form)\r\n .removeData(\"validator\")\r\n .removeData(\"unobtrusiveValidation\");\r\n $.validator.unobtrusive.parse($form);\r\n };\r\n UnobtrusiveValidationExtensions.prototype.parseDynamicContent = function (selector) {\r\n // don't use the normal unobstrusive.parse method\r\n // $.validator.unobtrusive.parse(selector); \r\n // use this instead:\r\n $(selector).find('*[data-val = true]').each(function () {\r\n $.validator.unobtrusive.parseElement(this, false);\r\n });\r\n //get the relevant form\r\n var form = $(selector).first().closest('form');\r\n //get the collections of unobstrusive validators, and jquery validators\r\n //and compare the two\r\n var unobtrusiveValidation = form.data('unobtrusiveValidation');\r\n var validator = form.validate();\r\n $.each(unobtrusiveValidation.options.rules, function (elname, elrules) {\r\n if (validator.settings.rules[elname] == undefined) {\r\n var args = {};\r\n $.extend(args, elrules);\r\n args.messages = unobtrusiveValidation.options.messages[elname];\r\n $('[name=\"' + elname + '\"]').rules(\"add\", args);\r\n }\r\n else {\r\n $.each(elrules, function (rulename, data) {\r\n if (validator.settings.rules[elname][rulename] == undefined) {\r\n var args = {};\r\n args[rulename] = data;\r\n args.messages = unobtrusiveValidation.options.messages[elname][rulename];\r\n $('[name=\"' + elname + '\"]').rules(\"add\", args);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n return UnobtrusiveValidationExtensions;\r\n }());\r\n exports.UnobtrusiveValidationExtensions = UnobtrusiveValidationExtensions;\r\n});\r\n//export = UnobtrusiveValidationExtensions; \r\n///\r\ndefine(\"Validation/RecaptchaApiLoader\", [\"require\", \"exports\", \"eventManager\"], function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var eventManager = require('eventManager');\r\n var lang = document.documentElement.lang.substring(0, 2);\r\n // Trigger event when Google Recaptcha Api is loaded so all forms can render their own captchas\r\n window['onRecaptchaApiLoaded'] = function () { return eventManager.trigger(\"RecaptchaApiLoaded\"); };\r\n require(['https://www.recaptcha.net/recaptcha/api.js?onload=onRecaptchaApiLoaded&render=explicit&hl=' + lang], function () { return console.log('Recaptcha api is loaded.'); });\r\n});\r\n///\r\ndefine(\"Components/Forms/EloquaMasterForm\", [\"require\", \"exports\", \"jquery\", \"Validation/UnobtrusiveValidationExtensions\", \"Globalization/Dictionary\", \"Utility/SiteContext\", \"BriteVerifyValidation/BriteVerifyValidationHelper\", \"jqueryValidate\", \"jqueryValidateUnobtrusive\", \"jqueryUnobtrusiveAjax\", \"scoreunobtrusive\", \"bootstrapSelect\", \"Validation/RecaptchaApiLoader\", \"mustache\", \"Utility/ErrorHandler\", \"eventManager\"], function (require, exports, $, UnobtrusiveValidationExtensions_1, dictionary, siteContext, BriteVerifyValidationHelper) {\r\n \"use strict\";\r\n var eventManager = require('eventManager');\r\n var events = require(\"Track/Events\");\r\n var errorHandler = require(\"Utility/ErrorHandler\");\r\n var EloquaMasterForm = /** @class */ (function () {\r\n function EloquaMasterForm(options) {\r\n var _this = this;\r\n this.validationHelper = new UnobtrusiveValidationExtensions_1.UnobtrusiveValidationExtensions();\r\n this.options = options;\r\n this.form = $('#' + this.options.formId, this.options.scope);\r\n this.formName = this.options.mediaAsset ? \"Media Asset Form\" : \"Master Lead Form\";\r\n if (this.options.progressiveProfiling) {\r\n this.formName = this.options.formName;\r\n }\r\n else if ($(\".business-services-registration-form\", this.options.scope).length > 0) {\r\n this.formName = \"Business Services Registration Form\";\r\n }\r\n this.isPreview = $(\"body\").attr(\"is-preview\") === \"True\";\r\n this.isBusinessServicesForm = Array.from(this.form[0].classList).some(function (cls) { return cls.startsWith('business-services'); });\r\n this.validateEmail = this.form.find(\"#ValidateEmail\").length > 0 && $(this.form).find(\"#ValidateEmail\").val() === \"True\";\r\n this.validatePhone = false;\r\n this.setWorkPhoneValidation();\r\n $('[name=\"Country\"]', this.options.scope).on('change', this.onCountryChanged.bind(this));\r\n $('[name=\"Industry\"]', this.options.scope).on('change', this.onIndustryChanged.bind(this));\r\n $('[name=\"SubIndustry\"]', this.options.scope).on('change', this.onSubIndustryChanged.bind(this));\r\n $('[name=\"EloquaFormName\"]', this.options.scope).on('change', this.onFormChanged.bind(this));\r\n // init other dropdowns based on industry in case if industry is predefined\r\n if (!siteContext.isPageEditor())\r\n $('[name=\"Industry\"]', this.options.scope).trigger('change');\r\n //trigger change event on load\r\n if (!siteContext.isPageEditor())\r\n $('[name=\"EloquaFormName\"]', this.options.scope).trigger('change');\r\n //update country\r\n $.ajax({\r\n url: '/GetLocationInfo',\r\n method: 'get',\r\n cache: false\r\n })\r\n .done(function (data) {\r\n this.onLocationDataLoaded(data);\r\n this.updateValidatePhone();\r\n }.bind(this));\r\n this.validationHelper.resetFormValidation(this.form);\r\n this.form.on('submit', this.onFormSubmit.bind(this));\r\n // init dropdowns manually, for some reason implicit initialization doesn't work\r\n $('.selectpicker', this.options.scope).selectpicker();\r\n // Hide validation error message for selectpickers in case if user selected valid value\r\n $('select', this.options.scope).on('change', function (e) { return $(e.target).valid(); });\r\n //Remove dropdown error class if selected value is valid\r\n $('select', this.options.scope).on('change', function () { if ($(this).valid()) {\r\n $(this).siblings().removeClass('error');\r\n } });\r\n $('#CountryPhoneCode', this.options.scope).on('change', function () {\r\n var countryPhoneCodeSelect = $('[name=\"CountryPhoneCode\"]', _this.options.scope);\r\n var countrySelect = $('[name=\"Country\"]', _this.options.scope);\r\n if (countrySelect.length > 0) {\r\n if (countryPhoneCodeSelect.val() != countrySelect.val()) {\r\n _this.populateContryWithCountryPhoneCode();\r\n }\r\n }\r\n BriteVerifyValidationHelper.default.verifyPhoneWithCountryCode(_this.form, _this.validatePhone);\r\n });\r\n // Show error message when user leaves input\r\n $('select, input', this.options.scope).on('blur', function (e) {\r\n // BriteVerify Email field validation\r\n if ($(e.target).attr('id') === 'WorkEmail' && _this.validateEmail) {\r\n BriteVerifyValidationHelper.default.validateWorkEmail(_this.form, _this.isBusinessServicesForm);\r\n }\r\n else if ($(e.target).attr('id') === 'WorkPhone') {\r\n BriteVerifyValidationHelper.default.verifyPhoneWithCountryCode(_this.form, _this.validatePhone);\r\n }\r\n else {\r\n $(e.target).valid();\r\n }\r\n });\r\n function getCookie(key) {\r\n var keyValue = document.cookie.match(\"(^|;) ?\" + key + \"=([^;]*)(;|$)\");\r\n return keyValue ? keyValue[2] : null;\r\n }\r\n //check cookies\r\n if (!siteContext.isPageEditor()) {\r\n if (this.options.isAutoResponderEnabled) {\r\n $('.download', this.options.scope).hide();\r\n $('.gated-url-redirect', this.options.scope).hide();\r\n this.form.show();\r\n eventManager.subscribe(\"StickyAchorMenuLoaded\", function () {\r\n eventManager.trigger(\"MatchHeightRefresh\");\r\n });\r\n return;\r\n }\r\n var idCookie = getCookie('Id' + this.options.pageId.Guid + '_' + this.options.itemId.Guid);\r\n if (idCookie) {\r\n var assetUrl = $('[name=\"AssetUrl\"]', this.options.scope).val();\r\n var isMediaAssetForm = this.options.scope.className.indexOf(\"media-asset-form\") !== -1;\r\n if (assetUrl.length > 0) {\r\n if (isMediaAssetForm && this.options.hasGatedLinkUrl) {\r\n $('.gated-url-redirect', this.options.scope).show();\r\n }\r\n else {\r\n if (assetUrl.indexOf(\"/media/\") > 0) {\r\n $('#download', this.options.scope).attr('href', assetUrl);\r\n if (assetUrl.indexOf('.pdf') != -1) {\r\n $('#download', this.options.scope).attr('target', '_blank');\r\n }\r\n $('.download', this.options.scope).show();\r\n }\r\n }\r\n }\r\n $('.video-button', this.options.scope).show();\r\n $('.score-well', this.options.scope).hide();\r\n }\r\n else {\r\n $('.download', this.options.scope).hide();\r\n $('.gated-url-redirect', this.options.scope).hide();\r\n this.form.show();\r\n }\r\n eventManager.subscribe(\"StickyAchorMenuLoaded\", function () {\r\n eventManager.trigger(\"MatchHeightRefresh\");\r\n });\r\n }\r\n }\r\n EloquaMasterForm.prototype.updateValidatePhone = function () {\r\n var skipPhoneValidation = this.form.find(\"#SkipWorkPhoneValidation\").length > 0 && this.form.find(\"#SkipWorkPhoneValidation\").val() === \"True\";\r\n var countrySelect = $('[name=\"Country\"]', this.options.scope);\r\n this.validatePhone = false;\r\n BriteVerifyValidationHelper.default.clearErrorMessage(this.form, \"WorkPhone\");\r\n BriteVerifyValidationHelper.default.isPhoneValidForBriteVerify = null;\r\n if (!skipPhoneValidation && $('[name=\"ValidatePhone\"]', this.options.scope).length > 0) {\r\n if ($('[name=\"ValidatePhone\"]', this.options.scope).val() === \"True\" && countrySelect.val() == \"USA\") {\r\n this.validatePhone = true;\r\n }\r\n }\r\n };\r\n EloquaMasterForm.prototype.populateContryWithCountryPhoneCode = function () {\r\n // Retrieve the selected country phone code, if the element exists \r\n var countryPhoneCodeElement = $('[name=\"CountryPhoneCode\"]', this.options.scope);\r\n var countryCode = countryPhoneCodeElement.length > 0\r\n ? countryPhoneCodeElement.find(':selected').val()\r\n : null;\r\n if (countryCode) {\r\n var countrySelect = $('[name=\"Country\"]', this.options.scope);\r\n $(countrySelect).val(countryCode).change();\r\n }\r\n };\r\n EloquaMasterForm.prototype.setWorkPhoneValidation = function () {\r\n var countryPhoneCodeElement = this.form.find('[name=\"CountryPhoneCode\"]');\r\n if (countryPhoneCodeElement.length > 0) {\r\n $.validator.addMethod(\"phonewithcountrycode\", function (value, element, params) {\r\n // Retrieve the country code field's text value\r\n var countryCodeText = $(\"#\" + params.countryCodeField).val();\r\n var countryCode = \"\";\r\n if (countryCodeText) {\r\n // Match the format \"+digits\"\r\n var match = countryCodeText.match(/(\\+\\d+)/);\r\n // Extract the phone code\r\n countryCode = match ? match[0] : \"\";\r\n }\r\n // Concatenate with the phone number\r\n var fullPhoneNumber = countryCode + value;\r\n // Define the pattern from params\r\n var pattern = new RegExp(params.pattern);\r\n return pattern.test(fullPhoneNumber);\r\n }, \"Invalid phone number format.\");\r\n $.validator.unobtrusive.adapters.add(\"phonewithcountrycode\", [\"countryCodeField\", \"pattern\"], function (options) {\r\n options.rules[\"phonewithcountrycode\"] = {\r\n countryCodeField: options.params.countryCodeField,\r\n pattern: options.params.pattern\r\n };\r\n options.messages[\"phonewithcountrycode\"] = options.message;\r\n });\r\n }\r\n };\r\n EloquaMasterForm.prototype.prependCountryCodeToWorkPhone = function () {\r\n var countryPhoneCodeElement = this.form.find('[name=\"CountryPhoneCode\"]');\r\n var workPhoneElement = this.form.find('[name=\"WorkPhone\"]');\r\n if (countryPhoneCodeElement.length > 0 && workPhoneElement.length > 0) {\r\n var countryCodeText = countryPhoneCodeElement.find(\":selected\").text();\r\n var countryCodeMatch = countryCodeText.match(/(\\+\\d+)/);\r\n if (countryCodeMatch) {\r\n var countryCodeOnly = countryCodeMatch[0];\r\n var currentPhoneValue = workPhoneElement.val();\r\n // Prepend the country code to the existing value\r\n workPhoneElement.val(countryCodeOnly + currentPhoneValue);\r\n }\r\n }\r\n };\r\n EloquaMasterForm.prototype.onLocationDataLoaded = function (data) {\r\n this.locationInfo = data;\r\n if (!(typeof this.locationInfo === \"undefined\") && this.locationInfo.Country !== null && this.locationInfo.Country !== 'undefined' && this.locationInfo.Country !== '') {\r\n if (this.locationInfo.Country === 'United States') {\r\n $('[name=\"Country\"], [name=\"CountryPhoneCode\"]', this.options.scope)\r\n .val('USA')\r\n .change();\r\n }\r\n else {\r\n $('[name=\"Country\"], [name=\"CountryPhoneCode\"]', this.options.scope)\r\n .val(this.locationInfo.Country)\r\n .change();\r\n }\r\n }\r\n else {\r\n console.log('Location not available. Country undefined.');\r\n }\r\n };\r\n EloquaMasterForm.prototype.onFormChanged = function (e) {\r\n var _this = this;\r\n var formId = ($('[name=\"EloquaFormName\"]', this.options.scope).val());\r\n //this.logFieldValues(formId, this);\r\n if (formId) {\r\n if (this.isPreview)\r\n return;\r\n $.get(this.options.url, { formId: formId })\r\n .fail(function (data) {\r\n var errors = data.responseJSON;\r\n errorHandler.logError(errors);\r\n _this.setFieldIdsFailSubmitHandler(formId, _this);\r\n })\r\n .done(function (response) {\r\n var data = jQuery.parseJSON(response);\r\n for (var _i = 0, _a = data.elements; _i < _a.length; _i++) {\r\n var element = _a[_i];\r\n if ($('[eloquaName=' + element.htmlName + ']', _this.options.scope)) {\r\n $('[eloquaName=' + element.htmlName + ']', _this.options.scope).attr('eloquaID', element.id);\r\n }\r\n // pass Submission Server Field id to the Model\r\n if (element.htmlName === \"submissionServer\" && $('[name=\"SubmissionServerFieldId\"]', _this.options.scope).length > 0) {\r\n $('[name=\"SubmissionServerFieldId\"]', _this.options.scope).val(element.id);\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n var error = \"Eloqua Form Name field value is not set\";\r\n errorHandler.logError(error);\r\n }\r\n };\r\n EloquaMasterForm.prototype.colectFormValues = function (form) {\r\n var inputControls = form.find('div.form-group').find('input.form-control');\r\n var selectFilters = form.find('div.form-group').find('button.dropdown-toggle');\r\n var textAreas = form.find('textarea');\r\n var fieldValues = '';\r\n $.each(inputControls, function (index, field) {\r\n fieldValues = fieldValues + field.name + '=' + field.value + ';';\r\n });\r\n $.each(selectFilters, function (index, filter) {\r\n fieldValues = fieldValues + $(filter).attr('data-id') + '=' + $(filter).attr('title') + ';';\r\n });\r\n $.each(textAreas, function (index, textArea) {\r\n fieldValues = fieldValues + $(textArea).attr('placeholder') + '=' + $(textArea).val() + ';';\r\n });\r\n return fieldValues;\r\n };\r\n /*private logFieldValues(formId, eloquaForm) {\r\n var self = this;\r\n $(\"form\").submit(function (event) {\r\n if (eloquaForm.form.valid()) {\r\n var fieldValues = self.colectFormValues($(this));\r\n \r\n $.post(\"/LogFormInputs\", { formId: formId, fieldValues: fieldValues }, function () { });\r\n }\r\n });\r\n }*/\r\n EloquaMasterForm.prototype.setFieldIdsFailSubmitHandler = function (formId, eloquaForm) {\r\n var self = this;\r\n $(\"form\").submit(function (event) {\r\n event.preventDefault();\r\n if (eloquaForm.form.valid()) {\r\n if (!self.performBriteVerifyValidation()) {\r\n return false;\r\n }\r\n self.prependCountryCodeToWorkPhone();\r\n var fieldValues = self.colectFormValues($(this));\r\n $.post(\"/SubmitAfterGetIdFails\", { formId: formId, fieldValues: fieldValues }, function () {\r\n $('.score-well', eloquaForm.options.scope).show().addClass(\"in\");\r\n eloquaForm.form.hide();\r\n $('.score-well', eloquaForm.options.scope)[0].scrollIntoView({ behavior: 'smooth' });\r\n });\r\n }\r\n });\r\n };\r\n EloquaMasterForm.prototype.performBriteVerifyValidation = function () {\r\n // Email validation\r\n if (BriteVerifyValidationHelper.default.isEmailValidForBriteVerify === false) {\r\n BriteVerifyValidationHelper.default.triggerError(this.form, \"WorkEmail\", dictionary.translate(\"Briteverify Invalid Email Message\"));\r\n }\r\n // Phone validation\r\n if (BriteVerifyValidationHelper.default.isPhoneValidForBriteVerify === false) {\r\n BriteVerifyValidationHelper.default.triggerError(this.form, \"WorkPhone\", dictionary.translate(\"Briteverify Invalid Phone Message\"));\r\n }\r\n if (BriteVerifyValidationHelper.default.isPhoneValidForBriteVerify === false\r\n || BriteVerifyValidationHelper.default.isEmailValidForBriteVerify === false)\r\n return false;\r\n return true;\r\n };\r\n EloquaMasterForm.prototype.validatePersonalEmailAcceptance = function () {\r\n var acceptPersonalEmailCheckbox = $(this.form).find('#acceptPersonalEmail');\r\n if (acceptPersonalEmailCheckbox.length > 0 && !acceptPersonalEmailCheckbox.is(':checked')) {\r\n BriteVerifyValidationHelper.default.triggerError(this.form, \"WorkEmail\", dictionary.translate(\"Briteverify Personal Email Error Message\"));\r\n // Add an error class to the checkbox\r\n acceptPersonalEmailCheckbox.addClass(\"accept-personal-mail-error\");\r\n return false;\r\n }\r\n return true;\r\n };\r\n EloquaMasterForm.prototype.trackErrors = function (formErrors) {\r\n eventManager.trigger(events.global.formErrors, this.formName, formErrors);\r\n };\r\n EloquaMasterForm.prototype.onFormSubmit = function () {\r\n if (this.isPreview)\r\n return false;\r\n var isFormValid = this.form.valid();\r\n if (!isFormValid) {\r\n $('select.input-validation-error', this.options.scope).siblings().addClass('error');\r\n }\r\n var isPersonalEmailCheckboxValid = this.validatePersonalEmailAcceptance();\r\n var isBriteVerifyValid = this.performBriteVerifyValidation();\r\n if (!isPersonalEmailCheckboxValid || !isFormValid || !isBriteVerifyValid) {\r\n var textArray_1 = [];\r\n $('.field-validation-error', this.options.scope).each(function () {\r\n if ($(this).parent().css('display') !== 'none') {\r\n var text = $(this).text().trim();\r\n if (text !== '') {\r\n textArray_1.push(text);\r\n }\r\n }\r\n });\r\n var errors = this.form.validate().errorList;\r\n if (errors.length > 0 || textArray_1.length > 0) {\r\n var allErrors = [];\r\n var errorList = [];\r\n if (errors.length > 0)\r\n errorList = errors.map(function (e) { return e.message; });\r\n allErrors = errorList.concat(textArray_1);\r\n allErrors = $.grep(allErrors, function (value, index) {\r\n return $.inArray(value, allErrors) === index;\r\n });\r\n this.trackErrors(allErrors);\r\n }\r\n return false;\r\n }\r\n var cookieValue = document.cookie.match(\"(^|;) ?\" + 'OptanonConsent' + \"=([^;]*)(;|$)\");\r\n var optanonConsentCookieValue = cookieValue ? cookieValue[2] : \"\";\r\n if (optanonConsentCookieValue.length > 0) {\r\n var optanonConsent = decodeURIComponent(optanonConsentCookieValue);\r\n var parts = optanonConsent.split(\"&groups=\");\r\n if (parts.length == 2) {\r\n var groupValue = parts.pop().split(\"&\").shift();\r\n $('#' + this.options.formId).find('[name=\"OptanonActiveGroups\"]').val(groupValue);\r\n }\r\n }\r\n var originalCaptchaInputName = $('[data-recaptcha]', this.options.scope).attr('name');\r\n $('[data-recaptcha]', this.options.scope).attr('name', originalCaptchaInputName + '.Response');\r\n var submissionId = (($(\"[name=EloquaFormName]\", this.options.scope).val()).length < 6 ? '00' : '') + $(\"[name=EloquaFormName]\", this.options.scope).val();\r\n var currentDate = new Date(Date.now());\r\n //var date1 = (('' + day).length < 2 ? '0' : '') + day + '/' + (('' + month).length < 2 ? '0' : '') + month + '/' + date.getFullYear();\r\n var year = currentDate.getFullYear();\r\n var month = (('' + currentDate.getMonth()).length < 2 ? '0' : '') + (currentDate.getMonth() + 1);\r\n var date = (('' + currentDate.getDate()).length < 2 ? '0' : '') + currentDate.getDate();\r\n var hour = (('' + currentDate.getHours()).length < 2 ? '0' : '') + currentDate.getHours();\r\n var minute = (('' + currentDate.getMinutes()).length < 2 ? '0' : '') + currentDate.getMinutes();\r\n var second = (('' + currentDate.getSeconds()).length < 2 ? '0' : '') + currentDate.getSeconds();\r\n var miliSec = (('' + currentDate.getMilliseconds()).length < 2 ? '0' : '') + currentDate.getMilliseconds();\r\n miliSec = (('' + miliSec).length < 3 ? '0' : '') + miliSec;\r\n submissionId += '-' + year + month + date + hour + minute + second + miliSec;\r\n if (this.options.contentDeliveryName !== null && this.options.contentDeliveryName !== undefined && this.options.contentDeliveryName !== '') {\r\n submissionId += '-' + this.options.contentDeliveryName;\r\n }\r\n this.submissionId = submissionId;\r\n $('input[name=\"SubmissionId\"]', this.options.scope).val(submissionId);\r\n console.log(\"This is the submissionID now: \" + submissionId);\r\n this.piiSafeValues = this.getPiiSafeValues();\r\n this.vwoEventValues = this.getVWOEventValues();\r\n this.prependCountryCodeToWorkPhone();\r\n //create Eloqua FieldValues\r\n var inputs = this.form[0].elements;\r\n var fieldValues = [];\r\n for (var _i = 0, inputs_1 = inputs; _i < inputs_1.length; _i++) {\r\n var input = inputs_1[_i];\r\n var id = $(input).attr('eloquaID');\r\n if (id) {\r\n var value = $(input).is(':checkbox') ? $(input).prop('checked').toString() : $(input).val();\r\n var fieldValue = {\r\n type: 'FieldValue',\r\n id: id,\r\n value: value\r\n };\r\n fieldValues.push(fieldValue);\r\n }\r\n }\r\n //create Eloqua Request\r\n var request = {\r\n fieldValues: fieldValues\r\n };\r\n $('[name=\"Request\"]', this.options.scope).val(JSON.stringify(request));\r\n $('button[type=\"submit\"]', this.options.scope).prop('disabled', true);\r\n var formSubmitApi = this.form.attr(\"action\");\r\n if ($(this.options.scope).find(\".lnrs-form.business-services-contact-form\").length > 0) {\r\n formSubmitApi = encodeURI(this.form.attr(\"data-action-url\"));\r\n }\r\n $.ajax({\r\n url: formSubmitApi,\r\n data: this.form.serialize(),\r\n method: 'post'\r\n })\r\n .fail(this.onFailSubmit.bind(this))\r\n .done(this.onSuccessSubmit.bind(this))\r\n .always(this.submitAlways.bind(this));\r\n // Restore captcha input name\r\n $('[data-recaptcha]', this.options.scope).attr('name', originalCaptchaInputName);\r\n if ($(this.options.scope).find(\".lnrs-form.business-services-contact-form\").length > 0) {\r\n return true;\r\n }\r\n else {\r\n // do not submit form twice\r\n return false;\r\n }\r\n };\r\n EloquaMasterForm.prototype.getVWOEventValues = function () {\r\n var el = this.options.scope;\r\n var country = ($(\"[name=Country]\", el).val() ? $(\"[name=Country]\", el).val() : \"no\");\r\n var o = {\r\n eventName: \"contactussubmit\",\r\n formName: this.formName,\r\n eloquaSubmissionId: this.submissionId,\r\n optanonActiveGroups: $(\"[name=OptanonActiveGroups]\", el).val(),\r\n country: country\r\n };\r\n return o;\r\n };\r\n EloquaMasterForm.prototype.getPiiSafeValues = function () {\r\n var el = this.options.scope;\r\n var zipCode = 'n/a';\r\n var country = ($(\"[name=Country]\", el).val() ? $(\"[name=Country]\", el).val() : \"no\");\r\n if (country === 'USA') {\r\n zipCode = ($(\"[name=ZipCode]\", el).val() ? $(\"[name=ZipCode]\", el).val() : \"no\");\r\n }\r\n var values = [\r\n \"Prefix=\" + ($(\"[name=Prefix]\", el).val() ? \"yes\" : \"no\"),\r\n \"First Name=\" + ($(\"[name=FirstName]\", el).val() ? \"yes\" : \"no\"),\r\n \"Last Name=\" + ($(\"[name=LastName]\", el).val() ? \"yes\" : \"no\"),\r\n \"Work Phone=\" + ($(\"[name=WorkPhone]\", el).val() ? \"yes\" : \"no\"),\r\n \"Company=\" + $(\"[name=Company]\", el).val(),\r\n \"Number Of Employees=\" + $(\"[name=NumberOfEmployees]\", el).val(),\r\n \"Country=\" + country,\r\n \"ZipCode=\" + zipCode,\r\n \"Industry=\" + $(\"[name=Industry]\", el).val(),\r\n \"SubIndustry=\" + $(\"[name=SubIndustry]\", el).val(),\r\n \"Job Title=\" + $(\"[name=JobTitle]\", el).val(),\r\n \"LawJobTitle=\" + $(\"[name=LawJobTitle]\", el).val(),\r\n \"Population Served By Agency=\" + $(\"[name=PopulationServedByAgency]\", el).val(),\r\n \"RMS=\" + $(\"[name=Rms]\", el).val(),\r\n \"When Do You Intend To Purchase=\" + $(\"[name=WhenDoYouIntendToPurchase]\", el).val(),\r\n \"How Did You Hear About Us=\" + $(\"[name=HowDidYouHearAboutUs]\", el).val(),\r\n \"How Can We Help You=\" + ($(\"[name=HowCanWeHelpYou]\", el).val() ? \"yes\" : \"no\"),\r\n \"Mark Request As Urgent=\" + $(\"[name=MarkRequestAsUrgent]\", el).val(),\r\n \"Receive Email Notifications=\" + $(\"[name=ReceiveEmailNotifications]\", el).val(),\r\n \"Asset Url=\" + $(\"[name=AssetUrl]\", el).val(),\r\n \"Event Type=\" + $(\"[name=EventType]\", el).val(),\r\n \"Event Name=\" + $(\"[name=EventName]\", el).val(),\r\n \"Event Location Address=\" + $(\"[name=EventLocationAddress]\", el).val(),\r\n \"Asset Type=\" + $(\"[name=AssetType]\", el).val(),\r\n \"Asset Name=\" + $(\"[name=AssetName]\", el).val(),\r\n \"Product of Interest=\" + (($(\"[name=ProductOfInterest]\", el).val() == \"\" || $(\"[name=ProductOfInterest]\", el).val() == null) ? \"undefined\" : $(\"[name=ProductOfInterest]\", el).val()),\r\n \"Optanon Active Groups=\" + $(\"[name=OptanonActiveGroups]\", el).val(),\r\n \"Solution of Interest=\" + (($(\"[name=AreaOfInterest]\", el).val() == \"\" || $(\"[name=AreaOfInterest]\", el).val() == null) ? \"undefined\" : $(\"[name=AreaOfInterest]\", el).val()),\r\n \"Request Type=\" + $(\"[name=RequestType]\", el).val()\r\n ];\r\n return values;\r\n };\r\n EloquaMasterForm.prototype.onSuccessSubmit = function (data) {\r\n this.successLogic(data);\r\n };\r\n EloquaMasterForm.prototype.successLogic = function (data) {\r\n $('.score-well', this.options.scope).show().addClass(\"in\");\r\n this.form.hide();\r\n $('.score-well', this.options.scope)[0].scrollIntoView({ behavior: 'smooth' });\r\n var assetUrl = $('[name=\"AssetUrl\"]', this.options.scope).val();\r\n //LNRSSUP-549\r\n var hasAsset = !!($(\"[name=AssetUrl]\", this.options.scope).val());\r\n if (data === true) {\r\n console.log('eloqua form submit succeded');\r\n eventManager.trigger(events.global.formSubmitted, this.formName, this.piiSafeValues, this.submissionId, hasAsset);\r\n if ($(this.options.scope).find(\".lnrs-form.business-services-contact-form\").length > 0) {\r\n eventManager.trigger(\"VWOEvent\", this.vwoEventValues);\r\n }\r\n if (hasAsset) {\r\n eventManager.trigger(\"SuccessAsset\" + this.options.formId);\r\n }\r\n else {\r\n eventManager.trigger(\"SuccessContactUs\" + this.options.formId);\r\n }\r\n }\r\n if (this.options.isAutoResponderEnabled == true) {\r\n return;\r\n }\r\n //Set cookies for media asset form\r\n var hasVideoButton = $('.score-vimeo-video', this.options.scope);\r\n var isMediaAssetForm = this.options.scope.className.indexOf(\"media-asset-form\") !== -1;\r\n if (data === true && assetUrl && isMediaAssetForm && this.options.hasGatedLinkUrl) {\r\n $('.gated-url-redirect', this.options.scope).show();\r\n }\r\n else {\r\n if (assetUrl && assetUrl.indexOf(\"/media/\") > 0) {\r\n $('.download', this.options.scope).show();\r\n $('#download', this.options.scope).attr('href', assetUrl);\r\n if (assetUrl.indexOf('.pdf') != -1) {\r\n $('#download', this.options.scope).attr('target', '_blank');\r\n }\r\n }\r\n }\r\n if ((assetUrl && assetUrl.length > 0) || hasVideoButton.length > 0) {\r\n document.cookie = \"Id\" + this.options.pageId.Guid + \"_\" + this.options.itemId.Guid + \"= 1; expires = Fri, 31-Dec-9999 23:59:59 GMT\";\r\n }\r\n $('.video-button', this.options.scope).show();\r\n };\r\n EloquaMasterForm.prototype.submitAlways = function (data) {\r\n $('button[type=\"submit\"]', this.options.scope).prop('disabled', false);\r\n };\r\n EloquaMasterForm.prototype.onFailSubmit = function (data) {\r\n var error = data.responseJSON;\r\n errorHandler.logError(error);\r\n this.successLogic(data);\r\n };\r\n EloquaMasterForm.prototype.onCountryChanged = function (e) {\r\n var selectedCountry = e.target.value;\r\n var zipContainer = $('[name=\"ZipCode\"]', this.options.scope).closest('.form-group');\r\n // Set ZipCode for US or hide for other countries\r\n if ((selectedCountry == 'United States' || selectedCountry == 'USA')) {\r\n if (this.locationInfo.Country == 'United States' || this.locationInfo.Country == 'USA') {\r\n //set value of zipcode based on location\r\n if (this.locationInfo.ZipCode !== '') {\r\n $('[name=\"ZipCode\"]', this.options.scope).val(this.locationInfo.ZipCode);\r\n }\r\n }\r\n zipContainer.show();\r\n $('input[name=\"SkipZipCodeValidation\"]', this.options.scope).val('');\r\n }\r\n else {\r\n $('input[name=\"SkipZipCodeValidation\"]', this.options.scope).val('True');\r\n $('[name=\"ZipCode\"]', this.options.scope).val('');\r\n zipContainer.hide();\r\n }\r\n this.updateValidatePhone();\r\n var countryPhoneCodeSelect = $('[name=\"CountryPhoneCode\"]', this.options.scope);\r\n if (countryPhoneCodeSelect.length > 0) {\r\n if (countryPhoneCodeSelect.val() != selectedCountry) {\r\n countryPhoneCodeSelect.val(selectedCountry).change();\r\n }\r\n }\r\n };\r\n EloquaMasterForm.prototype.onIndustryChanged = function (e) {\r\n var selectedIndustry = e.target.value;\r\n if (e.target.className.indexOf('business-services-') === -1) {\r\n // Get sub industries for currently selected industry\r\n this.loadSubIndustries(selectedIndustry);\r\n if (e.target.classList.contains('uk-lead-form')) {\r\n this.updateAreaOfInterest(selectedIndustry);\r\n }\r\n else {\r\n // this property introduces additional logic for visibility of Area of Interest field\r\n if (!this.options.hasOwnProperty(\"treatmentMSIDToAreaOfInterestMap\")) {\r\n this.updateAreaOfInterestVisibility(selectedIndustry);\r\n }\r\n }\r\n // Show one of the JobTitle dropdowns based on industry\r\n this.showOneOfJobTitleDropdownsBasedOnIndustry(selectedIndustry);\r\n // Toggle keep me informed checkbox visibility based whether it's empty or not\r\n $('[name=\"ReceiveEmailNotificationsGlobal\"]', this.options.scope).closest('.form-group')\r\n .toggleClass('hidden', $('[name=\"Industry\"]', this.options.scope).val() === \"Insurance\");\r\n }\r\n };\r\n EloquaMasterForm.prototype.showOneOfJobTitleDropdownsBasedOnIndustry = function (industry) {\r\n var showJobTitle = industry != 'Law Enf. & Public safety';\r\n $('[name=\"JobTitle\"]', this.options.scope).closest('.form-group').toggleClass('hidden', !showJobTitle);\r\n $('[name=\"LawJobTitle\"]', this.options.scope).closest('.form-group').toggleClass('hidden', showJobTitle);\r\n };\r\n EloquaMasterForm.prototype.updateAreaOfInterestVisibility = function (industry) {\r\n //if (this.options.globalAreasOfInterest) {\r\n if (industry == 'Financial Services' || industry == 'Other') {\r\n $('.area-of-interests', this.options.scope).removeClass('hidden');\r\n $('input[name=\"SkipAreaOfInterestValidation\"]', this.options.scope).val('');\r\n }\r\n else {\r\n $('.area-of-interests', this.options.scope).addClass('hidden');\r\n $('input[name=\"SkipAreaOfInterestValidation\"]', this.options.scope).val('True');\r\n }\r\n //}\r\n };\r\n EloquaMasterForm.prototype.updateAreaOfInterest = function (industry) {\r\n if (this.options.ukAreaOfInterest && this.options.ukAreaOfIntersetForInsurance) {\r\n if (industry == 'Insurance') {\r\n this.rebuildAreaOfInterest(this.options.ukAreaOfIntersetForInsurance);\r\n }\r\n else {\r\n this.rebuildAreaOfInterest(this.options.ukAreaOfInterest);\r\n }\r\n }\r\n };\r\n EloquaMasterForm.prototype.loadSubIndustries = function (industry) {\r\n var languageName = $('[name=\"LanguageName\"]', this.options.scope).val();\r\n var itemWebApiUrl = \"/-/item/v2/?language=\" + languageName + \"&fields=value|text&query=\";\r\n var query = \"/sitecore/content/LNRS/LNRS Settings//*[@@id='{1B17982E-9223-4AA2-8A32-DBF317CCF858}']/*[@Value='\" + industry + \"']/*\";\r\n var encodedQuery = encodeURIComponent(query);\r\n // Handle situation when industry is not selected\r\n if (!industry) {\r\n this.onSubIndustryDataLoaded({ result: [] });\r\n return;\r\n }\r\n $.ajax({\r\n url: itemWebApiUrl + encodedQuery,\r\n method: 'get',\r\n cache: true\r\n })\r\n .done(this.onSubIndustryDataLoaded.bind(this));\r\n };\r\n EloquaMasterForm.prototype.onSubIndustryDataLoaded = function (data) {\r\n var items = data.result.items;\r\n var subIndustryItems = [];\r\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\r\n var item = items_1[_i];\r\n if (item.Fields['{FF438BF6-9409-45F5-ABEA-CA2049239A0F}'].Value)\r\n subIndustryItems.push(item);\r\n }\r\n this.rebuildSubIndustryDropdown(subIndustryItems);\r\n $('[name=\"SubIndustry\"]', this.options.scope).closest('.btn-group')\r\n .removeClass('input-validation-error');\r\n // Toggle SubIndustry dropdown validation based whether it's empty or not\r\n $('[name=\"SkipSubIndustryValidation\"]', this.options.scope).val(subIndustryItems.length ? '' : 'True');\r\n //Skip Law Enforcement validation by default to remove Subindustry error message on page load\r\n $('[name=\"SkipValidationForFieldsBasedOnSpecificSubIndustry\"]', this.options.scope)\r\n .val('True');\r\n // Toggle SubIndustry dropdown visibility based whether it's empty or not\r\n $('[name=\"SubIndustry\"]', this.options.scope).closest('.form-group')\r\n .toggleClass('hidden', !subIndustryItems.length);\r\n eventManager.trigger(\"SubIndustriesLoaded\");\r\n };\r\n EloquaMasterForm.prototype.rebuildAreaOfInterest = function (areaOfInterests) {\r\n var label = $(\"label[for='AreaOfInterest']\");\r\n var areaOfInterestLabel = label.html();\r\n var industryLabel = $(\"label[for='Industry']\").html();\r\n var selectedIndustryOption = $('[name=\"Industry\"] option:selected', this.options.scope);\r\n var selectedIndustryTitle = selectedIndustryOption.val();\r\n if (industryLabel != selectedIndustryTitle && this.options.ukAreaOfInterestVisible) {\r\n $('.area-of-interests', this.options.scope).removeClass('hidden');\r\n }\r\n var options = [];\r\n if (this.options.ukAreaOfInterestVisible) {\r\n for (var _i = 0, areaOfInterests_1 = areaOfInterests; _i < areaOfInterests_1.length; _i++) {\r\n var item = areaOfInterests_1[_i];\r\n var option = {\r\n text: item.Text,\r\n value: item.Value,\r\n selected: item.Text == this.options.ukPreselectedAreaOfInterest,\r\n disabled: false\r\n };\r\n options.push(option);\r\n }\r\n }\r\n else {\r\n var option = {\r\n text: this.options.ukPreselectedAreaOfInterest,\r\n value: this.options.ukPreselectedAreaOfInterest,\r\n selected: true,\r\n disabled: false\r\n };\r\n options.push(option);\r\n }\r\n var template = '{{#.}}{{/.}}';\r\n var mustache = require('mustache');\r\n var html = mustache.render(template, options);\r\n var areaOfInterestsSelect = $('[name=\"AreaOfInterest\"]', this.options.scope);\r\n areaOfInterestsSelect.html(html);\r\n areaOfInterestsSelect.selectpicker('refresh');\r\n };\r\n EloquaMasterForm.prototype.rebuildSubIndustryDropdown = function (subIndustryItems) {\r\n var subIndustrySelect = $('[name=\"SubIndustry\"]', this.options.scope);\r\n // Get SubIndustry dropdown title\r\n var selectedIndustryOption = $('[name=\"Industry\"] option:selected', this.options.scope);\r\n var industryTitle = selectedIndustryOption.val() ?\r\n selectedIndustryOption.text() :\r\n subIndustrySelect.data('industry-title');\r\n var subIndustryTitle = '';\r\n var subIndustryDataTitle = subIndustrySelect.data('sub-industry-title');\r\n if (typeof subIndustryDataTitle != 'undefined') {\r\n subIndustryTitle = subIndustryDataTitle;\r\n }\r\n else {\r\n var label = $(\"label[for='\" + subIndustrySelect.attr('id') + \"']\");\r\n subIndustryTitle = label.html();\r\n }\r\n var defaultTitle = industryTitle + ' ' + subIndustryTitle;\r\n // Build dropdown options\r\n // defaultOption should have 'disabled: false' due to a bug in Score https://brainjocks.atlassian.net/browse/SCORE-1585\r\n // otherwise validation treats disabled value as valid one\r\n var defaultOption = {\r\n text: defaultTitle, value: null, selected: true, disabled: false\r\n };\r\n var options = [defaultOption];\r\n for (var _i = 0, subIndustryItems_1 = subIndustryItems; _i < subIndustryItems_1.length; _i++) {\r\n var item = subIndustryItems_1[_i];\r\n var option = {\r\n text: item.Fields['{FF438BF6-9409-45F5-ABEA-CA2049239A0F}'].Value,\r\n value: item.Fields['{39BC23A7-4842-431A-ACED-F0A15EAB496D}'].Value,\r\n selected: false,\r\n disabled: false\r\n };\r\n options.push(option);\r\n }\r\n // render dropdown options\r\n var template = '{{#.}}{{/.}}';\r\n var mustache = require('mustache');\r\n var html = mustache.render(template, options);\r\n subIndustrySelect.html(html);\r\n // refresh selectpicker to have new options\r\n subIndustrySelect.selectpicker('refresh');\r\n // Fire change event since dropdown is changed to notify other fields that depend on sub industry\r\n // subIndustrySelect.trigger('change');\r\n };\r\n EloquaMasterForm.prototype.onSubIndustryChanged = function (e) {\r\n var selectedSubIndustry = e.target.value;\r\n var subIndustriesToCheck = [\r\n 'LEPS: Citizen Online Reporting',\r\n 'LEPS: Crash Reporting',\r\n 'LEPS: Personnel Training',\r\n 'LEPS: Scheduling Software'\r\n ];\r\n var isMatched = subIndustriesToCheck.some(function (s) { return s == selectedSubIndustry; });\r\n // Toggle fields visibility based selected sub industry\r\n $('[name=\"PopulationServedByAgency\"]', this.options.scope).closest('.form-group')\r\n .toggleClass('hidden', !isMatched);\r\n $('[name=\"Rms\"]', this.options.scope).closest('.form-group')\r\n .toggleClass('hidden', !isMatched);\r\n $('[name=\"WhenDoYouIntendToPurchase\"]', this.options.scope).closest('.form-group')\r\n .toggleClass('hidden', !isMatched);\r\n $('[name=\"HowDidYouHearAboutUs\"]', this.options.scope).closest('.form-group')\r\n .toggleClass('hidden', !isMatched);\r\n // Enable validation if selected sub industry is in the list of specific sub industries\r\n $('[name=\"SkipValidationForFieldsBasedOnSpecificSubIndustry\"]', this.options.scope)\r\n .val(isMatched ? '' : 'True');\r\n };\r\n return EloquaMasterForm;\r\n }());\r\n function init(args) {\r\n new EloquaMasterForm(args);\r\n }\r\n return init;\r\n});\r\n///\r\ndefine(\"Components/Resources/MasonryResourceListing\", [\"require\", \"exports\", \"jquery\", \"Utility/SiteContext\", \"instantsearch\", \"Globalization/Dictionary\", \"hierarchicalmenuwidget\", \"text!Components/Resources/Templates/MasonryResourceListingItem.html\", \"matchHeight\"], function (require, exports, $, siteContext, instantsearch, dictionary, hierarchicalmenuwidget) {\r\n \"use strict\";\r\n //declare namespace MasonryResourceListing {\r\n //}\r\n var MasonryResourceListing = /** @class */ (function () {\r\n function MasonryResourceListing(args) {\r\n var _this = this;\r\n this.transformHitItem = function (hit) {\r\n var isDownloadItem = hit[\"_template\"] === '{3760C9B0-040B-441B-89D4-D36F0DD765AA}';\r\n hit[\"readMore\"] = _this.options.readMore;\r\n hit[\"_resource_type\"] = dictionary.translate(hit[\"_resource_type\"]);\r\n hit[\"isDownloadItem\"] = isDownloadItem;\r\n hit[\"url\"] = isDownloadItem ? hit[\"link to pdf\"] : hit[\"url\"];\r\n //LNRSSUP-324\r\n var tileDescription = hit[\"tile description\"];\r\n if (tileDescription) {\r\n if (tileDescription.length > 0) {\r\n hit[\"meta description\"] = tileDescription;\r\n }\r\n }\r\n return hit;\r\n };\r\n this.options = args;\r\n this.scope = args.scope;\r\n this.resourceTypeContainer = this.scope.querySelector('[data-id=\"resource-types\"]');\r\n this.solutionContainer = this.scope.querySelector('[data-id=\"solutions\"]');\r\n }\r\n MasonryResourceListing.prototype.init = function () {\r\n this.search = instantsearch({\r\n appId: this.options.algoliaAppId,\r\n apiKey: this.options.algoliaApiKey,\r\n indexName: this.options.algoliaIndexName,\r\n urlSync: {\r\n trackedParameters: ['query', 'attribute:*', 'index', 'hitsPerPage'] //not sync page as it causes issues with back button\r\n },\r\n searchParameters: {\r\n facets: [\"_language\"],\r\n facetsRefinements: {\r\n _language: [siteContext.getContextLanguage()]\r\n },\r\n disjunctiveFacets: [\"_template\"],\r\n disjunctiveFacetsRefinements: {\r\n _template: ['{351839DE-0AA0-448A-8832-2429282C1B78}', '{3760C9B0-040B-441B-89D4-D36F0DD765AA}']\r\n }\r\n }\r\n });\r\n this.search.on('render', this.onRender.bind(this));\r\n $(document).on(\"click\", this.onDocumentClick.bind(this));\r\n this.initHits();\r\n this.initIndustryFilter();\r\n this.initResourceTypeFilter();\r\n this.initSolutionFilter();\r\n this.search.start();\r\n this.checkUrlResourceFacet();\r\n this.filterButtonCollapse();\r\n };\r\n MasonryResourceListing.prototype.checkUrlResourceFacet = function () {\r\n if (typeof this.search.helper.state.hierarchicalFacetsRefinements['_resource_type'] === 'undefined') {\r\n var resourceFacet = '';\r\n if (window.location.href.includes('insights-resources/article')) {\r\n resourceFacet = dictionary.translate('Article');\r\n }\r\n else if (window.location.href.includes('insights-resources/brochure')) {\r\n resourceFacet = dictionary.translate('Brochure');\r\n }\r\n else if (window.location.href.includes('insights-resources/case-study')) {\r\n resourceFacet = dictionary.translate('Case Study');\r\n }\r\n else if (window.location.href.includes('insights-resources/infographic')) {\r\n resourceFacet = dictionary.translate('Infographic');\r\n }\r\n else if (window.location.href.includes('insights-resources/presentation')) {\r\n resourceFacet = dictionary.translate('Presentation');\r\n }\r\n else if (window.location.href.includes('insights-resources/research')) {\r\n resourceFacet = dictionary.translate('Research');\r\n }\r\n else if (window.location.href.includes('insights-resources/video')) {\r\n resourceFacet = dictionary.translate('Video');\r\n }\r\n else if (window.location.href.includes('insights-resources/webinar')) {\r\n resourceFacet = dictionary.translate('Webinar');\r\n }\r\n else if (window.location.href.includes('insights-resources/white-paper')) {\r\n resourceFacet = dictionary.translate('White Paper');\r\n }\r\n else if (window.location.href.includes('insights-resources/podcast')) {\r\n resourceFacet = dictionary.translate('Podcast');\r\n }\r\n else if (window.location.href.includes('insights-resources/blog-post')) {\r\n resourceFacet = dictionary.translate('Blog Post');\r\n }\r\n else if (window.location.href.includes('insights-resources/e-book')) {\r\n resourceFacet = dictionary.translate('E-Book');\r\n }\r\n if (resourceFacet.length > 0) {\r\n this.search.helper.toggleFacetRefinement('_resource_type', resourceFacet);\r\n this.search.helper.search();\r\n }\r\n }\r\n };\r\n MasonryResourceListing.prototype.initHits = function () {\r\n var hitsElement = this.scope.querySelector(\".masonry-resource-listing-hits\");\r\n var searchResultWidget = instantsearch.widgets.infiniteHits({\r\n container: hitsElement,\r\n templates: {\r\n empty: dictionary.translate('No Results'),\r\n item: require('text!Components/Resources/Templates/MasonryResourceListingItem.html')\r\n },\r\n transformData: {\r\n item: this.transformHitItem.bind(this)\r\n },\r\n showMoreLabel: dictionary.translate('Load More'),\r\n hitsPerPage: this.getNumberOfTilesPerPageBasedOnDevice()\r\n });\r\n this.search.addWidget(searchResultWidget);\r\n };\r\n MasonryResourceListing.prototype.initIndustryFilter = function () {\r\n this.industryFilterWidget = hierarchicalmenuwidget(this.options.algoliaAppId, this.options.algoliaApiKey, this.options.algoliaIndexName, siteContext.getContextLanguage(), this.search, 2, dictionary.translate('All Industries'), '[data-id=\"industries\"]', \"hierarchical industries\", \"lvl0\", \"lvl1\", [\"hierarchical industries.lvl0\", \"hierarchical industries.lvl1\"], this.options.industriesWithSubIndustries, null, null);\r\n this.search.addWidget(this.industryFilterWidget.widget);\r\n };\r\n MasonryResourceListing.prototype.initResourceTypeFilter = function () {\r\n var widget = instantsearch.widgets.menu({\r\n container: this.resourceTypeContainer,\r\n attributeName: '_resource_type',\r\n sortBy: ['name:asc', 'count:desc'],\r\n autoHideContainer: false,\r\n templates: {\r\n header: dictionary.translate('All Resource Types')\r\n },\r\n collapsible: {\r\n collapsible: true,\r\n collapsed: true\r\n }\r\n });\r\n this.search.addWidget(widget);\r\n };\r\n MasonryResourceListing.prototype.initSolutionFilter = function () {\r\n var widget = instantsearch.widgets.menu({\r\n container: this.solutionContainer,\r\n sortBy: ['name:asc', 'count:desc'],\r\n attributeName: 'solutions',\r\n autoHideContainer: false,\r\n templates: {\r\n header: dictionary.translate('All Solutions')\r\n },\r\n collapsible: {\r\n collapsible: true,\r\n collapsed: true\r\n }\r\n });\r\n this.search.addWidget(widget);\r\n };\r\n MasonryResourceListing.prototype.onRender = function () {\r\n this.industryFilterWidget.onRenderCallback();\r\n this.onResourceTypeFilterRender();\r\n this.onSolutionFilterRender();\r\n var offset = window.pageYOffset;\r\n $.fn.matchHeight._apply($('.masonry-resource-listing-item'));\r\n $.fn.matchHeight._maintainScroll = true;\r\n $(document).scrollTop(offset);\r\n $('.masonry-resource-listing-item').hover(function (e) {\r\n e.preventDefault();\r\n var $link = $(e.currentTarget).find('.masonry-resource-listing-item-link');\r\n if ($link.length) {\r\n $link.show();\r\n }\r\n }, function (e) {\r\n e.preventDefault();\r\n var $link = $(e.currentTarget).find('.masonry-resource-listing-item-link');\r\n if ($link.length) {\r\n $link.removeAttr('style');\r\n }\r\n });\r\n };\r\n MasonryResourceListing.prototype.onResourceTypeFilterRender = function () {\r\n // Update header box with currently selected value\r\n var facet = this.search.helper.state.hierarchicalFacetsRefinements['_resource_type'];\r\n var selectedValue = facet && facet[0] ?\r\n facet[0] :\r\n dictionary.translate('All Resource Types');\r\n var headerContainer = this.resourceTypeContainer.querySelector(\".ais-header\");\r\n headerContainer.textContent = selectedValue;\r\n // disable the dropdown if no options\r\n this.disableDropdownIfNoOptions($(headerContainer).closest('div[data-id]'));\r\n };\r\n MasonryResourceListing.prototype.onSolutionFilterRender = function () {\r\n var facet = this.search.helper.state.hierarchicalFacetsRefinements['solutions'];\r\n var selectedValue = facet && facet[0] ?\r\n facet[0] :\r\n dictionary.translate('All Solutions');\r\n var headerContainer = this.solutionContainer.querySelector(\".ais-header\");\r\n headerContainer.textContent = selectedValue;\r\n // disable the dropdown if no options\r\n this.disableDropdownIfNoOptions($(headerContainer).closest('div[data-id]'));\r\n };\r\n MasonryResourceListing.prototype.disableDropdownIfNoOptions = function (dropdownContainer) {\r\n var shouldDisable = dropdownContainer.find('.ais-menu--list').children().length === 0;\r\n dropdownContainer.toggleClass('masonry-resource-listing-filter-disabled', shouldDisable);\r\n };\r\n MasonryResourceListing.prototype.stopEventPropagation = function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n };\r\n MasonryResourceListing.prototype.closeAllExceptSelector = function (dropdowns, selector) {\r\n for (var i = 0; i < dropdowns.length; i++) {\r\n if (!($(dropdowns[i]).closest(selector).length > 0)) {\r\n dropdowns[i].classList.add('ais-root__collapsed');\r\n }\r\n }\r\n };\r\n MasonryResourceListing.prototype.closeAllDropDownsExceptClicked = function (target) {\r\n var allDropDowns = this.scope.querySelectorAll(\".ais-root__collapsible\");\r\n var industries = target.closest('div[data-id=\"industries\"]');\r\n if (industries.length > 0) {\r\n this.closeAllExceptSelector(allDropDowns, 'div[data-id=\"industries\"]');\r\n }\r\n var resourceTypes = target.closest('div[data-id=\"resource-types\"]');\r\n if (resourceTypes.length > 0) {\r\n this.closeAllExceptSelector(allDropDowns, 'div[data-id=\"resource-types\"]');\r\n }\r\n var solutions = target.closest('div[data-id=\"solutions\"]');\r\n if (solutions.length > 0) {\r\n this.closeAllExceptSelector(allDropDowns, 'div[data-id=\"solutions\"]');\r\n }\r\n };\r\n MasonryResourceListing.prototype.onDocumentClick = function (e) {\r\n var target = $(e.target);\r\n var allIndustryLable = dictionary.translate('All Industries');\r\n var allResourcesLabel = dictionary.translate('All Resource Types');\r\n var allSolutionsLabel = dictionary.translate('All Solutions');\r\n var search = this.search;\r\n this.closeAllDropDownsExceptClicked(target.parent());\r\n //LNRSSUP-494 close industires dropdown even if there is sub industries to list\r\n if (target.hasClass('ais-hierarchical-menu--item') || target.hasClass('ais-hierarchical-menu--link')) {\r\n console.log(target);\r\n var industries = target.closest('div[data-id=\"industries\"]');\r\n if (industries.length > 0) {\r\n var dropDown = target.closest('.ais-root__collapsible');\r\n dropDown.addClass('ais-root__collapsed');\r\n }\r\n }\r\n if ((target.hasClass('ais-menu--header') || target.hasClass('ais-hierarchical-menu--header')) && target.parent().hasClass('ais-root__collapsed')) {\r\n target.parent().removeClass('ais-root__collapsed');\r\n // Make hierarchical menu widget uncontrolled by React as well as rest\r\n if (target.parent().parent().data('id') === 'industries') {\r\n if (target.text() !== allIndustryLable) {\r\n target.text(allIndustryLable);\r\n }\r\n this.stopEventPropagation(e);\r\n }\r\n if (target.parent().parent().data('id') === 'resource-types') {\r\n if (target.text() !== allResourcesLabel) {\r\n target.text(allResourcesLabel);\r\n }\r\n this.stopEventPropagation(e);\r\n }\r\n else if (target.parent().parent().data('id') === 'solutions') {\r\n if (target.text() !== allSolutionsLabel) {\r\n target.text(allSolutionsLabel);\r\n }\r\n this.stopEventPropagation(e);\r\n }\r\n }\r\n else if (target.hasClass('ais-menu--header') && !target.parent().hasClass('ais-root__collapsed') && target.text() === allResourcesLabel) {\r\n search.helper.clearRefinements('_resource_type');\r\n search.helper.search();\r\n }\r\n else if (target.hasClass('ais-menu--header') && !target.parent().hasClass('ais-root__collapsed') && target.text() === allSolutionsLabel) {\r\n search.helper.clearRefinements('solutions');\r\n search.helper.search();\r\n }\r\n else {\r\n if (target.parent().parent().data('id') === 'resource-types') {\r\n this.onResourceTypeFilterRender();\r\n }\r\n else if (target.parent().parent().data('id') === 'solutions') {\r\n this.onSolutionFilterRender();\r\n }\r\n }\r\n if (!target.parent('[data-id=\"resource-types\"]').length && !target.hasClass('ais-menu--header')) {\r\n if (!$('[data-id=\"resource-types\"]').find('.ais-menu').hasClass('ais-root__collapsed')) {\r\n var resourcesFacet = search.helper.state.hierarchicalFacetsRefinements['_resource_type'];\r\n var resorcesHeaderContainer = $('[data-id=\"resource-types\"]').find('.ais-header');\r\n if (resourcesFacet && resourcesFacet[0]) {\r\n resorcesHeaderContainer.text(resourcesFacet[0]);\r\n }\r\n resorcesHeaderContainer.click();\r\n }\r\n }\r\n if (!target.parent('[data-id=\"solutions\"]').length && !target.hasClass('ais-menu--header')) {\r\n if (!$('[data-id=\"solutions\"]').find('.ais-menu').hasClass('ais-root__collapsed')) {\r\n var solutionsFacet = search.helper.state.hierarchicalFacetsRefinements['solutions'];\r\n var solutionsHeaderContainer = $('[data-id=\"solutions\"]').find('.ais-header');\r\n if (solutionsFacet && solutionsFacet[0]) {\r\n solutionsHeaderContainer.text(solutionsFacet[0]);\r\n }\r\n solutionsHeaderContainer.click();\r\n }\r\n }\r\n };\r\n MasonryResourceListing.prototype.getLayoutType = function () {\r\n var w = window.innerWidth;\r\n return w < 768 ? \"Mobile\" : w >= 768 && w <= 991 ? \"Tablet\" : \"Desktop\";\r\n };\r\n MasonryResourceListing.prototype.filterButtonCollapse = function () {\r\n $('.btn-filter').on('click', function (e) {\r\n e.preventDefault();\r\n });\r\n $('.score-center').off('click');\r\n if ($(window).width() < 992) {\r\n $('.score-center').on('click', '.btn-filter', function () {\r\n $('.masonry-resource-listing-filters').slideToggle();\r\n });\r\n $('.masonry-resource-listing-filters').hide();\r\n }\r\n };\r\n ;\r\n MasonryResourceListing.prototype.getNumberOfTilesPerPageBasedOnDevice = function () {\r\n var numberOfTiles;\r\n var layoutType = this.getLayoutType();\r\n switch (layoutType) {\r\n case \"Tablet\":\r\n numberOfTiles = this.options.numberOfTilesForTablet;\r\n break;\r\n case \"Mobile\":\r\n numberOfTiles = this.options.numberOfTilesForMobile;\r\n break;\r\n default:\r\n numberOfTiles = this.options.numberOfTilesForDesktop;\r\n break;\r\n }\r\n if (numberOfTiles == null || numberOfTiles === 0) {\r\n numberOfTiles = 9;\r\n }\r\n return numberOfTiles;\r\n };\r\n return MasonryResourceListing;\r\n }());\r\n function init(args) {\r\n var component = new MasonryResourceListing(args);\r\n component.init();\r\n }\r\n return init;\r\n});\r\n///\r\ndefine(\"Components/Validation/ReCaptcha\", [\"require\", \"exports\", \"jquery\", \"eventManager\"], function (require, exports, $) {\r\n \"use strict\";\r\n var eventManager = require(\"eventManager\");\r\n var ReCaptcha = /** @class */ (function () {\r\n function ReCaptcha(options) {\r\n this.options = options;\r\n this.form = $(this.options.scope).closest(\"form\");\r\n }\r\n ReCaptcha.prototype.init = function () {\r\n this.enableCaptchaValidation();\r\n eventManager.subscribe('RecaptchaApiLoaded', this.onCaptchaApiLoaded.bind(this));\r\n };\r\n ReCaptcha.prototype.onCaptchaApiLoaded = function () {\r\n var captchaContainer = $('.g-recaptcha', this.options.scope).get(0);\r\n grecaptcha.render(captchaContainer, {\r\n sitekey: this.options.siteKey,\r\n callback: this.onCaptchaVerified.bind(this),\r\n 'expired-callback': this.onCaptchaExpired.bind(this)\r\n });\r\n };\r\n /**\r\n Enable Jquery Unobtrusive Validation for Google ReCaptcha.\r\n **/\r\n ReCaptcha.prototype.enableCaptchaValidation = function () {\r\n var formValidator = this.form.data(\"validator\");\r\n formValidator.settings.ignore = \":hidden:not([data-recaptcha])\";\r\n };\r\n ReCaptcha.prototype.onCaptchaVerified = function (response) {\r\n // Set any value to bypass Required client side validation\r\n $('[data-recaptcha]', this.options.scope).val(response).validate();\r\n //form.validate().element('#FieldId');\r\n };\r\n ReCaptcha.prototype.onCaptchaExpired = function () {\r\n $('[data-recaptcha]', this.options.scope).val();\r\n console.log('captcha expired.');\r\n };\r\n return ReCaptcha;\r\n }());\r\n function init(args) {\r\n var captcha = new ReCaptcha(args);\r\n captcha.init();\r\n }\r\n return init;\r\n});\r\ndefine(\"Utility/GeoService\", [\"require\", \"exports\", \"jquery\", \"geoip\"], function (require, exports, $, geoip) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var GeoService = /** @class */ (function () {\r\n function GeoService() {\r\n this.deferred = $.Deferred();\r\n }\r\n GeoService.prototype.GetLocationInfoAsync = function () {\r\n geoip.city(this.onSuccess.bind(this), this.onError.bind(this));\r\n return this.deferred.promise();\r\n };\r\n GeoService.prototype.onSuccess = function (geoipResponse) {\r\n if (geoipResponse) {\r\n var countryData = geoipResponse.country;\r\n var postalData = geoipResponse.postal;\r\n this.locationInfo = {\r\n country: countryData != null ? countryData.names.en : '',\r\n countryCode: countryData != null ? countryData.iso_code : '',\r\n zipCode: postalData != null ? postalData.code : ''\r\n };\r\n }\r\n ;\r\n this.deferred.resolve(this.locationInfo);\r\n };\r\n ;\r\n GeoService.prototype.onError = function (error) {\r\n this.deferred.resolve();\r\n };\r\n ;\r\n return GeoService;\r\n }());\r\n exports.GeoService = GeoService;\r\n});\r\n//# sourceMappingURL=ts.bundle.js.map;\ndefine(\"Areas/LNRS/js/ts.bundle\", function(){});\n\n", "/*! loglevel - v1.6.8 - https://github.com/pimterry/loglevel - (c) 2020 Tim Perry - licensed MIT */\r\n!function(a,b){\"use strict\";\"function\"==typeof define&&define.amd?define('loglevel',b):\"object\"==typeof module&&module.exports?module.exports=b():a.log=b()}(this,function(){\"use strict\";function a(a,b){var c=a[b];if(\"function\"==typeof c.bind)return c.bind(a);try{return Function.prototype.bind.call(c,a)}catch(b){return function(){return Function.prototype.apply.apply(c,[a,arguments])}}}function b(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function c(c){return\"debug\"===c&&(c=\"log\"),typeof console!==i&&(\"trace\"===c&&j?b:void 0!==console[c]?a(console,c):void 0!==console.log?a(console,\"log\"):h)}function d(a,b){for(var c=0;c=0&&b<=j.levels.SILENT))throw\"log.setLevel() called with invalid level: \"+b;if(h=b,!1!==c&&e(b),d.call(j,b,a),typeof console===i&&b+~]|\"+M+\")\"+M+\"*\"),U=new RegExp(M+\"|>\"),X=new RegExp(F),V=new RegExp(\"^\"+I+\"$\"),G={ID:new RegExp(\"^#(\"+I+\")\"),CLASS:new RegExp(\"^\\\\.(\"+I+\")\"),TAG:new RegExp(\"^(\"+I+\"|[*])\"),ATTR:new RegExp(\"^\"+W),PSEUDO:new RegExp(\"^\"+F),CHILD:new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\"+M+\"*(even|odd|(([+-]|)(\\\\d*)n|)\"+M+\"*(?:([+-]|)\"+M+\"*(\\\\d+)|))\"+M+\"*\\\\)|)\",\"i\"),bool:new RegExp(\"^(?:\"+R+\")$\",\"i\"),needsContext:new RegExp(\"^\"+M+\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\"+M+\"*((?:-\\\\d)?\\\\d*)\"+M+\"*\\\\)|)(?=[^-]|$)\",\"i\")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\\d$/i,K=/^[^{]+\\{\\s*\\[native \\w/,Z=/^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,ee=/[+~]/,te=new RegExp(\"\\\\\\\\[\\\\da-fA-F]{1,6}\"+M+\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\",\"g\"),ne=function(e,t){var n=\"0x\"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,ie=function(e,t){return t?\"\\0\"===e?\"\\ufffd\":e.slice(0,-1)+\"\\\\\"+e.charCodeAt(e.length-1).toString(16)+\" \":\"\\\\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&\"fieldset\"===e.nodeName.toLowerCase()},{dir:\"parentNode\",next:\"legend\"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],\"string\"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+\" \"]&&(!v||!v.test(t))&&(1!==p||\"object\"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute(\"id\"))?s=s.replace(re,ie):e.setAttribute(\"id\",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?\"#\"+s:\":scope\")+\" \"+xe(l[o]);c=l.join(\",\")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute(\"id\")}}}return g(t.replace($,\"$1\"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+\" \")>b.cacheLength&&delete e[r.shift()],e[t+\" \"]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement(\"fieldset\");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split(\"|\"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return\"input\"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return(\"input\"===t||\"button\"===t)&&e.type===n}}function ge(t){return function(e){return\"form\"in e?e.parentNode&&!1===e.disabled?\"label\"in e?\"label\"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:\"label\"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&\"undefined\"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||\"HTML\")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener(\"unload\",oe,!1):n.attachEvent&&n.attachEvent(\"onunload\",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement(\"div\")),\"undefined\"!=typeof e.querySelectorAll&&!e.querySelectorAll(\":scope fieldset div\").length}),d.attributes=ce(function(e){return e.className=\"i\",!e.getAttribute(\"className\")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment(\"\")),!e.getElementsByTagName(\"*\").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute(\"id\")===t}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t=\"undefined\"!=typeof e.getAttributeNode&&e.getAttributeNode(\"id\");return t&&t.value===n}},b.find.ID=function(e,t){if(\"undefined\"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode(\"id\"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return\"undefined\"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if(\"*\"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if(\"undefined\"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML=\"\",e.querySelectorAll(\"[msallowcapture^='']\").length&&v.push(\"[*^$]=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\"[selected]\").length||v.push(\"\\\\[\"+M+\"*(?:value|\"+R+\")\"),e.querySelectorAll(\"[id~=\"+S+\"-]\").length||v.push(\"~=\"),(t=C.createElement(\"input\")).setAttribute(\"name\",\"\"),e.appendChild(t),e.querySelectorAll(\"[name='']\").length||v.push(\"\\\\[\"+M+\"*name\"+M+\"*=\"+M+\"*(?:''|\\\"\\\")\"),e.querySelectorAll(\":checked\").length||v.push(\":checked\"),e.querySelectorAll(\"a#\"+S+\"+*\").length||v.push(\".#.+[+~]\"),e.querySelectorAll(\"\\\\\\f\"),v.push(\"[\\\\r\\\\n\\\\f]\")}),ce(function(e){e.innerHTML=\"\";var t=C.createElement(\"input\");t.setAttribute(\"type\",\"hidden\"),e.appendChild(t).setAttribute(\"name\",\"D\"),e.querySelectorAll(\"[name=d]\").length&&v.push(\"name\"+M+\"*[*^$|!~]?=\"),2!==e.querySelectorAll(\":enabled\").length&&v.push(\":enabled\",\":disabled\"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(\":disabled\").length&&v.push(\":enabled\",\":disabled\"),e.querySelectorAll(\"*,:x\"),v.push(\",.*:\")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,\"*\"),c.call(e,\"[s!='']:x\"),s.push(\"!=\",F)}),v=v.length&&new RegExp(v.join(\"|\")),s=s.length&&new RegExp(s.join(\"|\")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+\" \"]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0\":{dir:\"parentNode\",first:!0},\" \":{dir:\"parentNode\"},\"+\":{dir:\"previousSibling\",first:!0},\"~\":{dir:\"previousSibling\"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||\"\").replace(te,ne),\"~=\"===e[2]&&(e[3]=\" \"+e[3]+\" \"),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),\"nth\"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*(\"even\"===e[3]||\"odd\"===e[3])),e[5]=+(e[7]+e[8]||\"odd\"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||\"\":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(\")\",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return\"*\"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+\" \"];return t||(t=new RegExp(\"(^|\"+M+\")\"+e+\"(\"+M+\"|$)\"))&&m(e,function(e){return t.test(\"string\"==typeof e.className&&e.className||\"undefined\"!=typeof e.getAttribute&&e.getAttribute(\"class\")||\"\")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?\"!=\"===r:!r||(t+=\"\",\"=\"===r?t===i:\"!=\"===r?t!==i:\"^=\"===r?i&&0===t.indexOf(i):\"*=\"===r?i&&-1\",\"#\"===e.firstChild.getAttribute(\"href\")})||fe(\"type|href|height|width\",function(e,t,n){if(!n)return e.getAttribute(t,\"type\"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML=\"\",e.firstChild.setAttribute(\"value\",\"\"),\"\"===e.firstChild.getAttribute(\"value\")})||fe(\"value\",function(e,t,n){if(!n&&\"input\"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute(\"disabled\")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[\":\"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):\"string\"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,\"string\"==typeof e){if(!(r=\"<\"===e[0]&&\">\"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\\x20\\t\\r\\n\\f]*)/i,he=/^$|^module$|\\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement(\"div\")),(fe=E.createElement(\"input\")).setAttribute(\"type\",\"radio\"),fe.setAttribute(\"checked\",\"checked\"),fe.setAttribute(\"name\",\"t\"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML=\"\",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML=\"\",y.option=!!ce.lastChild;var ge={thead:[1,\"\",\"
\"],col:[2,\"\",\"
\"],tr:[2,\"\",\"
\"],td:[3,\"\",\"
\"],_default:[0,\"\",\"\"]};function ve(e,t){var n;return n=\"undefined\"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||\"*\"):\"undefined\"!=typeof e.querySelectorAll?e.querySelectorAll(t||\"*\"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n\",\"\"]);var me=/<|&#?\\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\\s*$/g;function qe(e,t){return A(e,\"table\")&&A(11!==t.nodeType?t:t.firstChild,\"tr\")&&S(e).children(\"tbody\")[0]||e}function Le(e){return e.type=(null!==e.getAttribute(\"type\"))+\"/\"+e.type,e}function He(e){return\"true/\"===(e.type||\"\").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute(\"type\"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,\"handle events\"),s)for(n=0,r=s[i].length;n\").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on(\"load error\",i=function(e){r.remove(),i=null,e&&t(\"error\"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\\?(?=&|$)|\\?\\?/;S.ajaxSetup({jsonp:\"callback\",jsonpCallback:function(){var e=Xt.pop()||S.expando+\"_\"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter(\"json jsonp\",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?\"url\":\"string\"==typeof e.data&&0===(e.contentType||\"\").indexOf(\"application/x-www-form-urlencoded\")&&Vt.test(e.data)&&\"data\");if(a||\"jsonp\"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,\"$1\"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?\"&\":\"?\")+e.jsonp+\"=\"+r),e.converters[\"script json\"]=function(){return o||S.error(r+\" was not called\"),o[0]},e.dataTypes[0]=\"json\",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),\"script\"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument(\"\").body).innerHTML=\"
\",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return\"string\"!=typeof e?[]:(\"boolean\"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(\" \");return-1\").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,\"position\"),c=S(e),f={};\"static\"===l&&(e.style.position=\"relative\"),s=c.offset(),o=S.css(e,\"top\"),u=S.css(e,\"left\"),(\"absolute\"===l||\"fixed\"===l)&&-1<(o+u).indexOf(\"auto\")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),\"using\"in t?t.using.call(e,f):(\"number\"==typeof f.top&&(f.top+=\"px\"),\"number\"==typeof f.left&&(f.left+=\"px\"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if(\"fixed\"===S.css(r,\"position\"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&\"static\"===S.css(e,\"position\"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,\"borderTopWidth\",!0),i.left+=S.css(e,\"borderLeftWidth\",!0))}return{top:t.top-i.top-S.css(r,\"marginTop\",!0),left:t.left-i.left-S.css(r,\"marginLeft\",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&\"static\"===S.css(e,\"position\"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:\"pageXOffset\",scrollTop:\"pageYOffset\"},function(t,i){var o=\"pageYOffset\"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each([\"top\",\"left\"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+\"px\":t})}),S.each({Height:\"height\",Width:\"width\"},function(a,s){S.each({padding:\"inner\"+a,content:s,\"\":\"outer\"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||\"boolean\"!=typeof e),i=r||(!0===e||!0===t?\"margin\":\"border\");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf(\"outer\")?e[\"inner\"+a]:e.document.documentElement[\"client\"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body[\"scroll\"+a],r[\"scroll\"+a],e.body[\"offset\"+a],r[\"offset\"+a],r[\"client\"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each([\"ajaxStart\",\"ajaxStop\",\"ajaxComplete\",\"ajaxError\",\"ajaxSuccess\",\"ajaxSend\"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,\"**\"):this.off(t,e||\"**\",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"),function(e,n){S.fn[n]=function(e,t){return 0
\r\n \t\t\t\t\t\t\t\t\t\"auto\" : all undefined swipes will cause the page to scroll in that direction.
\r\n \t\t\t\t\t\t\t\t\t\"none\" : the page will not scroll when user swipes.
\r\n \t\t\t\t\t\t\t\t\t\"horizontal\" : will force page to scroll on horizontal swipes.
\r\n \t\t\t\t\t\t\t\t\t\"vertical\" : will force page to scroll on vertical swipes.
\r\n * @property {boolean} [fallbackToMouseEvents=true] If true mouse events are used when run on a non touch device, false will stop swipes being triggered by mouse events on non touch devices.\r\n * @property {string} [excludedElements=\".noSwipe\"] A jquery selector that specifies child elements that do NOT trigger swipes. By default this excludes elements with the class .noSwipe .\r\n * @property {boolean} [preventDefaultEvents=true] by default default events are cancelled, so the page doesn't move. You can disable this so both native events fire as well as your handlers.\r\n\r\n */\r\n var defaults = {\r\n fingers: 1,\r\n threshold: 75,\r\n cancelThreshold: null,\r\n pinchThreshold: 20,\r\n maxTimeThreshold: null,\r\n fingerReleaseThreshold: 250,\r\n longTapThreshold: 500,\r\n doubleTapThreshold: 200,\r\n swipe: null,\r\n swipeLeft: null,\r\n swipeRight: null,\r\n swipeUp: null,\r\n swipeDown: null,\r\n swipeStatus: null,\r\n pinchIn: null,\r\n pinchOut: null,\r\n pinchStatus: null,\r\n click: null, //Deprecated since 1.6.2\r\n tap: null,\r\n doubleTap: null,\r\n longTap: null,\r\n hold: null,\r\n triggerOnTouchEnd: true,\r\n triggerOnTouchLeave: false,\r\n allowPageScroll: \"auto\",\r\n fallbackToMouseEvents: true,\r\n excludedElements: \".noSwipe\",\r\n preventDefaultEvents: true\r\n };\r\n\r\n\r\n\r\n /**\r\n * Applies TouchSwipe behaviour to one or more jQuery objects.\r\n * The TouchSwipe plugin can be instantiated via this method, or methods within\r\n * TouchSwipe can be executed via this method as per jQuery plugin architecture.\r\n * An existing plugin can have its options changed simply by re calling .swipe(options)\r\n * @see TouchSwipe\r\n * @class\r\n * @param {Mixed} method If the current DOMNode is a TouchSwipe object, and method is a TouchSwipe method, then\r\n * the method is executed, and any following arguments are passed to the TouchSwipe method.\r\n * If method is an object, then the TouchSwipe class is instantiated on the current DOMNode, passing the\r\n * configuration properties defined in the object. See TouchSwipe\r\n *\r\n */\r\n $.fn.swipe = function(method) {\r\n var $this = $(this),\r\n plugin = $this.data(PLUGIN_NS);\r\n\r\n //Check if we are already instantiated and trying to execute a method\r\n if (plugin && typeof method === 'string') {\r\n if (plugin[method]) {\r\n return plugin[method].apply(plugin, Array.prototype.slice.call(arguments, 1));\r\n } else {\r\n $.error('Method ' + method + ' does not exist on jQuery.swipe');\r\n }\r\n }\r\n\r\n //Else update existing plugin with new options hash\r\n else if (plugin && typeof method === 'object') {\r\n plugin['option'].apply(plugin, arguments);\r\n }\r\n\r\n //Else not instantiated and trying to pass init object (or nothing)\r\n else if (!plugin && (typeof method === 'object' || !method)) {\r\n return init.apply(this, arguments);\r\n }\r\n\r\n return $this;\r\n };\r\n\r\n /**\r\n * The version of the plugin\r\n * @readonly\r\n */\r\n $.fn.swipe.version = VERSION;\r\n\r\n\r\n\r\n //Expose our defaults so a user could override the plugin defaults\r\n $.fn.swipe.defaults = defaults;\r\n\r\n /**\r\n * The phases that a touch event goes through. The phase is passed to the event handlers.\r\n * These properties are read only, attempting to change them will not alter the values passed to the event handlers.\r\n * @namespace\r\n * @readonly\r\n * @property {string} PHASE_START Constant indicating the start phase of the touch event. Value is \"start\".\r\n * @property {string} PHASE_MOVE Constant indicating the move phase of the touch event. Value is \"move\".\r\n * @property {string} PHASE_END Constant indicating the end phase of the touch event. Value is \"end\".\r\n * @property {string} PHASE_CANCEL Constant indicating the cancel phase of the touch event. Value is \"cancel\".\r\n */\r\n $.fn.swipe.phases = {\r\n PHASE_START: PHASE_START,\r\n PHASE_MOVE: PHASE_MOVE,\r\n PHASE_END: PHASE_END,\r\n PHASE_CANCEL: PHASE_CANCEL\r\n };\r\n\r\n /**\r\n * The direction constants that are passed to the event handlers.\r\n * These properties are read only, attempting to change them will not alter the values passed to the event handlers.\r\n * @namespace\r\n * @readonly\r\n * @property {string} LEFT Constant indicating the left direction. Value is \"left\".\r\n * @property {string} RIGHT Constant indicating the right direction. Value is \"right\".\r\n * @property {string} UP Constant indicating the up direction. Value is \"up\".\r\n * @property {string} DOWN Constant indicating the down direction. Value is \"cancel\".\r\n * @property {string} IN Constant indicating the in direction. Value is \"in\".\r\n * @property {string} OUT Constant indicating the out direction. Value is \"out\".\r\n */\r\n $.fn.swipe.directions = {\r\n LEFT: LEFT,\r\n RIGHT: RIGHT,\r\n UP: UP,\r\n DOWN: DOWN,\r\n IN: IN,\r\n OUT: OUT\r\n };\r\n\r\n /**\r\n * The page scroll constants that can be used to set the value of allowPageScroll option\r\n * These properties are read only\r\n * @namespace\r\n * @readonly\r\n * @see $.fn.swipe.defaults#allowPageScroll\r\n * @property {string} NONE Constant indicating no page scrolling is allowed. Value is \"none\".\r\n * @property {string} HORIZONTAL Constant indicating horizontal page scrolling is allowed. Value is \"horizontal\".\r\n * @property {string} VERTICAL Constant indicating vertical page scrolling is allowed. Value is \"vertical\".\r\n * @property {string} AUTO Constant indicating either horizontal or vertical will be allowed, depending on the swipe handlers registered. Value is \"auto\".\r\n */\r\n $.fn.swipe.pageScroll = {\r\n NONE: NONE,\r\n HORIZONTAL: HORIZONTAL,\r\n VERTICAL: VERTICAL,\r\n AUTO: AUTO\r\n };\r\n\r\n /**\r\n * Constants representing the number of fingers used in a swipe. These are used to set both the value of fingers in the\r\n * options object, as well as the value of the fingers event property.\r\n * These properties are read only, attempting to change them will not alter the values passed to the event handlers.\r\n * @namespace\r\n * @readonly\r\n * @see $.fn.swipe.defaults#fingers\r\n * @property {string} ONE Constant indicating 1 finger is to be detected / was detected. Value is 1.\r\n * @property {string} TWO Constant indicating 2 fingers are to be detected / were detected. Value is 2.\r\n * @property {string} THREE Constant indicating 3 finger are to be detected / were detected. Value is 3.\r\n * @property {string} FOUR Constant indicating 4 finger are to be detected / were detected. Not all devices support this. Value is 4.\r\n * @property {string} FIVE Constant indicating 5 finger are to be detected / were detected. Not all devices support this. Value is 5.\r\n * @property {string} ALL Constant indicating any combination of finger are to be detected. Value is \"all\".\r\n */\r\n $.fn.swipe.fingers = {\r\n ONE: 1,\r\n TWO: 2,\r\n THREE: 3,\r\n FOUR: 4,\r\n FIVE: 5,\r\n ALL: ALL_FINGERS\r\n };\r\n\r\n /**\r\n * Initialise the plugin for each DOM element matched\r\n * This creates a new instance of the main TouchSwipe class for each DOM element, and then\r\n * saves a reference to that instance in the elements data property.\r\n * @internal\r\n */\r\n function init(options) {\r\n //Prep and extend the options\r\n if (options && (options.allowPageScroll === undefined && (options.swipe !== undefined || options.swipeStatus !== undefined))) {\r\n options.allowPageScroll = NONE;\r\n }\r\n\r\n //Check for deprecated options\r\n //Ensure that any old click handlers are assigned to the new tap, unless we have a tap\r\n if (options.click !== undefined && options.tap === undefined) {\r\n options.tap = options.click;\r\n }\r\n\r\n if (!options) {\r\n options = {};\r\n }\r\n\r\n //pass empty object so we dont modify the defaults\r\n options = $.extend({}, $.fn.swipe.defaults, options);\r\n\r\n //For each element instantiate the plugin\r\n return this.each(function() {\r\n var $this = $(this);\r\n\r\n //Check we havent already initialised the plugin\r\n var plugin = $this.data(PLUGIN_NS);\r\n\r\n if (!plugin) {\r\n plugin = new TouchSwipe(this, options);\r\n $this.data(PLUGIN_NS, plugin);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Main TouchSwipe Plugin Class.\r\n * Do not use this to construct your TouchSwipe object, use the jQuery plugin method $.fn.swipe(); {@link $.fn.swipe}\r\n * @private\r\n * @name TouchSwipe\r\n * @param {DOMNode} element The HTML DOM object to apply to plugin to\r\n * @param {Object} options The options to configure the plugin with. @link {$.fn.swipe.defaults}\r\n * @see $.fh.swipe.defaults\r\n * @see $.fh.swipe\r\n * @class\r\n */\r\n function TouchSwipe(element, options) {\r\n\r\n //take a local/instacne level copy of the options - should make it this.options really...\r\n var options = $.extend({}, options);\r\n\r\n var useTouchEvents = (SUPPORTS_TOUCH || SUPPORTS_POINTER || !options.fallbackToMouseEvents),\r\n START_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerDown' : 'pointerdown') : 'touchstart') : 'mousedown',\r\n MOVE_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerMove' : 'pointermove') : 'touchmove') : 'mousemove',\r\n END_EV = useTouchEvents ? (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerUp' : 'pointerup') : 'touchend') : 'mouseup',\r\n LEAVE_EV = useTouchEvents ? (SUPPORTS_POINTER ? 'mouseleave' : null) : 'mouseleave', //we manually detect leave on touch devices, so null event here\r\n CANCEL_EV = (SUPPORTS_POINTER ? (SUPPORTS_POINTER_IE10 ? 'MSPointerCancel' : 'pointercancel') : 'touchcancel');\r\n\r\n\r\n\r\n //touch properties\r\n var distance = 0,\r\n direction = null,\r\n currentDirection = null,\r\n duration = 0,\r\n startTouchesDistance = 0,\r\n endTouchesDistance = 0,\r\n pinchZoom = 1,\r\n pinchDistance = 0,\r\n pinchDirection = 0,\r\n maximumsMap = null;\r\n\r\n\r\n\r\n //jQuery wrapped element for this instance\r\n var $element = $(element);\r\n\r\n //Current phase of th touch cycle\r\n var phase = \"start\";\r\n\r\n // the current number of fingers being used.\r\n var fingerCount = 0;\r\n\r\n //track mouse points / delta\r\n var fingerData = {};\r\n\r\n //track times\r\n var startTime = 0,\r\n endTime = 0,\r\n previousTouchEndTime = 0,\r\n fingerCountAtRelease = 0,\r\n doubleTapStartTime = 0;\r\n\r\n //Timeouts\r\n var singleTapTimeout = null,\r\n holdTimeout = null;\r\n\r\n // Add gestures to all swipable areas if supported\r\n try {\r\n $element.on(START_EV, touchStart);\r\n $element.on(CANCEL_EV, touchCancel);\r\n } catch (e) {\r\n $.error('events not supported ' + START_EV + ',' + CANCEL_EV + ' on jQuery.swipe');\r\n }\r\n\r\n //\r\n //Public methods\r\n //\r\n\r\n /**\r\n * re-enables the swipe plugin with the previous configuration\r\n * @function\r\n * @name $.fn.swipe#enable\r\n * @return {DOMNode} The Dom element that was registered with TouchSwipe\r\n * @example $(\"#element\").swipe(\"enable\");\r\n */\r\n this.enable = function() {\r\n //Incase we are already enabled, clean up...\r\n this.disable();\r\n $element.on(START_EV, touchStart);\r\n $element.on(CANCEL_EV, touchCancel);\r\n return $element;\r\n };\r\n\r\n /**\r\n * disables the swipe plugin\r\n * @function\r\n * @name $.fn.swipe#disable\r\n * @return {DOMNode} The Dom element that is now registered with TouchSwipe\r\n * @example $(\"#element\").swipe(\"disable\");\r\n */\r\n this.disable = function() {\r\n removeListeners();\r\n return $element;\r\n };\r\n\r\n /**\r\n * Destroy the swipe plugin completely. To use any swipe methods, you must re initialise the plugin.\r\n * @function\r\n * @name $.fn.swipe#destroy\r\n * @example $(\"#element\").swipe(\"destroy\");\r\n */\r\n this.destroy = function() {\r\n removeListeners();\r\n $element.data(PLUGIN_NS, null);\r\n $element = null;\r\n };\r\n\r\n\r\n /**\r\n * Allows run time updating of the swipe configuration options.\r\n * @function\r\n * @name $.fn.swipe#option\r\n * @param {String} property The option property to get or set, or a has of multiple options to set\r\n * @param {Object} [value] The value to set the property to\r\n * @return {Object} If only a property name is passed, then that property value is returned. If nothing is passed the current options hash is returned.\r\n * @example $(\"#element\").swipe(\"option\", \"threshold\"); // return the threshold\r\n * @example $(\"#element\").swipe(\"option\", \"threshold\", 100); // set the threshold after init\r\n * @example $(\"#element\").swipe(\"option\", {threshold:100, fingers:3} ); // set multiple properties after init\r\n * @example $(\"#element\").swipe({threshold:100, fingers:3} ); // set multiple properties after init - the \"option\" method is optional!\r\n * @example $(\"#element\").swipe(\"option\"); // Return the current options hash\r\n * @see $.fn.swipe.defaults\r\n *\r\n */\r\n this.option = function(property, value) {\r\n\r\n if (typeof property === 'object') {\r\n options = $.extend(options, property);\r\n } else if (options[property] !== undefined) {\r\n if (value === undefined) {\r\n return options[property];\r\n } else {\r\n options[property] = value;\r\n }\r\n } else if (!property) {\r\n return options;\r\n } else {\r\n $.error('Option ' + property + ' does not exist on jQuery.swipe.options');\r\n }\r\n\r\n return null;\r\n }\r\n\r\n\r\n\r\n //\r\n // Private methods\r\n //\r\n\r\n //\r\n // EVENTS\r\n //\r\n /**\r\n * Event handler for a touch start event.\r\n * Stops the default click event from triggering and stores where we touched\r\n * @inner\r\n * @param {object} jqEvent The normalised jQuery event object.\r\n */\r\n function touchStart(jqEvent) {\r\n\r\n //If we already in a touch event (a finger already in use) then ignore subsequent ones..\r\n if (getTouchInProgress()) {\r\n return;\r\n }\r\n\r\n //Check if this element matches any in the excluded elements selectors, or its parent is excluded, if so, DON'T swipe\r\n if ($(jqEvent.target).closest(options.excludedElements, $element).length > 0) {\r\n return;\r\n }\r\n\r\n //As we use Jquery bind for events, we need to target the original event object\r\n //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.\r\n var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;\r\n\r\n\r\n //If we have a pointer event, whoes type is 'mouse' and we have said NO mouse events, then dont do anything.\r\n if(event.pointerType && event.pointerType==\"mouse\" && options.fallbackToMouseEvents==false) {\r\n return;\r\n };\r\n\r\n var ret,\r\n touches = event.touches,\r\n evt = touches ? touches[0] : event;\r\n\r\n phase = PHASE_START;\r\n\r\n //If we support touches, get the finger count\r\n if (touches) {\r\n // get the total number of fingers touching the screen\r\n fingerCount = touches.length;\r\n }\r\n //Else this is the desktop, so stop the browser from dragging content\r\n else if (options.preventDefaultEvents !== false) {\r\n jqEvent.preventDefault(); //call this on jq event so we are cross browser\r\n }\r\n\r\n //clear vars..\r\n distance = 0;\r\n direction = null;\r\n currentDirection=null;\r\n pinchDirection = null;\r\n duration = 0;\r\n startTouchesDistance = 0;\r\n endTouchesDistance = 0;\r\n pinchZoom = 1;\r\n pinchDistance = 0;\r\n maximumsMap = createMaximumsData();\r\n cancelMultiFingerRelease();\r\n\r\n //Create the default finger data\r\n createFingerData(0, evt);\r\n\r\n // check the number of fingers is what we are looking for, or we are capturing pinches\r\n if (!touches || (fingerCount === options.fingers || options.fingers === ALL_FINGERS) || hasPinches()) {\r\n // get the coordinates of the touch\r\n startTime = getTimeStamp();\r\n\r\n if (fingerCount == 2) {\r\n //Keep track of the initial pinch distance, so we can calculate the diff later\r\n //Store second finger data as start\r\n createFingerData(1, touches[1]);\r\n startTouchesDistance = endTouchesDistance = calculateTouchesDistance(fingerData[0].start, fingerData[1].start);\r\n }\r\n\r\n if (options.swipeStatus || options.pinchStatus) {\r\n ret = triggerHandler(event, phase);\r\n }\r\n } else {\r\n //A touch with more or less than the fingers we are looking for, so cancel\r\n ret = false;\r\n }\r\n\r\n //If we have a return value from the users handler, then return and cancel\r\n if (ret === false) {\r\n phase = PHASE_CANCEL;\r\n triggerHandler(event, phase);\r\n return ret;\r\n } else {\r\n if (options.hold) {\r\n holdTimeout = setTimeout($.proxy(function() {\r\n //Trigger the event\r\n $element.trigger('hold', [event.target]);\r\n //Fire the callback\r\n if (options.hold) {\r\n ret = options.hold.call($element, event, event.target);\r\n }\r\n }, this), options.longTapThreshold);\r\n }\r\n\r\n setTouchInProgress(true);\r\n }\r\n\r\n return null;\r\n };\r\n\r\n\r\n\r\n /**\r\n * Event handler for a touch move event.\r\n * If we change fingers during move, then cancel the event\r\n * @inner\r\n * @param {object} jqEvent The normalised jQuery event object.\r\n */\r\n function touchMove(jqEvent) {\r\n\r\n //As we use Jquery bind for events, we need to target the original event object\r\n //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.\r\n var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;\r\n\r\n //If we are ending, cancelling, or within the threshold of 2 fingers being released, don't track anything..\r\n if (phase === PHASE_END || phase === PHASE_CANCEL || inMultiFingerRelease())\r\n return;\r\n\r\n var ret,\r\n touches = event.touches,\r\n evt = touches ? touches[0] : event;\r\n\r\n\r\n //Update the finger data\r\n var currentFinger = updateFingerData(evt);\r\n endTime = getTimeStamp();\r\n\r\n if (touches) {\r\n fingerCount = touches.length;\r\n }\r\n\r\n if (options.hold) {\r\n clearTimeout(holdTimeout);\r\n }\r\n\r\n phase = PHASE_MOVE;\r\n\r\n //If we have 2 fingers get Touches distance as well\r\n if (fingerCount == 2) {\r\n\r\n //Keep track of the initial pinch distance, so we can calculate the diff later\r\n //We do this here as well as the start event, in case they start with 1 finger, and the press 2 fingers\r\n if (startTouchesDistance == 0) {\r\n //Create second finger if this is the first time...\r\n createFingerData(1, touches[1]);\r\n\r\n startTouchesDistance = endTouchesDistance = calculateTouchesDistance(fingerData[0].start, fingerData[1].start);\r\n } else {\r\n //Else just update the second finger\r\n updateFingerData(touches[1]);\r\n\r\n endTouchesDistance = calculateTouchesDistance(fingerData[0].end, fingerData[1].end);\r\n pinchDirection = calculatePinchDirection(fingerData[0].end, fingerData[1].end);\r\n }\r\n\r\n pinchZoom = calculatePinchZoom(startTouchesDistance, endTouchesDistance);\r\n pinchDistance = Math.abs(startTouchesDistance - endTouchesDistance);\r\n }\r\n\r\n if ((fingerCount === options.fingers || options.fingers === ALL_FINGERS) || !touches || hasPinches()) {\r\n\r\n //The overall direction of the swipe. From start to now.\r\n direction = calculateDirection(currentFinger.start, currentFinger.end);\r\n\r\n //The immediate direction of the swipe, direction between the last movement and this one.\r\n currentDirection = calculateDirection(currentFinger.last, currentFinger.end);\r\n\r\n //Check if we need to prevent default event (page scroll / pinch zoom) or not\r\n validateDefaultEvent(jqEvent, currentDirection);\r\n\r\n //Distance and duration are all off the main finger\r\n distance = calculateDistance(currentFinger.start, currentFinger.end);\r\n duration = calculateDuration();\r\n\r\n //Cache the maximum distance we made in this direction\r\n setMaxDistance(direction, distance);\r\n\r\n //Trigger status handler\r\n ret = triggerHandler(event, phase);\r\n\r\n\r\n //If we trigger end events when threshold are met, or trigger events when touch leaves element\r\n if (!options.triggerOnTouchEnd || options.triggerOnTouchLeave) {\r\n\r\n var inBounds = true;\r\n\r\n //If checking if we leave the element, run the bounds check (we can use touchleave as its not supported on webkit)\r\n if (options.triggerOnTouchLeave) {\r\n var bounds = getbounds(this);\r\n inBounds = isInBounds(currentFinger.end, bounds);\r\n }\r\n\r\n //Trigger end handles as we swipe if thresholds met or if we have left the element if the user has asked to check these..\r\n if (!options.triggerOnTouchEnd && inBounds) {\r\n phase = getNextPhase(PHASE_MOVE);\r\n }\r\n //We end if out of bounds here, so set current phase to END, and check if its modified\r\n else if (options.triggerOnTouchLeave && !inBounds) {\r\n phase = getNextPhase(PHASE_END);\r\n }\r\n\r\n if (phase == PHASE_CANCEL || phase == PHASE_END) {\r\n triggerHandler(event, phase);\r\n }\r\n }\r\n } else {\r\n phase = PHASE_CANCEL;\r\n triggerHandler(event, phase);\r\n }\r\n\r\n if (ret === false) {\r\n phase = PHASE_CANCEL;\r\n triggerHandler(event, phase);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Event handler for a touch end event.\r\n * Calculate the direction and trigger events\r\n * @inner\r\n * @param {object} jqEvent The normalised jQuery event object.\r\n */\r\n function touchEnd(jqEvent) {\r\n //As we use Jquery bind for events, we need to target the original event object\r\n //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.\r\n var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent,\r\n touches = event.touches;\r\n\r\n //If we are still in a touch with the device wait a fraction and see if the other finger comes up\r\n //if it does within the threshold, then we treat it as a multi release, not a single release and end the touch / swipe\r\n if (touches) {\r\n if (touches.length && !inMultiFingerRelease()) {\r\n startMultiFingerRelease(event);\r\n return true;\r\n } else if (touches.length && inMultiFingerRelease()) {\r\n return true;\r\n }\r\n }\r\n\r\n //If a previous finger has been released, check how long ago, if within the threshold, then assume it was a multifinger release.\r\n //This is used to allow 2 fingers to release fractionally after each other, whilst maintaining the event as containing 2 fingers, not 1\r\n if (inMultiFingerRelease()) {\r\n fingerCount = fingerCountAtRelease;\r\n }\r\n\r\n //Set end of swipe\r\n endTime = getTimeStamp();\r\n\r\n //Get duration incase move was never fired\r\n duration = calculateDuration();\r\n\r\n //If we trigger handlers at end of swipe OR, we trigger during, but they didnt trigger and we are still in the move phase\r\n if (didSwipeBackToCancel() || !validateSwipeDistance()) {\r\n phase = PHASE_CANCEL;\r\n triggerHandler(event, phase);\r\n } else if (options.triggerOnTouchEnd || (options.triggerOnTouchEnd === false && phase === PHASE_MOVE)) {\r\n //call this on jq event so we are cross browser\r\n if (options.preventDefaultEvents !== false && jqEvent.cancelable !== false) {\r\n jqEvent.preventDefault();\r\n }\r\n phase = PHASE_END;\r\n triggerHandler(event, phase);\r\n }\r\n //Special cases - A tap should always fire on touch end regardless,\r\n //So here we manually trigger the tap end handler by itself\r\n //We dont run trigger handler as it will re-trigger events that may have fired already\r\n else if (!options.triggerOnTouchEnd && hasTap()) {\r\n //Trigger the pinch events...\r\n phase = PHASE_END;\r\n triggerHandlerForGesture(event, phase, TAP);\r\n } else if (phase === PHASE_MOVE) {\r\n phase = PHASE_CANCEL;\r\n triggerHandler(event, phase);\r\n }\r\n\r\n setTouchInProgress(false);\r\n\r\n return null;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Event handler for a touch cancel event.\r\n * Clears current vars\r\n * @inner\r\n */\r\n function touchCancel() {\r\n // reset the variables back to default values\r\n fingerCount = 0;\r\n endTime = 0;\r\n startTime = 0;\r\n startTouchesDistance = 0;\r\n endTouchesDistance = 0;\r\n pinchZoom = 1;\r\n\r\n //If we were in progress of tracking a possible multi touch end, then re set it.\r\n cancelMultiFingerRelease();\r\n\r\n setTouchInProgress(false);\r\n }\r\n\r\n\r\n /**\r\n * Event handler for a touch leave event.\r\n * This is only triggered on desktops, in touch we work this out manually\r\n * as the touchleave event is not supported in webkit\r\n * @inner\r\n */\r\n function touchLeave(jqEvent) {\r\n //If these events are being programmatically triggered, we don't have an original event object, so use the Jq one.\r\n var event = jqEvent.originalEvent ? jqEvent.originalEvent : jqEvent;\r\n\r\n //If we have the trigger on leave property set....\r\n if (options.triggerOnTouchLeave) {\r\n phase = getNextPhase(PHASE_END);\r\n triggerHandler(event, phase);\r\n }\r\n }\r\n\r\n /**\r\n * Removes all listeners that were associated with the plugin\r\n * @inner\r\n */\r\n function removeListeners() {\r\n $element.off(START_EV, touchStart);\r\n $element.off(CANCEL_EV, touchCancel);\r\n $element.off(MOVE_EV, touchMove);\r\n $element.off(END_EV, touchEnd);\r\n\r\n //we only have leave events on desktop, we manually calculate leave on touch as its not supported in webkit\r\n if (LEAVE_EV) {\r\n $element.off(LEAVE_EV, touchLeave);\r\n }\r\n\r\n setTouchInProgress(false);\r\n }\r\n\r\n\r\n /**\r\n * Checks if the time and distance thresholds have been met, and if so then the appropriate handlers are fired.\r\n */\r\n function getNextPhase(currentPhase) {\r\n\r\n var nextPhase = currentPhase;\r\n\r\n // Ensure we have valid swipe (under time and over distance and check if we are out of bound...)\r\n var validTime = validateSwipeTime();\r\n var validDistance = validateSwipeDistance();\r\n var didCancel = didSwipeBackToCancel();\r\n\r\n //If we have exceeded our time, then cancel\r\n if (!validTime || didCancel) {\r\n nextPhase = PHASE_CANCEL;\r\n }\r\n //Else if we are moving, and have reached distance then end\r\n else if (validDistance && currentPhase == PHASE_MOVE && (!options.triggerOnTouchEnd || options.triggerOnTouchLeave)) {\r\n nextPhase = PHASE_END;\r\n }\r\n //Else if we have ended by leaving and didn't reach distance, then cancel\r\n else if (!validDistance && currentPhase == PHASE_END && options.triggerOnTouchLeave) {\r\n nextPhase = PHASE_CANCEL;\r\n }\r\n\r\n return nextPhase;\r\n }\r\n\r\n\r\n /**\r\n * Trigger the relevant event handler\r\n * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, \"left\", \"right\", \"up\", or \"down\"\r\n * @param {object} event the original event object\r\n * @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases}\r\n * @inner\r\n */\r\n function triggerHandler(event, phase) {\r\n\r\n\r\n\r\n var ret,\r\n touches = event.touches;\r\n\r\n // SWIPE GESTURES\r\n if (didSwipe() || hasSwipes()) {\r\n ret = triggerHandlerForGesture(event, phase, SWIPE);\r\n }\r\n\r\n // PINCH GESTURES (if the above didn't cancel)\r\n if ((didPinch() || hasPinches()) && ret !== false) {\r\n ret = triggerHandlerForGesture(event, phase, PINCH);\r\n }\r\n\r\n // CLICK / TAP (if the above didn't cancel)\r\n if (didDoubleTap() && ret !== false) {\r\n //Trigger the tap events...\r\n ret = triggerHandlerForGesture(event, phase, DOUBLE_TAP);\r\n }\r\n\r\n // CLICK / TAP (if the above didn't cancel)\r\n else if (didLongTap() && ret !== false) {\r\n //Trigger the tap events...\r\n ret = triggerHandlerForGesture(event, phase, LONG_TAP);\r\n }\r\n\r\n // CLICK / TAP (if the above didn't cancel)\r\n else if (didTap() && ret !== false) {\r\n //Trigger the tap event..\r\n ret = triggerHandlerForGesture(event, phase, TAP);\r\n }\r\n\r\n\r\n\r\n // If we are cancelling the gesture, then manually trigger the reset handler\r\n if (phase === PHASE_CANCEL) {\r\n\r\n touchCancel(event);\r\n }\r\n\r\n\r\n\r\n\r\n // If we are ending the gesture, then manually trigger the reset handler IF all fingers are off\r\n if (phase === PHASE_END) {\r\n //If we support touch, then check that all fingers are off before we cancel\r\n if (touches) {\r\n if (!touches.length) {\r\n touchCancel(event);\r\n }\r\n } else {\r\n touchCancel(event);\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Trigger the relevant event handler\r\n * The handlers are passed the original event, the element that was swiped, and in the case of the catch all handler, the direction that was swiped, \"left\", \"right\", \"up\", or \"down\"\r\n * @param {object} event the original event object\r\n * @param {string} phase the phase of the swipe (start, end cancel etc) {@link $.fn.swipe.phases}\r\n * @param {string} gesture the gesture to trigger a handler for : PINCH or SWIPE {@link $.fn.swipe.gestures}\r\n * @return Boolean False, to indicate that the event should stop propagation, or void.\r\n * @inner\r\n */\r\n function triggerHandlerForGesture(event, phase, gesture) {\r\n\r\n var ret;\r\n\r\n //SWIPES....\r\n if (gesture == SWIPE) {\r\n //Trigger status every time..\r\n $element.trigger('swipeStatus', [phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData, currentDirection]);\r\n\r\n if (options.swipeStatus) {\r\n ret = options.swipeStatus.call($element, event, phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData, currentDirection);\r\n //If the status cancels, then dont run the subsequent event handlers..\r\n if (ret === false) return false;\r\n }\r\n\r\n if (phase == PHASE_END && validateSwipe()) {\r\n\r\n //Cancel any taps that were in progress...\r\n clearTimeout(singleTapTimeout);\r\n clearTimeout(holdTimeout);\r\n\r\n $element.trigger('swipe', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\r\n\r\n if (options.swipe) {\r\n ret = options.swipe.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\r\n //If the status cancels, then dont run the subsequent event handlers..\r\n if (ret === false) return false;\r\n }\r\n\r\n //trigger direction specific event handlers\r\n switch (direction) {\r\n case LEFT:\r\n $element.trigger('swipeLeft', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\r\n\r\n if (options.swipeLeft) {\r\n ret = options.swipeLeft.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\r\n }\r\n break;\r\n\r\n case RIGHT:\r\n $element.trigger('swipeRight', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\r\n\r\n if (options.swipeRight) {\r\n ret = options.swipeRight.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\r\n }\r\n break;\r\n\r\n case UP:\r\n $element.trigger('swipeUp', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\r\n\r\n if (options.swipeUp) {\r\n ret = options.swipeUp.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\r\n }\r\n break;\r\n\r\n case DOWN:\r\n $element.trigger('swipeDown', [direction, distance, duration, fingerCount, fingerData, currentDirection]);\r\n\r\n if (options.swipeDown) {\r\n ret = options.swipeDown.call($element, event, direction, distance, duration, fingerCount, fingerData, currentDirection);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n //PINCHES....\r\n if (gesture == PINCH) {\r\n $element.trigger('pinchStatus', [phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);\r\n\r\n if (options.pinchStatus) {\r\n ret = options.pinchStatus.call($element, event, phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);\r\n //If the status cancels, then dont run the subsequent event handlers..\r\n if (ret === false) return false;\r\n }\r\n\r\n if (phase == PHASE_END && validatePinch()) {\r\n\r\n switch (pinchDirection) {\r\n case IN:\r\n $element.trigger('pinchIn', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);\r\n\r\n if (options.pinchIn) {\r\n ret = options.pinchIn.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);\r\n }\r\n break;\r\n\r\n case OUT:\r\n $element.trigger('pinchOut', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);\r\n\r\n if (options.pinchOut) {\r\n ret = options.pinchOut.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (gesture == TAP) {\r\n if (phase === PHASE_CANCEL || phase === PHASE_END) {\r\n\r\n clearTimeout(singleTapTimeout);\r\n clearTimeout(holdTimeout);\r\n\r\n //If we are also looking for doubelTaps, wait incase this is one...\r\n if (hasDoubleTap() && !inDoubleTap()) {\r\n doubleTapStartTime = getTimeStamp();\r\n\r\n //Now wait for the double tap timeout, and trigger this single tap\r\n //if its not cancelled by a double tap\r\n singleTapTimeout = setTimeout($.proxy(function() {\r\n doubleTapStartTime = null;\r\n $element.trigger('tap', [event.target]);\r\n\r\n if (options.tap) {\r\n ret = options.tap.call($element, event, event.target);\r\n }\r\n }, this), options.doubleTapThreshold);\r\n\r\n } else {\r\n doubleTapStartTime = null;\r\n $element.trigger('tap', [event.target]);\r\n if (options.tap) {\r\n ret = options.tap.call($element, event, event.target);\r\n }\r\n }\r\n }\r\n } else if (gesture == DOUBLE_TAP) {\r\n if (phase === PHASE_CANCEL || phase === PHASE_END) {\r\n clearTimeout(singleTapTimeout);\r\n clearTimeout(holdTimeout);\r\n doubleTapStartTime = null;\r\n $element.trigger('doubletap', [event.target]);\r\n\r\n if (options.doubleTap) {\r\n ret = options.doubleTap.call($element, event, event.target);\r\n }\r\n }\r\n } else if (gesture == LONG_TAP) {\r\n if (phase === PHASE_CANCEL || phase === PHASE_END) {\r\n clearTimeout(singleTapTimeout);\r\n doubleTapStartTime = null;\r\n\r\n $element.trigger('longtap', [event.target]);\r\n if (options.longTap) {\r\n ret = options.longTap.call($element, event, event.target);\r\n }\r\n }\r\n }\r\n\r\n return ret;\r\n }\r\n\r\n\r\n //\r\n // GESTURE VALIDATION\r\n //\r\n\r\n /**\r\n * Checks the user has swipe far enough\r\n * @return Boolean if threshold has been set, return true if the threshold was met, else false.\r\n * If no threshold was set, then we return true.\r\n * @inner\r\n */\r\n function validateSwipeDistance() {\r\n var valid = true;\r\n //If we made it past the min swipe distance..\r\n if (options.threshold !== null) {\r\n valid = distance >= options.threshold;\r\n }\r\n\r\n return valid;\r\n }\r\n\r\n /**\r\n * Checks the user has swiped back to cancel.\r\n * @return Boolean if cancelThreshold has been set, return true if the cancelThreshold was met, else false.\r\n * If no cancelThreshold was set, then we return true.\r\n * @inner\r\n */\r\n function didSwipeBackToCancel() {\r\n var cancelled = false;\r\n if (options.cancelThreshold !== null && direction !== null) {\r\n cancelled = (getMaxDistance(direction) - distance) >= options.cancelThreshold;\r\n }\r\n\r\n return cancelled;\r\n }\r\n\r\n /**\r\n * Checks the user has pinched far enough\r\n * @return Boolean if pinchThreshold has been set, return true if the threshold was met, else false.\r\n * If no threshold was set, then we return true.\r\n * @inner\r\n */\r\n function validatePinchDistance() {\r\n if (options.pinchThreshold !== null) {\r\n return pinchDistance >= options.pinchThreshold;\r\n }\r\n return true;\r\n }\r\n\r\n /**\r\n * Checks that the time taken to swipe meets the minimum / maximum requirements\r\n * @return Boolean\r\n * @inner\r\n */\r\n function validateSwipeTime() {\r\n var result;\r\n //If no time set, then return true\r\n if (options.maxTimeThreshold) {\r\n if (duration >= options.maxTimeThreshold) {\r\n result = false;\r\n } else {\r\n result = true;\r\n }\r\n } else {\r\n result = true;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Checks direction of the swipe and the value allowPageScroll to see if we should allow or prevent the default behaviour from occurring.\r\n * This will essentially allow page scrolling or not when the user is swiping on a touchSwipe object.\r\n * @param {object} jqEvent The normalised jQuery representation of the event object.\r\n * @param {string} direction The direction of the event. See {@link $.fn.swipe.directions}\r\n * @see $.fn.swipe.directions\r\n * @inner\r\n */\r\n function validateDefaultEvent(jqEvent, direction) {\r\n\r\n //If the option is set, allways allow the event to bubble up (let user handle weirdness)\r\n if (options.preventDefaultEvents === false) {\r\n return;\r\n }\r\n\r\n if (options.allowPageScroll === NONE) {\r\n jqEvent.preventDefault();\r\n } else {\r\n var auto = options.allowPageScroll === AUTO;\r\n\r\n switch (direction) {\r\n case LEFT:\r\n if ((options.swipeLeft && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) {\r\n jqEvent.preventDefault();\r\n }\r\n break;\r\n\r\n case RIGHT:\r\n if ((options.swipeRight && auto) || (!auto && options.allowPageScroll != HORIZONTAL)) {\r\n jqEvent.preventDefault();\r\n }\r\n break;\r\n\r\n case UP:\r\n if ((options.swipeUp && auto) || (!auto && options.allowPageScroll != VERTICAL)) {\r\n jqEvent.preventDefault();\r\n }\r\n break;\r\n\r\n case DOWN:\r\n if ((options.swipeDown && auto) || (!auto && options.allowPageScroll != VERTICAL)) {\r\n jqEvent.preventDefault();\r\n }\r\n break;\r\n\r\n case NONE:\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n // PINCHES\r\n /**\r\n * Returns true of the current pinch meets the thresholds\r\n * @return Boolean\r\n * @inner\r\n */\r\n function validatePinch() {\r\n var hasCorrectFingerCount = validateFingers();\r\n var hasEndPoint = validateEndPoint();\r\n var hasCorrectDistance = validatePinchDistance();\r\n return hasCorrectFingerCount && hasEndPoint && hasCorrectDistance;\r\n\r\n }\r\n\r\n /**\r\n * Returns true if any Pinch events have been registered\r\n * @return Boolean\r\n * @inner\r\n */\r\n function hasPinches() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(options.pinchStatus || options.pinchIn || options.pinchOut);\r\n }\r\n\r\n /**\r\n * Returns true if we are detecting pinches, and have one\r\n * @return Boolean\r\n * @inner\r\n */\r\n function didPinch() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(validatePinch() && hasPinches());\r\n }\r\n\r\n\r\n\r\n\r\n // SWIPES\r\n /**\r\n * Returns true if the current swipe meets the thresholds\r\n * @return Boolean\r\n * @inner\r\n */\r\n function validateSwipe() {\r\n //Check validity of swipe\r\n var hasValidTime = validateSwipeTime();\r\n var hasValidDistance = validateSwipeDistance();\r\n var hasCorrectFingerCount = validateFingers();\r\n var hasEndPoint = validateEndPoint();\r\n var didCancel = didSwipeBackToCancel();\r\n\r\n // if the user swiped more than the minimum length, perform the appropriate action\r\n // hasValidDistance is null when no distance is set\r\n var valid = !didCancel && hasEndPoint && hasCorrectFingerCount && hasValidDistance && hasValidTime;\r\n\r\n return valid;\r\n }\r\n\r\n /**\r\n * Returns true if any Swipe events have been registered\r\n * @return Boolean\r\n * @inner\r\n */\r\n function hasSwipes() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(options.swipe || options.swipeStatus || options.swipeLeft || options.swipeRight || options.swipeUp || options.swipeDown);\r\n }\r\n\r\n\r\n /**\r\n * Returns true if we are detecting swipes and have one\r\n * @return Boolean\r\n * @inner\r\n */\r\n function didSwipe() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(validateSwipe() && hasSwipes());\r\n }\r\n\r\n /**\r\n * Returns true if we have matched the number of fingers we are looking for\r\n * @return Boolean\r\n * @inner\r\n */\r\n function validateFingers() {\r\n //The number of fingers we want were matched, or on desktop we ignore\r\n return ((fingerCount === options.fingers || options.fingers === ALL_FINGERS) || !SUPPORTS_TOUCH);\r\n }\r\n\r\n /**\r\n * Returns true if we have an end point for the swipe\r\n * @return Boolean\r\n * @inner\r\n */\r\n function validateEndPoint() {\r\n //We have an end value for the finger\r\n return fingerData[0].end.x !== 0;\r\n }\r\n\r\n // TAP / CLICK\r\n /**\r\n * Returns true if a click / tap events have been registered\r\n * @return Boolean\r\n * @inner\r\n */\r\n function hasTap() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(options.tap);\r\n }\r\n\r\n /**\r\n * Returns true if a double tap events have been registered\r\n * @return Boolean\r\n * @inner\r\n */\r\n function hasDoubleTap() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(options.doubleTap);\r\n }\r\n\r\n /**\r\n * Returns true if any long tap events have been registered\r\n * @return Boolean\r\n * @inner\r\n */\r\n function hasLongTap() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(options.longTap);\r\n }\r\n\r\n /**\r\n * Returns true if we could be in the process of a double tap (one tap has occurred, we are listening for double taps, and the threshold hasn't past.\r\n * @return Boolean\r\n * @inner\r\n */\r\n function validateDoubleTap() {\r\n if (doubleTapStartTime == null) {\r\n return false;\r\n }\r\n var now = getTimeStamp();\r\n return (hasDoubleTap() && ((now - doubleTapStartTime) <= options.doubleTapThreshold));\r\n }\r\n\r\n /**\r\n * Returns true if we could be in the process of a double tap (one tap has occurred, we are listening for double taps, and the threshold hasn't past.\r\n * @return Boolean\r\n * @inner\r\n */\r\n function inDoubleTap() {\r\n return validateDoubleTap();\r\n }\r\n\r\n\r\n /**\r\n * Returns true if we have a valid tap\r\n * @return Boolean\r\n * @inner\r\n */\r\n function validateTap() {\r\n return ((fingerCount === 1 || !SUPPORTS_TOUCH) && (isNaN(distance) || distance < options.threshold));\r\n }\r\n\r\n /**\r\n * Returns true if we have a valid long tap\r\n * @return Boolean\r\n * @inner\r\n */\r\n function validateLongTap() {\r\n //slight threshold on moving finger\r\n return ((duration > options.longTapThreshold) && (distance < DOUBLE_TAP_THRESHOLD));\r\n }\r\n\r\n /**\r\n * Returns true if we are detecting taps and have one\r\n * @return Boolean\r\n * @inner\r\n */\r\n function didTap() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(validateTap() && hasTap());\r\n }\r\n\r\n\r\n /**\r\n * Returns true if we are detecting double taps and have one\r\n * @return Boolean\r\n * @inner\r\n */\r\n function didDoubleTap() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(validateDoubleTap() && hasDoubleTap());\r\n }\r\n\r\n /**\r\n * Returns true if we are detecting long taps and have one\r\n * @return Boolean\r\n * @inner\r\n */\r\n function didLongTap() {\r\n //Enure we dont return 0 or null for false values\r\n return !!(validateLongTap() && hasLongTap());\r\n }\r\n\r\n\r\n\r\n\r\n // MULTI FINGER TOUCH\r\n /**\r\n * Starts tracking the time between 2 finger releases, and keeps track of how many fingers we initially had up\r\n * @inner\r\n */\r\n function startMultiFingerRelease(event) {\r\n previousTouchEndTime = getTimeStamp();\r\n fingerCountAtRelease = event.touches.length + 1;\r\n }\r\n\r\n /**\r\n * Cancels the tracking of time between 2 finger releases, and resets counters\r\n * @inner\r\n */\r\n function cancelMultiFingerRelease() {\r\n previousTouchEndTime = 0;\r\n fingerCountAtRelease = 0;\r\n }\r\n\r\n /**\r\n * Checks if we are in the threshold between 2 fingers being released\r\n * @return Boolean\r\n * @inner\r\n */\r\n function inMultiFingerRelease() {\r\n\r\n var withinThreshold = false;\r\n\r\n if (previousTouchEndTime) {\r\n var diff = getTimeStamp() - previousTouchEndTime\r\n if (diff <= options.fingerReleaseThreshold) {\r\n withinThreshold = true;\r\n }\r\n }\r\n\r\n return withinThreshold;\r\n }\r\n\r\n\r\n /**\r\n * gets a data flag to indicate that a touch is in progress\r\n * @return Boolean\r\n * @inner\r\n */\r\n function getTouchInProgress() {\r\n //strict equality to ensure only true and false are returned\r\n return !!($element.data(PLUGIN_NS + '_intouch') === true);\r\n }\r\n\r\n /**\r\n * Sets a data flag to indicate that a touch is in progress\r\n * @param {boolean} val The value to set the property to\r\n * @inner\r\n */\r\n function setTouchInProgress(val) {\r\n\r\n //If destroy is called in an event handler, we have no el, and we have already cleaned up, so return.\r\n if(!$element) { return; }\r\n\r\n //Add or remove event listeners depending on touch status\r\n if (val === true) {\r\n $element.on(MOVE_EV, touchMove);\r\n $element.on(END_EV, touchEnd);\r\n\r\n //we only have leave events on desktop, we manually calcuate leave on touch as its not supported in webkit\r\n if (LEAVE_EV) {\r\n $element.on(LEAVE_EV, touchLeave);\r\n }\r\n } else {\r\n\r\n $element.off(MOVE_EV, touchMove, false);\r\n $element.off(END_EV, touchEnd, false);\r\n\r\n //we only have leave events on desktop, we manually calcuate leave on touch as its not supported in webkit\r\n if (LEAVE_EV) {\r\n $element.off(LEAVE_EV, touchLeave, false);\r\n }\r\n }\r\n\r\n\r\n //strict equality to ensure only true and false can update the value\r\n $element.data(PLUGIN_NS + '_intouch', val === true);\r\n }\r\n\r\n\r\n /**\r\n * Creates the finger data for the touch/finger in the event object.\r\n * @param {int} id The id to store the finger data under (usually the order the fingers were pressed)\r\n * @param {object} evt The event object containing finger data\r\n * @return finger data object\r\n * @inner\r\n */\r\n function createFingerData(id, evt) {\r\n var f = {\r\n start: {\r\n x: 0,\r\n y: 0\r\n },\r\n last: {\r\n x: 0,\r\n y: 0\r\n },\r\n end: {\r\n x: 0,\r\n y: 0\r\n }\r\n };\r\n f.start.x = f.last.x = f.end.x = evt.pageX || evt.clientX;\r\n f.start.y = f.last.y = f.end.y = evt.pageY || evt.clientY;\r\n fingerData[id] = f;\r\n return f;\r\n }\r\n\r\n /**\r\n * Updates the finger data for a particular event object\r\n * @param {object} evt The event object containing the touch/finger data to upadte\r\n * @return a finger data object.\r\n * @inner\r\n */\r\n function updateFingerData(evt) {\r\n var id = evt.identifier !== undefined ? evt.identifier : 0;\r\n var f = getFingerData(id);\r\n\r\n if (f === null) {\r\n f = createFingerData(id, evt);\r\n }\r\n\r\n f.last.x = f.end.x;\r\n f.last.y = f.end.y;\r\n\r\n f.end.x = evt.pageX || evt.clientX;\r\n f.end.y = evt.pageY || evt.clientY;\r\n\r\n return f;\r\n }\r\n\r\n /**\r\n * Returns a finger data object by its event ID.\r\n * Each touch event has an identifier property, which is used\r\n * to track repeat touches\r\n * @param {int} id The unique id of the finger in the sequence of touch events.\r\n * @return a finger data object.\r\n * @inner\r\n */\r\n function getFingerData(id) {\r\n return fingerData[id] || null;\r\n }\r\n\r\n\r\n /**\r\n * Sets the maximum distance swiped in the given direction.\r\n * If the new value is lower than the current value, the max value is not changed.\r\n * @param {string} direction The direction of the swipe\r\n * @param {int} distance The distance of the swipe\r\n * @inner\r\n */\r\n function setMaxDistance(direction, distance) {\r\n if(direction==NONE) return;\r\n distance = Math.max(distance, getMaxDistance(direction));\r\n maximumsMap[direction].distance = distance;\r\n }\r\n\r\n /**\r\n * gets the maximum distance swiped in the given direction.\r\n * @param {string} direction The direction of the swipe\r\n * @return int The distance of the swipe\r\n * @inner\r\n */\r\n function getMaxDistance(direction) {\r\n if (maximumsMap[direction]) return maximumsMap[direction].distance;\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Creats a map of directions to maximum swiped values.\r\n * @return Object A dictionary of maximum values, indexed by direction.\r\n * @inner\r\n */\r\n function createMaximumsData() {\r\n var maxData = {};\r\n maxData[LEFT] = createMaximumVO(LEFT);\r\n maxData[RIGHT] = createMaximumVO(RIGHT);\r\n maxData[UP] = createMaximumVO(UP);\r\n maxData[DOWN] = createMaximumVO(DOWN);\r\n\r\n return maxData;\r\n }\r\n\r\n /**\r\n * Creates a map maximum swiped values for a given swipe direction\r\n * @param {string} The direction that these values will be associated with\r\n * @return Object Maximum values\r\n * @inner\r\n */\r\n function createMaximumVO(dir) {\r\n return {\r\n direction: dir,\r\n distance: 0\r\n }\r\n }\r\n\r\n\r\n //\r\n // MATHS / UTILS\r\n //\r\n\r\n /**\r\n * Calculate the duration of the swipe\r\n * @return int\r\n * @inner\r\n */\r\n function calculateDuration() {\r\n return endTime - startTime;\r\n }\r\n\r\n /**\r\n * Calculate the distance between 2 touches (pinch)\r\n * @param {point} startPoint A point object containing x and y co-ordinates\r\n * @param {point} endPoint A point object containing x and y co-ordinates\r\n * @return int;\r\n * @inner\r\n */\r\n function calculateTouchesDistance(startPoint, endPoint) {\r\n var diffX = Math.abs(startPoint.x - endPoint.x);\r\n var diffY = Math.abs(startPoint.y - endPoint.y);\r\n\r\n return Math.round(Math.sqrt(diffX * diffX + diffY * diffY));\r\n }\r\n\r\n /**\r\n * Calculate the zoom factor between the start and end distances\r\n * @param {int} startDistance Distance (between 2 fingers) the user started pinching at\r\n * @param {int} endDistance Distance (between 2 fingers) the user ended pinching at\r\n * @return float The zoom value from 0 to 1.\r\n * @inner\r\n */\r\n function calculatePinchZoom(startDistance, endDistance) {\r\n var percent = (endDistance / startDistance) * 1;\r\n return percent.toFixed(2);\r\n }\r\n\r\n\r\n /**\r\n * Returns the pinch direction, either IN or OUT for the given points\r\n * @return string Either {@link $.fn.swipe.directions.IN} or {@link $.fn.swipe.directions.OUT}\r\n * @see $.fn.swipe.directions\r\n * @inner\r\n */\r\n function calculatePinchDirection() {\r\n if (pinchZoom < 1) {\r\n return OUT;\r\n } else {\r\n return IN;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Calculate the length / distance of the swipe\r\n * @param {point} startPoint A point object containing x and y co-ordinates\r\n * @param {point} endPoint A point object containing x and y co-ordinates\r\n * @return int\r\n * @inner\r\n */\r\n function calculateDistance(startPoint, endPoint) {\r\n return Math.round(Math.sqrt(Math.pow(endPoint.x - startPoint.x, 2) + Math.pow(endPoint.y - startPoint.y, 2)));\r\n }\r\n\r\n /**\r\n * Calculate the angle of the swipe\r\n * @param {point} startPoint A point object containing x and y co-ordinates\r\n * @param {point} endPoint A point object containing x and y co-ordinates\r\n * @return int\r\n * @inner\r\n */\r\n function calculateAngle(startPoint, endPoint) {\r\n var x = startPoint.x - endPoint.x;\r\n var y = endPoint.y - startPoint.y;\r\n var r = Math.atan2(y, x); //radians\r\n var angle = Math.round(r * 180 / Math.PI); //degrees\r\n\r\n //ensure value is positive\r\n if (angle < 0) {\r\n angle = 360 - Math.abs(angle);\r\n }\r\n\r\n return angle;\r\n }\r\n\r\n /**\r\n * Calculate the direction of the swipe\r\n * This will also call calculateAngle to get the latest angle of swipe\r\n * @param {point} startPoint A point object containing x and y co-ordinates\r\n * @param {point} endPoint A point object containing x and y co-ordinates\r\n * @return string Either {@link $.fn.swipe.directions.LEFT} / {@link $.fn.swipe.directions.RIGHT} / {@link $.fn.swipe.directions.DOWN} / {@link $.fn.swipe.directions.UP}\r\n * @see $.fn.swipe.directions\r\n * @inner\r\n */\r\n function calculateDirection(startPoint, endPoint) {\r\n\r\n if( comparePoints(startPoint, endPoint) ) {\r\n return NONE;\r\n }\r\n\r\n var angle = calculateAngle(startPoint, endPoint);\r\n\r\n if ((angle <= 45) && (angle >= 0)) {\r\n return LEFT;\r\n } else if ((angle <= 360) && (angle >= 315)) {\r\n return LEFT;\r\n } else if ((angle >= 135) && (angle <= 225)) {\r\n return RIGHT;\r\n } else if ((angle > 45) && (angle < 135)) {\r\n return DOWN;\r\n } else {\r\n return UP;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Returns a MS time stamp of the current time\r\n * @return int\r\n * @inner\r\n */\r\n function getTimeStamp() {\r\n var now = new Date();\r\n return now.getTime();\r\n }\r\n\r\n\r\n\r\n /**\r\n * Returns a bounds object with left, right, top and bottom properties for the element specified.\r\n * @param {DomNode} The DOM node to get the bounds for.\r\n */\r\n function getbounds(el) {\r\n el = $(el);\r\n var offset = el.offset();\r\n\r\n var bounds = {\r\n left: offset.left,\r\n right: offset.left + el.outerWidth(),\r\n top: offset.top,\r\n bottom: offset.top + el.outerHeight()\r\n }\r\n\r\n return bounds;\r\n }\r\n\r\n\r\n /**\r\n * Checks if the point object is in the bounds object.\r\n * @param {object} point A point object.\r\n * @param {int} point.x The x value of the point.\r\n * @param {int} point.y The x value of the point.\r\n * @param {object} bounds The bounds object to test\r\n * @param {int} bounds.left The leftmost value\r\n * @param {int} bounds.right The righttmost value\r\n * @param {int} bounds.top The topmost value\r\n * @param {int} bounds.bottom The bottommost value\r\n */\r\n function isInBounds(point, bounds) {\r\n return (point.x > bounds.left && point.x < bounds.right && point.y > bounds.top && point.y < bounds.bottom);\r\n };\r\n\r\n /**\r\n * Checks if the two points are equal\r\n * @param {object} point A point object.\r\n * @param {object} point B point object.\r\n * @return true of the points match\r\n */\r\n function comparePoints(pointA, pointB) {\r\n return (pointA.x == pointB.x && pointA.y == pointB.y);\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * A catch all handler that is triggered for all swipe directions.\r\n * @name $.fn.swipe#swipe\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user swiped\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {object} fingerData The coordinates of fingers in event\r\n * @param {string} currentDirection The current direction the user is swiping.\r\n */\r\n\r\n\r\n\r\n\r\n /**\r\n * A handler that is triggered for \"left\" swipes.\r\n * @name $.fn.swipe#swipeLeft\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user swiped\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {object} fingerData The coordinates of fingers in event\r\n * @param {string} currentDirection The current direction the user is swiping.\r\n */\r\n\r\n /**\r\n * A handler that is triggered for \"right\" swipes.\r\n * @name $.fn.swipe#swipeRight\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user swiped\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {object} fingerData The coordinates of fingers in event\r\n * @param {string} currentDirection The current direction the user is swiping.\r\n */\r\n\r\n /**\r\n * A handler that is triggered for \"up\" swipes.\r\n * @name $.fn.swipe#swipeUp\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user swiped\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {object} fingerData The coordinates of fingers in event\r\n * @param {string} currentDirection The current direction the user is swiping.\r\n */\r\n\r\n /**\r\n * A handler that is triggered for \"down\" swipes.\r\n * @name $.fn.swipe#swipeDown\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {int} direction The direction the user swiped in. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user swiped\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {object} fingerData The coordinates of fingers in event\r\n * @param {string} currentDirection The current direction the user is swiping.\r\n */\r\n\r\n /**\r\n * A handler triggered for every phase of the swipe. This handler is constantly fired for the duration of the pinch.\r\n * This is triggered regardless of swipe thresholds.\r\n * @name $.fn.swipe#swipeStatus\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {string} phase The phase of the swipe event. See {@link $.fn.swipe.phases}\r\n * @param {string} direction The direction the user swiped in. This is null if the user has yet to move. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user swiped. This is 0 if the user has yet to move.\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {object} fingerData The coordinates of fingers in event\r\n * @param {string} currentDirection The current direction the user is swiping.\r\n */\r\n\r\n /**\r\n * A handler triggered for pinch in events.\r\n * @name $.fn.swipe#pinchIn\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user pinched\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {int} zoom The zoom/scale level the user pinched too, 0-1.\r\n * @param {object} fingerData The coordinates of fingers in event\r\n */\r\n\r\n /**\r\n * A handler triggered for pinch out events.\r\n * @name $.fn.swipe#pinchOut\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user pinched\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {int} zoom The zoom/scale level the user pinched too, 0-1.\r\n * @param {object} fingerData The coordinates of fingers in event\r\n */\r\n\r\n /**\r\n * A handler triggered for all pinch events. This handler is constantly fired for the duration of the pinch. This is triggered regardless of thresholds.\r\n * @name $.fn.swipe#pinchStatus\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {int} direction The direction the user pinched in. See {@link $.fn.swipe.directions}\r\n * @param {int} distance The distance the user pinched\r\n * @param {int} duration The duration of the swipe in milliseconds\r\n * @param {int} fingerCount The number of fingers used. See {@link $.fn.swipe.fingers}\r\n * @param {int} zoom The zoom/scale level the user pinched too, 0-1.\r\n * @param {object} fingerData The coordinates of fingers in event\r\n */\r\n\r\n /**\r\n * A click handler triggered when a user simply clicks, rather than swipes on an element.\r\n * This is deprecated since version 1.6.2, any assignment to click will be assigned to the tap handler.\r\n * You cannot use on to bind to this event as the default jQ click event will be triggered.\r\n * Use the tap event instead.\r\n * @name $.fn.swipe#click\r\n * @event\r\n * @deprecated since version 1.6.2, please use {@link $.fn.swipe#tap} instead\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {DomObject} target The element clicked on.\r\n */\r\n\r\n /**\r\n * A click / tap handler triggered when a user simply clicks or taps, rather than swipes on an element.\r\n * @name $.fn.swipe#tap\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {DomObject} target The element clicked on.\r\n */\r\n\r\n /**\r\n * A double tap handler triggered when a user double clicks or taps on an element.\r\n * You can set the time delay for a double tap with the {@link $.fn.swipe.defaults#doubleTapThreshold} property.\r\n * Note: If you set both doubleTap and tap handlers, the tap event will be delayed by the doubleTapThreshold\r\n * as the script needs to check if its a double tap.\r\n * @name $.fn.swipe#doubleTap\r\n * @see $.fn.swipe.defaults#doubleTapThreshold\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {DomObject} target The element clicked on.\r\n */\r\n\r\n /**\r\n * A long tap handler triggered once a tap has been release if the tap was longer than the longTapThreshold.\r\n * You can set the time delay for a long tap with the {@link $.fn.swipe.defaults#longTapThreshold} property.\r\n * @name $.fn.swipe#longTap\r\n * @see $.fn.swipe.defaults#longTapThreshold\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {DomObject} target The element clicked on.\r\n */\r\n\r\n /**\r\n * A hold tap handler triggered as soon as the longTapThreshold is reached\r\n * You can set the time delay for a long tap with the {@link $.fn.swipe.defaults#longTapThreshold} property.\r\n * @name $.fn.swipe#hold\r\n * @see $.fn.swipe.defaults#longTapThreshold\r\n * @event\r\n * @default null\r\n * @param {EventObject} event The original event object\r\n * @param {DomObject} target The element clicked on.\r\n */\r\n\r\n}));\r\n\n", "/**\r\n * @license Underscore.js 1.8.3\r\n * http://underscorejs.org\r\n * (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\r\n * Underscore may be freely distributed under the MIT license.\r\n */\r\n(function() {\r\n\r\n // Baseline setup\r\n // --------------\r\n\r\n // Establish the root object, `window` in the browser, or `exports` on the server.\r\n var root = this;\r\n\r\n // Save the previous value of the `_` variable.\r\n var previousUnderscore = root._;\r\n\r\n // Save bytes in the minified (but not gzipped) version:\r\n var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;\r\n\r\n // Create quick reference variables for speed access to core prototypes.\r\n var\r\n push = ArrayProto.push,\r\n slice = ArrayProto.slice,\r\n toString = ObjProto.toString,\r\n hasOwnProperty = ObjProto.hasOwnProperty;\r\n\r\n // All **ECMAScript 5** native function implementations that we hope to use\r\n // are declared here.\r\n var\r\n nativeIsArray = Array.isArray,\r\n nativeKeys = Object.keys,\r\n nativeBind = FuncProto.bind,\r\n nativeCreate = Object.create;\r\n\r\n // Naked function reference for surrogate-prototype-swapping.\r\n var Ctor = function(){};\r\n\r\n // Create a safe reference to the Underscore object for use below.\r\n var _ = function(obj) {\r\n if (obj instanceof _) return obj;\r\n if (!(this instanceof _)) return new _(obj);\r\n this._wrapped = obj;\r\n };\r\n\r\n // Export the Underscore object for **Node.js**, with\r\n // backwards-compatibility for the old `require()` API. If we're in\r\n // the browser, add `_` as a global object.\r\n if (typeof exports !== 'undefined') {\r\n if (typeof module !== 'undefined' && module.exports) {\r\n exports = module.exports = _;\r\n }\r\n exports._ = _;\r\n } else {\r\n root._ = _;\r\n }\r\n\r\n // Current version.\r\n _.VERSION = '1.8.3';\r\n\r\n // Internal function that returns an efficient (for current engines) version\r\n // of the passed-in callback, to be repeatedly applied in other Underscore\r\n // functions.\r\n var optimizeCb = function(func, context, argCount) {\r\n if (context === void 0) return func;\r\n switch (argCount == null ? 3 : argCount) {\r\n case 1: return function(value) {\r\n return func.call(context, value);\r\n };\r\n case 2: return function(value, other) {\r\n return func.call(context, value, other);\r\n };\r\n case 3: return function(value, index, collection) {\r\n return func.call(context, value, index, collection);\r\n };\r\n case 4: return function(accumulator, value, index, collection) {\r\n return func.call(context, accumulator, value, index, collection);\r\n };\r\n }\r\n return function() {\r\n return func.apply(context, arguments);\r\n };\r\n };\r\n\r\n // A mostly-internal function to generate callbacks that can be applied\r\n // to each element in a collection, returning the desired result ? either\r\n // identity, an arbitrary callback, a property matcher, or a property accessor.\r\n var cb = function(value, context, argCount) {\r\n if (value == null) return _.identity;\r\n if (_.isFunction(value)) return optimizeCb(value, context, argCount);\r\n if (_.isObject(value)) return _.matcher(value);\r\n return _.property(value);\r\n };\r\n _.iteratee = function(value, context) {\r\n return cb(value, context, Infinity);\r\n };\r\n\r\n // An internal function for creating assigner functions.\r\n var createAssigner = function(keysFunc, undefinedOnly) {\r\n return function(obj) {\r\n var length = arguments.length;\r\n if (length < 2 || obj == null) return obj;\r\n for (var index = 1; index < length; index++) {\r\n var source = arguments[index],\r\n keys = keysFunc(source),\r\n l = keys.length;\r\n for (var i = 0; i < l; i++) {\r\n var key = keys[i];\r\n if (!undefinedOnly || obj[key] === void 0) obj[key] = source[key];\r\n }\r\n }\r\n return obj;\r\n };\r\n };\r\n\r\n // An internal function for creating a new object that inherits from another.\r\n var baseCreate = function(prototype) {\r\n if (!_.isObject(prototype)) return {};\r\n if (nativeCreate) return nativeCreate(prototype);\r\n Ctor.prototype = prototype;\r\n var result = new Ctor;\r\n Ctor.prototype = null;\r\n return result;\r\n };\r\n\r\n var property = function(key) {\r\n return function(obj) {\r\n return obj == null ? void 0 : obj[key];\r\n };\r\n };\r\n\r\n // Helper for collection methods to determine whether a collection\r\n // should be iterated as an array or as an object\r\n // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\r\n // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\r\n var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\r\n var getLength = property('length');\r\n var isArrayLike = function(collection) {\r\n var length = getLength(collection);\r\n return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;\r\n };\r\n\r\n // Collection Functions\r\n // --------------------\r\n\r\n // The cornerstone, an `each` implementation, aka `forEach`.\r\n // Handles raw objects in addition to array-likes. Treats all\r\n // sparse array-likes as if they were dense.\r\n _.each = _.forEach = function(obj, iteratee, context) {\r\n iteratee = optimizeCb(iteratee, context);\r\n var i, length;\r\n if (isArrayLike(obj)) {\r\n for (i = 0, length = obj.length; i < length; i++) {\r\n iteratee(obj[i], i, obj);\r\n }\r\n } else {\r\n var keys = _.keys(obj);\r\n for (i = 0, length = keys.length; i < length; i++) {\r\n iteratee(obj[keys[i]], keys[i], obj);\r\n }\r\n }\r\n return obj;\r\n };\r\n\r\n // Return the results of applying the iteratee to each element.\r\n _.map = _.collect = function(obj, iteratee, context) {\r\n iteratee = cb(iteratee, context);\r\n var keys = !isArrayLike(obj) && _.keys(obj),\r\n length = (keys || obj).length,\r\n results = Array(length);\r\n for (var index = 0; index < length; index++) {\r\n var currentKey = keys ? keys[index] : index;\r\n results[index] = iteratee(obj[currentKey], currentKey, obj);\r\n }\r\n return results;\r\n };\r\n\r\n // Create a reducing function iterating left or right.\r\n function createReduce(dir) {\r\n // Optimized iterator function as using arguments.length\r\n // in the main function will deoptimize the, see #1991.\r\n function iterator(obj, iteratee, memo, keys, index, length) {\r\n for (; index >= 0 && index < length; index += dir) {\r\n var currentKey = keys ? keys[index] : index;\r\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\r\n }\r\n return memo;\r\n }\r\n\r\n return function(obj, iteratee, memo, context) {\r\n iteratee = optimizeCb(iteratee, context, 4);\r\n var keys = !isArrayLike(obj) && _.keys(obj),\r\n length = (keys || obj).length,\r\n index = dir > 0 ? 0 : length - 1;\r\n // Determine the initial value if none is provided.\r\n if (arguments.length < 3) {\r\n memo = obj[keys ? keys[index] : index];\r\n index += dir;\r\n }\r\n return iterator(obj, iteratee, memo, keys, index, length);\r\n };\r\n }\r\n\r\n // **Reduce** builds up a single result from a list of values, aka `inject`,\r\n // or `foldl`.\r\n _.reduce = _.foldl = _.inject = createReduce(1);\r\n\r\n // The right-associative version of reduce, also known as `foldr`.\r\n _.reduceRight = _.foldr = createReduce(-1);\r\n\r\n // Return the first value which passes a truth test. Aliased as `detect`.\r\n _.find = _.detect = function(obj, predicate, context) {\r\n var key;\r\n if (isArrayLike(obj)) {\r\n key = _.findIndex(obj, predicate, context);\r\n } else {\r\n key = _.findKey(obj, predicate, context);\r\n }\r\n if (key !== void 0 && key !== -1) return obj[key];\r\n };\r\n\r\n // Return all the elements that pass a truth test.\r\n // Aliased as `select`.\r\n _.filter = _.select = function(obj, predicate, context) {\r\n var results = [];\r\n predicate = cb(predicate, context);\r\n _.each(obj, function(value, index, list) {\r\n if (predicate(value, index, list)) results.push(value);\r\n });\r\n return results;\r\n };\r\n\r\n // Return all the elements for which a truth test fails.\r\n _.reject = function(obj, predicate, context) {\r\n return _.filter(obj, _.negate(cb(predicate)), context);\r\n };\r\n\r\n // Determine whether all of the elements match a truth test.\r\n // Aliased as `all`.\r\n _.every = _.all = function(obj, predicate, context) {\r\n predicate = cb(predicate, context);\r\n var keys = !isArrayLike(obj) && _.keys(obj),\r\n length = (keys || obj).length;\r\n for (var index = 0; index < length; index++) {\r\n var currentKey = keys ? keys[index] : index;\r\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\r\n }\r\n return true;\r\n };\r\n\r\n // Determine if at least one element in the object matches a truth test.\r\n // Aliased as `any`.\r\n _.some = _.any = function(obj, predicate, context) {\r\n predicate = cb(predicate, context);\r\n var keys = !isArrayLike(obj) && _.keys(obj),\r\n length = (keys || obj).length;\r\n for (var index = 0; index < length; index++) {\r\n var currentKey = keys ? keys[index] : index;\r\n if (predicate(obj[currentKey], currentKey, obj)) return true;\r\n }\r\n return false;\r\n };\r\n\r\n // Determine if the array or object contains a given item (using `===`).\r\n // Aliased as `includes` and `include`.\r\n _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {\r\n if (!isArrayLike(obj)) obj = _.values(obj);\r\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\r\n return _.indexOf(obj, item, fromIndex) >= 0;\r\n };\r\n\r\n // Invoke a method (with arguments) on every item in a collection.\r\n _.invoke = function(obj, method) {\r\n var args = slice.call(arguments, 2);\r\n var isFunc = _.isFunction(method);\r\n return _.map(obj, function(value) {\r\n var func = isFunc ? method : value[method];\r\n return func == null ? func : func.apply(value, args);\r\n });\r\n };\r\n\r\n // Convenience version of a common use case of `map`: fetching a property.\r\n _.pluck = function(obj, key) {\r\n return _.map(obj, _.property(key));\r\n };\r\n\r\n // Convenience version of a common use case of `filter`: selecting only objects\r\n // containing specific `key:value` pairs.\r\n _.where = function(obj, attrs) {\r\n return _.filter(obj, _.matcher(attrs));\r\n };\r\n\r\n // Convenience version of a common use case of `find`: getting the first object\r\n // containing specific `key:value` pairs.\r\n _.findWhere = function(obj, attrs) {\r\n return _.find(obj, _.matcher(attrs));\r\n };\r\n\r\n // Return the maximum element (or element-based computation).\r\n _.max = function(obj, iteratee, context) {\r\n var result = -Infinity, lastComputed = -Infinity,\r\n value, computed;\r\n if (iteratee == null && obj != null) {\r\n obj = isArrayLike(obj) ? obj : _.values(obj);\r\n for (var i = 0, length = obj.length; i < length; i++) {\r\n value = obj[i];\r\n if (value > result) {\r\n result = value;\r\n }\r\n }\r\n } else {\r\n iteratee = cb(iteratee, context);\r\n _.each(obj, function(value, index, list) {\r\n computed = iteratee(value, index, list);\r\n if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\r\n result = value;\r\n lastComputed = computed;\r\n }\r\n });\r\n }\r\n return result;\r\n };\r\n\r\n // Return the minimum element (or element-based computation).\r\n _.min = function(obj, iteratee, context) {\r\n var result = Infinity, lastComputed = Infinity,\r\n value, computed;\r\n if (iteratee == null && obj != null) {\r\n obj = isArrayLike(obj) ? obj : _.values(obj);\r\n for (var i = 0, length = obj.length; i < length; i++) {\r\n value = obj[i];\r\n if (value < result) {\r\n result = value;\r\n }\r\n }\r\n } else {\r\n iteratee = cb(iteratee, context);\r\n _.each(obj, function(value, index, list) {\r\n computed = iteratee(value, index, list);\r\n if (computed < lastComputed || computed === Infinity && result === Infinity) {\r\n result = value;\r\n lastComputed = computed;\r\n }\r\n });\r\n }\r\n return result;\r\n };\r\n\r\n // Shuffle a collection, using the modern version of the\r\n // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher?Yates_shuffle).\r\n _.shuffle = function(obj) {\r\n var set = isArrayLike(obj) ? obj : _.values(obj);\r\n var length = set.length;\r\n var shuffled = Array(length);\r\n for (var index = 0, rand; index < length; index++) {\r\n rand = _.random(0, index);\r\n if (rand !== index) shuffled[index] = shuffled[rand];\r\n shuffled[rand] = set[index];\r\n }\r\n return shuffled;\r\n };\r\n\r\n // Sample **n** random values from a collection.\r\n // If **n** is not specified, returns a single random element.\r\n // The internal `guard` argument allows it to work with `map`.\r\n _.sample = function(obj, n, guard) {\r\n if (n == null || guard) {\r\n if (!isArrayLike(obj)) obj = _.values(obj);\r\n return obj[_.random(obj.length - 1)];\r\n }\r\n return _.shuffle(obj).slice(0, Math.max(0, n));\r\n };\r\n\r\n // Sort the object's values by a criterion produced by an iteratee.\r\n _.sortBy = function(obj, iteratee, context) {\r\n iteratee = cb(iteratee, context);\r\n return _.pluck(_.map(obj, function(value, index, list) {\r\n return {\r\n value: value,\r\n index: index,\r\n criteria: iteratee(value, index, list)\r\n };\r\n }).sort(function(left, right) {\r\n var a = left.criteria;\r\n var b = right.criteria;\r\n if (a !== b) {\r\n if (a > b || a === void 0) return 1;\r\n if (a < b || b === void 0) return -1;\r\n }\r\n return left.index - right.index;\r\n }), 'value');\r\n };\r\n\r\n // An internal function used for aggregate \"group by\" operations.\r\n var group = function(behavior) {\r\n return function(obj, iteratee, context) {\r\n var result = {};\r\n iteratee = cb(iteratee, context);\r\n _.each(obj, function(value, index) {\r\n var key = iteratee(value, index, obj);\r\n behavior(result, value, key);\r\n });\r\n return result;\r\n };\r\n };\r\n\r\n // Groups the object's values by a criterion. Pass either a string attribute\r\n // to group by, or a function that returns the criterion.\r\n _.groupBy = group(function(result, value, key) {\r\n if (_.has(result, key)) result[key].push(value); else result[key] = [value];\r\n });\r\n\r\n // Indexes the object's values by a criterion, similar to `groupBy`, but for\r\n // when you know that your index values will be unique.\r\n _.indexBy = group(function(result, value, key) {\r\n result[key] = value;\r\n });\r\n\r\n // Counts instances of an object that group by a certain criterion. Pass\r\n // either a string attribute to count by, or a function that returns the\r\n // criterion.\r\n _.countBy = group(function(result, value, key) {\r\n if (_.has(result, key)) result[key]++; else result[key] = 1;\r\n });\r\n\r\n // Safely create a real, live array from anything iterable.\r\n _.toArray = function(obj) {\r\n if (!obj) return [];\r\n if (_.isArray(obj)) return slice.call(obj);\r\n if (isArrayLike(obj)) return _.map(obj, _.identity);\r\n return _.values(obj);\r\n };\r\n\r\n // Return the number of elements in an object.\r\n _.size = function(obj) {\r\n if (obj == null) return 0;\r\n return isArrayLike(obj) ? obj.length : _.keys(obj).length;\r\n };\r\n\r\n // Split a collection into two arrays: one whose elements all satisfy the given\r\n // predicate, and one whose elements all do not satisfy the predicate.\r\n _.partition = function(obj, predicate, context) {\r\n predicate = cb(predicate, context);\r\n var pass = [], fail = [];\r\n _.each(obj, function(value, key, obj) {\r\n (predicate(value, key, obj) ? pass : fail).push(value);\r\n });\r\n return [pass, fail];\r\n };\r\n\r\n // Array Functions\r\n // ---------------\r\n\r\n // Get the first element of an array. Passing **n** will return the first N\r\n // values in the array. Aliased as `head` and `take`. The **guard** check\r\n // allows it to work with `_.map`.\r\n _.first = _.head = _.take = function(array, n, guard) {\r\n if (array == null) return void 0;\r\n if (n == null || guard) return array[0];\r\n return _.initial(array, array.length - n);\r\n };\r\n\r\n // Returns everything but the last entry of the array. Especially useful on\r\n // the arguments object. Passing **n** will return all the values in\r\n // the array, excluding the last N.\r\n _.initial = function(array, n, guard) {\r\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\r\n };\r\n\r\n // Get the last element of an array. Passing **n** will return the last N\r\n // values in the array.\r\n _.last = function(array, n, guard) {\r\n if (array == null) return void 0;\r\n if (n == null || guard) return array[array.length - 1];\r\n return _.rest(array, Math.max(0, array.length - n));\r\n };\r\n\r\n // Returns everything but the first entry of the array. Aliased as `tail` and `drop`.\r\n // Especially useful on the arguments object. Passing an **n** will return\r\n // the rest N values in the array.\r\n _.rest = _.tail = _.drop = function(array, n, guard) {\r\n return slice.call(array, n == null || guard ? 1 : n);\r\n };\r\n\r\n // Trim out all falsy values from an array.\r\n _.compact = function(array) {\r\n return _.filter(array, _.identity);\r\n };\r\n\r\n // Internal implementation of a recursive `flatten` function.\r\n var flatten = function(input, shallow, strict, startIndex) {\r\n var output = [], idx = 0;\r\n for (var i = startIndex || 0, length = getLength(input); i < length; i++) {\r\n var value = input[i];\r\n if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {\r\n //flatten current level of array or arguments object\r\n if (!shallow) value = flatten(value, shallow, strict);\r\n var j = 0, len = value.length;\r\n output.length += len;\r\n while (j < len) {\r\n output[idx++] = value[j++];\r\n }\r\n } else if (!strict) {\r\n output[idx++] = value;\r\n }\r\n }\r\n return output;\r\n };\r\n\r\n // Flatten out an array, either recursively (by default), or just one level.\r\n _.flatten = function(array, shallow) {\r\n return flatten(array, shallow, false);\r\n };\r\n\r\n // Return a version of the array that does not contain the specified value(s).\r\n _.without = function(array) {\r\n return _.difference(array, slice.call(arguments, 1));\r\n };\r\n\r\n // Produce a duplicate-free version of the array. If the array has already\r\n // been sorted, you have the option of using a faster algorithm.\r\n // Aliased as `unique`.\r\n _.uniq = _.unique = function(array, isSorted, iteratee, context) {\r\n if (!_.isBoolean(isSorted)) {\r\n context = iteratee;\r\n iteratee = isSorted;\r\n isSorted = false;\r\n }\r\n if (iteratee != null) iteratee = cb(iteratee, context);\r\n var result = [];\r\n var seen = [];\r\n for (var i = 0, length = getLength(array); i < length; i++) {\r\n var value = array[i],\r\n computed = iteratee ? iteratee(value, i, array) : value;\r\n if (isSorted) {\r\n if (!i || seen !== computed) result.push(value);\r\n seen = computed;\r\n } else if (iteratee) {\r\n if (!_.contains(seen, computed)) {\r\n seen.push(computed);\r\n result.push(value);\r\n }\r\n } else if (!_.contains(result, value)) {\r\n result.push(value);\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n // Produce an array that contains the union: each distinct element from all of\r\n // the passed-in arrays.\r\n _.union = function() {\r\n return _.uniq(flatten(arguments, true, true));\r\n };\r\n\r\n // Produce an array that contains every item shared between all the\r\n // passed-in arrays.\r\n _.intersection = function(array) {\r\n var result = [];\r\n var argsLength = arguments.length;\r\n for (var i = 0, length = getLength(array); i < length; i++) {\r\n var item = array[i];\r\n if (_.contains(result, item)) continue;\r\n for (var j = 1; j < argsLength; j++) {\r\n if (!_.contains(arguments[j], item)) break;\r\n }\r\n if (j === argsLength) result.push(item);\r\n }\r\n return result;\r\n };\r\n\r\n // Take the difference between one array and a number of other arrays.\r\n // Only the elements present in just the first array will remain.\r\n _.difference = function(array) {\r\n var rest = flatten(arguments, true, true, 1);\r\n return _.filter(array, function(value){\r\n return !_.contains(rest, value);\r\n });\r\n };\r\n\r\n // Zip together multiple lists into a single array -- elements that share\r\n // an index go together.\r\n _.zip = function() {\r\n return _.unzip(arguments);\r\n };\r\n\r\n // Complement of _.zip. Unzip accepts an array of arrays and groups\r\n // each array's elements on shared indices\r\n _.unzip = function(array) {\r\n var length = array && _.max(array, getLength).length || 0;\r\n var result = Array(length);\r\n\r\n for (var index = 0; index < length; index++) {\r\n result[index] = _.pluck(array, index);\r\n }\r\n return result;\r\n };\r\n\r\n // Converts lists into objects. Pass either a single array of `[key, value]`\r\n // pairs, or two parallel arrays of the same length -- one of keys, and one of\r\n // the corresponding values.\r\n _.object = function(list, values) {\r\n var result = {};\r\n for (var i = 0, length = getLength(list); i < length; i++) {\r\n if (values) {\r\n result[list[i]] = values[i];\r\n } else {\r\n result[list[i][0]] = list[i][1];\r\n }\r\n }\r\n return result;\r\n };\r\n\r\n // Generator function to create the findIndex and findLastIndex functions\r\n function createPredicateIndexFinder(dir) {\r\n return function(array, predicate, context) {\r\n predicate = cb(predicate, context);\r\n var length = getLength(array);\r\n var index = dir > 0 ? 0 : length - 1;\r\n for (; index >= 0 && index < length; index += dir) {\r\n if (predicate(array[index], index, array)) return index;\r\n }\r\n return -1;\r\n };\r\n }\r\n\r\n // Returns the first index on an array-like that passes a predicate test\r\n _.findIndex = createPredicateIndexFinder(1);\r\n _.findLastIndex = createPredicateIndexFinder(-1);\r\n\r\n // Use a comparator function to figure out the smallest index at which\r\n // an object should be inserted so as to maintain order. Uses binary search.\r\n _.sortedIndex = function(array, obj, iteratee, context) {\r\n iteratee = cb(iteratee, context, 1);\r\n var value = iteratee(obj);\r\n var low = 0, high = getLength(array);\r\n while (low < high) {\r\n var mid = Math.floor((low + high) / 2);\r\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\r\n }\r\n return low;\r\n };\r\n\r\n // Generator function to create the indexOf and lastIndexOf functions\r\n function createIndexFinder(dir, predicateFind, sortedIndex) {\r\n return function(array, item, idx) {\r\n var i = 0, length = getLength(array);\r\n if (typeof idx == 'number') {\r\n if (dir > 0) {\r\n i = idx >= 0 ? idx : Math.max(idx + length, i);\r\n } else {\r\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\r\n }\r\n } else if (sortedIndex && idx && length) {\r\n idx = sortedIndex(array, item);\r\n return array[idx] === item ? idx : -1;\r\n }\r\n if (item !== item) {\r\n idx = predicateFind(slice.call(array, i, length), _.isNaN);\r\n return idx >= 0 ? idx + i : -1;\r\n }\r\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\r\n if (array[idx] === item) return idx;\r\n }\r\n return -1;\r\n };\r\n }\r\n\r\n // Return the position of the first occurrence of an item in an array,\r\n // or -1 if the item is not included in the array.\r\n // If the array is large and already in sort order, pass `true`\r\n // for **isSorted** to use binary search.\r\n _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);\r\n _.lastIndexOf = createIndexFinder(-1, _.findLastIndex);\r\n\r\n // Generate an integer Array containing an arithmetic progression. A port of\r\n // the native Python `range()` function. See\r\n // [the Python documentation](http://docs.python.org/library/functions.html#range).\r\n _.range = function(start, stop, step) {\r\n if (stop == null) {\r\n stop = start || 0;\r\n start = 0;\r\n }\r\n step = step || 1;\r\n\r\n var length = Math.max(Math.ceil((stop - start) / step), 0);\r\n var range = Array(length);\r\n\r\n for (var idx = 0; idx < length; idx++, start += step) {\r\n range[idx] = start;\r\n }\r\n\r\n return range;\r\n };\r\n\r\n // Function (ahem) Functions\r\n // ------------------\r\n\r\n // Determines whether to execute a function as a constructor\r\n // or a normal function with the provided arguments\r\n var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {\r\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\r\n var self = baseCreate(sourceFunc.prototype);\r\n var result = sourceFunc.apply(self, args);\r\n if (_.isObject(result)) return result;\r\n return self;\r\n };\r\n\r\n // Create a function bound to a given object (assigning `this`, and arguments,\r\n // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if\r\n // available.\r\n _.bind = function(func, context) {\r\n if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));\r\n if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function');\r\n var args = slice.call(arguments, 2);\r\n var bound = function() {\r\n return executeBound(func, bound, context, this, args.concat(slice.call(arguments)));\r\n };\r\n return bound;\r\n };\r\n\r\n // Partially apply a function by creating a version that has had some of its\r\n // arguments pre-filled, without changing its dynamic `this` context. _ acts\r\n // as a placeholder, allowing any combination of arguments to be pre-filled.\r\n _.partial = function(func) {\r\n var boundArgs = slice.call(arguments, 1);\r\n var bound = function() {\r\n var position = 0, length = boundArgs.length;\r\n var args = Array(length);\r\n for (var i = 0; i < length; i++) {\r\n args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];\r\n }\r\n while (position < arguments.length) args.push(arguments[position++]);\r\n return executeBound(func, bound, this, this, args);\r\n };\r\n return bound;\r\n };\r\n\r\n // Bind a number of an object's methods to that object. Remaining arguments\r\n // are the method names to be bound. Useful for ensuring that all callbacks\r\n // defined on an object belong to it.\r\n _.bindAll = function(obj) {\r\n var i, length = arguments.length, key;\r\n if (length <= 1) throw new Error('bindAll must be passed function names');\r\n for (i = 1; i < length; i++) {\r\n key = arguments[i];\r\n obj[key] = _.bind(obj[key], obj);\r\n }\r\n return obj;\r\n };\r\n\r\n // Memoize an expensive function by storing its results.\r\n _.memoize = function(func, hasher) {\r\n var memoize = function(key) {\r\n var cache = memoize.cache;\r\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\r\n if (!_.has(cache, address)) cache[address] = func.apply(this, arguments);\r\n return cache[address];\r\n };\r\n memoize.cache = {};\r\n return memoize;\r\n };\r\n\r\n // Delays a function for the given number of milliseconds, and then calls\r\n // it with the arguments supplied.\r\n _.delay = function(func, wait) {\r\n var args = slice.call(arguments, 2);\r\n return setTimeout(function(){\r\n return func.apply(null, args);\r\n }, wait);\r\n };\r\n\r\n // Defers a function, scheduling it to run after the current call stack has\r\n // cleared.\r\n _.defer = _.partial(_.delay, _, 1);\r\n\r\n // Returns a function, that, when invoked, will only be triggered at most once\r\n // during a given window of time. Normally, the throttled function will run\r\n // as much as it can, without ever going more than once per `wait` duration;\r\n // but if you'd like to disable the execution on the leading edge, pass\r\n // `{leading: false}`. To disable execution on the trailing edge, ditto.\r\n _.throttle = function(func, wait, options) {\r\n var context, args, result;\r\n var timeout = null;\r\n var previous = 0;\r\n if (!options) options = {};\r\n var later = function() {\r\n previous = options.leading === false ? 0 : _.now();\r\n timeout = null;\r\n result = func.apply(context, args);\r\n if (!timeout) context = args = null;\r\n };\r\n return function() {\r\n var now = _.now();\r\n if (!previous && options.leading === false) previous = now;\r\n var remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n result = func.apply(context, args);\r\n if (!timeout) context = args = null;\r\n } else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n };\r\n\r\n // Returns a function, that, as long as it continues to be invoked, will not\r\n // be triggered. The function will be called after it stops being called for\r\n // N milliseconds. If `immediate` is passed, trigger the function on the\r\n // leading edge, instead of the trailing.\r\n _.debounce = function(func, wait, immediate) {\r\n var timeout, args, context, timestamp, result;\r\n\r\n var later = function() {\r\n var last = _.now() - timestamp;\r\n\r\n if (last < wait && last >= 0) {\r\n timeout = setTimeout(later, wait - last);\r\n } else {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n if (!timeout) context = args = null;\r\n }\r\n }\r\n };\r\n\r\n return function() {\r\n context = this;\r\n args = arguments;\r\n timestamp = _.now();\r\n var callNow = immediate && !timeout;\r\n if (!timeout) timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n context = args = null;\r\n }\r\n\r\n return result;\r\n };\r\n };\r\n\r\n // Returns the first function passed as an argument to the second,\r\n // allowing you to adjust arguments, run code before and after, and\r\n // conditionally execute the original function.\r\n _.wrap = function(func, wrapper) {\r\n return _.partial(wrapper, func);\r\n };\r\n\r\n // Returns a negated version of the passed-in predicate.\r\n _.negate = function(predicate) {\r\n return function() {\r\n return !predicate.apply(this, arguments);\r\n };\r\n };\r\n\r\n // Returns a function that is the composition of a list of functions, each\r\n // consuming the return value of the function that follows.\r\n _.compose = function() {\r\n var args = arguments;\r\n var start = args.length - 1;\r\n return function() {\r\n var i = start;\r\n var result = args[start].apply(this, arguments);\r\n while (i--) result = args[i].call(this, result);\r\n return result;\r\n };\r\n };\r\n\r\n // Returns a function that will only be executed on and after the Nth call.\r\n _.after = function(times, func) {\r\n return function() {\r\n if (--times < 1) {\r\n return func.apply(this, arguments);\r\n }\r\n };\r\n };\r\n\r\n // Returns a function that will only be executed up to (but not including) the Nth call.\r\n _.before = function(times, func) {\r\n var memo;\r\n return function() {\r\n if (--times > 0) {\r\n memo = func.apply(this, arguments);\r\n }\r\n if (times <= 1) func = null;\r\n return memo;\r\n };\r\n };\r\n\r\n // Returns a function that will be executed at most one time, no matter how\r\n // often you call it. Useful for lazy initialization.\r\n _.once = _.partial(_.before, 2);\r\n\r\n // Object Functions\r\n // ----------------\r\n\r\n // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\r\n var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\r\n var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\r\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\r\n\r\n function collectNonEnumProps(obj, keys) {\r\n var nonEnumIdx = nonEnumerableProps.length;\r\n var constructor = obj.constructor;\r\n var proto = (_.isFunction(constructor) && constructor.prototype) || ObjProto;\r\n\r\n // Constructor is a special case.\r\n var prop = 'constructor';\r\n if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop);\r\n\r\n while (nonEnumIdx--) {\r\n prop = nonEnumerableProps[nonEnumIdx];\r\n if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) {\r\n keys.push(prop);\r\n }\r\n }\r\n }\r\n\r\n // Retrieve the names of an object's own properties.\r\n // Delegates to **ECMAScript 5**'s native `Object.keys`\r\n _.keys = function(obj) {\r\n if (!_.isObject(obj)) return [];\r\n if (nativeKeys) return nativeKeys(obj);\r\n var keys = [];\r\n for (var key in obj) if (_.has(obj, key)) keys.push(key);\r\n // Ahem, IE < 9.\r\n if (hasEnumBug) collectNonEnumProps(obj, keys);\r\n return keys;\r\n };\r\n\r\n // Retrieve all the property names of an object.\r\n _.allKeys = function(obj) {\r\n if (!_.isObject(obj)) return [];\r\n var keys = [];\r\n for (var key in obj) keys.push(key);\r\n // Ahem, IE < 9.\r\n if (hasEnumBug) collectNonEnumProps(obj, keys);\r\n return keys;\r\n };\r\n\r\n // Retrieve the values of an object's properties.\r\n _.values = function(obj) {\r\n var keys = _.keys(obj);\r\n var length = keys.length;\r\n var values = Array(length);\r\n for (var i = 0; i < length; i++) {\r\n values[i] = obj[keys[i]];\r\n }\r\n return values;\r\n };\r\n\r\n // Returns the results of applying the iteratee to each element of the object\r\n // In contrast to _.map it returns an object\r\n _.mapObject = function(obj, iteratee, context) {\r\n iteratee = cb(iteratee, context);\r\n var keys = _.keys(obj),\r\n length = keys.length,\r\n results = {},\r\n currentKey;\r\n for (var index = 0; index < length; index++) {\r\n currentKey = keys[index];\r\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\r\n }\r\n return results;\r\n };\r\n\r\n // Convert an object into a list of `[key, value]` pairs.\r\n _.pairs = function(obj) {\r\n var keys = _.keys(obj);\r\n var length = keys.length;\r\n var pairs = Array(length);\r\n for (var i = 0; i < length; i++) {\r\n pairs[i] = [keys[i], obj[keys[i]]];\r\n }\r\n return pairs;\r\n };\r\n\r\n // Invert the keys and values of an object. The values must be serializable.\r\n _.invert = function(obj) {\r\n var result = {};\r\n var keys = _.keys(obj);\r\n for (var i = 0, length = keys.length; i < length; i++) {\r\n result[obj[keys[i]]] = keys[i];\r\n }\r\n return result;\r\n };\r\n\r\n // Return a sorted list of the function names available on the object.\r\n // Aliased as `methods`\r\n _.functions = _.methods = function(obj) {\r\n var names = [];\r\n for (var key in obj) {\r\n if (_.isFunction(obj[key])) names.push(key);\r\n }\r\n return names.sort();\r\n };\r\n\r\n // Extend a given object with all the properties in passed-in object(s).\r\n _.extend = createAssigner(_.allKeys);\r\n\r\n // Assigns a given object with all the own properties in the passed-in object(s)\r\n // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\r\n _.extendOwn = _.assign = createAssigner(_.keys);\r\n\r\n // Returns the first key on an object that passes a predicate test\r\n _.findKey = function(obj, predicate, context) {\r\n predicate = cb(predicate, context);\r\n var keys = _.keys(obj), key;\r\n for (var i = 0, length = keys.length; i < length; i++) {\r\n key = keys[i];\r\n if (predicate(obj[key], key, obj)) return key;\r\n }\r\n };\r\n\r\n // Return a copy of the object only containing the whitelisted properties.\r\n _.pick = function(object, oiteratee, context) {\r\n var result = {}, obj = object, iteratee, keys;\r\n if (obj == null) return result;\r\n if (_.isFunction(oiteratee)) {\r\n keys = _.allKeys(obj);\r\n iteratee = optimizeCb(oiteratee, context);\r\n } else {\r\n keys = flatten(arguments, false, false, 1);\r\n iteratee = function(value, key, obj) { return key in obj; };\r\n obj = Object(obj);\r\n }\r\n for (var i = 0, length = keys.length; i < length; i++) {\r\n var key = keys[i];\r\n var value = obj[key];\r\n if (iteratee(value, key, obj)) result[key] = value;\r\n }\r\n return result;\r\n };\r\n\r\n // Return a copy of the object without the blacklisted properties.\r\n _.omit = function(obj, iteratee, context) {\r\n if (_.isFunction(iteratee)) {\r\n iteratee = _.negate(iteratee);\r\n } else {\r\n var keys = _.map(flatten(arguments, false, false, 1), String);\r\n iteratee = function(value, key) {\r\n return !_.contains(keys, key);\r\n };\r\n }\r\n return _.pick(obj, iteratee, context);\r\n };\r\n\r\n // Fill in a given object with default properties.\r\n _.defaults = createAssigner(_.allKeys, true);\r\n\r\n // Creates an object that inherits from the given prototype object.\r\n // If additional properties are provided then they will be added to the\r\n // created object.\r\n _.create = function(prototype, props) {\r\n var result = baseCreate(prototype);\r\n if (props) _.extendOwn(result, props);\r\n return result;\r\n };\r\n\r\n // Create a (shallow-cloned) duplicate of an object.\r\n _.clone = function(obj) {\r\n if (!_.isObject(obj)) return obj;\r\n return _.isArray(obj) ? obj.slice() : _.extend({}, obj);\r\n };\r\n\r\n // Invokes interceptor with the obj, and then returns obj.\r\n // The primary purpose of this method is to \"tap into\" a method chain, in\r\n // order to perform operations on intermediate results within the chain.\r\n _.tap = function(obj, interceptor) {\r\n interceptor(obj);\r\n return obj;\r\n };\r\n\r\n // Returns whether an object has a given set of `key:value` pairs.\r\n _.isMatch = function(object, attrs) {\r\n var keys = _.keys(attrs), length = keys.length;\r\n if (object == null) return !length;\r\n var obj = Object(object);\r\n for (var i = 0; i < length; i++) {\r\n var key = keys[i];\r\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\r\n }\r\n return true;\r\n };\r\n\r\n\r\n // Internal recursive comparison function for `isEqual`.\r\n var eq = function(a, b, aStack, bStack) {\r\n // Identical objects are equal. `0 === -0`, but they aren't identical.\r\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\r\n if (a === b) return a !== 0 || 1 / a === 1 / b;\r\n // A strict comparison is necessary because `null == undefined`.\r\n if (a == null || b == null) return a === b;\r\n // Unwrap any wrapped objects.\r\n if (a instanceof _) a = a._wrapped;\r\n if (b instanceof _) b = b._wrapped;\r\n // Compare `[[Class]]` names.\r\n var className = toString.call(a);\r\n if (className !== toString.call(b)) return false;\r\n switch (className) {\r\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\r\n case '[object RegExp]':\r\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\r\n case '[object String]':\r\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\r\n // equivalent to `new String(\"5\")`.\r\n return '' + a === '' + b;\r\n case '[object Number]':\r\n // `NaN`s are equivalent, but non-reflexive.\r\n // Object(NaN) is equivalent to NaN\r\n if (+a !== +a) return +b !== +b;\r\n // An `egal` comparison is performed for other numeric values.\r\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\r\n case '[object Date]':\r\n case '[object Boolean]':\r\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\r\n // millisecond representations. Note that invalid dates with millisecond representations\r\n // of `NaN` are not equivalent.\r\n return +a === +b;\r\n }\r\n\r\n var areArrays = className === '[object Array]';\r\n if (!areArrays) {\r\n if (typeof a != 'object' || typeof b != 'object') return false;\r\n\r\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\r\n // from different frames are.\r\n var aCtor = a.constructor, bCtor = b.constructor;\r\n if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor &&\r\n _.isFunction(bCtor) && bCtor instanceof bCtor)\r\n && ('constructor' in a && 'constructor' in b)) {\r\n return false;\r\n }\r\n }\r\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\r\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\r\n\r\n // Initializing stack of traversed objects.\r\n // It's done here since we only need them for objects and arrays comparison.\r\n aStack = aStack || [];\r\n bStack = bStack || [];\r\n var length = aStack.length;\r\n while (length--) {\r\n // Linear search. Performance is inversely proportional to the number of\r\n // unique nested structures.\r\n if (aStack[length] === a) return bStack[length] === b;\r\n }\r\n\r\n // Add the first object to the stack of traversed objects.\r\n aStack.push(a);\r\n bStack.push(b);\r\n\r\n // Recursively compare objects and arrays.\r\n if (areArrays) {\r\n // Compare array lengths to determine if a deep comparison is necessary.\r\n length = a.length;\r\n if (length !== b.length) return false;\r\n // Deep compare the contents, ignoring non-numeric properties.\r\n while (length--) {\r\n if (!eq(a[length], b[length], aStack, bStack)) return false;\r\n }\r\n } else {\r\n // Deep compare objects.\r\n var keys = _.keys(a), key;\r\n length = keys.length;\r\n // Ensure that both objects contain the same number of properties before comparing deep equality.\r\n if (_.keys(b).length !== length) return false;\r\n while (length--) {\r\n // Deep compare each member\r\n key = keys[length];\r\n if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\r\n }\r\n }\r\n // Remove the first object from the stack of traversed objects.\r\n aStack.pop();\r\n bStack.pop();\r\n return true;\r\n };\r\n\r\n // Perform a deep comparison to check if two objects are equal.\r\n _.isEqual = function(a, b) {\r\n return eq(a, b);\r\n };\r\n\r\n // Is a given array, string, or object empty?\r\n // An \"empty\" object has no enumerable own-properties.\r\n _.isEmpty = function(obj) {\r\n if (obj == null) return true;\r\n if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0;\r\n return _.keys(obj).length === 0;\r\n };\r\n\r\n // Is a given value a DOM element?\r\n _.isElement = function(obj) {\r\n return !!(obj && obj.nodeType === 1);\r\n };\r\n\r\n // Is a given value an array?\r\n // Delegates to ECMA5's native Array.isArray\r\n _.isArray = nativeIsArray || function(obj) {\r\n return toString.call(obj) === '[object Array]';\r\n };\r\n\r\n // Is a given variable an object?\r\n _.isObject = function(obj) {\r\n var type = typeof obj;\r\n return type === 'function' || type === 'object' && !!obj;\r\n };\r\n\r\n // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError.\r\n _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error'], function(name) {\r\n _['is' + name] = function(obj) {\r\n return toString.call(obj) === '[object ' + name + ']';\r\n };\r\n });\r\n\r\n // Define a fallback version of the method in browsers (ahem, IE < 9), where\r\n // there isn't any inspectable \"Arguments\" type.\r\n if (!_.isArguments(arguments)) {\r\n _.isArguments = function(obj) {\r\n return _.has(obj, 'callee');\r\n };\r\n }\r\n\r\n // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8,\r\n // IE 11 (#1621), and in Safari 8 (#1929).\r\n if (typeof /./ != 'function' && typeof Int8Array != 'object') {\r\n _.isFunction = function(obj) {\r\n return typeof obj == 'function' || false;\r\n };\r\n }\r\n\r\n // Is a given object a finite number?\r\n _.isFinite = function(obj) {\r\n return isFinite(obj) && !isNaN(parseFloat(obj));\r\n };\r\n\r\n // Is the given value `NaN`? (NaN is the only number which does not equal itself).\r\n _.isNaN = function(obj) {\r\n return _.isNumber(obj) && obj !== +obj;\r\n };\r\n\r\n // Is a given value a boolean?\r\n _.isBoolean = function(obj) {\r\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\r\n };\r\n\r\n // Is a given value equal to null?\r\n _.isNull = function(obj) {\r\n return obj === null;\r\n };\r\n\r\n // Is a given variable undefined?\r\n _.isUndefined = function(obj) {\r\n return obj === void 0;\r\n };\r\n\r\n // Shortcut function for checking if an object has a given property directly\r\n // on itself (in other words, not on a prototype).\r\n _.has = function(obj, key) {\r\n return obj != null && hasOwnProperty.call(obj, key);\r\n };\r\n\r\n // Utility Functions\r\n // -----------------\r\n\r\n // Run Underscore.js in *noConflict* mode, returning the `_` variable to its\r\n // previous owner. Returns a reference to the Underscore object.\r\n _.noConflict = function() {\r\n root._ = previousUnderscore;\r\n return this;\r\n };\r\n\r\n // Keep the identity function around for default iteratees.\r\n _.identity = function(value) {\r\n return value;\r\n };\r\n\r\n // Predicate-generating functions. Often useful outside of Underscore.\r\n _.constant = function(value) {\r\n return function() {\r\n return value;\r\n };\r\n };\r\n\r\n _.noop = function(){};\r\n\r\n _.property = property;\r\n\r\n // Generates a function for a given object that returns a given property.\r\n _.propertyOf = function(obj) {\r\n return obj == null ? function(){} : function(key) {\r\n return obj[key];\r\n };\r\n };\r\n\r\n // Returns a predicate for checking whether an object has a given set of\r\n // `key:value` pairs.\r\n _.matcher = _.matches = function(attrs) {\r\n attrs = _.extendOwn({}, attrs);\r\n return function(obj) {\r\n return _.isMatch(obj, attrs);\r\n };\r\n };\r\n\r\n // Run a function **n** times.\r\n _.times = function(n, iteratee, context) {\r\n var accum = Array(Math.max(0, n));\r\n iteratee = optimizeCb(iteratee, context, 1);\r\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\r\n return accum;\r\n };\r\n\r\n // Return a random integer between min and max (inclusive).\r\n _.random = function(min, max) {\r\n if (max == null) {\r\n max = min;\r\n min = 0;\r\n }\r\n return min + Math.floor(Math.random() * (max - min + 1));\r\n };\r\n\r\n // A (possibly faster) way to get the current timestamp as an integer.\r\n _.now = Date.now || function() {\r\n return new Date().getTime();\r\n };\r\n\r\n // List of HTML entities for escaping.\r\n var escapeMap = {\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n \"'\": ''',\r\n '`': '`'\r\n };\r\n var unescapeMap = _.invert(escapeMap);\r\n\r\n // Functions for escaping and unescaping strings to/from HTML interpolation.\r\n var createEscaper = function(map) {\r\n var escaper = function(match) {\r\n return map[match];\r\n };\r\n // Regexes for identifying a key that needs to be escaped\r\n var source = '(?:' + _.keys(map).join('|') + ')';\r\n var testRegexp = RegExp(source);\r\n var replaceRegexp = RegExp(source, 'g');\r\n return function(string) {\r\n string = string == null ? '' : '' + string;\r\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\r\n };\r\n };\r\n _.escape = createEscaper(escapeMap);\r\n _.unescape = createEscaper(unescapeMap);\r\n\r\n // If the value of the named `property` is a function then invoke it with the\r\n // `object` as context; otherwise, return it.\r\n _.result = function(object, property, fallback) {\r\n var value = object == null ? void 0 : object[property];\r\n if (value === void 0) {\r\n value = fallback;\r\n }\r\n return _.isFunction(value) ? value.call(object) : value;\r\n };\r\n\r\n // Generate a unique integer id (unique within the entire client session).\r\n // Useful for temporary DOM ids.\r\n var idCounter = 0;\r\n _.uniqueId = function(prefix) {\r\n var id = ++idCounter + '';\r\n return prefix ? prefix + id : id;\r\n };\r\n\r\n // By default, Underscore uses ERB-style template delimiters, change the\r\n // following template settings to use alternative delimiters.\r\n _.templateSettings = {\r\n evaluate : /<%([\\s\\S]+?)%>/g,\r\n interpolate : /<%=([\\s\\S]+?)%>/g,\r\n escape : /<%-([\\s\\S]+?)%>/g\r\n };\r\n\r\n // When customizing `templateSettings`, if you don't want to define an\r\n // interpolation, evaluation or escaping regex, we need one that is\r\n // guaranteed not to match.\r\n var noMatch = /(.)^/;\r\n\r\n // Certain characters need to be escaped so that they can be put into a\r\n // string literal.\r\n var escapes = {\r\n \"'\": \"'\",\r\n '\\\\': '\\\\',\r\n '\\r': 'r',\r\n '\\n': 'n',\r\n '\\u2028': 'u2028',\r\n '\\u2029': 'u2029'\r\n };\r\n\r\n var escaper = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\r\n\r\n var escapeChar = function(match) {\r\n return '\\\\' + escapes[match];\r\n };\r\n\r\n // JavaScript micro-templating, similar to John Resig's implementation.\r\n // Underscore templating handles arbitrary delimiters, preserves whitespace,\r\n // and correctly escapes quotes within interpolated code.\r\n // NB: `oldSettings` only exists for backwards compatibility.\r\n _.template = function(text, settings, oldSettings) {\r\n if (!settings && oldSettings) settings = oldSettings;\r\n settings = _.defaults({}, settings, _.templateSettings);\r\n\r\n // Combine delimiters into one regular expression via alternation.\r\n var matcher = RegExp([\r\n (settings.escape || noMatch).source,\r\n (settings.interpolate || noMatch).source,\r\n (settings.evaluate || noMatch).source\r\n ].join('|') + '|$', 'g');\r\n\r\n // Compile the template source, escaping string literals appropriately.\r\n var index = 0;\r\n var source = \"__p+='\";\r\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\r\n source += text.slice(index, offset).replace(escaper, escapeChar);\r\n index = offset + match.length;\r\n\r\n if (escape) {\r\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\r\n } else if (interpolate) {\r\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\r\n } else if (evaluate) {\r\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\r\n }\r\n\r\n // Adobe VMs need the match returned to produce the correct offest.\r\n return match;\r\n });\r\n source += \"';\\n\";\r\n\r\n // If a variable is not specified, place data values in local scope.\r\n if (!settings.variable) source = 'with(obj||{}){\\n' + source + '}\\n';\r\n\r\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\r\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\r\n source + 'return __p;\\n';\r\n\r\n try {\r\n var render = new Function(settings.variable || 'obj', '_', source);\r\n } catch (e) {\r\n e.source = source;\r\n throw e;\r\n }\r\n\r\n var template = function(data) {\r\n return render.call(this, data, _);\r\n };\r\n\r\n // Provide the compiled source as a convenience for precompilation.\r\n var argument = settings.variable || 'obj';\r\n template.source = 'function(' + argument + '){\\n' + source + '}';\r\n\r\n return template;\r\n };\r\n\r\n // Add a \"chain\" function. Start chaining a wrapped Underscore object.\r\n _.chain = function(obj) {\r\n var instance = _(obj);\r\n instance._chain = true;\r\n return instance;\r\n };\r\n\r\n // OOP\r\n // ---------------\r\n // If Underscore is called as a function, it returns a wrapped object that\r\n // can be used OO-style. This wrapper holds altered versions of all the\r\n // underscore functions. Wrapped objects may be chained.\r\n\r\n // Helper function to continue chaining intermediate results.\r\n var result = function(instance, obj) {\r\n return instance._chain ? _(obj).chain() : obj;\r\n };\r\n\r\n // Add your own custom functions to the Underscore object.\r\n _.mixin = function(obj) {\r\n _.each(_.functions(obj), function(name) {\r\n var func = _[name] = obj[name];\r\n _.prototype[name] = function() {\r\n var args = [this._wrapped];\r\n push.apply(args, arguments);\r\n return result(this, func.apply(_, args));\r\n };\r\n });\r\n };\r\n\r\n // Add all of the Underscore functions to the wrapper object.\r\n _.mixin(_);\r\n\r\n // Add all mutator Array functions to the wrapper.\r\n _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\r\n var method = ArrayProto[name];\r\n _.prototype[name] = function() {\r\n var obj = this._wrapped;\r\n method.apply(obj, arguments);\r\n if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0];\r\n return result(this, obj);\r\n };\r\n });\r\n\r\n // Add all accessor Array functions to the wrapper.\r\n _.each(['concat', 'join', 'slice'], function(name) {\r\n var method = ArrayProto[name];\r\n _.prototype[name] = function() {\r\n return result(this, method.apply(this._wrapped, arguments));\r\n };\r\n });\r\n\r\n // Extracts the result from a wrapped and chained object.\r\n _.prototype.value = function() {\r\n return this._wrapped;\r\n };\r\n\r\n // Provide unwrapping proxy for some methods used in engine operations\r\n // such as arithmetic and JSON stringification.\r\n _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\r\n\r\n _.prototype.toString = function() {\r\n return '' + this._wrapped;\r\n };\r\n\r\n // AMD registration happens at the end for compatibility with AMD loaders\r\n // that may not enforce next-turn semantics on modules. Even though general\r\n // practice for AMD registration is to be anonymous, underscore registers\r\n // as a named module because, like jQuery, it is a base library that is\r\n // popular enough to be bundled in a third party lib, but not be part of\r\n // an AMD load request. Those cases could generate an error when an\r\n // anonymous define() is called outside of a loader request.\r\n if (typeof define === 'function' && define.amd) {\r\n define('underscore', [], function() {\r\n return _;\r\n });\r\n }\r\n}.call(this));\r\n\n", "/**\r\n * @license BrainJocks CCF EventManager\r\n * https://brainjocks.atlassian.net/wiki/display/SDD/eventManager\r\n * Copyright 2020\r\n */\r\n\r\n;(function (global, factory) {\r\n typeof define === 'function' && define.amd ? define('eventManager',[\"jquery\", \"underscore\", 'loglevel'], factory) :\r\n typeof exports === 'object' && typeof module !== typeof void 0 ? module.exports = factory(require(\"jquery\"), require(\"underscore\"), require('loglevel')) :\r\n console && console.error('EventManager does not support non-amd script loading.');\r\n}(this/* window */, function($, _, log) {\r\n \"use strict\";\r\n\r\n function logRegistration(event, func) {\r\n log.debug(\"REGISTER event \" + String(event) + \" to callback function \" + (func.name || \"[Anonymous]\"));\r\n }\r\n\r\n function logUnsubscription(event, func) {\r\n log.debug(\"UNSUBSCRIBE function \" + String(event) + \" from event \" + (func.name || \"[Anonymous]\"));\r\n }\r\n\r\n function logHandledTrigger(subscriber, event) {\r\n log.debug(\"TRIGGER function \" + (subscriber.callback.name || \"[Anonymous]\") + \" for event \" + String(subscriber.event));\r\n log.debug(JSON.stringify(event, null, 4));\r\n }\r\n\r\n function logMissedTrigger(event) {\r\n log.debug(\"SKIP event with 0 subscriptions: \" + String(event));\r\n }\r\n\r\n function Registration(event, callback, thisp) {\r\n Object.defineProperties(this, {\r\n id: { value: (new Date()).valueOf() },\r\n event: { value: event },\r\n callback: { value: callback },\r\n thisp: { value: thisp }\r\n });\r\n }\r\n\r\n function EventManager() {\r\n var subscribers = [], loadingDeferred = $.Deferred(), verbose = true;\r\n\r\n Object.defineProperties(this, {\r\n verbose: {\r\n get: function () {\r\n return verbose;\r\n },\r\n set: function (value) {\r\n verbose = Boolean(value);\r\n }\r\n }\r\n });\r\n\r\n this.pauseTriggers = function () {\r\n loadingDeferred.resolve();\r\n loadingDeferred = $.Deferred();\r\n return this;\r\n };\r\n\r\n this.registrationComplete = function () {\r\n loadingDeferred.resolve();\r\n return this;\r\n };\r\n\r\n function executeCallbacks(isAsync, args) {\r\n var event = args.splice(0, 1)[0], counter = 0;\r\n\r\n subscribers.forEach(function (subscriber) {\r\n var operation;\r\n if (event === subscriber.event) {\r\n counter++;\r\n logHandledTrigger(subscriber, event);\r\n if (args.length <= 1) {\r\n if (subscriber.thisp === undefined) {\r\n operation = function () {\r\n subscriber.callback(args[0]);\r\n };\r\n } else {\r\n operation = function () {\r\n subscriber.callback.call(subscriber.thisp, args[0]);\r\n };\r\n }\r\n } else {\r\n operation = function () {\r\n subscriber.callback.apply(subscriber.thisp || null, args);\r\n };\r\n }\r\n\r\n if (isAsync) {\r\n window.setTimeout(operation, 0);\r\n } else {\r\n operation();\r\n }\r\n }\r\n });\r\n\r\n if (verbose && counter === 0) {\r\n logMissedTrigger(event);\r\n }\r\n }\r\n\r\n this.trigger = function trigger(event) {\r\n if (!event) {\r\n log.error(\"Argument 'event' is required for method EventManager.trigger\");\r\n return;\r\n }\r\n\r\n // Hold off triggering events until the page is fully loaded and all listeners have been registered\r\n loadingDeferred.promise().done(executeCallbacks.bind(null, false, $.makeArray(arguments)));\r\n };\r\n\r\n this.triggerAsync = function triggerAsync(event) {\r\n if (!event) {\r\n log.error(\"Argument 'event' is required for method EventManager.trigger\");\r\n return;\r\n }\r\n\r\n // Hold off triggering events until the page is fully loaded and all listeners have been registered\r\n loadingDeferred.promise().done(executeCallbacks.bind(null, true, $.makeArray(arguments)));\r\n };\r\n\r\n this.subscribe = function subscribe(event, callback, thisp) {\r\n var registration;\r\n\r\n if (!event || typeof callback !== \"function\") {\r\n log.debug(\r\n \"Skipping event registration. EventManager can only accept \" +\r\n \"registrations that specify an event and a callback function.\"\r\n );\r\n\r\n return null;\r\n }\r\n\r\n if (this.verbose) {\r\n logRegistration(event, callback);\r\n }\r\n\r\n registration = new Registration(event, callback, thisp);\r\n subscribers.push(registration);\r\n return registration.id;\r\n };\r\n\r\n this.unsubscribe = function unsubscribe(registrationId) {\r\n var i = _.findIndex(subscribers, function (i) {\r\n return i.id === registrationId;\r\n });\r\n\r\n if (i === -1) return;\r\n if (this.verbose) {\r\n logUnsubscription(subscribers[i].event, subscribers[i].callback);\r\n }\r\n\r\n subscribers.splice(i, 1);\r\n };\r\n }\r\n\r\n return new EventManager(); // Singleton\r\n}));\r\n\n", ";(function (global, factory) {\r\n typeof define === 'function' && define.amd ? define('score_ccf/Events/ModulesLoadedEvent',[\"jquery\"], factory) :\r\n typeof exports === 'object' && typeof module !== typeof void 0 ? module.exports = factory(require(\"jquery\")) :\r\n console && console.error('EventManager does not support non-amd script loading.');\r\n}(this/* window */, function ($) {\r\n\r\n function ModulesLoadedEvent(hasErrors, successfulModules, failedModules, scope) {\r\n if (typeof hasErrors !== \"boolean\" || !Array.isArray(successfulModules) || !Array.isArray(failedModules))\r\n throw new Error(\"Cannot initialize ModulesLoadedEvent - invalid arguments\");\r\n\r\n Object.defineProperties(this, {\r\n scope: { value: scope },\r\n hasErrors: { value: hasErrors },\r\n failedModules: { value: failedModules },\r\n successfulModules: { value: successfulModules }\r\n });\r\n };\r\n\r\n ModulesLoadedEvent.name = \"ModulesLoadedEvent\";\r\n return ModulesLoadedEvent;\r\n}));\n", "/**\r\n * @license BrainJocks CCF Extensions\r\n * https://brainjocks.atlassian.net/wiki/spaces/SDD/pages/116261662\r\n * Copyright 2017\r\n */\r\n\r\n;(function (global, factory) {\r\n typeof define === 'function' && define.amd ? define('score_ccf/extensions',[], factory) :\r\n typeof exports === 'object' && typeof module !== typeof void 0 ? module.exports = factory() :\r\n console && console.error('Extensions does not support non-amd script loading.');\r\n}(this/* window */, function() {\r\n \"use strict\";\r\n\r\n function allOfType(arr, type) {\r\n var assertFunc;\r\n if (typeof(type) === \"string\") {\r\n assertFunc = function (value) {\r\n return typeof(value) === type;\r\n };\r\n }\r\n else if (typeof(type) === \"function\") {\r\n assertFunc = function (value) {\r\n return value instanceof type;\r\n };\r\n }\r\n else {\r\n throw new TypeError(\"type must be of type function or string\");\r\n }\r\n\r\n return arr.length === 0 || arr.every(assertFunc);\r\n }\r\n\r\n function pluck(str, propertyName) {\r\n var props = String(propertyName).split(\".\");\r\n return str.map(function (x) {\r\n var i;\r\n\r\n for (i = 0; i < props.length; i = i + 1) {\r\n x = x[props[i]];\r\n if (x === undefined) {\r\n break;\r\n }\r\n }\r\n\r\n return x;\r\n });\r\n }\r\n\r\n function supplant(str, obj) {\r\n return str.replace(/\\{([^{}]*)\\}/g, function (a, b) {\r\n var r = obj[b];\r\n return typeof r === 'string' || typeof r === 'number' ? r : a;\r\n });\r\n }\r\n\r\n return Object.freeze({\r\n supplant: supplant,\r\n pluck: pluck,\r\n allOfType: allOfType\r\n });\r\n}));\r\n\n", "// Please keep functions in alphabetical order\r\n;(function (global, factory) {\r\n typeof define === 'function' && define.amd ? define('score_ccf/jquery.extensions',[\"jquery\"], factory) :\r\n typeof exports === 'object' && typeof module !== typeof void 0 ? module.exports = factory(require(\"jquery\")) :\r\n console && console.error('jquery.extensions does not support non-amd script loading.');\r\n}(this/* window */, function($) {\r\n \"use strict\";\r\n\r\n function _copyAttr(to, from, attr) {\r\n attr = String(attr);\r\n to.attr(attr, from.attr(attr));\r\n }\r\n\r\n $.fn.copyAttrFrom = $.fn.copyAttrFrom || function copyAttrFrom(element, attr) {\r\n var $el = $(element);\r\n\r\n if (Array.isArray(attr)) {\r\n attr.forEach(_copyAttr.bind(null, this, $el));\r\n } else {\r\n _copyAttr(this, $el, attr);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n $.fn.descendantOrSelf = $.fn.descendantOrSelf || function descendantOrSelf(sel) {\r\n return this.filter(sel).add(this.find(sel));\r\n };\r\n}));\r\n\n", "/**\r\n * @license BrainJocks CCF ModuleLoader\r\n * https://brainjocks.atlassian.net/wiki/display/SDD/moduleLoader\r\n * Copyright 2020\r\n */\r\n;(function (global, factory) {\r\n typeof define === 'function' && define.amd ? define('score_ccf/ModuleLoader',[\"jquery\", \"underscore\", \"eventManager\", \"score_ccf/Events/ModulesLoadedEvent\", \"score_ccf/extensions\", \"score_ccf/jquery.extensions\", 'loglevel'], factory) :\r\n typeof exports === 'object' && typeof module !== typeof void 0 ? module.exports = factory(require(\"jquery\"), require(\"underscore\"), require(\"eventManager\"), require(\"score_ccf/Events/ModulesLoadedEvent\"), require(\"score_ccf/extensions\"), require(\"score_ccf/jquery.extensions\"), require('loglevel')) :\r\n console && console.error('ModuleLoader does not support non-amd script loading.');\r\n}(this/* window */, function ($, _, eventManager, ModulesLoadedEvent, ext, jqExt, log) {\r\n \"use strict\";\r\n\r\n var ModuleState = { pending: \"pending\", failed: \"failed\", loaded: \"loaded\" },\r\n moduleNameAttr = \"data-ux-module\",\r\n moduleStateAttr = \"data-ux-state\",\r\n moduleArgsAttr = \"data-ux-args\",\r\n findModulesSel = ext.supplant(\"[{a}][{b}='{state}']\", { a: moduleNameAttr, b: moduleStateAttr });\r\n\r\n function ModuleLoader() { }\r\n\r\n ModuleLoader.prototype.loadPendingModules = function loadPendingModules(scope) {\r\n var def = $.Deferred(),\r\n loadScope = scope,\r\n moduleEls = findModuleElsByState(scope, ModuleState.pending),\r\n moduleNames = _.invoke(moduleEls, \"getAttribute\", moduleNameAttr), // Extract module names from module elements\r\n success = [], failure = [], result; // We will use these to track our progress\r\n\r\n eventManager.pauseTriggers(); // Event manager should hold off on triggering events while new registrations are going on\r\n\r\n require(moduleNames, function () {\r\n // Here, 'arguments' are the modules loaded by requirejs\r\n var modules = $.makeArray(arguments), args, i, module, initFunc;\r\n\r\n //add XPRuleLoader for all modules\r\n require([\"score_ccf/XPerience/XPRuleLoader\"],\r\n function(xpRuleLoaderModule) {\r\n var ruleLoader = xpRuleLoaderModule.hasOwnProperty('XPRuleLoader') && xpRuleLoaderModule.XPRuleLoader instanceof Function\r\n ? new xpRuleLoaderModule.XPRuleLoader() /* named load */\r\n : xpRuleLoaderModule.__esModule === !0 && xpRuleLoaderModule.hasOwnProperty(\"default\") && xpRuleLoaderModule.default instanceof Function ? new xpRuleLoaderModule.default() /* default module load */\r\n : xpRuleLoaderModule instanceof Function ? new xpRuleLoaderModule() /* old fashioned modules */\r\n : log.warn('Cannot load XPRuleLoader module to load XPerience Rules');\r\n\r\n for (i = 0; i < modules.length; i = i + 1) { // Loop over loaded modules and execute the ones that returned functions\r\n\r\n // If no ux args were provided then use empty object;\r\n args = JSON.parse(moduleEls[i].getAttribute(moduleArgsAttr) || \"{}\");\r\n\r\n if (typeof modules[i] === \"function\") {\r\n // Check for an explicit 'init' function\r\n initFunc = typeof modules[i][\"init\"] === \"function\" ? modules[i][\"init\"] : modules[i];\r\n\r\n try {\r\n // Error inside a CCF module should not stop other js from executing\r\n // Add scope property to module args and to module itself. This is used to contain the module's\r\n // js to its wrapper element - we don't want modules changing things outside of their scope.\r\n module = initFunc($.extend({ scope: moduleEls[i] }, args));\r\n\r\n if (module) {\r\n Object.defineProperty(module, \"ccf_scope\", { value: moduleEls[i] });\r\n $(moduleEls[i]).data(\"ccf_module\", module).data(moduleArgsAttr, args);\r\n\r\n //apply rules\r\n if (ruleLoader && moduleEls[i].getAttribute('data-xpr-state') === 'pending' && moduleEls[i].getAttribute('data-xpr-rule') != null) {\r\n ruleLoader.applyRules(module, moduleEls[i].getAttribute('data-xpr-rule'));\r\n }\r\n }\r\n } catch (err) {\r\n err = moduleNames[i] + \": \" + err;\r\n $(moduleEls[i]).attr(moduleStateAttr, ModuleState.failed);\r\n failure.push(err);\r\n log.error(err);\r\n continue;\r\n }\r\n }\r\n\r\n // Update state and clean up ux arguments from DOM so it's less cluttered\r\n $(moduleEls[i]).attr(moduleStateAttr, ModuleState.loaded).removeAttr(moduleArgsAttr);\r\n success.push(moduleNames[i]);\r\n }\r\n\r\n result = new ModulesLoadedEvent(failure.length > 0, success, failure, loadScope);\r\n // Event manager can now resume triggering events\r\n eventManager.registrationComplete().trigger(ModulesLoadedEvent.name, result);\r\n def.resolve(result);\r\n });\r\n });\r\n\r\n return def.promise();\r\n };\r\n\r\n function findModuleElsByState(scope, state) {\r\n return $(scope || \"body\").descendantOrSelf(ext.supplant(findModulesSel, { state: state })).toArray();\r\n }\r\n\r\n function findModulesByState(scope, state) {\r\n return findModuleElsByState(scope, state).reduce(function (result, currentEl) {\r\n var module = $(currentEl).data(\"ccf_module\");\r\n if (module) result.push(module);\r\n return result;\r\n }, []);\r\n }\r\n\r\n ModuleLoader.prototype.findLoadedModules = function findLoadedModules(scope) {\r\n return findModulesByState(scope, ModuleState.loaded);\r\n };\r\n\r\n ModuleLoader.prototype.findFailedModules = function findFailedModules(scope) {\r\n return findModulesByState(scope, ModuleState.failed);\r\n };\r\n\r\n ModuleLoader.prototype.findPendingModules = function findPendingModules(scope) {\r\n return findModulesByState(scope, ModuleState.pending);\r\n };\r\n\r\n return new ModuleLoader(); // singleton\r\n}));\r\n\n", "(function(root) {\ndefine(\"jqueryMigrate\", [\"jquery\"], function() {\n return (function() {\n/*!\r\n * jQuery Migrate - v3.0.0 - 2016-06-09\r\n * Copyright jQuery Foundation and other contributors\r\n */\r\n(function( jQuery, window ) {\r\n\"use strict\";\r\n\r\n\r\njQuery.migrateVersion = \"3.0.0\";\r\n\r\n\r\n( function() {\r\n\r\n\t// Support: IE9 only\r\n\t// IE9 only creates console object when dev tools are first opened\r\n\t// Also, avoid Function#bind here to simplify PhantomJS usage\r\n\tvar log = window.console && window.console.log &&\r\n\t\t\tfunction() { window.console.log.apply( window.console, arguments ); },\r\n\t\trbadVersions = /^[12]\\./;\r\n\r\n\tif ( !log ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Need jQuery 3.0.0+ and no older Migrate loaded\r\n\tif ( !jQuery || rbadVersions.test( jQuery.fn.jquery ) ) {\r\n\t\tlog( \"JQMIGRATE: jQuery 3.0.0+ REQUIRED\" );\r\n\t}\r\n\tif ( jQuery.migrateWarnings ) {\r\n\t\tlog( \"JQMIGRATE: Migrate plugin loaded multiple times\" );\r\n\t}\r\n\r\n\t// Show a message on the console so devs know we're active\r\n\tlog( \"JQMIGRATE: Migrate is installed\" +\r\n\t\t( jQuery.migrateMute ? \"\" : \" with logging active\" ) +\r\n\t\t\", version \" + jQuery.migrateVersion );\r\n\r\n} )();\r\n\r\nvar warnedAbout = {};\r\n\r\n// List of warnings already given; public read only\r\njQuery.migrateWarnings = [];\r\n\r\n// Set to false to disable traces that appear with warnings\r\nif ( jQuery.migrateTrace === undefined ) {\r\n\tjQuery.migrateTrace = true;\r\n}\r\n\r\n// Forget any warnings we've already given; public\r\njQuery.migrateReset = function() {\r\n\twarnedAbout = {};\r\n\tjQuery.migrateWarnings.length = 0;\r\n};\r\n\r\nfunction migrateWarn( msg ) {\r\n\tvar console = window.console;\r\n\tif ( !warnedAbout[ msg ] ) {\r\n\t\twarnedAbout[ msg ] = true;\r\n\t\tjQuery.migrateWarnings.push( msg );\r\n\t\tif ( console && console.warn && !jQuery.migrateMute ) {\r\n\t\t\tconsole.warn( \"JQMIGRATE: \" + msg );\r\n\t\t\tif ( jQuery.migrateTrace && console.trace ) {\r\n\t\t\t\tconsole.trace();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction migrateWarnProp( obj, prop, value, msg ) {\r\n\tObject.defineProperty( obj, prop, {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: true,\r\n\t\tget: function() {\r\n\t\t\tmigrateWarn( msg );\r\n\t\t\treturn value;\r\n\t\t}\r\n\t} );\r\n}\r\n\r\nif ( document.compatMode === \"BackCompat\" ) {\r\n\r\n\t// JQuery has never supported or tested Quirks Mode\r\n\tmigrateWarn( \"jQuery is not compatible with Quirks Mode\" );\r\n}\r\n\r\n\r\nvar oldInit = jQuery.fn.init,\r\n\toldIsNumeric = jQuery.isNumeric,\r\n\toldFind = jQuery.find,\r\n\trattrHashTest = /\\[(\\s*[-\\w]+\\s*)([~|^$*]?=)\\s*([-\\w#]*?#[-\\w#]*)\\s*\\]/,\r\n\trattrHashGlob = /\\[(\\s*[-\\w]+\\s*)([~|^$*]?=)\\s*([-\\w#]*?#[-\\w#]*)\\s*\\]/g;\r\n\r\njQuery.fn.init = function( arg1 ) {\r\n\tvar args = Array.prototype.slice.call( arguments );\r\n\r\n\tif ( typeof arg1 === \"string\" && arg1 === \"#\" ) {\r\n\r\n\t\t// JQuery( \"#\" ) is a bogus ID selector, but it returned an empty set before jQuery 3.0\r\n\t\tmigrateWarn( \"jQuery( '#' ) is not a valid selector\" );\r\n\t\targs[ 0 ] = [];\r\n\t}\r\n\r\n\treturn oldInit.apply( this, args );\r\n};\r\njQuery.fn.init.prototype = jQuery.fn;\r\n\r\njQuery.find = function( selector ) {\r\n\tvar args = Array.prototype.slice.call( arguments );\r\n\r\n\t// Support: PhantomJS 1.x\r\n\t// String#match fails to match when used with a //g RegExp, only on some strings\r\n\tif ( typeof selector === \"string\" && rattrHashTest.test( selector ) ) {\r\n\r\n\t\t// The nonstandard and undocumented unquoted-hash was removed in jQuery 1.12.0\r\n\t\t// First see if qS thinks it's a valid selector, if so avoid a false positive\r\n\t\ttry {\r\n\t\t\tdocument.querySelector( selector );\r\n\t\t} catch ( err1 ) {\r\n\r\n\t\t\t// Didn't *look* valid to qSA, warn and try quoting what we think is the value\r\n\t\t\tselector = selector.replace( rattrHashGlob, function( _, attr, op, value ) {\r\n\t\t\t\treturn \"[\" + attr + op + \"\\\"\" + value + \"\\\"]\";\r\n\t\t\t} );\r\n\r\n\t\t\t// If the regexp *may* have created an invalid selector, don't update it\r\n\t\t\t// Note that there may be false alarms if selector uses jQuery extensions\r\n\t\t\ttry {\r\n\t\t\t\tdocument.querySelector( selector );\r\n\t\t\t\tmigrateWarn( \"Attribute selector with '#' must be quoted: \" + args[ 0 ] );\r\n\t\t\t\targs[ 0 ] = selector;\r\n\t\t\t} catch ( err2 ) {\r\n\t\t\t\tmigrateWarn( \"Attribute selector with '#' was not fixed: \" + args[ 0 ] );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn oldFind.apply( this, args );\r\n};\r\n\r\n// Copy properties attached to original jQuery.find method (e.g. .attr, .isXML)\r\nvar findProp;\r\nfor ( findProp in oldFind ) {\r\n\tif ( Object.prototype.hasOwnProperty.call( oldFind, findProp ) ) {\r\n\t\tjQuery.find[ findProp ] = oldFind[ findProp ];\r\n\t}\r\n}\r\n\r\n// The number of elements contained in the matched element set\r\njQuery.fn.size = function() {\r\n\tmigrateWarn( \"jQuery.fn.size() is deprecated; use the .length property\" );\r\n\treturn this.length;\r\n};\r\n\r\njQuery.parseJSON = function() {\r\n\tmigrateWarn( \"jQuery.parseJSON is deprecated; use JSON.parse\" );\r\n\treturn JSON.parse.apply( null, arguments );\r\n};\r\n\r\njQuery.isNumeric = function( val ) {\r\n\r\n\t// The jQuery 2.2.3 implementation of isNumeric\r\n\tfunction isNumeric2( obj ) {\r\n\t\tvar realStringObj = obj && obj.toString();\r\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\r\n\t}\r\n\r\n\tvar newValue = oldIsNumeric( val ),\r\n\t\toldValue = isNumeric2( val );\r\n\r\n\tif ( newValue !== oldValue ) {\r\n\t\tmigrateWarn( \"jQuery.isNumeric() should not be called on constructed objects\" );\r\n\t}\r\n\r\n\treturn oldValue;\r\n};\r\n\r\nmigrateWarnProp( jQuery, \"unique\", jQuery.uniqueSort,\r\n\t\"jQuery.unique is deprecated, use jQuery.uniqueSort\" );\r\n\r\n// Now jQuery.expr.pseudos is the standard incantation\r\nmigrateWarnProp( jQuery.expr, \"filters\", jQuery.expr.pseudos,\r\n\t\"jQuery.expr.filters is now jQuery.expr.pseudos\" );\r\nmigrateWarnProp( jQuery.expr, \":\", jQuery.expr.pseudos,\r\n\t\"jQuery.expr[\\\":\\\"] is now jQuery.expr.pseudos\" );\r\n\r\n\r\nvar oldAjax = jQuery.ajax;\r\n\r\njQuery.ajax = function( ) {\r\n\tvar jQXHR = oldAjax.apply( this, arguments );\r\n\r\n\t// Be sure we got a jQXHR (e.g., not sync)\r\n\tif ( jQXHR.promise ) {\r\n\t\tmigrateWarnProp( jQXHR, \"success\", jQXHR.done,\r\n\t\t\t\"jQXHR.success is deprecated and removed\" );\r\n\t\tmigrateWarnProp( jQXHR, \"error\", jQXHR.fail,\r\n\t\t\t\"jQXHR.error is deprecated and removed\" );\r\n\t\tmigrateWarnProp( jQXHR, \"complete\", jQXHR.always,\r\n\t\t\t\"jQXHR.complete is deprecated and removed\" );\r\n\t}\r\n\r\n\treturn jQXHR;\r\n};\r\n\r\n\r\nvar oldRemoveAttr = jQuery.fn.removeAttr,\r\n\toldToggleClass = jQuery.fn.toggleClass,\r\n\trmatchNonSpace = /\\S+/g;\r\n\r\njQuery.fn.removeAttr = function( name ) {\r\n\tvar self = this;\r\n\r\n\tjQuery.each( name.match( rmatchNonSpace ), function( i, attr ) {\r\n\t\tif ( jQuery.expr.match.bool.test( attr ) ) {\r\n\t\t\tmigrateWarn( \"jQuery.fn.removeAttr no longer sets boolean properties: \" + attr );\r\n\t\t\tself.prop( attr, false );\r\n\t\t}\r\n\t} );\r\n\r\n\treturn oldRemoveAttr.apply( this, arguments );\r\n};\r\n\r\njQuery.fn.toggleClass = function( state ) {\r\n\r\n\t// Only deprecating no-args or single boolean arg\r\n\tif ( state !== undefined && typeof state !== \"boolean\" ) {\r\n\t\treturn oldToggleClass.apply( this, arguments );\r\n\t}\r\n\r\n\tmigrateWarn( \"jQuery.fn.toggleClass( boolean ) is deprecated\" );\r\n\r\n\t// Toggle entire class name of each element\r\n\treturn this.each( function() {\r\n\t\tvar className = this.getAttribute && this.getAttribute( \"class\" ) || \"\";\r\n\r\n\t\tif ( className ) {\r\n\t\t\tjQuery.data( this, \"__className__\", className );\r\n\t\t}\r\n\r\n\t\t// If the element has a class name or if we're passed `false`,\r\n\t\t// then remove the whole classname (if there was one, the above saved it).\r\n\t\t// Otherwise bring back whatever was previously saved (if anything),\r\n\t\t// falling back to the empty string if nothing was stored.\r\n\t\tif ( this.setAttribute ) {\r\n\t\t\tthis.setAttribute( \"class\",\r\n\t\t\t\tclassName || state === false ?\r\n\t\t\t\t\"\" :\r\n\t\t\t\tjQuery.data( this, \"__className__\" ) || \"\"\r\n\t\t\t);\r\n\t\t}\r\n\t} );\r\n};\r\n\r\n\r\nvar internalSwapCall = false;\r\n\r\n// If this version of jQuery has .swap(), don't false-alarm on internal uses\r\nif ( jQuery.swap ) {\r\n\tjQuery.each( [ \"height\", \"width\", \"reliableMarginRight\" ], function( _, name ) {\r\n\t\tvar oldHook = jQuery.cssHooks[ name ] && jQuery.cssHooks[ name ].get;\r\n\r\n\t\tif ( oldHook ) {\r\n\t\t\tjQuery.cssHooks[ name ].get = function() {\r\n\t\t\t\tvar ret;\r\n\r\n\t\t\t\tinternalSwapCall = true;\r\n\t\t\t\tret = oldHook.apply( this, arguments );\r\n\t\t\t\tinternalSwapCall = false;\r\n\t\t\t\treturn ret;\r\n\t\t\t};\r\n\t\t}\r\n\t} );\r\n}\r\n\r\njQuery.swap = function( elem, options, callback, args ) {\r\n\tvar ret, name,\r\n\t\told = {};\r\n\r\n\tif ( !internalSwapCall ) {\r\n\t\tmigrateWarn( \"jQuery.swap() is undocumented and deprecated\" );\r\n\t}\r\n\r\n\t// Remember the old values, and insert the new ones\r\n\tfor ( name in options ) {\r\n\t\told[ name ] = elem.style[ name ];\r\n\t\telem.style[ name ] = options[ name ];\r\n\t}\r\n\r\n\tret = callback.apply( elem, args || [] );\r\n\r\n\t// Revert the old values\r\n\tfor ( name in options ) {\r\n\t\telem.style[ name ] = old[ name ];\r\n\t}\r\n\r\n\treturn ret;\r\n};\r\n\r\nvar oldData = jQuery.data;\r\n\r\njQuery.data = function( elem, name, value ) {\r\n\tvar curData;\r\n\r\n\t// If the name is transformed, look for the un-transformed name in the data object\r\n\tif ( name && name !== jQuery.camelCase( name ) ) {\r\n\t\tcurData = jQuery.hasData( elem ) && oldData.call( this, elem );\r\n\t\tif ( curData && name in curData ) {\r\n\t\t\tmigrateWarn( \"jQuery.data() always sets/gets camelCased names: \" + name );\r\n\t\t\tif ( arguments.length > 2 ) {\r\n\t\t\t\tcurData[ name ] = value;\r\n\t\t\t}\r\n\t\t\treturn curData[ name ];\r\n\t\t}\r\n\t}\r\n\r\n\treturn oldData.apply( this, arguments );\r\n};\r\n\r\nvar oldTweenRun = jQuery.Tween.prototype.run;\r\n\r\njQuery.Tween.prototype.run = function( percent ) {\r\n\tif ( jQuery.easing[ this.easing ].length > 1 ) {\r\n\t\tmigrateWarn(\r\n\t\t\t\"easing function \" +\r\n\t\t\t\"\\\"jQuery.easing.\" + this.easing.toString() +\r\n\t\t\t\"\\\" should use only first argument\"\r\n\t\t);\r\n\r\n\t\tjQuery.easing[ this.easing ] = jQuery.easing[ this.easing ].bind(\r\n\t\t\tjQuery.easing,\r\n\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\r\n\t\t);\r\n\t}\r\n\r\n\toldTweenRun.apply( this, arguments );\r\n};\r\n\r\nvar oldLoad = jQuery.fn.load,\r\n\toriginalFix = jQuery.event.fix;\r\n\r\njQuery.event.props = [];\r\njQuery.event.fixHooks = {};\r\n\r\njQuery.event.fix = function( originalEvent ) {\r\n\tvar event,\r\n\t\ttype = originalEvent.type,\r\n\t\tfixHook = this.fixHooks[ type ],\r\n\t\tprops = jQuery.event.props;\r\n\r\n\tif ( props.length ) {\r\n\t\tmigrateWarn( \"jQuery.event.props are deprecated and removed: \" + props.join() );\r\n\t\twhile ( props.length ) {\r\n\t\t\tjQuery.event.addProp( props.pop() );\r\n\t\t}\r\n\t}\r\n\r\n\tif ( fixHook && !fixHook._migrated_ ) {\r\n\t\tfixHook._migrated_ = true;\r\n\t\tmigrateWarn( \"jQuery.event.fixHooks are deprecated and removed: \" + type );\r\n\t\tif ( ( props = fixHook.props ) && props.length ) {\r\n\t\t\twhile ( props.length ) {\r\n\t\t\t jQuery.event.addProp( props.pop() );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tevent = originalFix.call( this, originalEvent );\r\n\r\n\treturn fixHook && fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\r\n};\r\n\r\njQuery.each( [ \"load\", \"unload\", \"error\" ], function( _, name ) {\r\n\r\n\tjQuery.fn[ name ] = function() {\r\n\t\tvar args = Array.prototype.slice.call( arguments, 0 );\r\n\r\n\t\t// If this is an ajax load() the first arg should be the string URL;\r\n\t\t// technically this could also be the \"Anything\" arg of the event .load()\r\n\t\t// which just goes to show why this dumb signature has been deprecated!\r\n\t\t// jQuery custom builds that exclude the Ajax module justifiably die here.\r\n\t\tif ( name === \"load\" && typeof args[ 0 ] === \"string\" ) {\r\n\t\t\treturn oldLoad.apply( this, args );\r\n\t\t}\r\n\r\n\t\tmigrateWarn( \"jQuery.fn.\" + name + \"() is deprecated\" );\r\n\r\n\t\targs.splice( 0, 0, name );\r\n\t\tif ( arguments.length ) {\r\n\t\t\treturn this.on.apply( this, args );\r\n\t\t}\r\n\r\n\t\t// Use .triggerHandler here because:\r\n\t\t// - load and unload events don't need to bubble, only applied to window or image\r\n\t\t// - error event should not bubble to window, although it does pre-1.7\r\n\t\t// See http://bugs.jquery.com/ticket/11820\r\n\t\tthis.triggerHandler.apply( this, args );\r\n\t\treturn this;\r\n\t};\r\n\r\n} );\r\n\r\n// Trigger \"ready\" event only once, on document ready\r\njQuery( function() {\r\n\tjQuery( document ).triggerHandler( \"ready\" );\r\n} );\r\n\r\njQuery.event.special.ready = {\r\n\tsetup: function() {\r\n\t\tif ( this === document ) {\r\n\t\t\tmigrateWarn( \"'ready' event is deprecated\" );\r\n\t\t}\r\n\t}\r\n};\r\n\r\njQuery.fn.extend( {\r\n\r\n\tbind: function( types, data, fn ) {\r\n\t\tmigrateWarn( \"jQuery.fn.bind() is deprecated\" );\r\n\t\treturn this.on( types, null, data, fn );\r\n\t},\r\n\tunbind: function( types, fn ) {\r\n\t\tmigrateWarn( \"jQuery.fn.unbind() is deprecated\" );\r\n\t\treturn this.off( types, null, fn );\r\n\t},\r\n\tdelegate: function( selector, types, data, fn ) {\r\n\t\tmigrateWarn( \"jQuery.fn.delegate() is deprecated\" );\r\n\t\treturn this.on( types, selector, data, fn );\r\n\t},\r\n\tundelegate: function( selector, types, fn ) {\r\n\t\tmigrateWarn( \"jQuery.fn.undelegate() is deprecated\" );\r\n\t\treturn arguments.length === 1 ?\r\n\t\t\tthis.off( selector, \"**\" ) :\r\n\t\t\tthis.off( types, selector || \"**\", fn );\r\n\t}\r\n} );\r\n\r\n\r\nvar oldOffset = jQuery.fn.offset;\r\n\r\njQuery.fn.offset = function() {\r\n\tvar docElem,\r\n\t\telem = this[ 0 ],\r\n\t\torigin = { top: 0, left: 0 };\r\n\r\n\tif ( !elem || !elem.nodeType ) {\r\n\t\tmigrateWarn( \"jQuery.fn.offset() requires a valid DOM element\" );\r\n\t\treturn origin;\r\n\t}\r\n\r\n\tdocElem = ( elem.ownerDocument || document ).documentElement;\r\n\tif ( !jQuery.contains( docElem, elem ) ) {\r\n\t\tmigrateWarn( \"jQuery.fn.offset() requires an element connected to a document\" );\r\n\t\treturn origin;\r\n\t}\r\n\r\n\treturn oldOffset.apply( this, arguments );\r\n};\r\n\r\n\r\nvar oldParam = jQuery.param;\r\n\r\njQuery.param = function( data, traditional ) {\r\n\tvar ajaxTraditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;\r\n\r\n\tif ( traditional === undefined && ajaxTraditional ) {\r\n\r\n\t\tmigrateWarn( \"jQuery.param() no longer uses jQuery.ajaxSettings.traditional\" );\r\n\t\ttraditional = ajaxTraditional;\r\n\t}\r\n\r\n\treturn oldParam.call( this, data, traditional );\r\n};\r\n\r\nvar oldSelf = jQuery.fn.andSelf || jQuery.fn.addBack;\r\n\r\njQuery.fn.andSelf = function() {\r\n\tmigrateWarn( \"jQuery.fn.andSelf() replaced by jQuery.fn.addBack()\" );\r\n\treturn oldSelf.apply( this, arguments );\r\n};\r\n\r\n\r\nvar oldDeferred = jQuery.Deferred,\r\n\ttuples = [\r\n\r\n\t\t// Action, add listener, callbacks, .then handlers, final state\r\n\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\r\n\t\t\tjQuery.Callbacks( \"once memory\" ), \"resolved\" ],\r\n\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\r\n\t\t\tjQuery.Callbacks( \"once memory\" ), \"rejected\" ],\r\n\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\r\n\t\t\tjQuery.Callbacks( \"memory\" ) ]\r\n\t];\r\n\r\njQuery.Deferred = function( func ) {\r\n\tvar deferred = oldDeferred(),\r\n\t\tpromise = deferred.promise();\r\n\r\n\tdeferred.pipe = promise.pipe = function( /* fnDone, fnFail, fnProgress */ ) {\r\n\t\tvar fns = arguments;\r\n\r\n\t\tmigrateWarn( \"deferred.pipe() is deprecated\" );\r\n\r\n\t\treturn jQuery.Deferred( function( newDefer ) {\r\n\t\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\r\n\r\n\t\t\t\t// Deferred.done(function() { bind to newDefer or newDefer.resolve })\r\n\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\r\n\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\r\n\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\r\n\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\r\n\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\r\n\t\t\t\t\t\treturned.promise()\r\n\t\t\t\t\t\t\t.done( newDefer.resolve )\r\n\t\t\t\t\t\t\t.fail( newDefer.reject )\r\n\t\t\t\t\t\t\t.progress( newDefer.notify );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\r\n\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\r\n\t\t\t\t\t\t\tfn ? [ returned ] : arguments\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\tfns = null;\r\n\t\t} ).promise();\r\n\r\n\t};\r\n\r\n\tif ( func ) {\r\n\t\tfunc.call( deferred, deferred );\r\n\t}\r\n\r\n\treturn deferred;\r\n};\r\n\r\n\r\n\r\n})( jQuery, window );\r\n\n\n }).apply(root, arguments);\n});\n}(this));\n\n", "!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n():\"function\"==typeof define&&define.amd?define('promise-polyfill',n):n()}(0,function(){\"use strict\";function e(){}function n(e){if(!(this instanceof n))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof e)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=undefined,this._deferreds=[],f(e,this)}function t(e,t){for(;3===e._state;)e=e._value;0!==e._state?(e._handled=!0,n._immediateFn(function(){var n=1===e._state?t.onFulfilled:t.onRejected;if(null!==n){var i;try{i=n(e._value)}catch(f){return void r(t.promise,f)}o(t.promise,i)}else(1===e._state?o:r)(t.promise,e._value)})):e._deferreds.push(t)}function o(e,t){try{if(t===e)throw new TypeError(\"A promise cannot be resolved with itself.\");if(t&&(\"object\"==typeof t||\"function\"==typeof t)){var o=t.then;if(t instanceof n)return e._state=3,e._value=t,void i(e);if(\"function\"==typeof o)return void f(function(e,n){return function(){e.apply(n,arguments)}}(o,t),e)}e._state=1,e._value=t,i(e)}catch(u){r(e,u)}}function r(e,n){e._state=2,e._value=n,i(e)}function i(e){2===e._state&&0===e._deferreds.length&&n._immediateFn(function(){e._handled||n._unhandledRejectionFn(e._value)});for(var o=0,r=e._deferreds.length;r>o;o++)t(e,e._deferreds[o]);e._deferreds=null}function f(e,n){var t=!1;try{e(function(e){t||(t=!0,o(n,e))},function(e){t||(t=!0,r(n,e))})}catch(i){if(t)return;t=!0,r(n,i)}}var u=function(e){var n=this.constructor;return this.then(function(t){return n.resolve(e()).then(function(){return t})},function(t){return n.resolve(e()).then(function(){return n.reject(t)})})},c=setTimeout;n.prototype[\"catch\"]=function(e){return this.then(null,e)},n.prototype.then=function(n,o){var r=new this.constructor(e);return t(this,new function(e,n,t){this.onFulfilled=\"function\"==typeof e?e:null,this.onRejected=\"function\"==typeof n?n:null,this.promise=t}(n,o,r)),r},n.prototype[\"finally\"]=u,n.all=function(e){return new n(function(n,t){function o(e,f){try{if(f&&(\"object\"==typeof f||\"function\"==typeof f)){var u=f.then;if(\"function\"==typeof u)return void u.call(f,function(n){o(e,n)},t)}r[e]=f,0==--i&&n(r)}catch(c){t(c)}}if(!e||\"undefined\"==typeof e.length)throw new TypeError(\"Promise.all accepts an array\");var r=Array.prototype.slice.call(e);if(0===r.length)return n([]);for(var i=r.length,f=0;r.length>f;f++)o(f,r[f])})},n.resolve=function(e){return e&&\"object\"==typeof e&&e.constructor===n?e:new n(function(n){n(e)})},n.reject=function(e){return new n(function(n,t){t(e)})},n.race=function(e){return new n(function(n,t){for(var o=0,r=e.length;r>o;o++)e[o].then(n,t)})},n._immediateFn=\"function\"==typeof setImmediate&&function(e){setImmediate(e)}||function(e){c(e,0)},n._unhandledRejectionFn=function(e){void 0!==console&&console&&console.warn(\"Possible Unhandled Promise Rejection:\",e)};var l=function(){if(\"undefined\"!=typeof self)return self;if(\"undefined\"!=typeof window)return window;if(\"undefined\"!=typeof global)return global;throw Error(\"unable to locate global object\")}();l.Promise?l.Promise.prototype[\"finally\"]||(l.Promise.prototype[\"finally\"]=u):l.Promise=n});\r\n\n", "!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define('object-assign',[],e);else{var n;n=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,n.ObjectAssign=e()}}(function(){return function e(n,r,t){function o(f,u){if(!r[f]){if(!n[f]){var l=\"function\"==typeof require&&require;if(!u&&l)return l(f,!0);if(i)return i(f,!0);var c=new Error(\"Cannot find module '\"+f+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var a=r[f]={exports:{}};n[f][0].call(a.exports,function(e){var r=n[f][1][e];return o(r?r:e)},a,a.exports,e,n,r,t)}return r[f].exports}for(var i=\"function\"==typeof require&&require,f=0;f= _this.seconds) {\r\n _this.true();\r\n }\r\n });\r\n };\r\n return VideoHasPlayedNSecondsCondition;\r\n }(XPConditionBase_1.XPConditionBase));\r\n exports.default = VideoHasPlayedNSecondsCondition;\r\n ;\r\n});\r\n//# sourceMappingURL=VideoHasPlayedNSecondsOrMoreCondition.js.map;\n", "var __extends = (this && this.__extends) || (function () {\r\n var 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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\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\n(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/Conditions/VideoIsFinishedCondition',[\"require\", \"exports\", \"jquery\", \"score_ccf/XPerience/XPConditionBase\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var $ = require(\"jquery\");\r\n var XPConditionBase_1 = require(\"score_ccf/XPerience/XPConditionBase\");\r\n var VideoIsFinishedCondition = /** @class */ (function (_super) {\r\n __extends(VideoIsFinishedCondition, _super);\r\n function VideoIsFinishedCondition(attributes) {\r\n return _super.call(this, attributes) || this;\r\n }\r\n VideoIsFinishedCondition.prototype.setup = function (component) {\r\n var _this = this;\r\n if (!component) {\r\n throw new Error('Cannot setup a condition without \\'component\\' instance');\r\n }\r\n $(component).on('end.video', function () {\r\n _this.true();\r\n });\r\n };\r\n return VideoIsFinishedCondition;\r\n }(XPConditionBase_1.XPConditionBase));\r\n exports.default = VideoIsFinishedCondition;\r\n ;\r\n});\r\n//# sourceMappingURL=VideoIsFinishedCondition.js.map;\n", "var __extends = (this && this.__extends) || (function () {\r\n var 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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\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\n(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/Conditions/VideoIsPausedCondition',[\"require\", \"exports\", \"jquery\", \"score_ccf/XPerience/XPConditionBase\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var $ = require(\"jquery\");\r\n var XPConditionBase_1 = require(\"score_ccf/XPerience/XPConditionBase\");\r\n var VideoIsFinishedCondition = /** @class */ (function (_super) {\r\n __extends(VideoIsFinishedCondition, _super);\r\n function VideoIsFinishedCondition(attributes) {\r\n return _super.call(this, attributes) || this;\r\n }\r\n VideoIsFinishedCondition.prototype.setup = function (component) {\r\n var _this = this;\r\n if (!component) {\r\n throw new Error('Cannot setup a condition without \\'component\\' instance');\r\n }\r\n $(component).on('pause.video', function () {\r\n _this.true();\r\n });\r\n };\r\n return VideoIsFinishedCondition;\r\n }(XPConditionBase_1.XPConditionBase));\r\n exports.default = VideoIsFinishedCondition;\r\n ;\r\n});\r\n//# sourceMappingURL=VideoIsPausedCondition.js.map;\n", "var __extends = (this && this.__extends) || (function () {\r\n var 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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\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\n(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/Conditions/VideoStartsToPlayCondition',[\"require\", \"exports\", \"jquery\", \"score_ccf/XPerience/XPConditionBase\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var $ = require(\"jquery\");\r\n var XPConditionBase_1 = require(\"score_ccf/XPerience/XPConditionBase\");\r\n var VideoIsFinishedCondition = /** @class */ (function (_super) {\r\n __extends(VideoIsFinishedCondition, _super);\r\n function VideoIsFinishedCondition(attributes) {\r\n return _super.call(this, attributes) || this;\r\n }\r\n VideoIsFinishedCondition.prototype.setup = function (component) {\r\n var _this = this;\r\n if (!component) {\r\n throw new Error('Cannot setup a condition without \\'component\\' instance');\r\n }\r\n $(component).on('start.video', function () {\r\n _this.true();\r\n });\r\n };\r\n return VideoIsFinishedCondition;\r\n }(XPConditionBase_1.XPConditionBase));\r\n exports.default = VideoIsFinishedCondition;\r\n ;\r\n});\r\n//# sourceMappingURL=VideoStartsToPlayCondition.js.map;\n", "(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/Contracts/UXModuleLike',[\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n});\r\n//# sourceMappingURL=UXModuleLike.js.map;\n", "(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/Contracts/XPContracts',[\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n});\r\n//# sourceMappingURL=XPContracts.js.map;\n", "(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/Elements',[\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.ElementPairs = {\r\n conditions: {\r\n '{8DB82A68-5F50-43B3-A487-D5B9300DEE80}': 'score_ccf/XPerience/Conditions/OncePerPageViewCondition',\r\n '{982886A0-22D5-4371-8E63-D5F0FA292954}': 'score_ccf/XPerience/Conditions/ClickedCondition',\r\n '{83C03CA9-68D5-4100-8537-004917B1DEF3}': 'score_ccf/XPerience/Conditions/SlideChangedCondition',\r\n '{6EDA1FF1-B3CB-411A-ADAC-6029D1763BCB}': 'score_ccf/XPerience/Conditions/SlideChangingCondition',\r\n '{D153496F-BF42-4A47-A9D5-780693D0C2E7}': 'score_ccf/XPerience/Conditions/GetsFocusCondition',\r\n '{3FF617C7-4ED5-43FC-A766-4F2414107414}': 'score_ccf/XPerience/Conditions/LosesFocusCondition',\r\n '{39EDBFA3-3BC8-4E7D-BC32-4BF2712353AC}': 'score_ccf/XPerience/Conditions/VideoHasPlayedExactNSecondsCondition',\r\n '{67E995CD-155D-42CF-9DC8-B7655F9785A5}': 'score_ccf/XPerience/Conditions/VideoHasPlayedNSecondsOrMoreCondition',\r\n '{B44C5804-E2F8-4BFA-9060-31108659D475}': 'score_ccf/XPerience/Conditions/VideoIsFinishedCondition',\r\n '{7B2C46CA-0B9E-453F-A269-FA2E0079659D}': 'score_ccf/XPerience/Conditions/VideoIsPausedCondition',\r\n '{8D46ACE2-32D4-449C-81EF-7C88808F0A14}': 'score_ccf/XPerience/Conditions/VideoStartsToPlayCondition',\r\n },\r\n actions: {\r\n '{70F1F9DC-3930-41EC-9FBB-40B673B15586}': 'score_ccf/XPerience/Actions/CompleteGoalAction',\r\n '{7DED5636-8783-431B-A965-31E1A47405E1}': 'score_ccf/XPerience/Actions/TrackClientEventAction',\r\n '{C87955F1-3E04-45A3-A235-4BACD1594B42}': 'score_ccf/XPerience/Actions/TrackClientEventAction',\r\n '{4D91B017-F733-4E0E-B387-AB0013A71395}': 'score_ccf/XPerience/Actions/TrackClientEventAction',\r\n '{8C501C45-D61B-4D10-A9E1-0DEDACCD149F}': 'score_ccf/XPerience/Actions/ShowAlertMessage',\r\n '{8C23D183-5F62-4336-A6AD-2876A0D45511}': 'score_ccf/XPerience/Actions/ContactVisitWithTheProfileCard'\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=Elements.js.map;\n", "(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/Enums/XPEnums',[\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var XPModuleState;\r\n (function (XPModuleState) {\r\n XPModuleState[\"Pending\"] = \"pending\";\r\n XPModuleState[\"InProcess\"] = \"inprocess\";\r\n XPModuleState[\"Loaded\"] = \"loaded\";\r\n XPModuleState[\"Failed\"] = \"failed\";\r\n })(XPModuleState = exports.XPModuleState || (exports.XPModuleState = {}));\r\n ;\r\n var XPJunction;\r\n (function (XPJunction) {\r\n XPJunction[\"AND\"] = \"and\";\r\n XPJunction[\"OR\"] = \"or\";\r\n })(XPJunction = exports.XPJunction || (exports.XPJunction = {}));\r\n ;\r\n});\r\n//# sourceMappingURL=XPEnums.js.map;\n", "(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/Xperience/Enums/XPEnums',[\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var XPModuleState;\r\n (function (XPModuleState) {\r\n XPModuleState[\"Pending\"] = \"pending\";\r\n XPModuleState[\"InProcess\"] = \"inprocess\";\r\n XPModuleState[\"Loaded\"] = \"loaded\";\r\n XPModuleState[\"Failed\"] = \"failed\";\r\n })(XPModuleState = exports.XPModuleState || (exports.XPModuleState = {}));\r\n ;\r\n var XPJunction;\r\n (function (XPJunction) {\r\n XPJunction[\"AND\"] = \"and\";\r\n XPJunction[\"OR\"] = \"or\";\r\n })(XPJunction = exports.XPJunction || (exports.XPJunction = {}));\r\n ;\r\n});\r\n//# sourceMappingURL=XPEnums.js.map;\n", "var __extends = (this && this.__extends) || (function () {\r\n var 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 (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\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\n(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/Utils/XPConditionJunction',[\"require\", \"exports\", \"score_ccf/Xperience/Enums/XPEnums\", \"promise-polyfill\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var XPEnums_1 = require(\"score_ccf/Xperience/Enums/XPEnums\");\r\n require(\"promise-polyfill\"); // polyfill\r\n /**\r\n * Encapsulates junction logic of two and more conditions\r\n */\r\n var XPConditionJunction = /** @class */ (function () {\r\n function XPConditionJunction(operand, conditions) {\r\n this.operand = operand;\r\n this._innerConditions = conditions;\r\n this._operand = operand;\r\n this.defer = this._initDeferredCondition();\r\n }\r\n XPConditionJunction.prototype._initDeferredCondition = function () {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n Promise.all(_this._innerConditions).then(function (conditions) {\r\n // nested conditions\r\n var innerPromises = [];\r\n for (var x = 0; x < conditions.length; x++) {\r\n var cond = conditions[x];\r\n // collect nested condition defer objects, to build current juction behaviour \r\n innerPromises = innerPromises.concat(cond.defer);\r\n }\r\n if (_this._operand === XPEnums_1.XPJunction.AND) {\r\n // wait until all nested conditions will be executed and join them when AND operation\r\n Promise.all(innerPromises).then(function (results) {\r\n // because modern hipsters cannot understand bitwise operation it is written in that style\r\n resolve(results.every(function (v) { return v === !0; }));\r\n });\r\n }\r\n if (_this._operand === XPEnums_1.XPJunction.OR) {\r\n var count_1 = innerPromises.length;\r\n for (var x = 0; x < innerPromises.length; x++) {\r\n innerPromises[x].then(function (value) {\r\n // if at least one condition was resolved with true - current Promise will be resolved with true,\r\n // if none of conditions was resolved with true, current Promise will be resolved with false\r\n if (!--count_1 || value === !0) {\r\n resolve(!!value || !!count_1);\r\n }\r\n }, function (reason) {\r\n reject(reason);\r\n });\r\n }\r\n ;\r\n }\r\n }, function (reason) {\r\n reject(reason);\r\n });\r\n });\r\n };\r\n /**\r\n * Setup conditions to a scope of the component\r\n * @param component An instance of a UXModule component to scope conditions of the current junction\r\n */\r\n XPConditionJunction.prototype.setup = function (component) {\r\n for (var index = 0; index < this._innerConditions.length; index++) {\r\n var conditionModuleLoader = this._innerConditions[index];\r\n // setup condition as soon as it is loaded\r\n conditionModuleLoader.then(function (condModule) {\r\n condModule.setup(component);\r\n });\r\n }\r\n };\r\n XPConditionJunction.prototype.false = function () {\r\n throw new Error('You cannot resolve Junction condition, only inner conditions can resolve the Junction condition.');\r\n };\r\n XPConditionJunction.prototype.true = function () {\r\n throw new Error('You cannot resolve Junction condition, only inner conditions can resolve the Junction condition.');\r\n };\r\n /**\r\n * Proxy reset call to all nested conditions and product a new defer object for current junction\r\n */\r\n XPConditionJunction.prototype.reset = function () {\r\n Promise.all(this._innerConditions).then(function (conditions) {\r\n for (var x = 0; x < conditions.length; x++) {\r\n conditions[x].reset();\r\n }\r\n });\r\n this.defer = this._initDeferredCondition();\r\n };\r\n return XPConditionJunction;\r\n }());\r\n exports.XPConditionJunction = XPConditionJunction;\r\n /**\r\n * Encapsulates AND Junction logic of two and more conditions\r\n */\r\n var XPConditionAnd = /** @class */ (function (_super) {\r\n __extends(XPConditionAnd, _super);\r\n function XPConditionAnd(conditions) {\r\n return _super.call(this, XPEnums_1.XPJunction.AND, conditions) || this;\r\n }\r\n return XPConditionAnd;\r\n }(XPConditionJunction));\r\n exports.XPConditionAnd = XPConditionAnd;\r\n /**\r\n * Encapsulates OR Junction logic of two and more conditions\r\n */\r\n var XPConditionOr = /** @class */ (function (_super) {\r\n __extends(XPConditionOr, _super);\r\n function XPConditionOr(conditions) {\r\n return _super.call(this, XPEnums_1.XPJunction.AND, conditions) || this;\r\n }\r\n return XPConditionOr;\r\n }(XPConditionJunction));\r\n exports.XPConditionOr = XPConditionOr;\r\n});\r\n//# sourceMappingURL=XPConditionJunction.js.map;\n", "(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/XPActionLoader',[\"require\", \"exports\", \"score_ccf/XPerience/Elements\", \"promise-polyfill\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var __syncRequire = typeof module === \"object\" && typeof module.exports === \"object\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var Elements_1 = require(\"score_ccf/XPerience/Elements\");\r\n require(\"promise-polyfill\");\r\n /**\r\n * Load XP Action modules from xml desription\r\n */\r\n var XPActionLoader = /** @class */ (function () {\r\n function XPActionLoader() {\r\n }\r\n /**\r\n * Load module and create an instance of it\r\n * @param {string} modulePath path to a module which should be dynamicly loaded\r\n * @param {XPAttributes} attributes Initial data which will be passed to a loaded module constructor\r\n */\r\n XPActionLoader.prototype.getModule = function (modulePath, attributes) {\r\n // all actions should be inherited from XPActionBase\r\n return (__syncRequire ? Promise.resolve().then(function () { return require(modulePath); }) : new Promise(function (resolve_1, reject_1) { require([modulePath], resolve_1, reject_1); })).then(function (actModule) {\r\n // create an instance of a named export\r\n if (actModule.hasOwnProperty(Elements_1.ElementPairs.actions[attributes[\"id\"]])) {\r\n return new actModule[Elements_1.ElementPairs.actions[attributes[\"id\"]]](attributes);\r\n }\r\n // create an instance from default export\r\n if ('__esModule' in actModule === !0 && actModule.hasOwnProperty(\"default\")) {\r\n return new actModule.default(attributes);\r\n }\r\n // outdated version of module\r\n if (actModule instanceof Function) {\r\n return new actModule(attributes);\r\n }\r\n throw new Error(\"Cannot detect a constructor of the '\" + modulePath + \"' module.'\");\r\n }, function (reason) {\r\n throw new Error(\"Cannot load module '\" + modulePath + \"'. Reason: \" + reason);\r\n });\r\n };\r\n /**\r\n * Load a list of Action Modules based on xml nodes\r\n * @param actionNodes A List of xml nodes which describe an action\r\n */\r\n XPActionLoader.prototype.loadActions = function (actionNodes) {\r\n var actions = [];\r\n for (var index = 0; index < actionNodes.length; index++) {\r\n var actNode = actionNodes[index];\r\n var actAttr = {};\r\n var nodeAttrs = actNode.attributes;\r\n // create a dynamic object with attributes defined on an XML element\r\n for (var index_1 = 0; index_1 < nodeAttrs.length; index_1++) {\r\n var attr = nodeAttrs[index_1];\r\n actAttr[attr.name] = attr.value;\r\n }\r\n // check required 'id' attribute, without it we cannot load an action\r\n if (!('id' in actAttr) || typeof actAttr.id !== \"string\") {\r\n throw new Error(\"Cannot load action without ID. Action XML: \" + actNode.outerHTML);\r\n }\r\n // resolve module name based on its id\r\n var moduleName = Elements_1.ElementPairs.actions[actAttr.id];\r\n if (!moduleName || moduleName.length <= 0) {\r\n throw new Error(\"Cannot load detect Action Module Name by ID. Please specity it in 'score_ccf/XPerience/Elements' module. Action XML: \" + actNode.outerHTML);\r\n }\r\n var modulePath = ~moduleName.indexOf('/') ? moduleName : \"score_ccf/XPerience/Actions/\" + moduleName;\r\n var actionLoader = this.getModule(modulePath, actAttr);\r\n actions = actions.concat(actionLoader);\r\n }\r\n return actions;\r\n };\r\n return XPActionLoader;\r\n }());\r\n exports.XPActionLoader = XPActionLoader;\r\n});\r\n//# sourceMappingURL=XPActionLoader.js.map;\n", "(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/XPConditionLoader',[\"require\", \"exports\", \"score_ccf/XPerience/Elements\", \"score_ccf/XPerience/Utils/XPConditionJunction\", \"promise-polyfill\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var __syncRequire = typeof module === \"object\" && typeof module.exports === \"object\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var Elements_1 = require(\"score_ccf/XPerience/Elements\");\r\n var XPConditionJunction_1 = require(\"score_ccf/XPerience/Utils/XPConditionJunction\");\r\n require(\"promise-polyfill\");\r\n var XPConditionLoader = /** @class */ (function () {\r\n function XPConditionLoader() {\r\n }\r\n /**\r\n * Load condition module and create an instance of it\r\n * @param {string} modulePath path to a module which should be dynamicly loaded\r\n * @param {XPAttributes} attributes Initial data which will be passed to a loaded module constructor\r\n */\r\n XPConditionLoader.prototype.getModule = function (modulePath, attributes) {\r\n return (__syncRequire ? Promise.resolve().then(function () { return require(modulePath); }) : new Promise(function (resolve_1, reject_1) { require([modulePath], resolve_1, reject_1); })).then(function (condModule) {\r\n // create an instance of a named export\r\n if (condModule.hasOwnProperty(Elements_1.ElementPairs.conditions[attributes[\"id\"]])) {\r\n return new condModule[Elements_1.ElementPairs.actions[attributes[\"id\"]]](attributes);\r\n }\r\n // create an instance from default export\r\n if ('__esModule' in condModule && condModule.__esModule === !0 && condModule.hasOwnProperty(\"default\")) {\r\n return new condModule.default(attributes);\r\n }\r\n // outdated version of module\r\n if (condModule instanceof Function) {\r\n return new condModule(attributes);\r\n }\r\n throw new Error(\"Cannot detect a constructor of the '\" + modulePath + \"' module.'\");\r\n }, function (reason) {\r\n throw new Error(\"Cannot load module '\" + modulePath + \"'. Reason: \" + reason);\r\n });\r\n };\r\n /**\r\n * Load a list of Action Modules based on xml nodes\r\n * @param actionNodes A List of xml nodes which describe an action\r\n */\r\n XPConditionLoader.prototype.loadConditions = function (component, condEls) {\r\n var conditions = [];\r\n for (var x = 0; x < condEls.length; x++) {\r\n var condNode = condEls[x];\r\n switch (condNode.nodeName) {\r\n case '#text':\r\n /* do nothing */\r\n break;\r\n case 'or':\r\n /* Junction is a proxy object which calculates passed internal conditions defer object and resolves itself accordingly */\r\n conditions = conditions.concat(this.doOrOperation(this.loadConditions(component, condNode.childNodes)));\r\n break;\r\n case 'and':\r\n /* Junction is a proxy object which calculates passed internal conditions defer object and resolves itself accordingly */\r\n conditions = conditions.concat(this.doAndOperation(this.loadConditions(component, condNode.childNodes)));\r\n break;\r\n case 'condition':\r\n var condAttr = {};\r\n var nodeAttrs = condNode.attributes;\r\n // create a dynamic object with attributes defined on an XML element\r\n for (var index = 0; index < nodeAttrs.length; index++) {\r\n var attr = nodeAttrs[index];\r\n condAttr[attr.name] = attr.value;\r\n }\r\n // check required 'id' attribute, without it we cannot load a condition\r\n if (!('id' in condAttr) || typeof condAttr.id !== \"string\") {\r\n throw new Error(\"Cannot load condition without ID. Condition XML: \" + condAttr.outerHTML);\r\n }\r\n // resolve module name based on its id\r\n var moduleName = Elements_1.ElementPairs.conditions[condAttr.id];\r\n if (!moduleName || moduleName.length <= 0) {\r\n throw new Error(\"Cannot load detect Condition Module Name by ID. Please specity it in 'score_ccf/XPerience/Elements' module. Condition XML: \" + condNode.outerHTML);\r\n }\r\n var modulePath = ~moduleName.indexOf('/') ? moduleName : \"score_ccf/XPerience/Conditions/\" + moduleName;\r\n conditions = conditions.concat(this.getModule(modulePath, condAttr));\r\n break;\r\n default:\r\n throw new Error(\"Unsupportable condition element: \" + condNode.outerHTML);\r\n }\r\n }\r\n return conditions;\r\n };\r\n /**\r\n * Create a proxy object which handles junction of conditions\r\n * @param conditions A list of conditions which are going to be joined with \"Or\" junction\r\n */\r\n XPConditionLoader.prototype.doOrOperation = function (conditions) {\r\n return Promise.resolve(new XPConditionJunction_1.XPConditionOr(conditions));\r\n };\r\n /**\r\n * Create a proxy object which handles junction of conditions\r\n * @param conditions A list of conditions which are going to be joined with \"And\" junction\r\n */\r\n XPConditionLoader.prototype.doAndOperation = function (conditions) {\r\n return Promise.resolve(new XPConditionJunction_1.XPConditionAnd(conditions));\r\n };\r\n return XPConditionLoader;\r\n }());\r\n exports.XPConditionLoader = XPConditionLoader;\r\n});\r\n//# sourceMappingURL=XPConditionLoader.js.map;\n", "/**\r\n * @license BrainJocks XperienceRuleLoader\r\n * https://brainjocks.atlassian.net/wiki/spaces/SDD/pages/217972958\r\n * Copyright 2017\r\n */\r\n(function (factory) {\r\n if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n var v = factory(require, exports);\r\n if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === \"function\" && define.amd) {\r\n define('score_ccf/XPerience/XPRuleLoader',[\"require\", \"exports\", \"score_ccf/XPerience/XPActionLoader\", \"score_ccf/XPerience/XPConditionLoader\", \"score_ccf/XPerience/Enums/XPEnums\", \"promise-polyfill\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n var XPActionLoader_1 = require(\"score_ccf/XPerience/XPActionLoader\");\r\n var XPConditionLoader_1 = require(\"score_ccf/XPerience/XPConditionLoader\");\r\n var XPEnums_1 = require(\"score_ccf/XPerience/Enums/XPEnums\");\r\n require(\"promise-polyfill\"); // polyfill\r\n /**\r\n * Responsible to parse XP Rules and load required conditions and actions.\r\n */\r\n var XPRuleLoader = /** @class */ (function () {\r\n function XPRuleLoader(actionLoader, conditionLoader) {\r\n if (actionLoader === void 0) { actionLoader = new XPActionLoader_1.XPActionLoader(); }\r\n if (conditionLoader === void 0) { conditionLoader = new XPConditionLoader_1.XPConditionLoader(); }\r\n this._actionLoader = actionLoader;\r\n this._conditionLoader = conditionLoader;\r\n }\r\n /**\r\n * Apply XP Rule xml to a component\r\n * @param {UXModuleLike} component An instance of a UXModule component to scope the rules\r\n * @param {string} xml xml structure which defines XP Rule.\r\n */\r\n XPRuleLoader.prototype.applyRules = function (component, xml) {\r\n // TODO: expose hook for custom actions/conditions\r\n if (!component.scope || !(component.scope instanceof HTMLElement)) {\r\n throw new Error('Components which does not have \\'scope\\' property are not supported. Please extend your component with scope property.');\r\n }\r\n // don't do anything if xml rule is not a string or empty\r\n if (!xml || typeof xml !== \"string\" || xml.length <= 0) {\r\n return;\r\n }\r\n // insure component has a marker that indicates XP Rules in loading\r\n component.scope.setAttribute('data-xpr-state', XPEnums_1.XPModuleState.InProcess);\r\n var rulesDoc = new DOMParser().parseFromString(xml, 'text/xml');\r\n if (rulesDoc.querySelector('action, condition') == null) {\r\n // no condition or action was found, just skip the whole logic and return\r\n component.scope.setAttribute('data-xpr-state', XPEnums_1.XPModuleState.Loaded);\r\n return;\r\n }\r\n var rulesPromises = [];\r\n var rules = rulesDoc.querySelectorAll('rule');\r\n for (var index = 0; index < rules.length; index++) {\r\n var ruleEl = rules[index];\r\n // get promises with action module instances\r\n var actions = this._actionLoader.loadActions(ruleEl.querySelectorAll('action'));\r\n // get promises with condition module instances\r\n var conditions = this._conditionLoader.loadConditions(component, ruleEl.querySelector('conditions').childNodes);\r\n // set an array with promises \r\n rulesPromises = rulesPromises.concat(this.runRule(conditions, actions, component));\r\n }\r\n // when all xp rule condition were loaded (modules loaded) mark current component as xp rule loaded.\r\n Promise.all(rulesPromises).then(function () {\r\n component.scope.setAttribute('data-xpr-state', XPEnums_1.XPModuleState.Loaded);\r\n }, function (reason) {\r\n // mark component as XP Rules failed.\r\n component.scope.setAttribute('data-xpr-state', XPEnums_1.XPModuleState.Failed);\r\n throw new Error(reason);\r\n });\r\n };\r\n /**\r\n * Run one particular rule. Wait until conditions will be computed and run actions after that.\r\n * @param {Promise[]} conditions An Arrya of conditions which will be attached to a component\r\n * @param {Promise[]} actions An Array of actions which can be executed in scope of a component\r\n * @param {UXModuleLike} component An instance of a UXModule component to scope the rule\r\n */\r\n XPRuleLoader.prototype.runRule = function (conditions, actions, component) {\r\n var _this = this;\r\n if (conditions.length === 0 && actions.length === 0) {\r\n // handle case when XP Rule was removed from a component\r\n return Promise.resolve();\r\n }\r\n return Promise.all(conditions).then(function (condModules) {\r\n var condsDefs = [];\r\n for (var x = 0; x < condModules.length; x++) {\r\n var condModule = condModules[x];\r\n // setup a condition\r\n condModule.setup(component);\r\n // get a condition defer object which indicates is condition computed or not\r\n condsDefs = condsDefs.concat(condModule.defer);\r\n }\r\n // wait until the conditions computed.\r\n Promise.all(condsDefs).then(function (values) {\r\n if (values.every(function (v) { return v === !0; })) {\r\n Promise.all(actions).then(function (actionModules) {\r\n // execute actions\r\n actionModules.forEach(function (actionModule) { actionModule.execute(component); });\r\n // reset conditions to run them more than once per page view\r\n condModules.forEach(function (condModule) { condModule.reset(); });\r\n _this.runRule(conditions, actions, component);\r\n });\r\n }\r\n else {\r\n // reset conditions to run them more than once per page view\r\n condModules.forEach(function (condModule) { condModule.reset(); });\r\n _this.runRule(conditions, actions, component);\r\n }\r\n });\r\n });\r\n };\r\n return XPRuleLoader;\r\n }());\r\n exports.XPRuleLoader = XPRuleLoader;\r\n});\r\n//# sourceMappingURL=XPRuleLoader.js.map;\n", "/** @license\r\n * RequireJS plugin for async dependency load like JSONP and Google Maps\r\n * Author: Miller Medeiros\r\n * Version: 0.1.2 (2014/02/24)\r\n * Released under the MIT license\r\n */\r\ndefine('async',[],function(){\r\n\r\n var DEFAULT_PARAM_NAME = 'callback',\r\n _uid = 0;\r\n\r\n function injectScript(src){\r\n var s, t;\r\n s = document.createElement('script'); s.type = 'text/javascript'; s.async = true; s.src = src;\r\n t = document.getElementsByTagName('script')[0]; t.parentNode.insertBefore(s,t);\r\n }\r\n\r\n function formatUrl(name, id){\r\n var paramRegex = /!(.+)/,\r\n url = name.replace(paramRegex, ''),\r\n param = (paramRegex.test(name))? name.replace(/.+!/, '') : DEFAULT_PARAM_NAME;\r\n url += (url.indexOf('?') < 0)? '?' : '&';\r\n return url + param +'='+ id;\r\n }\r\n\r\n function uid() {\r\n _uid += 1;\r\n return '__async_req_'+ _uid +'__';\r\n }\r\n\r\n return{\r\n load : function(name, req, onLoad, config){\r\n if(config.isBuild){\r\n onLoad(null); //avoid errors on the optimizer\r\n }else{\r\n var id = uid();\r\n //create a global variable that stores onLoad so callback\r\n //function can define new module after async load\r\n window[id] = onLoad;\r\n injectScript(formatUrl(req.toUrl(name), id));\r\n }\r\n }\r\n };\r\n});\r\n\n", "/** @license\r\n * Plugin to load JS files that have dependencies but aren't wrapped into\r\n * `define` calls.\r\n * Author: Miller Medeiros\r\n * Version: 0.1.0 (2011/12/13)\r\n * Released under the MIT license\r\n */\r\ndefine('depend',[],function () {\r\n\r\n var rParts = /^(.*)\\[([^\\]]*)\\]$/;\r\n\r\n return {\r\n\r\n //example: depend!bar[jquery,lib/foo]\r\n load : function(name, req, onLoad, config){\r\n var parts = rParts.exec(name);\r\n\r\n req(parts[2].split(','), function(){\r\n req([parts[1]], function(mod){\r\n onLoad(mod);\r\n });\r\n });\r\n }\r\n\r\n };\r\n\r\n});\r\n\n", "/**\r\n * Basic parser for URL properties\r\n * @author Miller Medeiros\r\n * @version 0.1.0 (2011/12/06)\r\n * MIT license\r\n */\r\ndefine('propertyParser',[],function(){\r\n\r\n var rProps = /([\\w-]+)\\s*:\\s*(?:(\\[[^\\]]+\\])|([^,]+)),?/g, //match \"foo:bar\" and \"lorem:[ipsum,dolor]\" capturing name as $1 and val as $2 or $3\r\n rArr = /^\\[([^\\]]+)\\]$/; //match \"[foo,bar]\" capturing \"foo,bar\"\r\n\r\n function parseProperties(str){\r\n var match, obj = {};\r\n while (match = rProps.exec(str)) {\r\n obj[ match[1] ] = typecastVal(match[2] || match[3]);\r\n }\r\n return obj;\r\n }\r\n\r\n function typecastVal(val){\r\n if (rArr.test(val)){\r\n val = val.replace(rArr, '$1').split(',');\r\n } else if (val === 'null'){\r\n val = null;\r\n } else if (val === 'false'){\r\n val = false;\r\n } else if (val === 'true'){\r\n val = true;\r\n } else if (val === '' || val === \"''\" || val === '\"\"'){\r\n val = '';\r\n } else if (! isNaN(val)) {\r\n //isNaN('') == false\r\n val = +val;\r\n }\r\n return val;\r\n }\r\n\r\n //API\r\n return {\r\n parseProperties : parseProperties,\r\n typecastVal : typecastVal\r\n };\r\n});\r\n\n", "/** @license\r\n * RequireJS plugin for loading web fonts using the WebFont Loader\r\n * Author: Miller Medeiros\r\n * Version: 0.2.0 (2011/12/06)\r\n * Released under the MIT license\r\n */\r\ndefine('font',['propertyParser'], function (propertyParser) {\r\n\r\n var rParts = /^([^,]+),([^\\|]+)\\|?/;\r\n\r\n function parseName(name) {\r\n var data = {},\r\n vendors = name.split('|'),\r\n n = vendors.length,\r\n match;\r\n\r\n while (n--) {\r\n match = rParts.exec(vendors[n]);\r\n data[ match[1] ] = propertyParser.parseProperties(match[2]);\r\n }\r\n return data;\r\n }\r\n\r\n // API\r\n return {\r\n\r\n //example: font!google,families:[Tangerine,Cantarell,Yanone Kaffeesatz:700]\r\n load : function(name, req, onLoad, config){\r\n if (config.isBuild) {\r\n onLoad(null); //avoid errors on the optimizer\r\n } else {\r\n var data = parseName(name);\r\n data.active = onLoad;\r\n data.inactive = function(){\r\n onLoad(false);\r\n };\r\n req([(document.location.protocol === 'https:'? 'https' : 'http') +'://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js'], function(){\r\n WebFont.load(data);\r\n });\r\n }\r\n }\r\n\r\n };\r\n\r\n});\r\n\n", "/** @license\r\n * RequireJS plugin for loading Google Ajax API modules thru `google.load`\r\n * Author: Miller Medeiros\r\n * Version: 0.2.0 (2011/12/06)\r\n * Released under the MIT license\r\n */\r\ndefine('goog',['async', 'propertyParser'], function (async, propertyParser) {\r\n\r\n var rParts = /^([^,]+)(?:,([^,]+))?(?:,(.+))?/;\r\n\r\n function parseName(name){\r\n var match = rParts.exec(name),\r\n data = {\r\n moduleName : match[1],\r\n version : match[2] || '1'\r\n };\r\n data.settings = propertyParser.parseProperties(match[3]);\r\n return data;\r\n }\r\n\r\n return {\r\n load : function(name, req, onLoad, config){\r\n if (config.isBuild) {\r\n onLoad(null); //avoid errors on the optimizer\r\n } else {\r\n var data = parseName(name),\r\n settings = data.settings;\r\n\r\n settings.callback = onLoad;\r\n\r\n req(['async!'+ (document.location.protocol === 'https:'? 'https' : 'http') +'://www.google.com/jsapi'], function(){\r\n google.load(data.moduleName, data.version, settings);\r\n });\r\n }\r\n }\r\n };\r\n\r\n});\r\n\n", "/** @license\r\n * RequireJS Image Plugin\r\n * Author: Miller Medeiros\r\n * Version: 0.2.2 (2013/02/08)\r\n * Released under the MIT license\r\n */\r\ndefine('image',[],function(){\r\n\r\n var CACHE_BUST_QUERY_PARAM = 'bust',\r\n CACHE_BUST_FLAG = '!bust',\r\n RELATIVE_FLAG = '!rel';\r\n\r\n function noop(){}\r\n\r\n function cacheBust(url){\r\n url = url.replace(CACHE_BUST_FLAG, '');\r\n url += (url.indexOf('?') < 0)? '?' : '&';\r\n return url + CACHE_BUST_QUERY_PARAM +'='+ Math.round(2147483647 * Math.random());\r\n }\r\n\r\n return {\r\n load : function(name, req, onLoad, config){\r\n var img;\r\n if(config.isBuild){\r\n onLoad(null); //avoid errors on the optimizer since it can't inline image files\r\n }else{\r\n img = new Image();\r\n img.onerror = function (err) {\r\n onLoad.error(err);\r\n };\r\n img.onload = function(evt){\r\n onLoad(img);\r\n try {\r\n delete img.onload; //release memory - suggested by John Hann\r\n } catch(err) {\r\n img.onload = noop; // IE7 :(\r\n }\r\n };\r\n if (name.indexOf(RELATIVE_FLAG) !== -1) {\r\n //load image relative to module path / baseUrl\r\n img.src = req.toUrl( name.replace(RELATIVE_FLAG, '') );\r\n } else {\r\n img.src = name;\r\n }\r\n }\r\n },\r\n normalize : function (name, normalize) {\r\n //used normalize to avoid caching references to a \"cache busted\" request\r\n return (name.indexOf(CACHE_BUST_FLAG) === -1)? name : cacheBust(name);\r\n }\r\n };\r\n\r\n});\r\n\n", "/**\r\n * @license text 2.0.15 Copyright jQuery Foundation and other contributors.\r\n * Released under MIT license, http://github.com/requirejs/text/LICENSE\r\n */\r\n/*jslint regexp: true */\r\n/*global require, XMLHttpRequest, ActiveXObject,\r\n define, window, process, Packages,\r\n java, location, Components, FileUtils */\r\n\r\ndefine('text',['module'], function (module) {\r\n 'use strict';\r\n\r\n var text, fs, Cc, Ci, xpcIsWindows,\r\n progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],\r\n xmlRegExp = /^\\s*<\\?xml(\\s)+version=[\\'\\\"](\\d)*.(\\d)*[\\'\\\"](\\s)*\\?>/im,\r\n bodyRegExp = /]*>\\s*([\\s\\S]+)\\s*<\\/body>/im,\r\n hasLocation = typeof location !== 'undefined' && location.href,\r\n defaultProtocol = hasLocation && location.protocol && location.protocol.replace(/\\:/, ''),\r\n defaultHostName = hasLocation && location.hostname,\r\n defaultPort = hasLocation && (location.port || undefined),\r\n buildMap = {},\r\n masterConfig = (module.config && module.config()) || {};\r\n\r\n function useDefault(value, defaultValue) {\r\n return value === undefined || value === '' ? defaultValue : value;\r\n }\r\n\r\n //Allow for default ports for http and https.\r\n function isSamePort(protocol1, port1, protocol2, port2) {\r\n if (port1 === port2) {\r\n return true;\r\n } else if (protocol1 === protocol2) {\r\n if (protocol1 === 'http') {\r\n return useDefault(port1, '80') === useDefault(port2, '80');\r\n } else if (protocol1 === 'https') {\r\n return useDefault(port1, '443') === useDefault(port2, '443');\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n text = {\r\n version: '2.0.15',\r\n\r\n strip: function (content) {\r\n //Strips declarations so that external SVG and XML\r\n //documents can be added to a document without worry. Also, if the string\r\n //is an HTML document, only the part inside the body tag is returned.\r\n if (content) {\r\n content = content.replace(xmlRegExp, \"\");\r\n var matches = content.match(bodyRegExp);\r\n if (matches) {\r\n content = matches[1];\r\n }\r\n } else {\r\n content = \"\";\r\n }\r\n return content;\r\n },\r\n\r\n jsEscape: function (content) {\r\n return content.replace(/(['\\\\])/g, '\\\\$1')\r\n .replace(/[\\f]/g, \"\\\\f\")\r\n .replace(/[\\b]/g, \"\\\\b\")\r\n .replace(/[\\n]/g, \"\\\\n\")\r\n .replace(/[\\t]/g, \"\\\\t\")\r\n .replace(/[\\r]/g, \"\\\\r\")\r\n .replace(/[\\u2028]/g, \"\\\\u2028\")\r\n .replace(/[\\u2029]/g, \"\\\\u2029\");\r\n },\r\n\r\n createXhr: masterConfig.createXhr || function () {\r\n //Would love to dump the ActiveX crap in here. Need IE 6 to die first.\r\n var xhr, i, progId;\r\n if (typeof XMLHttpRequest !== \"undefined\") {\r\n return new XMLHttpRequest();\r\n } else if (typeof ActiveXObject !== \"undefined\") {\r\n for (i = 0; i < 3; i += 1) {\r\n progId = progIds[i];\r\n try {\r\n xhr = new ActiveXObject(progId);\r\n } catch (e) {}\r\n\r\n if (xhr) {\r\n progIds = [progId]; // so faster next time\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return xhr;\r\n },\r\n\r\n /**\r\n * Parses a resource name into its component parts. Resource names\r\n * look like: module/name.ext!strip, where the !strip part is\r\n * optional.\r\n * @param {String} name the resource name\r\n * @returns {Object} with properties \"moduleName\", \"ext\" and \"strip\"\r\n * where strip is a boolean.\r\n */\r\n parseName: function (name) {\r\n var modName, ext, temp,\r\n strip = false,\r\n index = name.lastIndexOf(\".\"),\r\n isRelative = name.indexOf('./') === 0 ||\r\n name.indexOf('../') === 0;\r\n\r\n if (index !== -1 && (!isRelative || index > 1)) {\r\n modName = name.substring(0, index);\r\n ext = name.substring(index + 1);\r\n } else {\r\n modName = name;\r\n }\r\n\r\n temp = ext || modName;\r\n index = temp.indexOf(\"!\");\r\n if (index !== -1) {\r\n //Pull off the strip arg.\r\n strip = temp.substring(index + 1) === \"strip\";\r\n temp = temp.substring(0, index);\r\n if (ext) {\r\n ext = temp;\r\n } else {\r\n modName = temp;\r\n }\r\n }\r\n\r\n return {\r\n moduleName: modName,\r\n ext: ext,\r\n strip: strip\r\n };\r\n },\r\n\r\n xdRegExp: /^((\\w+)\\:)?\\/\\/([^\\/\\\\]+)/,\r\n\r\n /**\r\n * Is an URL on another domain. Only works for browser use, returns\r\n * false in non-browser environments. Only used to know if an\r\n * optimized .js version of a text resource should be loaded\r\n * instead.\r\n * @param {String} url\r\n * @returns Boolean\r\n */\r\n useXhr: function (url, protocol, hostname, port) {\r\n var uProtocol, uHostName, uPort,\r\n match = text.xdRegExp.exec(url);\r\n if (!match) {\r\n return true;\r\n }\r\n uProtocol = match[2];\r\n uHostName = match[3];\r\n\r\n uHostName = uHostName.split(':');\r\n uPort = uHostName[1];\r\n uHostName = uHostName[0];\r\n\r\n return (!uProtocol || uProtocol === protocol) &&\r\n (!uHostName || uHostName.toLowerCase() === hostname.toLowerCase()) &&\r\n ((!uPort && !uHostName) || isSamePort(uProtocol, uPort, protocol, port));\r\n },\r\n\r\n finishLoad: function (name, strip, content, onLoad) {\r\n content = strip ? text.strip(content) : content;\r\n if (masterConfig.isBuild) {\r\n buildMap[name] = content;\r\n }\r\n onLoad(content);\r\n },\r\n\r\n load: function (name, req, onLoad, config) {\r\n //Name has format: some.module.filext!strip\r\n //The strip part is optional.\r\n //if strip is present, then that means only get the string contents\r\n //inside a body tag in an HTML string. For XML/SVG content it means\r\n //removing the declarations so the content can be inserted\r\n //into the current doc without problems.\r\n\r\n // Do not bother with the work if a build and text will\r\n // not be inlined.\r\n if (config && config.isBuild && !config.inlineText) {\r\n onLoad();\r\n return;\r\n }\r\n\r\n masterConfig.isBuild = config && config.isBuild;\r\n\r\n var parsed = text.parseName(name),\r\n nonStripName = parsed.moduleName +\r\n (parsed.ext ? '.' + parsed.ext : ''),\r\n url = req.toUrl(nonStripName),\r\n useXhr = (masterConfig.useXhr) ||\r\n text.useXhr;\r\n\r\n // Do not load if it is an empty: url\r\n if (url.indexOf('empty:') === 0) {\r\n onLoad();\r\n return;\r\n }\r\n\r\n //Load the text. Use XHR if possible and in a browser.\r\n if (!hasLocation || useXhr(url, defaultProtocol, defaultHostName, defaultPort)) {\r\n text.get(url, function (content) {\r\n text.finishLoad(name, parsed.strip, content, onLoad);\r\n }, function (err) {\r\n if (onLoad.error) {\r\n onLoad.error(err);\r\n }\r\n });\r\n } else {\r\n //Need to fetch the resource across domains. Assume\r\n //the resource has been optimized into a JS module. Fetch\r\n //by the module name + extension, but do not include the\r\n //!strip part to avoid file system issues.\r\n req([nonStripName], function (content) {\r\n text.finishLoad(parsed.moduleName + '.' + parsed.ext,\r\n parsed.strip, content, onLoad);\r\n });\r\n }\r\n },\r\n\r\n write: function (pluginName, moduleName, write, config) {\r\n if (buildMap.hasOwnProperty(moduleName)) {\r\n var content = text.jsEscape(buildMap[moduleName]);\r\n write.asModule(pluginName + \"!\" + moduleName,\r\n \"define(function () { return '\" +\r\n content +\r\n \"';});\\n\");\r\n }\r\n },\r\n\r\n writeFile: function (pluginName, moduleName, req, write, config) {\r\n var parsed = text.parseName(moduleName),\r\n extPart = parsed.ext ? '.' + parsed.ext : '',\r\n nonStripName = parsed.moduleName + extPart,\r\n //Use a '.js' file name so that it indicates it is a\r\n //script that can be loaded across domains.\r\n fileName = req.toUrl(parsed.moduleName + extPart) + '.js';\r\n\r\n //Leverage own load() method to load plugin value, but only\r\n //write out values that do not have the strip argument,\r\n //to avoid any potential issues with ! in file names.\r\n text.load(nonStripName, req, function (value) {\r\n //Use own write() method to construct full module value.\r\n //But need to create shell that translates writeFile's\r\n //write() to the right interface.\r\n var textWrite = function (contents) {\r\n return write(fileName, contents);\r\n };\r\n textWrite.asModule = function (moduleName, contents) {\r\n return write.asModule(moduleName, fileName, contents);\r\n };\r\n\r\n text.write(pluginName, nonStripName, textWrite, config);\r\n }, config);\r\n }\r\n };\r\n\r\n if (masterConfig.env === 'node' || (!masterConfig.env &&\r\n typeof process !== \"undefined\" &&\r\n process.versions &&\r\n !!process.versions.node &&\r\n !process.versions['node-webkit'] &&\r\n !process.versions['atom-shell'])) {\r\n //Using special require.nodeRequire, something added by r.js.\r\n fs = require.nodeRequire('fs');\r\n\r\n text.get = function (url, callback, errback) {\r\n try {\r\n var file = fs.readFileSync(url, 'utf8');\r\n //Remove BOM (Byte Mark Order) from utf8 files if it is there.\r\n if (file[0] === '\\uFEFF') {\r\n file = file.substring(1);\r\n }\r\n callback(file);\r\n } catch (e) {\r\n if (errback) {\r\n errback(e);\r\n }\r\n }\r\n };\r\n } else if (masterConfig.env === 'xhr' || (!masterConfig.env &&\r\n text.createXhr())) {\r\n text.get = function (url, callback, errback, headers) {\r\n var xhr = text.createXhr(), header;\r\n xhr.open('GET', url, true);\r\n\r\n //Allow plugins direct access to xhr headers\r\n if (headers) {\r\n for (header in headers) {\r\n if (headers.hasOwnProperty(header)) {\r\n xhr.setRequestHeader(header.toLowerCase(), headers[header]);\r\n }\r\n }\r\n }\r\n\r\n //Allow overrides specified in config\r\n if (masterConfig.onXhr) {\r\n masterConfig.onXhr(xhr, url);\r\n }\r\n\r\n xhr.onreadystatechange = function (evt) {\r\n var status, err;\r\n //Do not explicitly handle errors, those should be\r\n //visible via console output in the browser.\r\n if (xhr.readyState === 4) {\r\n status = xhr.status || 0;\r\n if (status > 399 && status < 600) {\r\n //An http 4xx or 5xx error. Signal an error.\r\n err = new Error(url + ' HTTP status: ' + status);\r\n err.xhr = xhr;\r\n if (errback) {\r\n errback(err);\r\n }\r\n } else {\r\n callback(xhr.responseText);\r\n }\r\n\r\n if (masterConfig.onXhrComplete) {\r\n masterConfig.onXhrComplete(xhr, url);\r\n }\r\n }\r\n };\r\n xhr.send(null);\r\n };\r\n } else if (masterConfig.env === 'rhino' || (!masterConfig.env &&\r\n typeof Packages !== 'undefined' && typeof java !== 'undefined')) {\r\n //Why Java, why is this so awkward?\r\n text.get = function (url, callback) {\r\n var stringBuffer, line,\r\n encoding = \"utf-8\",\r\n file = new java.io.File(url),\r\n lineSeparator = java.lang.System.getProperty(\"line.separator\"),\r\n input = new java.io.BufferedReader(new java.io.InputStreamReader(new java.io.FileInputStream(file), encoding)),\r\n content = '';\r\n try {\r\n stringBuffer = new java.lang.StringBuffer();\r\n line = input.readLine();\r\n\r\n // Byte Order Mark (BOM) - The Unicode Standard, version 3.0, page 324\r\n // http://www.unicode.org/faq/utf_bom.html\r\n\r\n // Note that when we use utf-8, the BOM should appear as \"EF BB BF\", but it doesn't due to this bug in the JDK:\r\n // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4508058\r\n if (line && line.length() && line.charAt(0) === 0xfeff) {\r\n // Eat the BOM, since we've already found the encoding on this file,\r\n // and we plan to concatenating this buffer with others; the BOM should\r\n // only appear at the top of a file.\r\n line = line.substring(1);\r\n }\r\n\r\n if (line !== null) {\r\n stringBuffer.append(line);\r\n }\r\n\r\n while ((line = input.readLine()) !== null) {\r\n stringBuffer.append(lineSeparator);\r\n stringBuffer.append(line);\r\n }\r\n //Make sure we return a JavaScript string and not a Java string.\r\n content = String(stringBuffer.toString()); //String\r\n } finally {\r\n input.close();\r\n }\r\n callback(content);\r\n };\r\n } else if (masterConfig.env === 'xpconnect' || (!masterConfig.env &&\r\n typeof Components !== 'undefined' && Components.classes &&\r\n Components.interfaces)) {\r\n //Avert your gaze!\r\n Cc = Components.classes;\r\n Ci = Components.interfaces;\r\n Components.utils['import']('resource://gre/modules/FileUtils.jsm');\r\n xpcIsWindows = ('@mozilla.org/windows-registry-key;1' in Cc);\r\n\r\n text.get = function (url, callback) {\r\n var inStream, convertStream, fileObj,\r\n readData = {};\r\n\r\n if (xpcIsWindows) {\r\n url = url.replace(/\\//g, '\\\\');\r\n }\r\n\r\n fileObj = new FileUtils.File(url);\r\n\r\n //XPCOM, you so crazy\r\n try {\r\n inStream = Cc['@mozilla.org/network/file-input-stream;1']\r\n .createInstance(Ci.nsIFileInputStream);\r\n inStream.init(fileObj, 1, 0, false);\r\n\r\n convertStream = Cc['@mozilla.org/intl/converter-input-stream;1']\r\n .createInstance(Ci.nsIConverterInputStream);\r\n convertStream.init(inStream, \"utf-8\", inStream.available(),\r\n Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);\r\n\r\n convertStream.readString(inStream.available(), readData);\r\n convertStream.close();\r\n inStream.close();\r\n callback(readData.value);\r\n } catch (e) {\r\n throw new Error((fileObj && fileObj.path || '') + ': ' + e);\r\n }\r\n };\r\n }\r\n return text;\r\n});\r\n\n", "/** @license\r\n * RequireJS plugin for loading JSON files\r\n * - depends on Text plugin and it was HEAVILY \"inspired\" by it as well.\r\n * Author: Miller Medeiros\r\n * Version: 0.4.0 (2014/04/10)\r\n * Released under the MIT license\r\n */\r\ndefine('json',['text'], function(text){\r\n\r\n var CACHE_BUST_QUERY_PARAM = 'bust',\r\n CACHE_BUST_FLAG = '!bust',\r\n jsonParse = (typeof JSON !== 'undefined' && typeof JSON.parse === 'function')? JSON.parse : function(val){\r\n return eval('('+ val +')'); //quick and dirty\r\n },\r\n buildMap = {};\r\n\r\n function cacheBust(url){\r\n url = url.replace(CACHE_BUST_FLAG, '');\r\n url += (url.indexOf('?') < 0)? '?' : '&';\r\n return url + CACHE_BUST_QUERY_PARAM +'='+ Math.round(2147483647 * Math.random());\r\n }\r\n\r\n //API\r\n return {\r\n\r\n load : function(name, req, onLoad, config) {\r\n if (( config.isBuild && (config.inlineJSON === false || name.indexOf(CACHE_BUST_QUERY_PARAM +'=') !== -1)) || (req.toUrl(name).indexOf('empty:') === 0)) {\r\n //avoid inlining cache busted JSON or if inlineJSON:false\r\n //and don't inline files marked as empty!\r\n onLoad(null);\r\n } else {\r\n text.get(req.toUrl(name), function(data){\r\n var parsed;\r\n if (config.isBuild) {\r\n buildMap[name] = data;\r\n onLoad(data);\r\n } else {\r\n try {\r\n parsed = jsonParse(data);\r\n } catch (e) {\r\n onLoad.error(e);\r\n }\r\n onLoad(parsed);\r\n }\r\n },\r\n onLoad.error, {\r\n accept: 'application/json'\r\n }\r\n );\r\n }\r\n },\r\n\r\n normalize : function (name, normalize) {\r\n // used normalize to avoid caching references to a \"cache busted\" request\r\n if (name.indexOf(CACHE_BUST_FLAG) !== -1) {\r\n name = cacheBust(name);\r\n }\r\n // resolve any relative paths\r\n return normalize(name);\r\n },\r\n\r\n //write method based on RequireJS official text plugin by James Burke\r\n //https://github.com/jrburke/requirejs/blob/master/text.js\r\n write : function(pluginName, moduleName, write){\r\n if(moduleName in buildMap){\r\n var content = buildMap[moduleName];\r\n write('define(\"'+ pluginName +'!'+ moduleName +'\", function(){ return '+ content +';});\\n');\r\n }\r\n }\r\n\r\n };\r\n});\r\n\n", "//>>excludeStart('excludeMdown', pragmas.excludeMdown)\r\n//\r\n// edited original source code to convert API and wrap into\r\n// an AMD module, changes are before/after the wrapped code.\r\n//\r\n// you can replace the markdown converter as long as it\r\n// implements the `makeHtml()` method\r\n//\r\ndefine('markdownConverter',['require', 'exports'], function(require, exports){\r\n// ======= START WRAP\r\n\r\n\r\nvar Markdown;\r\n\r\nif (typeof exports === \"object\" && typeof require === \"function\") // we're in a CommonJS (e.g. Node.js) module\r\n Markdown = exports;\r\nelse\r\n Markdown = {};\r\n\r\n// The following text is included for historical reasons, but should\r\n// be taken with a pinch of salt; it's not all true anymore.\r\n\r\n//\r\n// Wherever possible, Showdown is a straight, line-by-line port\r\n// of the Perl version of Markdown.\r\n//\r\n// This is not a normal parser design; it's basically just a\r\n// series of string substitutions. It's hard to read and\r\n// maintain this way, but keeping Showdown close to the original\r\n// design makes it easier to port new features.\r\n//\r\n// More importantly, Showdown behaves like markdown.pl in most\r\n// edge cases. So web applications can do client-side preview\r\n// in Javascript, and then build identical HTML on the server.\r\n//\r\n// This port needs the new RegExp functionality of ECMA 262,\r\n// 3rd Edition (i.e. Javascript 1.5). Most modern web browsers\r\n// should do fine. Even with the new regular expression features,\r\n// We do a lot of work to emulate Perl's regex functionality.\r\n// The tricky changes in this file mostly have the \"attacklab:\"\r\n// label. Major or self-explanatory changes don't.\r\n//\r\n// Smart diff tools like Araxis Merge will be able to match up\r\n// this file with markdown.pl in a useful way. A little tweaking\r\n// helps: in a copy of markdown.pl, replace \"#\" with \"//\" and\r\n// replace \"$text\" with \"text\". Be sure to ignore whitespace\r\n// and line endings.\r\n//\r\n\r\n\r\n//\r\n// Usage:\r\n//\r\n// var text = \"Markdown *rocks*.\";\r\n//\r\n// var converter = new Markdown.Converter();\r\n// var html = converter.makeHtml(text);\r\n//\r\n// alert(html);\r\n//\r\n// Note: move the sample code to the bottom of this\r\n// file before uncommenting it.\r\n//\r\n\r\n(function () {\r\n\r\n function identity(x) { return x; }\r\n function returnFalse(x) { return false; }\r\n\r\n function HookCollection() { }\r\n\r\n HookCollection.prototype = {\r\n\r\n chain: function (hookname, func) {\r\n var original = this[hookname];\r\n if (!original)\r\n throw new Error(\"unknown hook \" + hookname);\r\n\r\n if (original === identity)\r\n this[hookname] = func;\r\n else\r\n this[hookname] = function (x) { return func(original(x)); }\r\n },\r\n set: function (hookname, func) {\r\n if (!this[hookname])\r\n throw new Error(\"unknown hook \" + hookname);\r\n this[hookname] = func;\r\n },\r\n addNoop: function (hookname) {\r\n this[hookname] = identity;\r\n },\r\n addFalse: function (hookname) {\r\n this[hookname] = returnFalse;\r\n }\r\n };\r\n\r\n Markdown.HookCollection = HookCollection;\r\n\r\n // g_urls and g_titles allow arbitrary user-entered strings as keys. This\r\n // caused an exception (and hence stopped the rendering) when the user entered\r\n // e.g. [push] or [__proto__]. Adding a prefix to the actual key prevents this\r\n // (since no builtin property starts with \"s_\"). See\r\n // http://meta.stackoverflow.com/questions/64655/strange-wmd-bug\r\n // (granted, switching from Array() to Object() alone would have left only __proto__\r\n // to be a problem)\r\n function SaveHash() { }\r\n SaveHash.prototype = {\r\n set: function (key, value) {\r\n this[\"s_\" + key] = value;\r\n },\r\n get: function (key) {\r\n return this[\"s_\" + key];\r\n }\r\n };\r\n\r\n Markdown.Converter = function () {\r\n var pluginHooks = this.hooks = new HookCollection();\r\n pluginHooks.addNoop(\"plainLinkText\"); // given a URL that was encountered by itself (without markup), should return the link text that's to be given to this link\r\n pluginHooks.addNoop(\"preConversion\"); // called with the orignal text as given to makeHtml. The result of this plugin hook is the actual markdown source that will be cooked\r\n pluginHooks.addNoop(\"postConversion\"); // called with the final cooked HTML code. The result of this plugin hook is the actual output of makeHtml\r\n\r\n //\r\n // Private state of the converter instance:\r\n //\r\n\r\n // Global hashes, used by various utility routines\r\n var g_urls;\r\n var g_titles;\r\n var g_html_blocks;\r\n\r\n // Used to track when we're inside an ordered or unordered list\r\n // (see _ProcessListItems() for details):\r\n var g_list_level;\r\n\r\n this.makeHtml = function (text) {\r\n\r\n //\r\n // Main function. The order in which other subs are called here is\r\n // essential. Link and image substitutions need to happen before\r\n // _EscapeSpecialCharsWithinTagAttributes(), so that any *'s or _'s in the \r\n // and tags get encoded.\r\n //\r\n\r\n // This will only happen if makeHtml on the same converter instance is called from a plugin hook.\r\n // Don't do that.\r\n if (g_urls)\r\n throw new Error(\"Recursive call to converter.makeHtml\");\r\n\r\n // Create the private state objects.\r\n g_urls = new SaveHash();\r\n g_titles = new SaveHash();\r\n g_html_blocks = [];\r\n g_list_level = 0;\r\n\r\n text = pluginHooks.preConversion(text);\r\n\r\n // attacklab: Replace ~ with ~T\r\n // This lets us use tilde as an escape char to avoid md5 hashes\r\n // The choice of character is arbitray; anything that isn't\r\n // magic in Markdown will work.\r\n text = text.replace(/~/g, \"~T\");\r\n\r\n // attacklab: Replace $ with ~D\r\n // RegExp interprets $ as a special character\r\n // when it's in a replacement string\r\n text = text.replace(/\\$/g, \"~D\");\r\n\r\n // Standardize line endings\r\n text = text.replace(/\\r\\n/g, \"\\n\"); // DOS to Unix\r\n text = text.replace(/\\r/g, \"\\n\"); // Mac to Unix\r\n\r\n // Make sure text begins and ends with a couple of newlines:\r\n text = \"\\n\\n\" + text + \"\\n\\n\";\r\n\r\n // Convert all tabs to spaces.\r\n text = _Detab(text);\r\n\r\n // Strip any lines consisting only of spaces and tabs.\r\n // This makes subsequent regexen easier to write, because we can\r\n // match consecutive blank lines with /\\n+/ instead of something\r\n // contorted like /[ \\t]*\\n+/ .\r\n text = text.replace(/^[ \\t]+$/mg, \"\");\r\n\r\n // Turn block-level HTML blocks into hash entries\r\n text = _HashHTMLBlocks(text);\r\n\r\n // Strip link definitions, store in hashes.\r\n text = _StripLinkDefinitions(text);\r\n\r\n text = _RunBlockGamut(text);\r\n\r\n text = _UnescapeSpecialChars(text);\r\n\r\n // attacklab: Restore dollar signs\r\n text = text.replace(/~D/g, \"$$\");\r\n\r\n // attacklab: Restore tildes\r\n text = text.replace(/~T/g, \"~\");\r\n\r\n text = pluginHooks.postConversion(text);\r\n\r\n g_html_blocks = g_titles = g_urls = null;\r\n\r\n return text;\r\n };\r\n\r\n function _StripLinkDefinitions(text) {\r\n //\r\n // Strips link definitions from text, stores the URLs and titles in\r\n // hash references.\r\n //\r\n\r\n // Link defs are in the form: ^[id]: url \"optional title\"\r\n\r\n /*\r\n text = text.replace(/\r\n ^[ ]{0,3}\\[(.+)\\]: // id = $1 attacklab: g_tab_width - 1\r\n [ \\t]*\r\n \\n? // maybe *one* newline\r\n [ \\t]*\r\n ? // url = $2\r\n (?=\\s|$) // lookahead for whitespace instead of the lookbehind removed below\r\n [ \\t]*\r\n \\n? // maybe one newline\r\n [ \\t]*\r\n ( // (potential) title = $3\r\n (\\n*) // any lines skipped = $4 attacklab: lookbehind removed\r\n [ \\t]+\r\n [\"(]\r\n (.+?) // title = $5\r\n [\")]\r\n [ \\t]*\r\n )? // title is optional\r\n (?:\\n+|$)\r\n /gm, function(){...});\r\n */\r\n\r\n text = text.replace(/^[ ]{0,3}\\[(.+)\\]:[ \\t]*\\n?[ \\t]*?(?=\\s|$)[ \\t]*\\n?[ \\t]*((\\n*)[\"(](.+?)[\")][ \\t]*)?(?:\\n+)/gm,\r\n function (wholeMatch, m1, m2, m3, m4, m5) {\r\n m1 = m1.toLowerCase();\r\n g_urls.set(m1, _EncodeAmpsAndAngles(m2)); // Link IDs are case-insensitive\r\n if (m4) {\r\n // Oops, found blank lines, so it's not a title.\r\n // Put back the parenthetical statement we stole.\r\n return m3;\r\n } else if (m5) {\r\n g_titles.set(m1, m5.replace(/\"/g, \""\"));\r\n }\r\n\r\n // Completely remove the definition from the text\r\n return \"\";\r\n }\r\n );\r\n\r\n return text;\r\n }\r\n\r\n function _HashHTMLBlocks(text) {\r\n\r\n // Hashify HTML blocks:\r\n // We only want to do this for block-level HTML tags, such as headers,\r\n // lists, and tables. That's because we still want to wrap

s around\r\n // \"paragraphs\" that are wrapped in non-block-level tags, such as anchors,\r\n // phrase emphasis, and spans. The list of tags we're looking for is\r\n // hard-coded:\r\n var block_tags_a = \"p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del\"\r\n var block_tags_b = \"p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math\"\r\n\r\n // First, look for nested blocks, e.g.:\r\n //

\r\n //
\r\n // tags for inner block must be indented.\r\n //
\r\n //
\r\n //\r\n // The outermost tags must start at the left margin for this to match, and\r\n // the inner nested divs must be indented.\r\n // We need to do this before the next, more liberal match, because the next\r\n // match will start at the first `
` and stop at the first `
`.\r\n\r\n // attacklab: This regex can be expensive when it fails.\r\n\r\n /*\r\n text = text.replace(/\r\n ( // save in $1\r\n ^ // start of line (with /m)\r\n <($block_tags_a) // start tag = $2\r\n \\b // word break\r\n // attacklab: hack around khtml/pcre bug...\r\n [^\\r]*?\\n // any number of lines, minimally matching\r\n // the matching end tag\r\n [ \\t]* // trailing spaces/tabs\r\n (?=\\n+) // followed by a newline\r\n ) // attacklab: there are sentinel newlines at end of document\r\n /gm,function(){...}};\r\n */\r\n text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\\b[^\\r]*?\\n<\\/\\2>[ \\t]*(?=\\n+))/gm, hashElement);\r\n\r\n //\r\n // Now match more liberally, simply from `\\n` to `\\n`\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ( // save in $1\r\n ^ // start of line (with /m)\r\n <($block_tags_b) // start tag = $2\r\n \\b // word break\r\n // attacklab: hack around khtml/pcre bug...\r\n [^\\r]*? // any number of lines, minimally matching\r\n .* // the matching end tag\r\n [ \\t]* // trailing spaces/tabs\r\n (?=\\n+) // followed by a newline\r\n ) // attacklab: there are sentinel newlines at end of document\r\n /gm,function(){...}};\r\n */\r\n text = text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\\b[^\\r]*?.*<\\/\\2>[ \\t]*(?=\\n+)\\n)/gm, hashElement);\r\n\r\n // Special case just for
. It was easier to make a special case than\r\n // to make the other regex more complicated.\r\n\r\n /*\r\n text = text.replace(/\r\n \\n // Starting after a blank line\r\n [ ]{0,3}\r\n ( // save in $1\r\n (<(hr) // start tag = $2\r\n \\b // word break\r\n ([^<>])*?\r\n \\/?>) // the matching end tag\r\n [ \\t]*\r\n (?=\\n{2,}) // followed by a blank line\r\n )\r\n /g,hashElement);\r\n */\r\n text = text.replace(/\\n[ ]{0,3}((<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g, hashElement);\r\n\r\n // Special case for standalone HTML comments:\r\n\r\n /*\r\n text = text.replace(/\r\n \\n\\n // Starting after a blank line\r\n [ ]{0,3} // attacklab: g_tab_width - 1\r\n ( // save in $1\r\n -]|-[^>])(?:[^-]|-[^-])*)--) // see http://www.w3.org/TR/html-markup/syntax.html#comments and http://meta.stackoverflow.com/q/95256\r\n >\r\n [ \\t]*\r\n (?=\\n{2,}) // followed by a blank line\r\n )\r\n /g,hashElement);\r\n */\r\n text = text.replace(/\\n\\n[ ]{0,3}(-]|-[^>])(?:[^-]|-[^-])*)--)>[ \\t]*(?=\\n{2,}))/g, hashElement);\r\n\r\n // PHP and ASP-style processor instructions ( and <%...%>)\r\n\r\n /*\r\n text = text.replace(/\r\n (?:\r\n \\n\\n // Starting after a blank line\r\n )\r\n ( // save in $1\r\n [ ]{0,3} // attacklab: g_tab_width - 1\r\n (?:\r\n <([?%]) // $2\r\n [^\\r]*?\r\n \\2>\r\n )\r\n [ \\t]*\r\n (?=\\n{2,}) // followed by a blank line\r\n )\r\n /g,hashElement);\r\n */\r\n text = text.replace(/(?:\\n\\n)([ ]{0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g, hashElement);\r\n\r\n return text;\r\n }\r\n\r\n function hashElement(wholeMatch, m1) {\r\n var blockText = m1;\r\n\r\n // Undo double lines\r\n blockText = blockText.replace(/^\\n+/, \"\");\r\n\r\n // strip trailing blank lines\r\n blockText = blockText.replace(/\\n+$/g, \"\");\r\n\r\n // Replace the element text with a marker (\"~KxK\" where x is its key)\r\n blockText = \"\\n\\n~K\" + (g_html_blocks.push(blockText) - 1) + \"K\\n\\n\";\r\n\r\n return blockText;\r\n }\r\n\r\n function _RunBlockGamut(text, doNotUnhash) {\r\n //\r\n // These are all the transformations that form block-level\r\n // tags like paragraphs, headers, and list items.\r\n //\r\n text = _DoHeaders(text);\r\n\r\n // Do Horizontal Rules:\r\n var replacement = \"
\\n\";\r\n text = text.replace(/^[ ]{0,2}([ ]?\\*[ ]?){3,}[ \\t]*$/gm, replacement);\r\n text = text.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \\t]*$/gm, replacement);\r\n text = text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \\t]*$/gm, replacement);\r\n\r\n text = _DoLists(text);\r\n text = _DoCodeBlocks(text);\r\n text = _DoBlockQuotes(text);\r\n\r\n // We already ran _HashHTMLBlocks() before, in Markdown(), but that\r\n // was to escape raw HTML in the original Markdown source. This time,\r\n // we're escaping the markup we've just created, so that we don't wrap\r\n //

tags around block-level tags.\r\n text = _HashHTMLBlocks(text);\r\n text = _FormParagraphs(text, doNotUnhash);\r\n\r\n return text;\r\n }\r\n\r\n function _RunSpanGamut(text) {\r\n //\r\n // These are all the transformations that occur *within* block-level\r\n // tags like paragraphs, headers, and list items.\r\n //\r\n\r\n text = _DoCodeSpans(text);\r\n text = _EscapeSpecialCharsWithinTagAttributes(text);\r\n text = _EncodeBackslashEscapes(text);\r\n\r\n // Process anchor and image tags. Images must come first,\r\n // because ![foo][f] looks like an anchor.\r\n text = _DoImages(text);\r\n text = _DoAnchors(text);\r\n\r\n // Make links out of things like ``\r\n // Must come after _DoAnchors(), because you can use < and >\r\n // delimiters in inline links like [this]().\r\n text = _DoAutoLinks(text);\r\n\r\n text = text.replace(/~P/g, \"://\"); // put in place to prevent autolinking; reset now\r\n\r\n text = _EncodeAmpsAndAngles(text);\r\n text = _DoItalicsAndBold(text);\r\n\r\n // Do hard breaks:\r\n text = text.replace(/ +\\n/g, \"
\\n\");\r\n\r\n return text;\r\n }\r\n\r\n function _EscapeSpecialCharsWithinTagAttributes(text) {\r\n //\r\n // Within tags -- meaning between < and > -- encode [\\ ` * _] so they\r\n // don't conflict with their use in Markdown for code, italics and strong.\r\n //\r\n\r\n // Build a regex to find HTML tags and comments. See Friedl's\r\n // \"Mastering Regular Expressions\", 2nd Ed., pp. 200-201.\r\n\r\n // SE: changed the comment part of the regex\r\n\r\n var regex = /(<[a-z\\/!$](\"[^\"]*\"|'[^']*'|[^'\">])*>|-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi;\r\n\r\n text = text.replace(regex, function (wholeMatch) {\r\n var tag = wholeMatch.replace(/(.)<\\/?code>(?=.)/g, \"$1`\");\r\n tag = escapeCharacters(tag, wholeMatch.charAt(1) == \"!\" ? \"\\\\`*_/\" : \"\\\\`*_\"); // also escape slashes in comments to prevent autolinking there -- http://meta.stackoverflow.com/questions/95987\r\n return tag;\r\n });\r\n\r\n return text;\r\n }\r\n\r\n function _DoAnchors(text) {\r\n //\r\n // Turn Markdown link shortcuts into XHTML
tags.\r\n //\r\n //\r\n // First, handle reference-style links: [link text] [id]\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ( // wrap whole match in $1\r\n \\[\r\n (\r\n (?:\r\n \\[[^\\]]*\\] // allow brackets nested one level\r\n |\r\n [^\\[] // or anything else\r\n )*\r\n )\r\n \\]\r\n\r\n [ ]? // one optional space\r\n (?:\\n[ ]*)? // one optional newline followed by spaces\r\n\r\n \\[\r\n (.*?) // id = $3\r\n \\]\r\n )\r\n ()()()() // pad remaining backreferences\r\n /g, writeAnchorTag);\r\n */\r\n text = text.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\])()()()()/g, writeAnchorTag);\r\n\r\n //\r\n // Next, inline-style links: [link text](url \"optional title\")\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ( // wrap whole match in $1\r\n \\[\r\n (\r\n (?:\r\n \\[[^\\]]*\\] // allow brackets nested one level\r\n |\r\n [^\\[\\]] // or anything else\r\n )*\r\n )\r\n \\]\r\n \\( // literal paren\r\n [ \\t]*\r\n () // no id, so leave $3 empty\r\n ?\r\n [ \\t]*\r\n ( // $5\r\n (['\"]) // quote char = $6\r\n (.*?) // Title = $7\r\n \\6 // matching quote\r\n [ \\t]* // ignore any spaces/tabs between closing quote and )\r\n )? // title is optional\r\n \\)\r\n )\r\n /g, writeAnchorTag);\r\n */\r\n\r\n text = text.replace(/(\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeAnchorTag);\r\n\r\n //\r\n // Last, handle reference-style shortcuts: [link text]\r\n // These must come last in case you've also got [link test][1]\r\n // or [link test](/foo)\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ( // wrap whole match in $1\r\n \\[\r\n ([^\\[\\]]+) // link text = $2; can't contain '[' or ']'\r\n \\]\r\n )\r\n ()()()()() // pad rest of backreferences\r\n /g, writeAnchorTag);\r\n */\r\n text = text.replace(/(\\[([^\\[\\]]+)\\])()()()()()/g, writeAnchorTag);\r\n\r\n return text;\r\n }\r\n\r\n function writeAnchorTag(wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\r\n if (m7 == undefined) m7 = \"\";\r\n var whole_match = m1;\r\n var link_text = m2.replace(/:\\/\\//g, \"~P\"); // to prevent auto-linking withing the link. will be converted back after the auto-linker runs\r\n var link_id = m3.toLowerCase();\r\n var url = m4;\r\n var title = m7;\r\n\r\n if (url == \"\") {\r\n if (link_id == \"\") {\r\n // lower-case and turn embedded newlines into spaces\r\n link_id = link_text.toLowerCase().replace(/ ?\\n/g, \" \");\r\n }\r\n url = \"#\" + link_id;\r\n\r\n if (g_urls.get(link_id) != undefined) {\r\n url = g_urls.get(link_id);\r\n if (g_titles.get(link_id) != undefined) {\r\n title = g_titles.get(link_id);\r\n }\r\n }\r\n else {\r\n if (whole_match.search(/\\(\\s*\\)$/m) > -1) {\r\n // Special case for explicit empty url\r\n url = \"\";\r\n } else {\r\n return whole_match;\r\n }\r\n }\r\n }\r\n url = encodeProblemUrlChars(url);\r\n url = escapeCharacters(url, \"*_\");\r\n var result = \"\" + link_text + \"\";\r\n\r\n return result;\r\n }\r\n\r\n function _DoImages(text) {\r\n //\r\n // Turn Markdown image shortcuts into tags.\r\n //\r\n\r\n //\r\n // First, handle reference-style labeled images: ![alt text][id]\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ( // wrap whole match in $1\r\n !\\[\r\n (.*?) // alt text = $2\r\n \\]\r\n\r\n [ ]? // one optional space\r\n (?:\\n[ ]*)? // one optional newline followed by spaces\r\n\r\n \\[\r\n (.*?) // id = $3\r\n \\]\r\n )\r\n ()()()() // pad rest of backreferences\r\n /g, writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\][ ]?(?:\\n[ ]*)?\\[(.*?)\\])()()()()/g, writeImageTag);\r\n\r\n //\r\n // Next, handle inline images: ![alt text](url \"optional title\")\r\n // Don't forget: encode * and _\r\n\r\n /*\r\n text = text.replace(/\r\n ( // wrap whole match in $1\r\n !\\[\r\n (.*?) // alt text = $2\r\n \\]\r\n \\s? // One optional whitespace character\r\n \\( // literal paren\r\n [ \\t]*\r\n () // no id, so leave $3 empty\r\n ? // src url = $4\r\n [ \\t]*\r\n ( // $5\r\n (['\"]) // quote char = $6\r\n (.*?) // title = $7\r\n \\6 // matching quote\r\n [ \\t]*\r\n )? // title is optional\r\n \\)\r\n )\r\n /g, writeImageTag);\r\n */\r\n text = text.replace(/(!\\[(.*?)\\]\\s?\\([ \\t]*()?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g, writeImageTag);\r\n\r\n return text;\r\n }\r\n\r\n function attributeEncode(text) {\r\n // unconditionally replace angle brackets here -- what ends up in an attribute (e.g. alt or title)\r\n // never makes sense to have verbatim HTML in it (and the sanitizer would totally break it)\r\n return text.replace(/>/g, \">\").replace(/\";\r\n\r\n return result;\r\n }\r\n\r\n function _DoHeaders(text) {\r\n\r\n // Setext-style headers:\r\n // Header 1\r\n // ========\r\n //\r\n // Header 2\r\n // --------\r\n //\r\n text = text.replace(/^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\r\n function (wholeMatch, m1) { return \"

\" + _RunSpanGamut(m1) + \"

\\n\\n\"; }\r\n );\r\n\r\n text = text.replace(/^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm,\r\n function (matchFound, m1) { return \"

\" + _RunSpanGamut(m1) + \"

\\n\\n\"; }\r\n );\r\n\r\n // atx-style headers:\r\n // # Header 1\r\n // ## Header 2\r\n // ## Header 2 with closing hashes ##\r\n // ...\r\n // ###### Header 6\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n ^(\\#{1,6}) // $1 = string of #'s\r\n [ \\t]*\r\n (.+?) // $2 = Header text\r\n [ \\t]*\r\n \\#* // optional closing #'s (not counted)\r\n \\n+\r\n /gm, function() {...});\r\n */\r\n\r\n text = text.replace(/^(\\#{1,6})[ \\t]*(.+?)[ \\t]*\\#*\\n+/gm,\r\n function (wholeMatch, m1, m2) {\r\n var h_level = m1.length;\r\n return \"\" + _RunSpanGamut(m2) + \"\\n\\n\";\r\n }\r\n );\r\n\r\n return text;\r\n }\r\n\r\n function _DoLists(text) {\r\n //\r\n // Form HTML ordered (numbered) and unordered (bulleted) lists.\r\n //\r\n\r\n // attacklab: add sentinel to hack around khtml/safari bug:\r\n // http://bugs.webkit.org/show_bug.cgi?id=11231\r\n text += \"~0\";\r\n\r\n // Re-usable pattern to match any entirel ul or ol list:\r\n\r\n /*\r\n var whole_list = /\r\n ( // $1 = whole list\r\n ( // $2\r\n [ ]{0,3} // attacklab: g_tab_width - 1\r\n ([*+-]|\\d+[.]) // $3 = first list item marker\r\n [ \\t]+\r\n )\r\n [^\\r]+?\r\n ( // $4\r\n ~0 // sentinel for workaround; should be $\r\n |\r\n \\n{2,}\r\n (?=\\S)\r\n (?! // Negative lookahead for another list item marker\r\n [ \\t]*\r\n (?:[*+-]|\\d+[.])[ \\t]+\r\n )\r\n )\r\n )\r\n /g\r\n */\r\n var whole_list = /^(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\r\n\r\n if (g_list_level) {\r\n text = text.replace(whole_list, function (wholeMatch, m1, m2) {\r\n var list = m1;\r\n var list_type = (m2.search(/[*+-]/g) > -1) ? \"ul\" : \"ol\";\r\n\r\n var result = _ProcessListItems(list, list_type);\r\n\r\n // Trim any trailing whitespace, to put the closing ``\r\n // up on the preceding line, to get it past the current stupid\r\n // HTML block parser. This is a hack to work around the terrible\r\n // hack that is the HTML block parser.\r\n result = result.replace(/\\s+$/, \"\");\r\n result = \"<\" + list_type + \">\" + result + \"\\n\";\r\n return result;\r\n });\r\n } else {\r\n whole_list = /(\\n\\n|^\\n?)(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/g;\r\n text = text.replace(whole_list, function (wholeMatch, m1, m2, m3) {\r\n var runup = m1;\r\n var list = m2;\r\n\r\n var list_type = (m3.search(/[*+-]/g) > -1) ? \"ul\" : \"ol\";\r\n var result = _ProcessListItems(list, list_type);\r\n result = runup + \"<\" + list_type + \">\\n\" + result + \"\\n\";\r\n return result;\r\n });\r\n }\r\n\r\n // attacklab: strip sentinel\r\n text = text.replace(/~0/, \"\");\r\n\r\n return text;\r\n }\r\n\r\n var _listItemMarkers = { ol: \"\\\\d+[.]\", ul: \"[*+-]\" };\r\n\r\n function _ProcessListItems(list_str, list_type) {\r\n //\r\n // Process the contents of a single ordered or unordered list, splitting it\r\n // into individual list items.\r\n //\r\n // list_type is either \"ul\" or \"ol\".\r\n\r\n // The $g_list_level global keeps track of when we're inside a list.\r\n // Each time we enter a list, we increment it; when we leave a list,\r\n // we decrement. If it's zero, we're not in a list anymore.\r\n //\r\n // We do this because when we're not inside a list, we want to treat\r\n // something like this:\r\n //\r\n // I recommend upgrading to version\r\n // 8. Oops, now this line is treated\r\n // as a sub-list.\r\n //\r\n // As a single paragraph, despite the fact that the second line starts\r\n // with a digit-period-space sequence.\r\n //\r\n // Whereas when we're inside a list (or sub-list), that line will be\r\n // treated as the start of a sub-list. What a kludge, huh? This is\r\n // an aspect of Markdown's syntax that's hard to parse perfectly\r\n // without resorting to mind-reading. Perhaps the solution is to\r\n // change the syntax rules such that sub-lists must start with a\r\n // starting cardinal number; e.g. \"1.\" or \"a.\".\r\n\r\n g_list_level++;\r\n\r\n // trim trailing blank lines:\r\n list_str = list_str.replace(/\\n{2,}$/, \"\\n\");\r\n\r\n // attacklab: add sentinel to emulate \\z\r\n list_str += \"~0\";\r\n\r\n // In the original attacklab showdown, list_type was not given to this function, and anything\r\n // that matched /[*+-]|\\d+[.]/ would just create the next
  • , causing this mismatch:\r\n //\r\n // Markdown rendered by WMD rendered by MarkdownSharp\r\n // ------------------------------------------------------------------\r\n // 1. first 1. first 1. first\r\n // 2. second 2. second 2. second\r\n // - third 3. third * third\r\n //\r\n // We changed this to behave identical to MarkdownSharp. This is the constructed RegEx,\r\n // with {MARKER} being one of \\d+[.] or [*+-], depending on list_type:\r\n\r\n /*\r\n list_str = list_str.replace(/\r\n (^[ \\t]*) // leading whitespace = $1\r\n ({MARKER}) [ \\t]+ // list marker = $2\r\n ([^\\r]+? // list item text = $3\r\n (\\n+)\r\n )\r\n (?=\r\n (~0 | \\2 ({MARKER}) [ \\t]+)\r\n )\r\n /gm, function(){...});\r\n */\r\n\r\n var marker = _listItemMarkers[list_type];\r\n var re = new RegExp(\"(^[ \\\\t]*)(\" + marker + \")[ \\\\t]+([^\\\\r]+?(\\\\n+))(?=(~0|\\\\1(\" + marker + \")[ \\\\t]+))\", \"gm\");\r\n var last_item_had_a_double_newline = false;\r\n list_str = list_str.replace(re,\r\n function (wholeMatch, m1, m2, m3) {\r\n var item = m3;\r\n var leading_space = m1;\r\n var ends_with_double_newline = /\\n\\n$/.test(item);\r\n var contains_double_newline = ends_with_double_newline || item.search(/\\n{2,}/) > -1;\r\n\r\n if (contains_double_newline || last_item_had_a_double_newline) {\r\n item = _RunBlockGamut(_Outdent(item), /* doNotUnhash = */true);\r\n }\r\n else {\r\n // Recursion for sub-lists:\r\n item = _DoLists(_Outdent(item));\r\n item = item.replace(/\\n$/, \"\"); // chomp(item)\r\n item = _RunSpanGamut(item);\r\n }\r\n last_item_had_a_double_newline = ends_with_double_newline;\r\n return \"
  • \" + item + \"
  • \\n\";\r\n }\r\n );\r\n\r\n // attacklab: strip sentinel\r\n list_str = list_str.replace(/~0/g, \"\");\r\n\r\n g_list_level--;\r\n return list_str;\r\n }\r\n\r\n function _DoCodeBlocks(text) {\r\n //\r\n // Process Markdown `
    ` blocks.\r\n            //\r\n\r\n            /*\r\n            text = text.replace(/\r\n                (?:\\n\\n|^)\r\n                (                               // $1 = the code block -- one or more lines, starting with a space/tab\r\n                    (?:\r\n                        (?:[ ]{4}|\\t)           // Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width\r\n                        .*\\n+\r\n                    )+\r\n                )\r\n                (\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))    // attacklab: g_tab_width\r\n            /g ,function(){...});\r\n            */\r\n\r\n            // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\r\n            text += \"~0\";\r\n\r\n            text = text.replace(/(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g,\r\n                function (wholeMatch, m1, m2) {\r\n                    var codeblock = m1;\r\n                    var nextChar = m2;\r\n\r\n                    codeblock = _EncodeCode(_Outdent(codeblock));\r\n                    codeblock = _Detab(codeblock);\r\n                    codeblock = codeblock.replace(/^\\n+/g, \"\"); // trim leading newlines\r\n                    codeblock = codeblock.replace(/\\n+$/g, \"\"); // trim trailing whitespace\r\n\r\n                    codeblock = \"
    \" + codeblock + \"\\n
    \";\r\n\r\n return \"\\n\\n\" + codeblock + \"\\n\\n\" + nextChar;\r\n }\r\n );\r\n\r\n // attacklab: strip sentinel\r\n text = text.replace(/~0/, \"\");\r\n\r\n return text;\r\n }\r\n\r\n function hashBlock(text) {\r\n text = text.replace(/(^\\n+|\\n+$)/g, \"\");\r\n return \"\\n\\n~K\" + (g_html_blocks.push(text) - 1) + \"K\\n\\n\";\r\n }\r\n\r\n function _DoCodeSpans(text) {\r\n //\r\n // * Backtick quotes are used for spans.\r\n //\r\n // * You can use multiple backticks as the delimiters if you want to\r\n // include literal backticks in the code span. So, this input:\r\n //\r\n // Just type ``foo `bar` baz`` at the prompt.\r\n //\r\n // Will translate to:\r\n //\r\n //

    Just type foo `bar` baz at the prompt.

    \r\n //\r\n // There's no arbitrary limit to the number of backticks you\r\n // can use as delimters. If you need three consecutive backticks\r\n // in your code, use four for delimiters, etc.\r\n //\r\n // * You can use spaces to get literal backticks at the edges:\r\n //\r\n // ... type `` `bar` `` ...\r\n //\r\n // Turns to:\r\n //\r\n // ... type `bar` ...\r\n //\r\n\r\n /*\r\n text = text.replace(/\r\n (^|[^\\\\]) // Character before opening ` can't be a backslash\r\n (`+) // $2 = Opening run of `\r\n ( // $3 = The code block\r\n [^\\r]*?\r\n [^`] // attacklab: work around lack of lookbehind\r\n )\r\n \\2 // Matching closer\r\n (?!`)\r\n /gm, function(){...});\r\n */\r\n\r\n text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\r\n function (wholeMatch, m1, m2, m3, m4) {\r\n var c = m3;\r\n c = c.replace(/^([ \\t]*)/g, \"\"); // leading whitespace\r\n c = c.replace(/[ \\t]*$/g, \"\"); // trailing whitespace\r\n c = _EncodeCode(c);\r\n c = c.replace(/:\\/\\//g, \"~P\"); // to prevent auto-linking. Not necessary in code *blocks*, but in code spans. Will be converted back after the auto-linker runs.\r\n return m1 + \"\" + c + \"\";\r\n }\r\n );\r\n\r\n return text;\r\n }\r\n\r\n function _EncodeCode(text) {\r\n //\r\n // Encode/escape certain characters inside Markdown code runs.\r\n // The point is that in code, these characters are literals,\r\n // and lose their special Markdown meanings.\r\n //\r\n // Encode all ampersands; HTML entities are not\r\n // entities within a Markdown code span.\r\n text = text.replace(/&/g, \"&\");\r\n\r\n // Do the angle bracket song and dance:\r\n text = text.replace(//g, \">\");\r\n\r\n // Now, escape characters that are magic in Markdown:\r\n text = escapeCharacters(text, \"\\*_{}[]\\\\\", false);\r\n\r\n // jj the line above breaks this:\r\n //---\r\n\r\n //* Item\r\n\r\n // 1. Subitem\r\n\r\n // special char: *\r\n //---\r\n\r\n return text;\r\n }\r\n\r\n function _DoItalicsAndBold(text) {\r\n\r\n // must go first:\r\n text = text.replace(/([\\W_]|^)(\\*\\*|__)(?=\\S)([^\\r]*?\\S[\\*_]*)\\2([\\W_]|$)/g,\r\n \"$1$3$4\");\r\n\r\n text = text.replace(/([\\W_]|^)(\\*|_)(?=\\S)([^\\r\\*_]*?\\S)\\2([\\W_]|$)/g,\r\n \"$1$3$4\");\r\n\r\n return text;\r\n }\r\n\r\n function _DoBlockQuotes(text) {\r\n\r\n /*\r\n text = text.replace(/\r\n ( // Wrap whole match in $1\r\n (\r\n ^[ \\t]*>[ \\t]? // '>' at the start of a line\r\n .+\\n // rest of the first line\r\n (.+\\n)* // subsequent consecutive lines\r\n \\n* // blanks\r\n )+\r\n )\r\n /gm, function(){...});\r\n */\r\n\r\n text = text.replace(/((^[ \\t]*>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm,\r\n function (wholeMatch, m1) {\r\n var bq = m1;\r\n\r\n // attacklab: hack around Konqueror 3.5.4 bug:\r\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\r\n\r\n bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, \"~0\"); // trim one level of quoting\r\n\r\n // attacklab: clean up hack\r\n bq = bq.replace(/~0/g, \"\");\r\n\r\n bq = bq.replace(/^[ \\t]+$/gm, \"\"); // trim whitespace-only lines\r\n bq = _RunBlockGamut(bq); // recurse\r\n\r\n bq = bq.replace(/(^|\\n)/g, \"$1 \");\r\n // These leading spaces screw with
     content, so we need to fix that:\r\n                    bq = bq.replace(\r\n                            /(\\s*
    [^\\r]+?<\\/pre>)/gm,\r\n                        function (wholeMatch, m1) {\r\n                            var pre = m1;\r\n                            // attacklab: hack around Konqueror 3.5.4 bug:\r\n                            pre = pre.replace(/^  /mg, \"~0\");\r\n                            pre = pre.replace(/~0/g, \"\");\r\n                            return pre;\r\n                        });\r\n\r\n                    return hashBlock(\"
    \\n\" + bq + \"\\n
    \");\r\n }\r\n );\r\n return text;\r\n }\r\n\r\n function _FormParagraphs(text, doNotUnhash) {\r\n //\r\n // Params:\r\n // $text - string to process with html

    tags\r\n //\r\n\r\n // Strip leading and trailing lines:\r\n text = text.replace(/^\\n+/g, \"\");\r\n text = text.replace(/\\n+$/g, \"\");\r\n\r\n var grafs = text.split(/\\n{2,}/g);\r\n var grafsOut = [];\r\n\r\n var markerRe = /~K(\\d+)K/;\r\n\r\n //\r\n // Wrap

    tags.\r\n //\r\n var end = grafs.length;\r\n for (var i = 0; i < end; i++) {\r\n var str = grafs[i];\r\n\r\n // if this is an HTML marker, copy it\r\n if (markerRe.test(str)) {\r\n grafsOut.push(str);\r\n }\r\n else if (/\\S/.test(str)) {\r\n str = _RunSpanGamut(str);\r\n str = str.replace(/^([ \\t]*)/g, \"

    \");\r\n str += \"

    \"\r\n grafsOut.push(str);\r\n }\r\n\r\n }\r\n //\r\n // Unhashify HTML blocks\r\n //\r\n if (!doNotUnhash) {\r\n end = grafsOut.length;\r\n for (var i = 0; i < end; i++) {\r\n var foundAny = true;\r\n while (foundAny) { // we may need several runs, since the data may be nested\r\n foundAny = false;\r\n grafsOut[i] = grafsOut[i].replace(/~K(\\d+)K/g, function (wholeMatch, id) {\r\n foundAny = true;\r\n return g_html_blocks[id];\r\n });\r\n }\r\n }\r\n }\r\n return grafsOut.join(\"\\n\\n\");\r\n }\r\n\r\n function _EncodeAmpsAndAngles(text) {\r\n // Smart processing for ampersands and angle brackets that need to be encoded.\r\n\r\n // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\r\n // http://bumppo.net/projects/amputator/\r\n text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, \"&\");\r\n\r\n // Encode naked <'s\r\n text = text.replace(/<(?![a-z\\/?\\$!])/gi, \"<\");\r\n\r\n return text;\r\n }\r\n\r\n function _EncodeBackslashEscapes(text) {\r\n //\r\n // Parameter: String.\r\n // Returns: The string, with after processing the following backslash\r\n // escape sequences.\r\n //\r\n\r\n // attacklab: The polite way to do this is with the new\r\n // escapeCharacters() function:\r\n //\r\n // text = escapeCharacters(text,\"\\\\\",true);\r\n // text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\r\n //\r\n // ...but we're sidestepping its use of the (slow) RegExp constructor\r\n // as an optimization for Firefox. This function gets called a LOT.\r\n\r\n text = text.replace(/\\\\(\\\\)/g, escapeCharacters_callback);\r\n text = text.replace(/\\\\([`*_{}\\[\\]()>#+-.!])/g, escapeCharacters_callback);\r\n return text;\r\n }\r\n\r\n function _DoAutoLinks(text) {\r\n\r\n // note that at this point, all other URL in the text are already hyperlinked as \r\n // *except* for the case\r\n\r\n // automatically add < and > around unadorned raw hyperlinks\r\n // must be preceded by space/BOF and followed by non-word/EOF character\r\n text = text.replace(/(^|\\s)(https?|ftp)(:\\/\\/[-A-Z0-9+&@#\\/%?=~_|\\[\\]\\(\\)!:,\\.;]*[-A-Z0-9+&@#\\/%=~_|\\[\\]])($|\\W)/gi, \"$1<$2$3>$4\");\r\n\r\n // autolink anything like \r\n\r\n var replacer = function (wholematch, m1) { return \"\" + pluginHooks.plainLinkText(m1) + \"\"; }\r\n text = text.replace(/<((https?|ftp):[^'\">\\s]+)>/gi, replacer);\r\n\r\n // Email addresses: \r\n /*\r\n text = text.replace(/\r\n <\r\n (?:mailto:)?\r\n (\r\n [-.\\w]+\r\n \\@\r\n [-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+\r\n )\r\n >\r\n /gi, _DoAutoLinks_callback());\r\n */\r\n\r\n /* disabling email autolinking, since we don't do that on the server, either\r\n text = text.replace(/<(?:mailto:)?([-.\\w]+\\@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi,\r\n function(wholeMatch,m1) {\r\n return _EncodeEmailAddress( _UnescapeSpecialChars(m1) );\r\n }\r\n );\r\n */\r\n return text;\r\n }\r\n\r\n function _UnescapeSpecialChars(text) {\r\n //\r\n // Swap back in all the special characters we've hidden.\r\n //\r\n text = text.replace(/~E(\\d+)E/g,\r\n function (wholeMatch, m1) {\r\n var charCodeToReplace = parseInt(m1);\r\n return String.fromCharCode(charCodeToReplace);\r\n }\r\n );\r\n return text;\r\n }\r\n\r\n function _Outdent(text) {\r\n //\r\n // Remove one level of line-leading tabs or spaces\r\n //\r\n\r\n // attacklab: hack around Konqueror 3.5.4 bug:\r\n // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\r\n\r\n text = text.replace(/^(\\t|[ ]{1,4})/gm, \"~0\"); // attacklab: g_tab_width\r\n\r\n // attacklab: clean up hack\r\n text = text.replace(/~0/g, \"\")\r\n\r\n return text;\r\n }\r\n\r\n function _Detab(text) {\r\n if (!/\\t/.test(text))\r\n return text;\r\n\r\n var spaces = [\" \", \" \", \" \", \" \"],\r\n skew = 0,\r\n v;\r\n\r\n return text.replace(/[\\n\\t]/g, function (match, offset) {\r\n if (match === \"\\n\") {\r\n skew = offset + 1;\r\n return match;\r\n }\r\n v = (offset - skew) % 4;\r\n skew = offset + 1;\r\n return spaces[v];\r\n });\r\n }\r\n\r\n //\r\n // attacklab: Utility functions\r\n //\r\n\r\n var _problemUrlChars = /(?:[\"'*()[\\]:]|~D)/g;\r\n\r\n // hex-encodes some unusual \"problem\" chars in URLs to avoid URL detection problems\r\n function encodeProblemUrlChars(url) {\r\n if (!url)\r\n return \"\";\r\n\r\n var len = url.length;\r\n\r\n return url.replace(_problemUrlChars, function (match, offset) {\r\n if (match == \"~D\") // escape for dollar\r\n return \"%24\";\r\n if (match == \":\") {\r\n if (offset == len - 1 || /[0-9\\/]/.test(url.charAt(offset + 1)))\r\n return \":\"\r\n }\r\n return \"%\" + match.charCodeAt(0).toString(16);\r\n });\r\n }\r\n\r\n\r\n function escapeCharacters(text, charsToEscape, afterBackslash) {\r\n // First we have to escape the escape characters so that\r\n // we can build a character class out of them\r\n var regexString = \"([\" + charsToEscape.replace(/([\\[\\]\\\\])/g, \"\\\\$1\") + \"])\";\r\n\r\n if (afterBackslash) {\r\n regexString = \"\\\\\\\\\" + regexString;\r\n }\r\n\r\n var regex = new RegExp(regexString, \"g\");\r\n text = text.replace(regex, escapeCharacters_callback);\r\n\r\n return text;\r\n }\r\n\r\n\r\n function escapeCharacters_callback(wholeMatch, m1) {\r\n var charCodeToEscape = m1.charCodeAt(0);\r\n return \"~E\" + charCodeToEscape + \"E\";\r\n }\r\n\r\n }; // end of the Markdown.Converter constructor\r\n\r\n})();\r\n\r\n\r\n// ======= END WRAP\r\n\r\n // no reason for multiple instances,\r\n // just call `makeHtml`\r\n return new Markdown.Converter();\r\n});\r\n//>>excludeEnd('excludeMdown');\n", "/** @license\r\n * RequireJS plugin for loading Markdown files and converting them into HTML.\r\n * Author: Miller Medeiros\r\n * Version: 0.1.1 (2012/02/17)\r\n * Released under the MIT license\r\n */\r\n\r\n// NOTE :: if you don't need to load markdown files in production outside of\r\n// the build, precompile them into modules and set\r\n// `pragmasOnSave.excludeMdown=true`\r\n\r\ndefine(\r\n 'mdown',[\r\n//>>excludeStart('excludeMdown', pragmas.excludeMdown)\r\n 'text',\r\n 'markdownConverter'\r\n//>>excludeEnd('excludeMdown')\r\n ],\r\n function (\r\n//>>excludeStart('excludeMdown', pragmas.excludeMdown)\r\n text, markdownConverter\r\n//>>excludeEnd('excludeMdown')\r\n ) {\r\n\r\n//>>excludeStart('excludeMdown', pragmas.excludeMdown)\r\n var buildMap = {};\r\n//>>excludeEnd('excludeMdown')\r\n\r\n //API\r\n return {\r\n\r\n load : function(name, req, onLoad, config) {\r\n//>>excludeStart('excludeMdown', pragmas.excludeMdown)\r\n text.get(req.toUrl(name), function(data){\r\n data = markdownConverter.makeHtml(data);\r\n if (config.isBuild) {\r\n buildMap[name] = data;\r\n onLoad(data);\r\n } else {\r\n onLoad(data);\r\n }\r\n });\r\n },\r\n\r\n //write method based on RequireJS official text plugin by James Burke\r\n //https://github.com/jrburke/requirejs/blob/master/text.js\r\n write : function(pluginName, moduleName, write){\r\n if(moduleName in buildMap){\r\n var content = text.jsEscape(buildMap[moduleName]);\r\n write.asModule(pluginName + \"!\" + moduleName,\r\n \"define(function () { return '\" +\r\n content +\r\n \"';});\\n\");\r\n }\r\n//>>excludeEnd('excludeMdown')\r\n }\r\n\r\n };\r\n});\r\n\n", "/** @license\r\n * RequireJS plugin for loading files without adding the JS extension, useful for\r\n * JSONP services and any other kind of resource that already contain a file\r\n * extension or that shouldn't have one (like dynamic scripts).\r\n * Author: Miller Medeiros\r\n * Version: 0.3.1 (2011/12/07)\r\n * Released under the MIT license\r\n */\r\ndefine('noext',[],function(){\r\n\r\n var QUERY_PARAM = 'noext';\r\n\r\n //API\r\n return {\r\n load : function(name, req, onLoad, config){\r\n req([req.toUrl(name)], function(mod){\r\n onLoad(mod);\r\n });\r\n },\r\n normalize : function(name, norm){\r\n //append query string to avoid adding .js extension\r\n //needs to be on normalize otherwise it won't work after build\r\n name += (name.indexOf('?') < 0)? '?' : '&';\r\n return name + QUERY_PARAM +'=1';\r\n }\r\n\r\n };\r\n});\r\n\n", "(function(root) {\ndefine(\"bootstrap\", [\"jquery\"], function() {\n return (function() {\n/*!\r\n * Bootstrap v3.3.7 (http://getbootstrap.com)\r\n * Copyright 2011-2016 Twitter, Inc.\r\n * Licensed under the MIT license\r\n */\r\nif(\"undefined\"==typeof jQuery)throw new Error(\"Bootstrap's JavaScript requires jQuery\");+function($){\"use strict\";var t=$.fn.jquery.split(\" \")[0].split(\".\");if(t[0]<2&&t[1]<9||1==t[0]&&9==t[1]&&t[2]<1||t[0]>3)throw new Error(\"Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4\")}(jQuery),+function($){\"use strict\";function t(){var t=document.createElement(\"bootstrap\"),e={WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd otransitionend\",transition:\"transitionend\"};for(var i in e)if(void 0!==t.style[i])return{end:e[i]};return!1}$.fn.emulateTransitionEnd=function(t){var e=!1,i=this;$(this).one(\"bsTransitionEnd\",function(){e=!0});var o=function(){e||$(i).trigger($.support.transition.end)};return setTimeout(o,t),this},$(function(){$.support.transition=t(),$.support.transition&&($.event.special.bsTransitionEnd={bindType:$.support.transition.end,delegateType:$.support.transition.end,handle:function(t){if($(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function($){\"use strict\";function t(t){return this.each(function(){var e=$(this),o=e.data(\"bs.alert\");o||e.data(\"bs.alert\",o=new i(this)),\"string\"==typeof t&&o[t].call(e)})}var e='[data-dismiss=\"alert\"]',i=function(t){$(t).on(\"click\",e,this.close)};i.VERSION=\"3.3.7\",i.TRANSITION_DURATION=150,i.prototype.close=function(t){function e(){s.detach().trigger(\"closed.bs.alert\").remove()}var o=$(this),n=o.attr(\"data-target\");n||(n=o.attr(\"href\"),n=n&&n.replace(/.*(?=#[^\\s]*$)/,\"\"));var s=$(\"#\"===n?[]:n);t&&t.preventDefault(),s.length||(s=o.closest(\".alert\")),s.trigger(t=$.Event(\"close.bs.alert\")),t.isDefaultPrevented()||(s.removeClass(\"in\"),$.support.transition&&s.hasClass(\"fade\")?s.one(\"bsTransitionEnd\",e).emulateTransitionEnd(i.TRANSITION_DURATION):e())};var o=$.fn.alert;$.fn.alert=t,$.fn.alert.Constructor=i,$.fn.alert.noConflict=function(){return $.fn.alert=o,this},$(document).on(\"click.bs.alert.data-api\",e,i.prototype.close)}(jQuery),+function($){\"use strict\";function t(t){return this.each(function(){var i=$(this),o=i.data(\"bs.button\"),n=\"object\"==typeof t&&t;o||i.data(\"bs.button\",o=new e(this,n)),\"toggle\"==t?o.toggle():t&&o.setState(t)})}var e=function(t,i){this.$element=$(t),this.options=$.extend({},e.DEFAULTS,i),this.isLoading=!1};e.VERSION=\"3.3.7\",e.DEFAULTS={loadingText:\"loading...\"},e.prototype.setState=function(t){var e=\"disabled\",i=this.$element,o=i.is(\"input\")?\"val\":\"html\",n=i.data();t+=\"Text\",null==n.resetText&&i.data(\"resetText\",i[o]()),setTimeout($.proxy(function(){i[o](null==n[t]?this.options[t]:n[t]),\"loadingText\"==t?(this.isLoading=!0,i.addClass(e).attr(e,e).prop(e,!0)):this.isLoading&&(this.isLoading=!1,i.removeClass(e).removeAttr(e).prop(e,!1))},this),0)},e.prototype.toggle=function(){var t=!0,e=this.$element.closest('[data-toggle=\"buttons\"]');if(e.length){var i=this.$element.find(\"input\");\"radio\"==i.prop(\"type\")?(i.prop(\"checked\")&&(t=!1),e.find(\".active\").removeClass(\"active\"),this.$element.addClass(\"active\")):\"checkbox\"==i.prop(\"type\")&&(i.prop(\"checked\")!==this.$element.hasClass(\"active\")&&(t=!1),this.$element.toggleClass(\"active\")),i.prop(\"checked\",this.$element.hasClass(\"active\")),t&&i.trigger(\"change\")}else this.$element.attr(\"aria-pressed\",!this.$element.hasClass(\"active\")),this.$element.toggleClass(\"active\")};var i=$.fn.button;$.fn.button=t,$.fn.button.Constructor=e,$.fn.button.noConflict=function(){return $.fn.button=i,this},$(document).on(\"click.bs.button.data-api\",'[data-toggle^=\"button\"]',function(e){var i=$(e.target).closest(\".btn\");t.call(i,\"toggle\"),$(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]')||(e.preventDefault(),i.is(\"input,button\")?i.trigger(\"focus\"):i.find(\"input:visible,button:visible\").first().trigger(\"focus\"))}).on(\"focus.bs.button.data-api blur.bs.button.data-api\",'[data-toggle^=\"button\"]',function(t){$(t.target).closest(\".btn\").toggleClass(\"focus\",/^focus(in)?$/.test(t.type))})}(jQuery),+function($){\"use strict\";function t(t){return this.each(function(){var i=$(this),o=i.data(\"bs.carousel\"),n=$.extend({},e.DEFAULTS,i.data(),\"object\"==typeof t&&t),s=\"string\"==typeof t?t:n.slide;o||i.data(\"bs.carousel\",o=new e(this,n)),\"number\"==typeof t?o.to(t):s?o[s]():n.interval&&o.pause().cycle()})}var e=function(t,e){this.$element=$(t),this.$indicators=this.$element.find(\".carousel-indicators\"),this.options=e,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on(\"keydown.bs.carousel\",$.proxy(this.keydown,this)),\"hover\"==this.options.pause&&!(\"ontouchstart\"in document.documentElement)&&this.$element.on(\"mouseenter.bs.carousel\",$.proxy(this.pause,this)).on(\"mouseleave.bs.carousel\",$.proxy(this.cycle,this))};e.VERSION=\"3.3.7\",e.TRANSITION_DURATION=600,e.DEFAULTS={interval:5e3,pause:\"hover\",wrap:!0,keyboard:!0},e.prototype.keydown=function(t){if(!/input|textarea/i.test(t.target.tagName)){switch(t.which){case 37:this.prev();break;case 39:this.next();break;default:return}t.preventDefault()}},e.prototype.cycle=function(t){return t||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval($.proxy(this.next,this),this.options.interval)),this},e.prototype.getItemIndex=function(t){return this.$items=t.parent().children(\".item\"),this.$items.index(t||this.$active)},e.prototype.getItemForDirection=function(t,e){var i=this.getItemIndex(e),o=\"prev\"==t&&0===i||\"next\"==t&&i==this.$items.length-1;if(o&&!this.options.wrap)return e;var n=\"prev\"==t?-1:1,s=(i+n)%this.$items.length;return this.$items.eq(s)},e.prototype.to=function(t){var e=this,i=this.getItemIndex(this.$active=this.$element.find(\".item.active\"));if(!(t>this.$items.length-1||t<0))return this.sliding?this.$element.one(\"slid.bs.carousel\",function(){e.to(t)}):i==t?this.pause().cycle():this.slide(t>i?\"next\":\"prev\",this.$items.eq(t))},e.prototype.pause=function(t){return t||(this.paused=!0),this.$element.find(\".next, .prev\").length&&$.support.transition&&(this.$element.trigger($.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},e.prototype.next=function(){if(!this.sliding)return this.slide(\"next\")},e.prototype.prev=function(){if(!this.sliding)return this.slide(\"prev\")},e.prototype.slide=function(t,i){var o=this.$element.find(\".item.active\"),n=i||this.getItemForDirection(t,o),s=this.interval,a=\"next\"==t?\"left\":\"right\",r=this;if(n.hasClass(\"active\"))return this.sliding=!1;var l=n[0],h=$.Event(\"slide.bs.carousel\",{relatedTarget:l,direction:a});if(this.$element.trigger(h),!h.isDefaultPrevented()){if(this.sliding=!0,s&&this.pause(),this.$indicators.length){this.$indicators.find(\".active\").removeClass(\"active\");var d=$(this.$indicators.children()[this.getItemIndex(n)]);d&&d.addClass(\"active\")}var p=$.Event(\"slid.bs.carousel\",{relatedTarget:l,direction:a});return $.support.transition&&this.$element.hasClass(\"slide\")?(n.addClass(t),n[0].offsetWidth,o.addClass(a),n.addClass(a),o.one(\"bsTransitionEnd\",function(){n.removeClass([t,a].join(\" \")).addClass(\"active\"),o.removeClass([\"active\",a].join(\" \")),r.sliding=!1,setTimeout(function(){r.$element.trigger(p)},0)}).emulateTransitionEnd(e.TRANSITION_DURATION)):(o.removeClass(\"active\"),n.addClass(\"active\"),this.sliding=!1,this.$element.trigger(p)),s&&this.cycle(),this}};var i=$.fn.carousel;$.fn.carousel=t,$.fn.carousel.Constructor=e,$.fn.carousel.noConflict=function(){return $.fn.carousel=i,this};var o=function(e){var i,o=$(this),n=$(o.attr(\"data-target\")||(i=o.attr(\"href\"))&&i.replace(/.*(?=#[^\\s]+$)/,\"\"));if(n.hasClass(\"carousel\")){var s=$.extend({},n.data(),o.data()),a=o.attr(\"data-slide-to\");a&&(s.interval=!1),t.call(n,s),a&&n.data(\"bs.carousel\").to(a),e.preventDefault()}};$(document).on(\"click.bs.carousel.data-api\",\"[data-slide]\",o).on(\"click.bs.carousel.data-api\",\"[data-slide-to]\",o),$(window).on(\"load\",function(){$('[data-ride=\"carousel\"]').each(function(){var e=$(this);t.call(e,e.data())})})}(jQuery),+function($){\"use strict\";function t(t){var e,i=t.attr(\"data-target\")||(e=t.attr(\"href\"))&&e.replace(/.*(?=#[^\\s]+$)/,\"\");return $(i)}function e(t){return this.each(function(){var e=$(this),o=e.data(\"bs.collapse\"),n=$.extend({},i.DEFAULTS,e.data(),\"object\"==typeof t&&t);!o&&n.toggle&&/show|hide/.test(t)&&(n.toggle=!1),o||e.data(\"bs.collapse\",o=new i(this,n)),\"string\"==typeof t&&o[t]()})}var i=function(t,e){this.$element=$(t),this.options=$.extend({},i.DEFAULTS,e),this.$trigger=$('[data-toggle=\"collapse\"][href=\"#'+t.id+'\"],[data-toggle=\"collapse\"][data-target=\"#'+t.id+'\"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};i.VERSION=\"3.3.7\",i.TRANSITION_DURATION=350,i.DEFAULTS={toggle:!0},i.prototype.dimension=function(){var t=this.$element.hasClass(\"width\");return t?\"width\":\"height\"},i.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass(\"in\")){var t,o=this.$parent&&this.$parent.children(\".panel\").children(\".in, .collapsing\");if(!(o&&o.length&&(t=o.data(\"bs.collapse\"),t&&t.transitioning))){var n=$.Event(\"show.bs.collapse\");if(this.$element.trigger(n),!n.isDefaultPrevented()){o&&o.length&&(e.call(o,\"hide\"),t||o.data(\"bs.collapse\",null));var s=this.dimension();this.$element.removeClass(\"collapse\").addClass(\"collapsing\")[s](0).attr(\"aria-expanded\",!0),this.$trigger.removeClass(\"collapsed\").attr(\"aria-expanded\",!0),this.transitioning=1;var a=function(){this.$element.removeClass(\"collapsing\").addClass(\"collapse in\")[s](\"\"),this.transitioning=0,this.$element.trigger(\"shown.bs.collapse\")};if(!$.support.transition)return a.call(this);var r=$.camelCase([\"scroll\",s].join(\"-\"));this.$element.one(\"bsTransitionEnd\",$.proxy(a,this)).emulateTransitionEnd(i.TRANSITION_DURATION)[s](this.$element[0][r])}}}},i.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass(\"in\")){var t=$.Event(\"hide.bs.collapse\");if(this.$element.trigger(t),!t.isDefaultPrevented()){var e=this.dimension();this.$element[e](this.$element[e]())[0].offsetHeight,this.$element.addClass(\"collapsing\").removeClass(\"collapse in\").attr(\"aria-expanded\",!1),this.$trigger.addClass(\"collapsed\").attr(\"aria-expanded\",!1),this.transitioning=1;var o=function(){this.transitioning=0,this.$element.removeClass(\"collapsing\").addClass(\"collapse\").trigger(\"hidden.bs.collapse\")};return $.support.transition?void this.$element[e](0).one(\"bsTransitionEnd\",$.proxy(o,this)).emulateTransitionEnd(i.TRANSITION_DURATION):o.call(this)}}},i.prototype.toggle=function(){this[this.$element.hasClass(\"in\")?\"hide\":\"show\"]()},i.prototype.getParent=function(){return $(this.options.parent).find('[data-toggle=\"collapse\"][data-parent=\"'+this.options.parent+'\"]').each($.proxy(function(e,i){var o=$(i);this.addAriaAndCollapsedClass(t(o),o)},this)).end()},i.prototype.addAriaAndCollapsedClass=function(t,e){var i=t.hasClass(\"in\");t.attr(\"aria-expanded\",i),e.toggleClass(\"collapsed\",!i).attr(\"aria-expanded\",i)};var o=$.fn.collapse;$.fn.collapse=e,$.fn.collapse.Constructor=i,$.fn.collapse.noConflict=function(){return $.fn.collapse=o,this},$(document).on(\"click.bs.collapse.data-api\",'[data-toggle=\"collapse\"]',function(i){var o=$(this);o.attr(\"data-target\")||i.preventDefault();var n=t(o),s=n.data(\"bs.collapse\"),a=s?\"toggle\":o.data();e.call(n,a)})}(jQuery),+function($){\"use strict\";function t(t){var e=t.attr(\"data-target\");e||(e=t.attr(\"href\"),e=e&&/#[A-Za-z]/.test(e)&&e.replace(/.*(?=#[^\\s]*$)/,\"\"));var i=e&&$(e);return i&&i.length?i:t.parent()}function e(e){e&&3===e.which||($(o).remove(),$(n).each(function(){var i=$(this),o=t(i),n={relatedTarget:this};o.hasClass(\"open\")&&(e&&\"click\"==e.type&&/input|textarea/i.test(e.target.tagName)&&$.contains(o[0],e.target)||(o.trigger(e=$.Event(\"hide.bs.dropdown\",n)),e.isDefaultPrevented()||(i.attr(\"aria-expanded\",\"false\"),o.removeClass(\"open\").trigger($.Event(\"hidden.bs.dropdown\",n)))))}))}function i(t){return this.each(function(){var e=$(this),i=e.data(\"bs.dropdown\");i||e.data(\"bs.dropdown\",i=new s(this)),\"string\"==typeof t&&i[t].call(e)})}var o=\".dropdown-backdrop\",n='[data-toggle=\"dropdown\"]',s=function(t){$(t).on(\"click.bs.dropdown\",this.toggle)};s.VERSION=\"3.3.7\",s.prototype.toggle=function(i){var o=$(this);if(!o.is(\".disabled, :disabled\")){var n=t(o),s=n.hasClass(\"open\");if(e(),!s){\"ontouchstart\"in document.documentElement&&!n.closest(\".navbar-nav\").length&&$(document.createElement(\"div\")).addClass(\"dropdown-backdrop\").insertAfter($(this)).on(\"click\",e);var a={relatedTarget:this};if(n.trigger(i=$.Event(\"show.bs.dropdown\",a)),i.isDefaultPrevented())return;o.trigger(\"focus\").attr(\"aria-expanded\",\"true\"),n.toggleClass(\"open\").trigger($.Event(\"shown.bs.dropdown\",a))}return!1}},s.prototype.keydown=function(e){if(/(38|40|27|32)/.test(e.which)&&!/input|textarea/i.test(e.target.tagName)){var i=$(this);if(e.preventDefault(),e.stopPropagation(),!i.is(\".disabled, :disabled\")){var o=t(i),s=o.hasClass(\"open\");if(!s&&27!=e.which||s&&27==e.which)return 27==e.which&&o.find(n).trigger(\"focus\"),i.trigger(\"click\");var a=\" li:not(.disabled):visible a\",r=o.find(\".dropdown-menu\"+a);if(r.length){var l=r.index(e.target);38==e.which&&l>0&&l--,40==e.which&&ldocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&t?this.scrollbarWidth:\"\",paddingRight:this.bodyIsOverflowing&&!t?this.scrollbarWidth:\"\"})},e.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:\"\",paddingRight:\"\"})},e.prototype.checkScrollbar=function(){var t=window.innerWidth;if(!t){var e=document.documentElement.getBoundingClientRect();t=e.right-Math.abs(e.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:\"hover focus\",title:\"\",delay:0,html:!1,container:!1,viewport:{selector:\"body\",padding:0}},e.prototype.init=function(t,e,i){if(this.enabled=!0,this.type=t,this.$element=$(e),this.options=this.getOptions(i),this.$viewport=this.options.viewport&&$($.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error(\"`selector` option must be specified when initializing \"+this.type+\" on the window.document object!\");for(var o=this.options.trigger.split(\" \"),n=o.length;n--;){var s=o[n];if(\"click\"==s)this.$element.on(\"click.\"+this.type,this.options.selector,$.proxy(this.toggle,this));else if(\"manual\"!=s){var a=\"hover\"==s?\"mouseenter\":\"focusin\",r=\"hover\"==s?\"mouseleave\":\"focusout\";this.$element.on(a+\".\"+this.type,this.options.selector,$.proxy(this.enter,this)),this.$element.on(r+\".\"+this.type,this.options.selector,$.proxy(this.leave,this))}}this.options.selector?this._options=$.extend({},this.options,{trigger:\"manual\",selector:\"\"}):this.fixTitle()},e.prototype.getDefaults=function(){return e.DEFAULTS},e.prototype.getOptions=function(t){return t=$.extend({},this.getDefaults(),this.$element.data(),t),t.delay&&\"number\"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),t},e.prototype.getDelegateOptions=function(){var t={},e=this.getDefaults();return this._options&&$.each(this._options,function(i,o){e[i]!=o&&(t[i]=o)}),t},e.prototype.enter=function(t){var e=t instanceof this.constructor?t:$(t.currentTarget).data(\"bs.\"+this.type);return e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),$(t.currentTarget).data(\"bs.\"+this.type,e)),t instanceof $.Event&&(e.inState[\"focusin\"==t.type?\"focus\":\"hover\"]=!0),e.tip().hasClass(\"in\")||\"in\"==e.hoverState?void(e.hoverState=\"in\"):(clearTimeout(e.timeout),e.hoverState=\"in\",e.options.delay&&e.options.delay.show?void(e.timeout=setTimeout(function(){\"in\"==e.hoverState&&e.show()},e.options.delay.show)):e.show())},e.prototype.isInStateTrue=function(){for(var t in this.inState)if(this.inState[t])return!0;return!1},e.prototype.leave=function(t){var e=t instanceof this.constructor?t:$(t.currentTarget).data(\"bs.\"+this.type);if(e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),$(t.currentTarget).data(\"bs.\"+this.type,e)),t instanceof $.Event&&(e.inState[\"focusout\"==t.type?\"focus\":\"hover\"]=!1),!e.isInStateTrue())return clearTimeout(e.timeout),e.hoverState=\"out\",e.options.delay&&e.options.delay.hide?void(e.timeout=setTimeout(function(){\"out\"==e.hoverState&&e.hide()},e.options.delay.hide)):e.hide()},e.prototype.show=function(){var t=$.Event(\"show.bs.\"+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(t);var i=$.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(t.isDefaultPrevented()||!i)return;var o=this,n=this.tip(),s=this.getUID(this.type);this.setContent(),n.attr(\"id\",s),this.$element.attr(\"aria-describedby\",s),this.options.animation&&n.addClass(\"fade\");var a=\"function\"==typeof this.options.placement?this.options.placement.call(this,n[0],this.$element[0]):this.options.placement,r=/\\s?auto?\\s?/i,l=r.test(a);l&&(a=a.replace(r,\"\")||\"top\"),n.detach().css({top:0,left:0,display:\"block\"}).addClass(a).data(\"bs.\"+this.type,this),this.options.container?n.appendTo(this.options.container):n.insertAfter(this.$element),this.$element.trigger(\"inserted.bs.\"+this.type);var h=this.getPosition(),d=n[0].offsetWidth,p=n[0].offsetHeight;if(l){var c=a,f=this.getPosition(this.$viewport);a=\"bottom\"==a&&h.bottom+p>f.bottom?\"top\":\"top\"==a&&h.top-pf.width?\"left\":\"left\"==a&&h.left-da.top+a.height&&(n.top=a.top+a.height-l)}else{var h=e.left-s,d=e.left+s+i;ha.right&&(n.left=a.left+a.width-d)}return n},e.prototype.getTitle=function(){var t,e=this.$element,i=this.options;return t=e.attr(\"data-original-title\")||(\"function\"==typeof i.title?i.title.call(e[0]):i.title)},e.prototype.getUID=function(t){do t+=~~(1e6*Math.random());while(document.getElementById(t));return t},e.prototype.tip=function(){if(!this.$tip&&(this.$tip=$(this.options.template),1!=this.$tip.length))throw new Error(this.type+\" `template` option must consist of exactly 1 top-level element!\");return this.$tip},e.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".tooltip-arrow\")},e.prototype.enable=function(){this.enabled=!0},e.prototype.disable=function(){this.enabled=!1},e.prototype.toggleEnabled=function(){this.enabled=!this.enabled},e.prototype.toggle=function(t){var e=this;t&&(e=$(t.currentTarget).data(\"bs.\"+this.type),e||(e=new this.constructor(t.currentTarget,this.getDelegateOptions()),$(t.currentTarget).data(\"bs.\"+this.type,e))),t?(e.inState.click=!e.inState.click,e.isInStateTrue()?e.enter(e):e.leave(e)):e.tip().hasClass(\"in\")?e.leave(e):e.enter(e)},e.prototype.destroy=function(){var t=this;clearTimeout(this.timeout),this.hide(function(){t.$element.off(\".\"+t.type).removeData(\"bs.\"+t.type),t.$tip&&t.$tip.detach(),t.$tip=null,t.$arrow=null,t.$viewport=null,t.$element=null})};var i=$.fn.tooltip;$.fn.tooltip=t,$.fn.tooltip.Constructor=e,$.fn.tooltip.noConflict=function(){return $.fn.tooltip=i,this}}(jQuery),+function($){\"use strict\";function t(t){return this.each(function(){var i=$(this),o=i.data(\"bs.popover\"),n=\"object\"==typeof t&&t;!o&&/destroy|hide/.test(t)||(o||i.data(\"bs.popover\",o=new e(this,n)),\"string\"==typeof t&&o[t]())})}var e=function(t,e){this.init(\"popover\",t,e)};if(!$.fn.tooltip)throw new Error(\"Popover requires tooltip.js\");e.VERSION=\"3.3.7\",e.DEFAULTS=$.extend({},$.fn.tooltip.Constructor.DEFAULTS,{placement:\"right\",trigger:\"click\",content:\"\",template:'

    '}),e.prototype=$.extend({},$.fn.tooltip.Constructor.prototype),e.prototype.constructor=e,e.prototype.getDefaults=function(){return e.DEFAULTS},e.prototype.setContent=function(){var t=this.tip(),e=this.getTitle(),i=this.getContent();t.find(\".popover-title\")[this.options.html?\"html\":\"text\"](e),t.find(\".popover-content\").children().detach().end()[this.options.html?\"string\"==typeof i?\"html\":\"append\":\"text\"](i),t.removeClass(\"fade top bottom left right in\"),t.find(\".popover-title\").html()||t.find(\".popover-title\").hide()},e.prototype.hasContent=function(){return this.getTitle()||this.getContent()},e.prototype.getContent=function(){var t=this.$element,e=this.options;return t.attr(\"data-content\")||(\"function\"==typeof e.content?e.content.call(t[0]):e.content)},e.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(\".arrow\")};var i=$.fn.popover;$.fn.popover=t,$.fn.popover.Constructor=e,$.fn.popover.noConflict=function(){return $.fn.popover=i,this}}(jQuery),+function($){\"use strict\";function t(e,i){this.$body=$(document.body),this.$scrollElement=$($(e).is(document.body)?window:e),this.options=$.extend({},t.DEFAULTS,i),this.selector=(this.options.target||\"\")+\" .nav li > a\",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on(\"scroll.bs.scrollspy\",$.proxy(this.process,this)),this.refresh(),this.process()}function e(e){return this.each(function(){var i=$(this),o=i.data(\"bs.scrollspy\"),n=\"object\"==typeof e&&e;o||i.data(\"bs.scrollspy\",o=new t(this,n)),\"string\"==typeof e&&o[e]()})}t.VERSION=\"3.3.7\",t.DEFAULTS={offset:10},t.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},t.prototype.refresh=function(){var t=this,e=\"offset\",i=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),$.isWindow(this.$scrollElement[0])||(e=\"position\",i=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var t=$(this),o=t.data(\"target\")||t.attr(\"href\"),n=/^#./.test(o)&&$(o);return n&&n.length&&n.is(\":visible\")&&[[n[e]().top+i,o]]||null}).sort(function(t,e){return t[0]-e[0]}).each(function(){t.offsets.push(this[0]),t.targets.push(this[1])})},t.prototype.process=function(){var t=this.$scrollElement.scrollTop()+this.options.offset,e=this.getScrollHeight(),i=this.options.offset+e-this.$scrollElement.height(),o=this.offsets,n=this.targets,s=this.activeTarget,a;if(this.scrollHeight!=e&&this.refresh(),t>=i)return s!=(a=n[n.length-1])&&this.activate(a);if(s&&t=o[a]&&(void 0===o[a+1]||t .dropdown-menu > .active\").removeClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!1),t.addClass(\"active\").find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),a?(t[0].offsetWidth,t.addClass(\"in\")):t.removeClass(\"fade\"),t.parent(\".dropdown-menu\").length&&t.closest(\"li.dropdown\").addClass(\"active\").end().find('[data-toggle=\"tab\"]').attr(\"aria-expanded\",!0),o&&o()}var s=i.find(\"> .active\"),a=o&&$.support.transition&&(s.length&&s.hasClass(\"fade\")||!!i.find(\"> .fade\").length);s.length&&a?s.one(\"bsTransitionEnd\",n).emulateTransitionEnd(e.TRANSITION_DURATION):n(),s.removeClass(\"in\")};var i=$.fn.tab;$.fn.tab=t,$.fn.tab.Constructor=e,$.fn.tab.noConflict=function(){return $.fn.tab=i,this};var o=function(e){e.preventDefault(),t.call($(this),\"show\")};$(document).on(\"click.bs.tab.data-api\",'[data-toggle=\"tab\"]',o).on(\"click.bs.tab.data-api\",'[data-toggle=\"pill\"]',o)}(jQuery),+function($){\"use strict\";function t(t){return this.each(function(){var i=$(this),o=i.data(\"bs.affix\"),n=\"object\"==typeof t&&t;o||i.data(\"bs.affix\",o=new e(this,n)),\"string\"==typeof t&&o[t]()})}var e=function(t,i){this.options=$.extend({},e.DEFAULTS,i),this.$target=$(this.options.target).on(\"scroll.bs.affix.data-api\",$.proxy(this.checkPosition,this)).on(\"click.bs.affix.data-api\",$.proxy(this.checkPositionWithEventLoop,this)),this.$element=$(t),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};e.VERSION=\"3.3.7\",e.RESET=\"affix affix-top affix-bottom\",e.DEFAULTS={offset:0,target:window},e.prototype.getState=function(t,e,i,o){var n=this.$target.scrollTop(),s=this.$element.offset(),a=this.$target.height();if(null!=i&&\"top\"==this.affixed)return n=t-o&&\"bottom\"},e.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(e.RESET).addClass(\"affix\");var t=this.$target.scrollTop(),i=this.$element.offset();return this.pinnedOffset=i.top-t},e.prototype.checkPositionWithEventLoop=function(){setTimeout($.proxy(this.checkPosition,this),1)},e.prototype.checkPosition=function(){if(this.$element.is(\":visible\")){var t=this.$element.height(),i=this.options.offset,o=i.top,n=i.bottom,s=Math.max($(document).height(),$(document.body).height());\"object\"!=typeof i&&(n=o=i),\"function\"==typeof o&&(o=i.top(this.$element)),\"function\"==typeof n&&(n=i.bottom(this.$element));var a=this.getState(s,t,o,n);if(this.affixed!=a){null!=this.unpin&&this.$element.css(\"top\",\"\");var r=\"affix\"+(a?\"-\"+a:\"\"),l=$.Event(r+\".bs.affix\");if(this.$element.trigger(l),l.isDefaultPrevented())return;this.affixed=a,this.unpin=\"bottom\"==a?this.getPinnedOffset():null,this.$element.removeClass(e.RESET).addClass(r).trigger(r.replace(\"affix\",\"affixed\")+\".bs.affix\")}\"bottom\"==a&&this.$element.offset({top:s-t-n})}};var i=$.fn.affix;$.fn.affix=t,$.fn.affix.Constructor=e,$.fn.affix.noConflict=function(){return $.fn.affix=i,this},$(window).on(\"load\",function(){$('[data-spy=\"affix\"]').each(function(){var e=$(this),i=e.data();i.offset=i.offset||{},null!=i.offsetBottom&&(i.offset.bottom=i.offsetBottom),null!=i.offsetTop&&(i.offset.top=i.offsetTop),t.call(e,i)})})}(jQuery);\n\n }).apply(root, arguments);\n});\n}(this));\n\n", ";(function (global, factory) {\r\n typeof define === 'function' && define.amd ? define('bootstrapAmdFix',[\"jquery\", 'loglevel', \"bootstrap\"], factory) : \r\n typeof exports === 'object' && typeof module !== typeof void 0 ? module.exports = factory(require(\"jquery\"), require('loglevel'), require(\"bootstrap\")) :\r\n console && console.error('ScoreBootstrapUiAmdFix does not support non-amd script loading.');\r\n}(this/* window */, function ($, log) {\r\n\r\n function ScoreBootstrapUiAmdFix() {\r\n\r\n }\r\n\r\n ScoreBootstrapUiAmdFix.prototype.fix = function () {\r\n // if we use AMD, most likly we already miss $(window).on('load', foo) event which bootstrap uses to fire up init methods for it's own components. So we should run them manually. \r\n if (document.readyState !== \"complete\") {\r\n if (window.define === void 0 || typeof (window.define) !== \"function\") {\r\n log.debug(\"Score Bootstrap UI AMD fix was loaded not in AMD solution. In all probability you can remove this reference because it is not needed.\");\r\n }\r\n // don't do anything, looks like bootstrap was loaded before window.load event - it means that Bootstrap will do everything correct and manage to init js-components by itself.\r\n return;\r\n }\r\n\r\n // check version (assume we are working with bootstrap 3 version only\r\n if (!($.fn[\"alert\"]\r\n && $.fn[\"alert\"].Constructor\r\n && +/[\\d]+/.exec($.fn[\"alert\"].Constructor.VERSION) === 3)) {\r\n return;\r\n }\r\n\r\n // affix\r\n $('[data-spy=\"affix\"]').each(function() {\r\n var $this = $(this);\r\n var data = $this.data();\r\n\r\n data.offset = data.offset || {};\r\n\r\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom;\r\n if (data.offsetTop != null) data.offset.top = data.offsetTop;\r\n\r\n $this.affix(data);\r\n });\r\n\r\n // carousel\r\n $('[data-ride=\"carousel\"]').each(function() {\r\n var $this = $(this);\r\n var data = $this.data();\r\n\r\n $this.carousel(data);\r\n });\r\n\r\n // scrollspy\r\n $('[data-spy=\"scroll\"]').each(function() {\r\n var $this = $(this);\r\n var data = $this.data();\r\n\r\n $this.scrollspy(data);\r\n });\r\n }\r\n\r\n return new ScoreBootstrapUiAmdFix();\r\n\r\n}));\n", ";(function (global, factory) {\r\n typeof define === 'function' && define.amd ? define('scorebootstrap',[\"jquery\", \"bootstrap\", \"bootstrapAmdFix\", \"jqueryTouchSwipe\"], factory) : \r\n typeof exports === 'object' && typeof module !== typeof void 0 ? module.exports = factory(require(\"jquery\"), require(\"bootstrap\"), require(\"bootstrapAmdFix\"), require(\"jqueryTouchSwipe\")) :\r\n console && console.error('BootstrapUI does not support non-amd script loading.');\r\n}(this/* window */, function ($, bt, btAmdFix) {\r\n window.BrainJocks = window.BrainJocks || {};\r\n\r\n if (BrainJocks.EE && BrainJocks.EE.Metadata && BrainJocks.EE.Metadata.sitecore &&\r\n BrainJocks.EE.Metadata.sitecore().version === \"8.0\") {\r\n // Fix incompatibilities between Bootstrap and the version of prototype.js that\r\n // sitecore includes in version 8.0. This is needed for modal and tabs components.\r\n function handler(event) {\r\n event.target.hide = undefined;\r\n setTimeout(function () { delete event.target.hide; }, 0);\r\n event.target.show = undefined;\r\n setTimeout(function () { delete event.target.show; }, 0);\r\n }\r\n\r\n $(window).on(\"show.bs.modal hide.bs.modal show.bs.tab hide.bs.tab show.bs.dropdown hide.bs.dropdown\", handler);\r\n }\r\n\r\n BrainJocks.BootstrapUI = {\r\n Settings: {\r\n causeRepaintsOn: function () {\r\n return $(\"h1, h2, h3, h4, h5, h6, p, li\");\r\n },\r\n hiddenClassList: function() {\r\n return [\"hidden-xs\", \"hidden-sm\", \"hidden-md\", \"hidden-lg\"];\r\n }\r\n },\r\n\r\n Fonts: {\r\n scale: function () {\r\n $(window).on(\"resize\", function () {\r\n BrainJocks.BootstrapUI.Settings.causeRepaintsOn().css(\"z-index\", 1);\r\n });\r\n }\r\n },\r\n\r\n Carousel: {\r\n init: function() {\r\n $('.score-carousel .item:first-of-type').addClass(\"active\");\r\n\r\n $('.score-carousel').swipe({\r\n swipeLeft: function () {\r\n $(this).carousel('next');\r\n },\r\n swipeRight: function () {\r\n $(this).carousel('prev');\r\n }\r\n });\r\n } \r\n },\r\n\r\n TabSet: {\r\n init: function() {\r\n $('.score-tab').each(function () {\r\n var tabComponent = $(this);\r\n\r\n var tabsNav = tabComponent.find('.nav').first();\r\n var tabsContent = tabComponent.find('.tab-content').first();\r\n\r\n tabsNav.empty();\r\n\r\n tabsContent.children('.tab-pane').each(function () {\r\n var tabPane = $(this);\r\n\r\n var tabId = tabPane.prop('id');\r\n var tabTitle = tabPane.data('title');\r\n var anchorable = /^(true|1|yes)$/i.test(tabPane.data('anchorable') || \"\");\r\n\r\n var li = '
  • ' + tabTitle + '
  • ';\r\n\r\n tabsNav.append(li);\r\n });\r\n });\r\n },\r\n\r\n activate: function () {\r\n $('.score-tab').each(function() {\r\n var tabToActivate = $(this).find('.nav li a')[0]; // first\r\n\r\n if (BrainJocks.BootstrapUI.Utils.isDeepLinked()) {\r\n var anchor = BrainJocks.BootstrapUI.Utils.getAnchor();\r\n\r\n tabToActivate = $(this).find(\"a[href='#tab-\" + anchor + \"']\")[0] || tabToActivate;\r\n }\r\n\r\n $(tabToActivate).tab('show');\r\n });\r\n },\r\n\r\n getHiddenClasses: function(tabPane) {\r\n var classList = tabPane.className;\r\n return BrainJocks.BootstrapUI.Settings.hiddenClassList().filter(function (value) {\r\n return new RegExp('(^| )' + value + '( |$)').test(classList);\r\n }).join(\" \");\r\n }\r\n },\r\n\r\n Accordion: {\r\n init: function() {\r\n $('.score-accordion a[data-toggle=\"collapse\"]').each(function () {\r\n var accordion = $(this).closest(\".score-accordion\")[0];\r\n $(this).attr('data-parent', '#' + accordion.id);\r\n });\r\n },\r\n\r\n activate: function() {\r\n $('.score-accordion').each(function () {\r\n var shouldBeCollapsed = $(this).hasClass(\"collapsed\");\r\n\r\n var $firstPanel = $(\".panel\", this).first();\r\n if (BrainJocks.BootstrapUI.Utils.isDeepLinked()) {\r\n var anchor = BrainJocks.BootstrapUI.Utils.getAnchor();\r\n\r\n $firstPanel = $(this).find(\".panel:has(a[href='#collapse-\" + anchor + \"'])\")[0] || $firstPanel;\r\n shouldBeCollapsed = false;\r\n }\r\n\r\n if (!shouldBeCollapsed) {\r\n $('.panel-collapse', $firstPanel).addClass(\"in\");\r\n $('a[data-toggle=\"collapse\"]', $firstPanel).removeClass(\"collapsed\").attr(\"aria-expanded\", true);\r\n }\r\n });\r\n }\r\n },\r\n\r\n MegaMenu: {\r\n init: function() {\r\n $(\".score-megamenu\").find(\".btn\").addClass(\"navbar-btn\"); \r\n }\r\n },\r\n\r\n Utils: {\r\n isDeepLinked: function() {\r\n return document.location.toString().match(\"#\");\r\n },\r\n\r\n getAnchor: function() {\r\n if (!this.isDeepLinked()) {\r\n return \"\";\r\n }\r\n\r\n return document.location.toString().split('#')[1];\r\n }\r\n },\r\n\r\n Breadcrumb: {\r\n init: function () {\r\n $('.score-breadcrumb > .score-breadcrumb-item:first-child .score-folding')\r\n .on('click.score',\r\n function(e) {\r\n e.preventDefault();\r\n var $this = $(this);\r\n $this.closest('.score-breadcrumb').toggleClass('alt-visible');\r\n\r\n var cssDuration = $this.closest('.score-breadcrumb')\r\n .find(' > .score-breadcrumb-item:first-child .score-breadcrumb-alternate')\r\n .css('transition-duration') || \"0s\";\r\n var stepDuration = (parseFloat(cssDuration) * (/ms/.test(cssDuration) ? 1 : 1000)).toFixed(0);\r\n var stepCounts = stepDuration / 100;\r\n var stepNumber = 0;\r\n var timer = setInterval(function () {\r\n /* hack to force sitecore to recalculate active component borders. */\r\n $this.closest('.score-breadcrumb').trigger('click');\r\n stepNumber++;\r\n if (stepNumber > stepCounts) clearInterval(timer);\r\n }, 100);\r\n });\r\n }\r\n },\r\n\r\n init: function () {\r\n btAmdFix !== void 0 && typeof btAmdFix.fix === \"function\" && btAmdFix.fix();\r\n\r\n BrainJocks.BootstrapUI.Fonts.scale();\r\n BrainJocks.BootstrapUI.Carousel.init();\r\n BrainJocks.BootstrapUI.TabSet.init();\r\n BrainJocks.BootstrapUI.TabSet.activate();\r\n BrainJocks.BootstrapUI.Accordion.init();\r\n BrainJocks.BootstrapUI.Accordion.activate();\r\n BrainJocks.BootstrapUI.MegaMenu.init();\r\n BrainJocks.BootstrapUI.Breadcrumb.init();\r\n }\r\n };\r\n\r\n return BrainJocks.BootstrapUI;\r\n}));\n", "define('errorHandler',[\"jquery\", 'loglevel'], function($, log) {\r\n \"use strict\";\r\n\r\n var logErrorUrl = \"/scorebootstrapui/logerror\";\r\n\r\n function ErrorHandler() {\r\n this.logError = function logError(err) {\r\n if (!err) {\r\n return;\r\n }\r\n\r\n err = String(err);\r\n $.post(logErrorUrl, { message: err }).fail(function () {\r\n log.error(\"Failed to log error on server: \" + err);\r\n });\r\n };\r\n }\r\n\r\n return new ErrorHandler(); //singleton\r\n});\n", "(function(root) {\ndefine(\"jqueryValidate\", [\"jquery\"], function() {\n return (function() {\n/*! jQuery Validation Plugin - v1.12.0 - 4/1/2014\r\n * http://jqueryvalidation.org/\r\n * Copyright (c) 2014 J??rn Zaefferer; Licensed MIT */\r\n!function(a){a.extend(a.fn,{validate:function(b){if(!this.length)return void(b&&b.debug&&window.console&&console.warn(\"Nothing selected, can't validate, returning nothing.\"));var c=a.data(this[0],\"validator\");return c?c:(this.attr(\"novalidate\",\"novalidate\"),c=new a.validator(b,this[0]),a.data(this[0],\"validator\",c),c.settings.onsubmit&&(this.validateDelegate(\":submit\",\"click\",function(b){c.settings.submitHandler&&(c.submitButton=b.target),a(b.target).hasClass(\"cancel\")&&(c.cancelSubmit=!0),void 0!==a(b.target).attr(\"formnovalidate\")&&(c.cancelSubmit=!0)}),this.submit(function(b){function d(){var d;return c.settings.submitHandler?(c.submitButton&&(d=a(\"\").attr(\"name\",c.submitButton.name).val(a(c.submitButton).val()).appendTo(c.currentForm)),c.settings.submitHandler.call(c,c.currentForm,b),c.submitButton&&d.remove(),!1):!0}return c.settings.debug&&b.preventDefault(),c.cancelSubmit?(c.cancelSubmit=!1,d()):c.form()?c.pendingRequest?(c.formSubmitted=!0,!1):d():(c.focusInvalid(),!1)})),c)},valid:function(){var b,c;return a(this[0]).is(\"form\")?b=this.validate().form():(b=!0,c=a(this[0].form).validate(),this.each(function(){b=c.element(this)&&b})),b},removeAttrs:function(b){var c={},d=this;return a.each(b.split(/\\s/),function(a,b){c[b]=d.attr(b),d.removeAttr(b)}),c},rules:function(b,c){var d,e,f,g,h,i,j=this[0];if(b)switch(d=a.data(j.form,\"validator\").settings,e=d.rules,f=a.validator.staticRules(j),b){case\"add\":a.extend(f,a.validator.normalizeRule(c)),delete f.messages,e[j.name]=f,c.messages&&(d.messages[j.name]=a.extend(d.messages[j.name],c.messages));break;case\"remove\":return c?(i={},a.each(c.split(/\\s/),function(b,c){i[c]=f[c],delete f[c],\"required\"===c&&a(j).removeAttr(\"aria-required\")}),i):(delete e[j.name],f)}return g=a.validator.normalizeRules(a.extend({},a.validator.classRules(j),a.validator.attributeRules(j),a.validator.dataRules(j),a.validator.staticRules(j)),j),g.required&&(h=g.required,delete g.required,g=a.extend({required:h},g),a(j).attr(\"aria-required\",\"true\")),g.remote&&(h=g.remote,delete g.remote,g=a.extend(g,{remote:h})),g}}),a.extend(a.expr[\":\"],{blank:function(b){return!a.trim(\"\"+a(b).val())},filled:function(b){return!!a.trim(\"\"+a(b).val())},unchecked:function(b){return!a(b).prop(\"checked\")}}),a.validator=function(b,c){this.settings=a.extend(!0,{},a.validator.defaults,b),this.currentForm=c,this.init()},a.validator.format=function(b,c){return 1===arguments.length?function(){var c=a.makeArray(arguments);return c.unshift(b),a.validator.format.apply(this,c)}:(arguments.length>2&&c.constructor!==Array&&(c=a.makeArray(arguments).slice(1)),c.constructor!==Array&&(c=[c]),a.each(c,function(a,c){b=b.replace(new RegExp(\"\\\\{\"+a+\"\\\\}\",\"g\"),function(){return c})}),b)},a.extend(a.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:\"error\",validClass:\"valid\",errorElement:\"label\",focusInvalid:!0,errorContainer:a([]),errorLabelContainer:a([]),onsubmit:!0,ignore:\":hidden\",ignoreTitle:!1,onfocusin:function(a){this.lastActive=a,this.settings.focusCleanup&&!this.blockFocusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,a,this.settings.errorClass,this.settings.validClass),this.addWrapper(this.errorsFor(a)).hide())},onfocusout:function(a){this.checkable(a)||!(a.name in this.submitted)&&this.optional(a)||this.element(a)},onkeyup:function(a,b){(9!==b.which||\"\"!==this.elementValue(a))&&(a.name in this.submitted||a===this.lastElement)&&this.element(a)},onclick:function(a){a.name in this.submitted?this.element(a):a.parentNode.name in this.submitted&&this.element(a.parentNode)},highlight:function(b,c,d){\"radio\"===b.type?this.findByName(b.name).addClass(c).removeClass(d):a(b).addClass(c).removeClass(d)},unhighlight:function(b,c,d){\"radio\"===b.type?this.findByName(b.name).removeClass(c).addClass(d):a(b).removeClass(c).addClass(d)}},setDefaults:function(b){a.extend(a.validator.defaults,b)},messages:{required:\"This field is required.\",remote:\"Please fix this field.\",email:\"Please enter a valid email address.\",url:\"Please enter a valid URL.\",date:\"Please enter a valid date.\",dateISO:\"Please enter a valid date (ISO).\",number:\"Please enter a valid number.\",digits:\"Please enter only digits.\",creditcard:\"Please enter a valid credit card number.\",equalTo:\"Please enter the same value again.\",maxlength:a.validator.format(\"Please enter no more than {0} characters.\"),minlength:a.validator.format(\"Please enter at least {0} characters.\"),rangelength:a.validator.format(\"Please enter a value between {0} and {1} characters long.\"),range:a.validator.format(\"Please enter a value between {0} and {1}.\"),max:a.validator.format(\"Please enter a value less than or equal to {0}.\"),min:a.validator.format(\"Please enter a value greater than or equal to {0}.\")},autoCreateRanges:!1,prototype:{init:function(){function b(b){var c=a.data(this[0].form,\"validator\"),d=\"on\"+b.type.replace(/^validate/,\"\"),e=c.settings;e[d]&&!this.is(e.ignore)&&e[d].call(c,this[0],b)}this.labelContainer=a(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||a(this.currentForm),this.containers=a(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset();var c,d=this.groups={};a.each(this.settings.groups,function(b,c){\"string\"==typeof c&&(c=c.split(/\\s/)),a.each(c,function(a,c){d[c]=b})}),c=this.settings.rules,a.each(c,function(b,d){c[b]=a.validator.normalizeRule(d)}),a(this.currentForm).validateDelegate(\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'] ,[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'] \",\"focusin focusout keyup\",b).validateDelegate(\"[type='radio'], [type='checkbox'], select, option\",\"click\",b),this.settings.invalidHandler&&a(this.currentForm).bind(\"invalid-form.validate\",this.settings.invalidHandler),a(this.currentForm).find(\"[required], [data-rule-required], .required\").attr(\"aria-required\",\"true\")},form:function(){return this.checkForm(),a.extend(this.submitted,this.errorMap),this.invalid=a.extend({},this.errorMap),this.valid()||a(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.showErrors(),this.valid()},checkForm:function(){this.prepareForm();for(var a=0,b=this.currentElements=this.elements();b[a];a++)this.check(b[a]);return this.valid()},element:function(b){var c=this.clean(b),d=this.validationTargetFor(c),e=!0;return this.lastElement=d,void 0===d?delete this.invalid[c.name]:(this.prepareElement(d),this.currentElements=a(d),e=this.check(d)!==!1,e?delete this.invalid[d.name]:this.invalid[d.name]=!0),a(b).attr(\"aria-invalid\",!e),this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),e},showErrors:function(b){if(b){a.extend(this.errorMap,b),this.errorList=[];for(var c in b)this.errorList.push({message:b[c],element:this.findByName(c)[0]});this.successList=a.grep(this.successList,function(a){return!(a.name in b)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){a.fn.resetForm&&a(this.currentForm).resetForm(),this.submitted={},this.lastElement=null,this.prepareForm(),this.hideErrors(),this.elements().removeClass(this.settings.errorClass).removeData(\"previousValue\").removeAttr(\"aria-invalid\")},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(a){var b,c=0;for(b in a)c++;return c},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{a(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(\":visible\").focus().trigger(\"focusin\")}catch(b){}},findLastActive:function(){var b=this.lastActive;return b&&1===a.grep(this.errorList,function(a){return a.element.name===b.name}).length&&b},elements:function(){var b=this,c={};return a(this.currentForm).find(\"input, select, textarea\").not(\":submit, :reset, :image, [disabled]\").not(this.settings.ignore).filter(function(){return!this.name&&b.settings.debug&&window.console&&console.error(\"%o has no name assigned\",this),this.name in c||!b.objectLength(a(this).rules())?!1:(c[this.name]=!0,!0)})},clean:function(b){return a(b)[0]},errors:function(){var b=this.settings.errorClass.split(\" \").join(\".\");return a(this.settings.errorElement+\".\"+b,this.errorContext)},reset:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=a([]),this.toHide=a([]),this.currentElements=a([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(a){this.reset(),this.toHide=this.errorsFor(a)},elementValue:function(b){var c,d=a(b),e=d.attr(\"type\");return\"radio\"===e||\"checkbox\"===e?a(\"input[name='\"+d.attr(\"name\")+\"']:checked\").val():(c=d.val(),\"string\"==typeof c?c.replace(/\\r/g,\"\"):c)},check:function(b){b=this.validationTargetFor(this.clean(b));var c,d,e,f=a(b).rules(),g=a.map(f,function(a,b){return b}).length,h=!1,i=this.elementValue(b);for(d in f){e={method:d,parameters:f[d]};try{if(c=a.validator.methods[d].call(this,i,b,e.parameters),\"dependency-mismatch\"===c&&1===g){h=!0;continue}if(h=!1,\"pending\"===c)return void(this.toHide=this.toHide.not(this.errorsFor(b)));if(!c)return this.formatAndAdd(b,e),!1}catch(j){throw this.settings.debug&&window.console&&console.log(\"Exception occurred when checking element \"+b.id+\", check the '\"+e.method+\"' method.\",j),j}}if(!h)return this.objectLength(f)&&this.successList.push(b),!0},customDataMessage:function(b,c){return a(b).data(\"msg\"+c[0].toUpperCase()+c.substring(1).toLowerCase())||a(b).data(\"msg\")},customMessage:function(a,b){var c=this.settings.messages[a];return c&&(c.constructor===String?c:c[b])},findDefined:function(){for(var a=0;aWarning: No message defined for \"+b.name+\"
    \")},formatAndAdd:function(b,c){var d=this.defaultMessage(b,c.method),e=/\\$?\\{(\\d+)\\}/g;\"function\"==typeof d?d=d.call(this,c.parameters,b):e.test(d)&&(d=a.validator.format(d.replace(e,\"{$1}\"),c.parameters)),this.errorList.push({message:d,element:b,method:c.method}),this.errorMap[b.name]=d,this.submitted[b.name]=d},addWrapper:function(a){return this.settings.wrapper&&(a=a.add(a.parent(this.settings.wrapper))),a},defaultShowErrors:function(){var a,b,c;for(a=0;this.errorList[a];a++)c=this.errorList[a],this.settings.highlight&&this.settings.highlight.call(this,c.element,this.settings.errorClass,this.settings.validClass),this.showLabel(c.element,c.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(a=0;this.successList[a];a++)this.showLabel(this.successList[a]);if(this.settings.unhighlight)for(a=0,b=this.validElements();b[a];a++)this.settings.unhighlight.call(this,b[a],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return a(this.errorList).map(function(){return this.element})},showLabel:function(b,c){var d=this.errorsFor(b);d.length?(d.removeClass(this.settings.validClass).addClass(this.settings.errorClass),d.html(c)):(d=a(\"<\"+this.settings.errorElement+\">\").attr(\"for\",this.idOrName(b)).addClass(this.settings.errorClass).html(c||\"\"),this.settings.wrapper&&(d=d.hide().show().wrap(\"<\"+this.settings.wrapper+\"/>\").parent()),this.labelContainer.append(d).length||(this.settings.errorPlacement?this.settings.errorPlacement(d,a(b)):d.insertAfter(b))),!c&&this.settings.success&&(d.text(\"\"),\"string\"==typeof this.settings.success?d.addClass(this.settings.success):this.settings.success(d,b)),this.toShow=this.toShow.add(d)},errorsFor:function(b){var c=this.idOrName(b);return this.errors().filter(function(){return a(this).attr(\"for\")===c})},idOrName:function(a){return this.groups[a.name]||(this.checkable(a)?a.name:a.id||a.name)},validationTargetFor:function(a){return this.checkable(a)&&(a=this.findByName(a.name).not(this.settings.ignore)[0]),a},checkable:function(a){return/radio|checkbox/i.test(a.type)},findByName:function(b){return a(this.currentForm).find(\"[name='\"+b+\"']\")},getLength:function(b,c){switch(c.nodeName.toLowerCase()){case\"select\":return a(\"option:selected\",c).length;case\"input\":if(this.checkable(c))return this.findByName(c.name).filter(\":checked\").length}return b.length},depend:function(a,b){return this.dependTypes[typeof a]?this.dependTypes[typeof a](a,b):!0},dependTypes:{\"boolean\":function(a){return a},string:function(b,c){return!!a(b,c.form).length},\"function\":function(a,b){return a(b)}},optional:function(b){var c=this.elementValue(b);return!a.validator.methods.required.call(this,c,b)&&\"dependency-mismatch\"},startRequest:function(a){this.pending[a.name]||(this.pendingRequest++,this.pending[a.name]=!0)},stopRequest:function(b,c){this.pendingRequest--,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[b.name],c&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(a(this.currentForm).submit(),this.formSubmitted=!1):!c&&0===this.pendingRequest&&this.formSubmitted&&(a(this.currentForm).triggerHandler(\"invalid-form\",[this]),this.formSubmitted=!1)},previousValue:function(b){return a.data(b,\"previousValue\")||a.data(b,\"previousValue\",{old:null,valid:!0,message:this.defaultMessage(b,\"remote\")})}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(b,c){b.constructor===String?this.classRuleSettings[b]=c:a.extend(this.classRuleSettings,b)},classRules:function(b){var c={},d=a(b).attr(\"class\");return d&&a.each(d.split(\" \"),function(){this in a.validator.classRuleSettings&&a.extend(c,a.validator.classRuleSettings[this])}),c},attributeRules:function(b){var c,d,e={},f=a(b),g=b.getAttribute(\"type\");for(c in a.validator.methods)\"required\"===c?(d=b.getAttribute(c),\"\"===d&&(d=!0),d=!!d):d=f.attr(c),/min|max/.test(c)&&(null===g||/number|range|text/.test(g))&&(d=Number(d)),d||0===d?e[c]=d:g===c&&\"range\"!==g&&(e[c]=!0);return e.maxlength&&/-1|2147483647|524288/.test(e.maxlength)&&delete e.maxlength,e},dataRules:function(b){var c,d,e={},f=a(b);for(c in a.validator.methods)d=f.data(\"rule\"+c[0].toUpperCase()+c.substring(1).toLowerCase()),void 0!==d&&(e[c]=d);return e},staticRules:function(b){var c={},d=a.data(b.form,\"validator\");return d.settings.rules&&(c=a.validator.normalizeRule(d.settings.rules[b.name])||{}),c},normalizeRules:function(b,c){return a.each(b,function(d,e){if(e===!1)return void delete b[d];if(e.param||e.depends){var f=!0;switch(typeof e.depends){case\"string\":f=!!a(e.depends,c.form).length;break;case\"function\":f=e.depends.call(c,c)}f?b[d]=void 0!==e.param?e.param:!0:delete b[d]}}),a.each(b,function(d,e){b[d]=a.isFunction(e)?e(c):e}),a.each([\"minlength\",\"maxlength\"],function(){b[this]&&(b[this]=Number(b[this]))}),a.each([\"rangelength\",\"range\"],function(){var c;b[this]&&(a.isArray(b[this])?b[this]=[Number(b[this][0]),Number(b[this][1])]:\"string\"==typeof b[this]&&(c=b[this].split(/[\\s,]+/),b[this]=[Number(c[0]),Number(c[1])]))}),a.validator.autoCreateRanges&&(b.min&&b.max&&(b.range=[b.min,b.max],delete b.min,delete b.max),b.minlength&&b.maxlength&&(b.rangelength=[b.minlength,b.maxlength],delete b.minlength,delete b.maxlength)),b},normalizeRule:function(b){if(\"string\"==typeof b){var c={};a.each(b.split(/\\s/),function(){c[this]=!0}),b=c}return b},addMethod:function(b,c,d){a.validator.methods[b]=c,a.validator.messages[b]=void 0!==d?d:a.validator.messages[b],c.length<3&&a.validator.addClassRules(b,a.validator.normalizeRule(b))},methods:{required:function(b,c,d){if(!this.depend(d,c))return\"dependency-mismatch\";if(\"select\"===c.nodeName.toLowerCase()){var e=a(c).val();return e&&e.length>0}return this.checkable(c)?this.getLength(b,c)>0:a.trim(b).length>0},email:function(a,b){return this.optional(b)||/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(a)},url:function(a,b){return this.optional(b)||/^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test(a)},date:function(a,b){return this.optional(b)||!/Invalid|NaN/.test(new Date(a).toString())},dateISO:function(a,b){return this.optional(b)||/^\\d{4}[\\/\\-]\\d{1,2}[\\/\\-]\\d{1,2}$/.test(a)},number:function(a,b){return this.optional(b)||/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(a)},digits:function(a,b){return this.optional(b)||/^\\d+$/.test(a)},creditcard:function(a,b){if(this.optional(b))return\"dependency-mismatch\";if(/[^0-9 \\-]+/.test(a))return!1;var c,d,e=0,f=0,g=!1;if(a=a.replace(/\\D/g,\"\"),a.length<13||a.length>19)return!1;for(c=a.length-1;c>=0;c--)d=a.charAt(c),f=parseInt(d,10),g&&(f*=2)>9&&(f-=9),e+=f,g=!g;return e%10===0},minlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d},maxlength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||d>=e},rangelength:function(b,c,d){var e=a.isArray(b)?b.length:this.getLength(a.trim(b),c);return this.optional(c)||e>=d[0]&&e<=d[1]},min:function(a,b,c){return this.optional(b)||a>=c},max:function(a,b,c){return this.optional(b)||c>=a},range:function(a,b,c){return this.optional(b)||a>=c[0]&&a<=c[1]},equalTo:function(b,c,d){var e=a(d);return this.settings.onfocusout&&e.unbind(\".validate-equalTo\").bind(\"blur.validate-equalTo\",function(){a(c).valid()}),b===e.val()},remote:function(b,c,d){if(this.optional(c))return\"dependency-mismatch\";var e,f,g=this.previousValue(c);return this.settings.messages[c.name]||(this.settings.messages[c.name]={}),g.originalMessage=this.settings.messages[c.name].remote,this.settings.messages[c.name].remote=g.message,d=\"string\"==typeof d&&{url:d}||d,g.old===b?g.valid:(g.old=b,e=this,this.startRequest(c),f={},f[c.name]=b,a.ajax(a.extend(!0,{url:d,mode:\"abort\",port:\"validate\"+c.name,dataType:\"json\",data:f,context:e.currentForm,success:function(d){var f,h,i,j=d===!0||\"true\"===d;e.settings.messages[c.name].remote=g.originalMessage,j?(i=e.formSubmitted,e.prepareElement(c),e.formSubmitted=i,e.successList.push(c),delete e.invalid[c.name],e.showErrors()):(f={},h=d||e.defaultMessage(c,\"remote\"),f[c.name]=g.message=a.isFunction(h)?h(b):h,e.invalid[c.name]=!0,e.showErrors(f)),g.valid=j,e.stopRequest(c,j)}},d)),\"pending\")}}}),a.format=function(){throw\"$.format has been deprecated. Please use $.validator.format instead.\"}}(jQuery),function(a){var b,c={};a.ajaxPrefilter?a.ajaxPrefilter(function(a,b,d){var e=a.port;\"abort\"===a.mode&&(c[e]&&c[e].abort(),c[e]=d)}):(b=a.ajax,a.ajax=function(d){var e=(\"mode\"in d?d:a.ajaxSettings).mode,f=(\"port\"in d?d:a.ajaxSettings).port;return\"abort\"===e?(c[f]&&c[f].abort(),c[f]=b.apply(this,arguments),c[f]):b.apply(this,arguments)})}(jQuery),function(a){a.extend(a.fn,{validateDelegate:function(b,c,d){return this.bind(c,function(c){var e=a(c.target);return e.is(b)?d.apply(e,arguments):void 0})}})}(jQuery);\r\n\n\n }).apply(root, arguments);\n});\n}(this));\n\n", "// Unobtrusive validation support library for jQuery and jQuery Validate\r\n// Copyright (C) Microsoft Corporation. All rights reserved.\r\n// @version v3.2.10\r\n!function(a){\"function\"==typeof define&&define.amd?define(\"jqueryValidateUnobtrusive\",[\"jquery\", \"jqueryValidate\"],a):\"object\"==typeof module&&module.exports?module.exports=a(require(\"jquery-validation\")):jQuery.validator.unobtrusive=a(jQuery)}(function(a){function e(a,e,n){a.rules[e]=n,a.message&&(a.messages[e]=a.message)}function n(a){return a.replace(/^\\s+|\\s+$/g,\"\").split(/\\s*,\\s*/g)}function t(a){return a.replace(/([!\"#$%&'()*+,.\\/:;<=>?@\\[\\\\\\]^`{|}~])/g,\"\\\\$1\")}function r(a){return a.substr(0,a.lastIndexOf(\".\")+1)}function i(a,e){return 0===a.indexOf(\"*.\")&&(a=a.replace(\"*.\",e)),a}function o(e,n){var r=a(this).find(\"[data-valmsg-for='\"+t(n[0].name)+\"']\"),i=r.attr(\"data-valmsg-replace\"),o=i?a.parseJSON(i)!==!1:null;r.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\"),e.data(\"unobtrusiveContainer\",r),o?(r.empty(),e.removeClass(\"input-validation-error\").appendTo(r)):e.hide()}function d(e,n){var t=a(this).find(\"[data-valmsg-summary=true]\"),r=t.find(\"ul\");r&&r.length&&n.errorList.length&&(r.empty(),t.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\"),a.each(n.errorList,function(){a(\"
  • \").html(this.message).appendTo(r)}))}function s(e){var n=e.data(\"unobtrusiveContainer\");if(n){var t=n.attr(\"data-valmsg-replace\"),r=t?a.parseJSON(t):null;n.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\"),e.removeData(\"unobtrusiveContainer\"),r&&n.empty()}}function l(e){var n=a(this),t=\"__jquery_unobtrusive_validation_form_reset\";if(!n.data(t)){n.data(t,!0);try{n.data(\"validator\").resetForm()}finally{n.removeData(t)}n.find(\".validation-summary-errors\").addClass(\"validation-summary-valid\").removeClass(\"validation-summary-errors\"),n.find(\".field-validation-error\").addClass(\"field-validation-valid\").removeClass(\"field-validation-error\").removeData(\"unobtrusiveContainer\").find(\">*\").removeData(\"unobtrusiveContainer\")}}function u(e){var n=a(e),t=n.data(v),r=a.proxy(l,e),i=f.unobtrusive.options||{},u=function(n,t){var r=i[n];r&&a.isFunction(r)&&r.apply(e,t)};return t||(t={options:{errorClass:i.errorClass||\"input-validation-error\",errorElement:i.errorElement||\"span\",errorPlacement:function(){o.apply(e,arguments),u(\"errorPlacement\",arguments)},invalidHandler:function(){d.apply(e,arguments),u(\"invalidHandler\",arguments)},messages:{},rules:{},success:function(){s.apply(e,arguments),u(\"success\",arguments)}},attachValidation:function(){n.off(\"reset.\"+v,r).on(\"reset.\"+v,r).validate(this.options)},validate:function(){return n.validate(),n.valid()}},n.data(v,t)),t}var m,f=a.validator,v=\"unobtrusiveValidation\";return f.unobtrusive={adapters:[],parseElement:function(e,n){var t,r,i,o=a(e),d=o.parents(\"form\")[0];d&&(t=u(d),t.options.rules[e.name]=r={},t.options.messages[e.name]=i={},a.each(this.adapters,function(){var n=\"data-val-\"+this.name,t=o.attr(n),s={};void 0!==t&&(n+=\"-\",a.each(this.params,function(){s[this]=o.attr(n+this)}),this.adapt({element:e,form:d,message:t,params:s,rules:r,messages:i}))}),a.extend(r,{__dummy__:!0}),n||t.attachValidation())},parse:function(e){var n=a(e),t=n.parents().addBack().filter(\"form\").add(n.find(\"form\")).has(\"[data-val=true]\");n.find(\"[data-val=true]\").each(function(){f.unobtrusive.parseElement(this,!0)}),t.each(function(){var a=u(this);a&&a.attachValidation()})}},m=f.unobtrusive.adapters,m.add=function(a,e,n){return n||(n=e,e=[]),this.push({name:a,params:e,adapt:n}),this},m.addBool=function(a,n){return this.add(a,function(t){e(t,n||a,!0)})},m.addMinMax=function(a,n,t,r,i,o){return this.add(a,[i||\"min\",o||\"max\"],function(a){var i=a.params.min,o=a.params.max;i&&o?e(a,r,[i,o]):i?e(a,n,i):o&&e(a,t,o)})},m.addSingleVal=function(a,n,t){return this.add(a,[n||\"val\"],function(r){e(r,t||a,r.params[n])})},f.addMethod(\"__dummy__\",function(a,e,n){return!0}),f.addMethod(\"regex\",function(a,e,n){var t;return!!this.optional(e)||(t=new RegExp(n).exec(a),t&&0===t.index&&t[0].length===a.length)}),f.addMethod(\"nonalphamin\",function(a,e,n){var t;return n&&(t=a.match(/\\W/g),t=t&&t.length>=n),t}),f.methods.extension?(m.addSingleVal(\"accept\",\"mimtype\"),m.addSingleVal(\"extension\",\"extension\")):m.addSingleVal(\"extension\",\"extension\",\"accept\"),m.addSingleVal(\"regex\",\"pattern\"),m.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\"),m.addMinMax(\"length\",\"minlength\",\"maxlength\",\"rangelength\").addMinMax(\"range\",\"min\",\"max\",\"range\"),m.addMinMax(\"minlength\",\"minlength\").addMinMax(\"maxlength\",\"minlength\",\"maxlength\"),m.add(\"equalto\",[\"other\"],function(n){var o=r(n.element.name),d=n.params.other,s=i(d,o),l=a(n.form).find(\":input\").filter(\"[name='\"+t(s)+\"']\")[0];e(n,\"equalTo\",l)}),m.add(\"required\",function(a){\"INPUT\"===a.element.tagName.toUpperCase()&&\"CHECKBOX\"===a.element.type.toUpperCase()||e(a,\"required\",!0)}),m.add(\"remote\",[\"url\",\"type\",\"additionalfields\"],function(o){var d={url:o.params.url,type:o.params.type||\"GET\",data:{}},s=r(o.element.name);a.each(n(o.params.additionalfields||o.element.name),function(e,n){var r=i(n,s);d.data[r]=function(){var e=a(o.form).find(\":input\").filter(\"[name='\"+t(r)+\"']\");return e.is(\":checkbox\")?e.filter(\":checked\").val()||e.filter(\":hidden\").val()||\"\":e.is(\":radio\")?e.filter(\":checked\").val()||\"\":e.val()}}),e(o,\"remote\",d)}),m.add(\"password\",[\"min\",\"nonalphamin\",\"regex\"],function(a){a.params.min&&e(a,\"minlength\",a.params.min),a.params.nonalphamin&&e(a,\"nonalphamin\",a.params.nonalphamin),a.params.regex&&e(a,\"regex\",a.params.regex)}),m.add(\"fileextensions\",[\"extensions\"],function(a){e(a,\"extension\",a.params.extensions)}),a(function(){f.unobtrusive.parse(document)}),f.unobtrusive});\n", "(function(root) {\ndefine(\"jqueryUnobtrusiveAjax\", [\"jquery\",\"jqueryValidate\",\"jqueryValidateUnobtrusive\"], function() {\n return (function() {\n/*\r\n** Unobtrusive Ajax support library for jQuery\r\n** Copyright (C) Microsoft Corporation. All rights reserved.\r\n*/\r\n(function(a){var b=\"unobtrusiveAjaxClick\",g=\"unobtrusiveValidation\";function c(d,b){var a=window,c=(d||\"\").split(\".\");while(a&&c.length)a=a[c.shift()];if(typeof a===\"function\")return a;b.push(d);return Function.constructor.apply(null,b)}function d(a){return a===\"GET\"||a===\"POST\"}function f(b,a){!d(a)&&b.setRequestHeader(\"X-HTTP-Method-Override\",a)}function h(c,b,e){var d;if(e.indexOf(\"application/x-javascript\")!==-1)return;d=(c.getAttribute(\"data-ajax-mode\")||\"\").toUpperCase();a(c.getAttribute(\"data-ajax-update\")).each(function(f,c){var e;switch(d){case\"BEFORE\":e=c.firstChild;a(\"
    \").html(b).contents().each(function(){c.insertBefore(this,e)});break;case\"AFTER\":a(\"
    \").html(b).contents().each(function(){c.appendChild(this)});break;default:a(c).html(b)}})}function e(b,e){var j,k,g,i;j=b.getAttribute(\"data-ajax-confirm\");if(j&&!window.confirm(j))return;k=a(b.getAttribute(\"data-ajax-loading\"));i=b.getAttribute(\"data-ajax-loading-duration\")||0;a.extend(e,{type:b.getAttribute(\"data-ajax-method\")||undefined,url:b.getAttribute(\"data-ajax-url\")||undefined,beforeSend:function(d){var a;f(d,g);a=c(b.getAttribute(\"data-ajax-begin\"),[\"xhr\"]).apply(this,arguments);a!==false&&k.show(i);return a},complete:function(){k.hide(i);c(b.getAttribute(\"data-ajax-complete\"),[\"xhr\",\"status\"]).apply(this,arguments)},success:function(a,e,d){h(b,a,d.getResponseHeader(\"Content-Type\")||\"text/html\");c(b.getAttribute(\"data-ajax-success\"),[\"data\",\"status\",\"xhr\"]).apply(this,arguments)},error:c(b.getAttribute(\"data-ajax-failure\"),[\"xhr\",\"status\",\"error\"])});e.data.push({name:\"X-Requested-With\",value:\"XMLHttpRequest\"});g=e.type.toUpperCase();if(!d(g)){e.type=\"POST\";e.data.push({name:\"X-HTTP-Method-Override\",value:g})}a.ajax(e)}function i(c){var b=a(c).data(g);return!b||!b.validate||b.validate()}a(document).on(\"click\",\"a[data-ajax=true]\",function(a){a.preventDefault();e(this,{url:this.href,type:\"GET\",data:[]})});a(document).on(\"click\",\"form[data-ajax=true] input[type=image]\",function(c){var g=c.target.name,d=a(c.target),f=d.parents(\"form\")[0],e=d.offset();a(f).data(b,[{name:g+\".x\",value:Math.round(c.pageX-e.left)},{name:g+\".y\",value:Math.round(c.pageY-e.top)}]);setTimeout(function(){a(f).removeData(b)},0)});a(document).on(\"click\",\"form[data-ajax=true] :submit\",function(c){var e=c.target.name,d=a(c.target).parents(\"form\")[0];a(d).data(b,e?[{name:e,value:c.target.value}]:[]);setTimeout(function(){a(d).removeData(b)},0)});a(document).on(\"submit\",\"form[data-ajax=true]\",function(d){var c=a(this).data(b)||[];d.preventDefault();if(!i(this))return;e(this,{url:this.action,type:this.method||\"GET\",data:c.concat(a(this).serializeArray())})})})(jQuery);\r\n\n\n }).apply(root, arguments);\n});\n}(this));\n\n", ";(function (global, factory) {\r\n typeof define === 'function' && define.amd ? define('scoreunobtrusive',[\"jquery\"], factory) : \r\n typeof exports === 'object' && typeof module !== typeof void 0 ? module.exports = factory(require(\"jquery\")) : \r\n console && console.error('Score.jquery.validate.unobtrusive does not support non-amd script loading.');\r\n}(this/* window */, function ($) {\r\n var findByName = function(currentForm, name) {\r\n return currentForm.find(\"[name='\" + name + \"']\");\r\n };\r\n\r\n var findCurrentForm = function(element) {\r\n return $(element).closest('form');\r\n };\r\n\r\n var isAnyValueNotEmpty = function(element, params) {\r\n var $myForm = findCurrentForm(element);\r\n\r\n var properties = params.properties.split(',');\r\n var values = $.map(properties, function(property, index) {\r\n var val = findByName($myForm, property).val();\r\n return val !== '' ? val : null;\r\n });\r\n\r\n return values.length > 0;\r\n };\r\n\r\n $.validator.addMethod(\"enforcetrue\", function(value, element, param) {\r\n return element.checked;\r\n });\r\n\r\n $.validator.unobtrusive.adapters.addBool(\"enforcetrue\");\r\n\r\n $.validator.unobtrusive.adapters.add(\r\n 'atleastonerequired', ['properties'], function(options) {\r\n options.rules['atleastonerequired'] = options.params;\r\n options.messages['atleastonerequired'] = options.message;\r\n }\r\n );\r\n\r\n $.validator.addMethod('atleastonerequired', function(value, element, params) {\r\n return isAnyValueNotEmpty(element, params);\r\n }, '');\r\n\r\n\r\n $.validator.unobtrusive.adapters.add(\r\n 'requiredor', ['properties'], function(options) {\r\n options.rules['requiredor'] = options.params;\r\n options.messages['requiredor'] = options.message;\r\n }\r\n );\r\n\r\n $.validator.addMethod('requiredor', function(value, element, params) {\r\n if (value !== '' && value) {\r\n return true;\r\n }\r\n\r\n return isAnyValueNotEmpty(element, params);\r\n }, '');\r\n\r\n}));\n", "/**\r\n* jquery-match-height 0.7.2 by @liabru\r\n* http://brm.io/jquery-match-height/\r\n* License: MIT\r\n*/\r\n/* Includes modifications for SCORE, to disable animation effects while arranging list elements into a row (animation effects lead to wrong height calculation) */\r\n!function(t){\"use strict\";\"function\"==typeof define&&define.amd?define('matchHeight',[\"jquery\"],t):\"undefined\"!=typeof module&&module.exports?module.exports=t(require(\"jquery\")):t(jQuery)}(function(t){var e=-1,n=-1,o=function(t){return parseFloat(t)||0},i=function(e){var n=null,i=[];return t(e).each(function(){var e=t(this),a=e.offset().top-o(e.css(\"margin-top\")),r=i.length>0?i[i.length-1]:null;null===r?i.push(e):Math.floor(Math.abs(n-a))<=1?i[i.length-1]=r.add(e):i.push(e),n=a}),i},a=function(e){var n={byRow:!0,property:\"height\",target:null,remove:!1};return\"object\"==typeof e?t.extend(n,e):(\"boolean\"==typeof e?n.byRow=e:\"remove\"===e&&(n.remove=!0),n)},r=t.fn.matchHeight=function(e){var n=a(e);if(n.remove){var o=this;return this.css(n.property,\"\"),t.each(r._groups,function(t,e){e.elements=e.elements.not(o)}),this}return this.length<=1&&!n.target?this:(r._groups.push({elements:this,options:n}),r._apply(this,n),this)};r.version=\"0.7.2\",r._groups=[],r._throttle=80,r._maintainScroll=!1,r._beforeUpdate=null,r._afterUpdate=null,r._rows=i,r._parse=o,r._parseOptions=a,r._apply=function(e,n){var s=a(n),h=t(e),l=[h],c=t(window).scrollTop(),p=t(\"html\").outerHeight(!0),u=h.parents().filter(\":hidden\");return u.each(function(){var e=t(this);e.data(\"style-cache\",e.attr(\"style\"))}),u.css(\"display\",\"block\"),s.byRow&&!s.target&&(h.each(function(){var e=t(this),n=e.css(\"display\");\"inline-block\"!==n&&\"flex\"!==n&&\"inline-flex\"!==n&&(n=\"block\"),e.data(\"style-cache\",e.attr(\"style\")),e.css({display:n,\"padding-top\":\"0\",\"padding-bottom\":\"0\",\"margin-top\":\"0\",\"margin-bottom\":\"0\",\"border-top-width\":\"0\",\"border-bottom-width\":\"0\",height:\"100px\",overflow:\"hidden\",\"-webkit-transition\":\"none\",\"-moz-transition\":\"none\",\"-o-transition\":\"none\",transition:\"none\"})}),l=i(h),h.each(function(){var e=t(this);e.attr(\"style\",e.data(\"style-cache\")||\"\")})),t.each(l,function(e,n){var i=t(n),a=0;if(s.target)a=s.target.outerHeight(!1);else{if(s.byRow&&i.length<=1)return void i.css(s.property,\"\");i.each(function(){var e=t(this),n=e.attr(\"style\"),o=e.css(\"display\");\"inline-block\"!==o&&\"flex\"!==o&&\"inline-flex\"!==o&&(o=\"block\");var i={display:o,\"-webkit-transition\":\"none\",\"-moz-transition\":\"none\",\"-o-transition\":\"none\",transition:\"none\"};i[s.property]=\"\",e.css(i),e.outerHeight(!1)>a&&(a=e.outerHeight(!1)),e.attr(\"style\",n||\"\")})}i.each(function(){var e=t(this),n=0;s.target&&e.is(s.target)||(\"border-box\"!==e.css(\"box-sizing\")&&(n+=o(e.css(\"border-top-width\"))+o(e.css(\"border-bottom-width\")),n+=o(e.css(\"padding-top\"))+o(e.css(\"padding-bottom\"))),e.css(s.property,a-n+\"px\"))})}),u.each(function(){var e=t(this);e.attr(\"style\",e.data(\"style-cache\")||null)}),r._maintainScroll&&t(window).scrollTop(c/p*t(\"html\").outerHeight(!0)),this},r._applyDataApi=function(){var e={};t(\"[data-match-height], [data-mh]\").each(function(){var n=t(this),o=n.attr(\"data-mh\")||n.attr(\"data-match-height\");e[o]=o in e?e[o].add(n):n}),t.each(e,function(){this.matchHeight(!0)})};var s=function(e){r._beforeUpdate&&r._beforeUpdate(e,r._groups),t.each(r._groups,function(){r._apply(this.elements,this.options)}),r._afterUpdate&&r._afterUpdate(e,r._groups)};r._update=function(o,i){if(i&&\"resize\"===i.type){var a=t(window).width();if(a===e)return;e=a}o?-1===n&&(n=setTimeout(function(){s(i),n=-1},r._throttle)):s(i)},t(r._applyDataApi);var h=t.fn.on?\"on\":\"bind\";t(window)[h](\"load\",function(t){r._update(!1,t)}),t(window)[h](\"resize orientationchange\",function(t){r._update(!0,t)})});\n", "/*!\r\n * Knockout JavaScript library v3.5.1\r\n * (c) The Knockout.js team - http://knockoutjs.com/\r\n * License: MIT (http://www.opensource.org/licenses/mit-license.php)\r\n */\r\n\r\n(function() {(function(n){var A=this||(0,eval)(\"this\"),w=A.document,R=A.navigator,v=A.jQuery,H=A.JSON;v||\"undefined\"===typeof jQuery||(v=jQuery);(function(n){\"function\"===typeof define&&define.amd?define('knockout',[\"exports\",\"require\"],n):\"object\"===typeof exports&&\"object\"===typeof module?n(module.exports||exports):n(A.ko={})})(function(S,T){function K(a,c){return null===a||typeof a in W?a===c:!1}function X(b,c){var d;return function(){d||(d=a.a.setTimeout(function(){d=n;b()},c))}}function Y(b,c){var d;return function(){clearTimeout(d);\r\nd=a.a.setTimeout(b,c)}}function Z(a,c){c&&\"change\"!==c?\"beforeChange\"===c?this.pc(a):this.gb(a,c):this.qc(a)}function aa(a,c){null!==c&&c.s&&c.s()}function ba(a,c){var d=this.qd,e=d[r];e.ra||(this.Qb&&this.mb[c]?(d.uc(c,a,this.mb[c]),this.mb[c]=null,--this.Qb):e.I[c]||d.uc(c,a,e.J?{da:a}:d.$c(a)),a.Ja&&a.gd())}var a=\"undefined\"!==typeof S?S:{};a.b=function(b,c){for(var d=b.split(\".\"),e=a,f=0;fa.a.A(c,b)&&c.push(b)});return c},Mb:function(a,\r\nb,c){var d=[];if(a)for(var e=0,l=a.length;ee?d&&b.push(c):d||b.splice(e,1)},Ba:g,extend:c,setPrototypeOf:d,Ab:g?d:c,P:b,Ga:function(a,b,c){if(!a)return a;var d={},e;for(e in a)f.call(a,e)&&(d[e]=\r\nb.call(c,a[e],e,a));return d},Tb:function(b){for(;b.firstChild;)a.removeNode(b.firstChild)},Yb:function(b){b=a.a.la(b);for(var c=(b[0]&&b[0].ownerDocument||w).createElement(\"div\"),d=0,e=b.length;dp?a.setAttribute(\"selected\",b):a.selected=b},Db:function(a){return null===a||a===n?\"\":a.trim?\r\na.trim():a.toString().replace(/^[\\s\\xa0]+|[\\s\\xa0]+$/g,\"\")},Ud:function(a,b){a=a||\"\";return b.length>a.length?!1:a.substring(0,b.length)===b},vd:function(a,b){if(a===b)return!0;if(11===a.nodeType)return!1;if(b.contains)return b.contains(1!==a.nodeType?a.parentNode:a);if(b.compareDocumentPosition)return 16==(b.compareDocumentPosition(a)&16);for(;a&&a!=b;)a=a.parentNode;return!!a},Sb:function(b){return a.a.vd(b,b.ownerDocument.documentElement)},kd:function(b){return!!a.a.Lb(b,a.a.Sb)},R:function(a){return a&&\r\na.tagName&&a.tagName.toLowerCase()},Ac:function(b){return a.onError?function(){try{return b.apply(this,arguments)}catch(c){throw a.onError&&a.onError(c),c;}}:b},setTimeout:function(b,c){return setTimeout(a.a.Ac(b),c)},Gc:function(b){setTimeout(function(){a.onError&&a.onError(b);throw b;},0)},B:function(b,c,d){var e=a.a.Ac(d);d=l[c];if(a.options.useOnlyNativeEvents||d||!v)if(d||\"function\"!=typeof b.addEventListener)if(\"undefined\"!=typeof b.attachEvent){var k=function(a){e.call(b,a)},f=\"on\"+c;b.attachEvent(f,\r\nk);a.a.K.za(b,function(){b.detachEvent(f,k)})}else throw Error(\"Browser doesn't support addEventListener or attachEvent\");else b.addEventListener(c,e,!1);else t||(t=\"function\"==typeof v(b).on?\"on\":\"bind\"),v(b)[t](c,e)},Fb:function(b,c){if(!b||!b.nodeType)throw Error(\"element must be a DOM node when calling triggerEvent\");var d;\"input\"===a.a.R(b)&&b.type&&\"click\"==c.toLowerCase()?(d=b.type,d=\"checkbox\"==d||\"radio\"==d):d=!1;if(a.options.useOnlyNativeEvents||!v||d)if(\"function\"==typeof w.createEvent)if(\"function\"==\r\ntypeof b.dispatchEvent)d=w.createEvent(k[c]||\"HTMLEvents\"),d.initEvent(c,!0,!0,A,0,0,0,0,0,!1,!1,!1,!1,0,b),b.dispatchEvent(d);else throw Error(\"The supplied element doesn't support dispatchEvent\");else if(d&&b.click)b.click();else if(\"undefined\"!=typeof b.fireEvent)b.fireEvent(\"on\"+c);else throw Error(\"Browser doesn't support triggering events\");else v(b).trigger(c)},f:function(b){return a.O(b)?b():b},bc:function(b){return a.O(b)?b.v():b},Eb:function(b,c,d){var l;c&&(\"object\"===typeof b.classList?\r\n(l=b.classList[d?\"add\":\"remove\"],a.a.D(c.match(q),function(a){l.call(b.classList,a)})):\"string\"===typeof b.className.baseVal?e(b.className,\"baseVal\",c,d):e(b,\"className\",c,d))},Bb:function(b,c){var d=a.a.f(c);if(null===d||d===n)d=\"\";var e=a.h.firstChild(b);!e||3!=e.nodeType||a.h.nextSibling(e)?a.h.va(b,[b.ownerDocument.createTextNode(d)]):e.data=d;a.a.Ad(b)},Yc:function(a,b){a.name=b;if(7>=p)try{var c=a.name.replace(/[&<>'\"]/g,function(a){return\"&#\"+a.charCodeAt(0)+\";\"});a.mergeAttributes(w.createElement(\"\"),!1)}catch(d){}},Ad:function(a){9<=p&&(a=1==a.nodeType?a:a.parentNode,a.style&&(a.style.zoom=a.style.zoom))},wd:function(a){if(p){var b=a.style.width;a.style.width=0;a.style.width=b}},Pd:function(b,c){b=a.a.f(b);c=a.a.f(c);for(var d=[],e=b;e<=c;e++)d.push(e);return d},la:function(a){for(var b=[],c=0,d=a.length;c\",\"\"],d=[3,\"\",\"
    \"],e=[1,\"\"],f={thead:c,tbody:c,tfoot:c,tr:[2,\"\",\"
    \"],td:d,th:d,option:e,optgroup:e},g=8>=a.a.W;a.a.ua=function(c,d){var e;if(v)if(v.parseHTML)e=v.parseHTML(c,d)||[];else{if((e=v.clean([c],d))&&e[0]){for(var l=e[0];l.parentNode&&11!==l.parentNode.nodeType;)l=l.parentNode;\r\nl.parentNode&&l.parentNode.removeChild(l)}}else{(e=d)||(e=w);var l=e.parentWindow||e.defaultView||A,p=a.a.Db(c).toLowerCase(),q=e.createElement(\"div\"),t;t=(p=p.match(/^(?:\\x3c!--.*?--\\x3e\\s*?)*?<([a-z]+)[\\s>]/))&&f[p[1]]||b;p=t[0];t=\"ignored
    \"+t[1]+c+t[2]+\"
    \";\"function\"==typeof l.innerShiv?q.appendChild(l.innerShiv(t)):(g&&e.body.appendChild(q),q.innerHTML=t,g&&q.parentNode.removeChild(q));for(;p--;)q=q.lastChild;e=a.a.la(q.lastChild.childNodes)}return e};a.a.Md=function(b,c){var d=a.a.ua(b,\r\nc);return d.length&&d[0].parentElement||a.a.Yb(d)};a.a.fc=function(b,c){a.a.Tb(b);c=a.a.f(c);if(null!==c&&c!==n)if(\"string\"!=typeof c&&(c=c.toString()),v)v(b).html(c);else for(var d=a.a.ua(c,b.ownerDocument),e=0;eb){if(5E3<=\r\n++c){h=f;a.a.Gc(Error(\"'Too much recursion' after processing \"+c+\" task groups.\"));break}b=f}try{d()}catch(p){a.a.Gc(p)}}}function c(){b();h=f=e.length=0}var d,e=[],f=0,g=1,h=0;A.MutationObserver?d=function(a){var b=w.createElement(\"div\");(new MutationObserver(a)).observe(b,{attributes:!0});return function(){b.classList.toggle(\"foo\")}}(c):d=w&&\"onreadystatechange\"in w.createElement(\"script\")?function(a){var b=w.createElement(\"script\");b.onreadystatechange=function(){b.onreadystatechange=null;w.documentElement.removeChild(b);\r\nb=null;a()};w.documentElement.appendChild(b)}:function(a){setTimeout(a,0)};return{scheduler:d,zb:function(b){f||a.na.scheduler(c);e[f++]=b;return g++},cancel:function(a){a=a-(g-f);a>=h&&ad[0]?p+d[0]:\r\nd[0]),p);for(var p=1===g?p:Math.min(c+(d[1]||0),p),g=c+g-2,h=Math.max(p,g),U=[],L=[],n=2;cc;c++)b=b();return b})};a.toJSON=function(b,c,d){b=a.ad(b);return a.a.hc(b,c,d)};d.prototype={constructor:d,save:function(b,c){var d=a.a.A(this.keys,\r\nb);0<=d?this.values[d]=c:(this.keys.push(b),this.values.push(c))},get:function(b){b=a.a.A(this.keys,b);return 0<=b?this.values[b]:n}}})();a.b(\"toJS\",a.ad);a.b(\"toJSON\",a.toJSON);a.Wd=function(b,c,d){function e(c){var e=a.xb(b,d).extend({ma:\"always\"}),h=e.subscribe(function(a){a&&(h.s(),c(a))});e.notifySubscribers(e.v());return h}return\"function\"!==typeof Promise||c?e(c.bind(d)):new Promise(e)};a.b(\"when\",a.Wd);(function(){a.w={M:function(b){switch(a.a.R(b)){case \"option\":return!0===b.__ko__hasDomDataOptionValue__?\r\na.a.g.get(b,a.c.options.$b):7>=a.a.W?b.getAttributeNode(\"value\")&&b.getAttributeNode(\"value\").specified?b.value:b.text:b.value;case \"select\":return 0<=b.selectedIndex?a.w.M(b.options[b.selectedIndex]):n;default:return b.value}},cb:function(b,c,d){switch(a.a.R(b)){case \"option\":\"string\"===typeof c?(a.a.g.set(b,a.c.options.$b,n),\"__ko__hasDomDataOptionValue__\"in b&&delete b.__ko__hasDomDataOptionValue__,b.value=c):(a.a.g.set(b,a.c.options.$b,c),b.__ko__hasDomDataOptionValue__=!0,b.value=\"number\"===\r\ntypeof c?c:\"\");break;case \"select\":if(\"\"===c||null===c)c=n;for(var e=-1,f=0,g=b.options.length,h;f=h){c.push(p&&q.length?{key:p,value:q.join(\"\")}:{unknown:p||q.join(\"\")});p=h=0;q=[];continue}}else if(58===u){if(!h&&!p&&1===q.length){p=q.pop();continue}}else if(47===u&&1arguments.length){if(b=w.body,!b)throw Error(\"ko.applyBindings: could not find document.body; has the document been loaded?\");\r\n}else if(!b||1!==b.nodeType&&8!==b.nodeType)throw Error(\"ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node\");k(q(a,c),b)};a.Dc=function(b){return!b||1!==b.nodeType&&8!==b.nodeType?n:a.Td(b)};a.Ec=function(b){return(b=a.Dc(b))?b.$data:n};a.b(\"bindingHandlers\",a.c);a.b(\"bindingEvent\",a.i);a.b(\"bindingEvent.subscribe\",a.i.subscribe);a.b(\"bindingEvent.startPossiblyAsyncContentBinding\",a.i.Cb);a.b(\"applyBindings\",a.vc);a.b(\"applyBindingsToDescendants\",a.Oa);\r\na.b(\"applyBindingAccessorsToNode\",a.ib);a.b(\"applyBindingsToNode\",a.ld);a.b(\"contextFor\",a.Dc);a.b(\"dataFor\",a.Ec)})();(function(b){function c(c,e){var k=Object.prototype.hasOwnProperty.call(f,c)?f[c]:b,l;k?k.subscribe(e):(k=f[c]=new a.T,k.subscribe(e),d(c,function(b,d){var e=!(!d||!d.synchronous);g[c]={definition:b,Gd:e};delete f[c];l||e?k.notifySubscribers(b):a.na.zb(function(){k.notifySubscribers(b)})}),l=!0)}function d(a,b){e(\"getConfig\",[a],function(c){c?e(\"loadComponent\",[a,c],function(a){b(a,\r\nc)}):b(null,null)})}function e(c,d,f,l){l||(l=a.j.loaders.slice(0));var g=l.shift();if(g){var q=g[c];if(q){var t=!1;if(q.apply(g,d.concat(function(a){t?f(null):null!==a?f(a):e(c,d,f,l)}))!==b&&(t=!0,!g.suppressLoaderExceptions))throw Error(\"Component loaders must supply values by invoking the callback, not by returning values synchronously.\");}else e(c,d,f,l)}else f(null)}var f={},g={};a.j={get:function(d,e){var f=Object.prototype.hasOwnProperty.call(g,d)?g[d]:b;f?f.Gd?a.u.G(function(){e(f.definition)}):\r\na.na.zb(function(){e(f.definition)}):c(d,e)},Bc:function(a){delete g[a]},oc:e};a.j.loaders=[];a.b(\"components\",a.j);a.b(\"components.get\",a.j.get);a.b(\"components.clearCachedDefinition\",a.j.Bc)})();(function(){function b(b,c,d,e){function g(){0===--B&&e(h)}var h={},B=2,u=d.template;d=d.viewModel;u?f(c,u,function(c){a.j.oc(\"loadTemplate\",[b,c],function(a){h.template=a;g()})}):g();d?f(c,d,function(c){a.j.oc(\"loadViewModel\",[b,c],function(a){h[m]=a;g()})}):g()}function c(a,b,d){if(\"function\"===typeof b)d(function(a){return new b(a)});\r\nelse if(\"function\"===typeof b[m])d(b[m]);else if(\"instance\"in b){var e=b.instance;d(function(){return e})}else\"viewModel\"in b?c(a,b.viewModel,d):a(\"Unknown viewModel value: \"+b)}function d(b){switch(a.a.R(b)){case \"script\":return a.a.ua(b.text);case \"textarea\":return a.a.ua(b.value);case \"template\":if(e(b.content))return a.a.Ca(b.content.childNodes)}return a.a.Ca(b.childNodes)}function e(a){return A.DocumentFragment?a instanceof DocumentFragment:a&&11===a.nodeType}function f(a,b,c){\"string\"===typeof b.require?\r\nT||A.require?(T||A.require)([b.require],function(a){a&&\"object\"===typeof a&&a.Xd&&a[\"default\"]&&(a=a[\"default\"]);c(a)}):a(\"Uses require, but no AMD loader is present\"):c(b)}function g(a){return function(b){throw Error(\"Component '\"+a+\"': \"+b);}}var h={};a.j.register=function(b,c){if(!c)throw Error(\"Invalid configuration for \"+b);if(a.j.tb(b))throw Error(\"Component \"+b+\" is already registered\");h[b]=c};a.j.tb=function(a){return Object.prototype.hasOwnProperty.call(h,a)};a.j.unregister=function(b){delete h[b];\r\na.j.Bc(b)};a.j.Fc={getConfig:function(b,c){c(a.j.tb(b)?h[b]:null)},loadComponent:function(a,c,d){var e=g(a);f(e,c,function(c){b(a,e,c,d)})},loadTemplate:function(b,c,f){b=g(b);if(\"string\"===typeof c)f(a.a.ua(c));else if(c instanceof Array)f(c);else if(e(c))f(a.a.la(c.childNodes));else if(c.element)if(c=c.element,A.HTMLElement?c instanceof HTMLElement:c&&c.tagName&&1===c.nodeType)f(d(c));else if(\"string\"===typeof c){var h=w.getElementById(c);h?f(d(h)):b(\"Cannot find element with ID \"+c)}else b(\"Unknown element type: \"+\r\nc);else b(\"Unknown template value: \"+c)},loadViewModel:function(a,b,d){c(g(a),b,d)}};var m=\"createViewModel\";a.b(\"components.register\",a.j.register);a.b(\"components.isRegistered\",a.j.tb);a.b(\"components.unregister\",a.j.unregister);a.b(\"components.defaultLoader\",a.j.Fc);a.j.loaders.push(a.j.Fc);a.j.dd=h})();(function(){function b(b,e){var f=b.getAttribute(\"params\");if(f){var f=c.parseBindingsString(f,e,b,{valueAccessors:!0,bindingParams:!0}),f=a.a.Ga(f,function(c){return a.o(c,null,{l:b})}),g=a.a.Ga(f,\r\nfunction(c){var e=c.v();return c.ja()?a.o({read:function(){return a.a.f(c())},write:a.Za(e)&&function(a){c()(a)},l:b}):e});Object.prototype.hasOwnProperty.call(g,\"$raw\")||(g.$raw=f);return g}return{$raw:{}}}a.j.getComponentNameForNode=function(b){var c=a.a.R(b);if(a.j.tb(c)&&(-1!=c.indexOf(\"-\")||\"[object HTMLUnknownElement]\"==\"\"+b||8>=a.a.W&&b.tagName===c))return c};a.j.tc=function(c,e,f,g){if(1===e.nodeType){var h=a.j.getComponentNameForNode(e);if(h){c=c||{};if(c.component)throw Error('Cannot use the \"component\" binding on a custom element matching a component');\r\nvar m={name:h,params:b(e,f)};c.component=g?function(){return m}:m}}return c};var c=new a.ga;9>a.a.W&&(a.j.register=function(a){return function(b){return a.apply(this,arguments)}}(a.j.register),w.createDocumentFragment=function(b){return function(){var c=b(),f=a.j.dd,g;for(g in f);return c}}(w.createDocumentFragment))})();(function(){function b(b,c,d){c=c.template;if(!c)throw Error(\"Component '\"+b+\"' has no template\");b=a.a.Ca(c);a.h.va(d,b)}function c(a,b,c){var d=a.createViewModel;return d?d.call(a,\r\nb,c):b}var d=0;a.c.component={init:function(e,f,g,h,m){function k(){var a=l&&l.dispose;\"function\"===typeof a&&a.call(l);q&&q.s();p=l=q=null}var l,p,q,t=a.a.la(a.h.childNodes(e));a.h.Ea(e);a.a.K.za(e,k);a.o(function(){var g=a.a.f(f()),h,u;\"string\"===typeof g?h=g:(h=a.a.f(g.name),u=a.a.f(g.params));if(!h)throw Error(\"No component name specified\");var n=a.i.Cb(e,m),z=p=++d;a.j.get(h,function(d){if(p===z){k();if(!d)throw Error(\"Unknown component '\"+h+\"'\");b(h,d,e);var f=c(d,u,{element:e,templateNodes:t});\r\nd=n.createChildContext(f,{extend:function(a){a.$component=f;a.$componentTemplateNodes=t}});f&&f.koDescendantsComplete&&(q=a.i.subscribe(e,a.i.pa,f.koDescendantsComplete,f));l=f;a.Oa(d,e)}})},null,{l:e});return{controlsDescendantBindings:!0}}};a.h.ea.component=!0})();var V={\"class\":\"className\",\"for\":\"htmlFor\"};a.c.attr={update:function(b,c){var d=a.a.f(c())||{};a.a.P(d,function(c,d){d=a.a.f(d);var g=c.indexOf(\":\"),g=\"lookupNamespaceURI\"in b&&0=a.a.W&&c in V?(c=V[c],h?b.removeAttribute(c):b[c]=d):h||(g?b.setAttributeNS(g,c,d):b.setAttribute(c,d));\"name\"===c&&a.a.Yc(b,h?\"\":d)})}};(function(){a.c.checked={after:[\"value\",\"attr\"],init:function(b,c,d){function e(){var e=b.checked,f=g();if(!a.S.Ya()&&(e||!m&&!a.S.qa())){var k=a.u.G(c);if(l){var q=p?k.v():k,z=t;t=f;z!==f?e&&(a.a.Na(q,f,!0),a.a.Na(q,z,!1)):a.a.Na(q,f,e);p&&a.Za(k)&&k(q)}else h&&(f===n?f=e:e||(f=n)),a.m.eb(k,\r\nd,\"checked\",f,!0)}}function f(){var d=a.a.f(c()),e=g();l?(b.checked=0<=a.a.A(d,e),t=e):b.checked=h&&e===n?!!d:g()===d}var g=a.xb(function(){if(d.has(\"checkedValue\"))return a.a.f(d.get(\"checkedValue\"));if(q)return d.has(\"value\")?a.a.f(d.get(\"value\")):b.value}),h=\"checkbox\"==b.type,m=\"radio\"==b.type;if(h||m){var k=c(),l=h&&a.a.f(k)instanceof Array,p=!(l&&k.push&&k.splice),q=m||l,t=l?g():n;m&&!b.name&&a.c.uniqueName.init(b,function(){return!0});a.o(e,null,{l:b});a.a.B(b,\"click\",e);a.o(f,null,{l:b});\r\nk=n}}};a.m.wa.checked=!0;a.c.checkedValue={update:function(b,c){b.value=a.a.f(c())}}})();a.c[\"class\"]={update:function(b,c){var d=a.a.Db(a.a.f(c()));a.a.Eb(b,b.__ko__cssValue,!1);b.__ko__cssValue=d;a.a.Eb(b,d,!0)}};a.c.css={update:function(b,c){var d=a.a.f(c());null!==d&&\"object\"==typeof d?a.a.P(d,function(c,d){d=a.a.f(d);a.a.Eb(b,c,d)}):a.c[\"class\"].update(b,c)}};a.c.enable={update:function(b,c){var d=a.a.f(c());d&&b.disabled?b.removeAttribute(\"disabled\"):d||b.disabled||(b.disabled=!0)}};a.c.disable=\r\n{update:function(b,c){a.c.enable.update(b,function(){return!a.a.f(c())})}};a.c.event={init:function(b,c,d,e,f){var g=c()||{};a.a.P(g,function(g){\"string\"==typeof g&&a.a.B(b,g,function(b){var k,l=c()[g];if(l){try{var p=a.a.la(arguments);e=f.$data;p.unshift(e);k=l.apply(e,p)}finally{!0!==k&&(b.preventDefault?b.preventDefault():b.returnValue=!1)}!1===d.get(g+\"Bubble\")&&(b.cancelBubble=!0,b.stopPropagation&&b.stopPropagation())}})})}};a.c.foreach={Rc:function(b){return function(){var c=b(),d=a.a.bc(c);\r\nif(!d||\"number\"==typeof d.length)return{foreach:c,templateEngine:a.ba.Ma};a.a.f(c);return{foreach:d.data,as:d.as,noChildContext:d.noChildContext,includeDestroyed:d.includeDestroyed,afterAdd:d.afterAdd,beforeRemove:d.beforeRemove,afterRender:d.afterRender,beforeMove:d.beforeMove,afterMove:d.afterMove,templateEngine:a.ba.Ma}}},init:function(b,c){return a.c.template.init(b,a.c.foreach.Rc(c))},update:function(b,c,d,e,f){return a.c.template.update(b,a.c.foreach.Rc(c),d,e,f)}};a.m.Ra.foreach=!1;a.h.ea.foreach=\r\n!0;a.c.hasfocus={init:function(b,c,d){function e(e){b.__ko_hasfocusUpdating=!0;var f=b.ownerDocument;if(\"activeElement\"in f){var g;try{g=f.activeElement}catch(l){g=f.body}e=g===b}f=c();a.m.eb(f,d,\"hasfocus\",e,!0);b.__ko_hasfocusLastValue=e;b.__ko_hasfocusUpdating=!1}var f=e.bind(null,!0),g=e.bind(null,!1);a.a.B(b,\"focus\",f);a.a.B(b,\"focusin\",f);a.a.B(b,\"blur\",g);a.a.B(b,\"focusout\",g);b.__ko_hasfocusLastValue=!1},update:function(b,c){var d=!!a.a.f(c());b.__ko_hasfocusUpdating||b.__ko_hasfocusLastValue===\r\nd||(d?b.focus():b.blur(),!d&&b.__ko_hasfocusLastValue&&b.ownerDocument.body.focus(),a.u.G(a.a.Fb,null,[b,d?\"focusin\":\"focusout\"]))}};a.m.wa.hasfocus=!0;a.c.hasFocus=a.c.hasfocus;a.m.wa.hasFocus=\"hasfocus\";a.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(b,c){a.a.fc(b,c())}};(function(){function b(b,d,e){a.c[b]={init:function(b,c,h,m,k){var l,p,q={},t,x,n;if(d){m=h.get(\"as\");var u=h.get(\"noChildContext\");n=!(m&&u);q={as:m,noChildContext:u,exportDependencies:n}}x=(t=\r\n\"render\"==h.get(\"completeOn\"))||h.has(a.i.pa);a.o(function(){var h=a.a.f(c()),m=!e!==!h,u=!p,r;if(n||m!==l){x&&(k=a.i.Cb(b,k));if(m){if(!d||n)q.dataDependency=a.S.o();r=d?k.createChildContext(\"function\"==typeof h?h:c,q):a.S.qa()?k.extend(null,q):k}u&&a.S.qa()&&(p=a.a.Ca(a.h.childNodes(b),!0));m?(u||a.h.va(b,a.a.Ca(p)),a.Oa(r,b)):(a.h.Ea(b),t||a.i.ma(b,a.i.H));l=m}},null,{l:b});return{controlsDescendantBindings:!0}}};a.m.Ra[b]=!1;a.h.ea[b]=!0}b(\"if\");b(\"ifnot\",!1,!0);b(\"with\",!0)})();a.c.let={init:function(b,\r\nc,d,e,f){c=f.extend(c);a.Oa(c,b);return{controlsDescendantBindings:!0}}};a.h.ea.let=!0;var Q={};a.c.options={init:function(b){if(\"select\"!==a.a.R(b))throw Error(\"options binding applies only to SELECT elements\");for(;0g)var m=a.a.g.Z(),k=a.a.g.Z(),l=function(b){var c=this.activeElement;(c=c&&a.a.g.get(c,k))&&c(b)},p=function(b,c){var d=b.ownerDocument;a.a.g.get(d,m)||(a.a.g.set(d,m,!0),a.a.B(d,\"selectionchange\",l));a.a.g.set(b,k,c)};a.c.textInput={init:function(b,c,k){function l(c,d){a.a.B(b,c,d)}function m(){var d=a.a.f(c());if(null===d||d===n)d=\"\";L!==n&&d===L?a.a.setTimeout(m,4):b.value!==d&&(y=!0,b.value=d,y=!1,v=b.value)}function r(){w||(L=b.value,w=a.a.setTimeout(z,\r\n4))}function z(){clearTimeout(w);L=w=n;var d=b.value;v!==d&&(v=d,a.m.eb(c(),k,\"textInput\",d))}var v=b.value,w,L,A=9==a.a.W?r:z,y=!1;g&&l(\"keypress\",z);11>g&&l(\"propertychange\",function(a){y||\"value\"!==a.propertyName||A(a)});8==g&&(l(\"keyup\",z),l(\"keydown\",z));p&&(p(b,A),l(\"dragend\",r));(!g||9<=g)&&l(\"input\",A);5>e&&\"textarea\"===a.a.R(b)?(l(\"keydown\",r),l(\"paste\",r),l(\"cut\",r)):11>d?l(\"keydown\",r):4>f?(l(\"DOMAutoComplete\",z),l(\"dragdrop\",z),l(\"drop\",z)):h&&\"number\"===b.type&&l(\"keydown\",r);l(\"change\",\r\nz);l(\"blur\",z);a.o(m,null,{l:b})}};a.m.wa.textInput=!0;a.c.textinput={preprocess:function(a,b,c){c(\"textInput\",a)}}})();a.c.uniqueName={init:function(b,c){if(c()){var d=\"ko_unique_\"+ ++a.c.uniqueName.rd;a.a.Yc(b,d)}}};a.c.uniqueName.rd=0;a.c.using={init:function(b,c,d,e,f){var g;d.has(\"as\")&&(g={as:d.get(\"as\"),noChildContext:d.get(\"noChildContext\")});c=f.createChildContext(c,g);a.Oa(c,b);return{controlsDescendantBindings:!0}}};a.h.ea.using=!0;a.c.value={init:function(b,c,d){var e=a.a.R(b),f=\"input\"==\r\ne;if(!f||\"checkbox\"!=b.type&&\"radio\"!=b.type){var g=[],h=d.get(\"valueUpdate\"),m=!1,k=null;h&&(\"string\"==typeof h?g=[h]:g=a.a.wc(h),a.a.Pa(g,\"change\"));var l=function(){k=null;m=!1;var e=c(),f=a.w.M(b);a.m.eb(e,d,\"value\",f)};!a.a.W||!f||\"text\"!=b.type||\"off\"==b.autocomplete||b.form&&\"off\"==b.form.autocomplete||-1!=a.a.A(g,\"propertychange\")||(a.a.B(b,\"propertychange\",function(){m=!0}),a.a.B(b,\"focus\",function(){m=!1}),a.a.B(b,\"blur\",function(){m&&l()}));a.a.D(g,function(c){var d=l;a.a.Ud(c,\"after\")&&\r\n(d=function(){k=a.w.M(b);a.a.setTimeout(l,0)},c=c.substring(5));a.a.B(b,c,d)});var p;p=f&&\"file\"==b.type?function(){var d=a.a.f(c());null===d||d===n||\"\"===d?b.value=\"\":a.u.G(l)}:function(){var f=a.a.f(c()),g=a.w.M(b);if(null!==k&&f===k)a.a.setTimeout(p,0);else if(f!==g||g===n)\"select\"===e?(g=d.get(\"valueAllowUnset\"),a.w.cb(b,f,g),g||f===a.w.M(b)||a.u.G(l)):a.w.cb(b,f)};if(\"select\"===e){var q;a.i.subscribe(b,a.i.H,function(){q?d.get(\"valueAllowUnset\")?p():l():(a.a.B(b,\"change\",l),q=a.o(p,null,{l:b}))},\r\nnull,{notifyImmediately:!0})}else a.a.B(b,\"change\",l),a.o(p,null,{l:b})}else a.ib(b,{checkedValue:c})},update:function(){}};a.m.wa.value=!0;a.c.visible={update:function(b,c){var d=a.a.f(c()),e=\"none\"!=b.style.display;d&&!e?b.style.display=\"\":!d&&e&&(b.style.display=\"none\")}};a.c.hidden={update:function(b,c){a.c.visible.update(b,function(){return!a.a.f(c())})}};(function(b){a.c[b]={init:function(c,d,e,f,g){return a.c.event.init.call(this,c,function(){var a={};a[b]=d();return a},e,f,g)}}})(\"click\");\r\na.ca=function(){};a.ca.prototype.renderTemplateSource=function(){throw Error(\"Override renderTemplateSource\");};a.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error(\"Override createJavaScriptEvaluatorBlock\");};a.ca.prototype.makeTemplateSource=function(b,c){if(\"string\"==typeof b){c=c||w;var d=c.getElementById(b);if(!d)throw Error(\"Cannot find template with ID \"+b);return new a.C.F(d)}if(1==b.nodeType||8==b.nodeType)return new a.C.ia(b);throw Error(\"Unknown template type: \"+b);};a.ca.prototype.renderTemplate=\r\nfunction(a,c,d,e){a=this.makeTemplateSource(a,e);return this.renderTemplateSource(a,c,d,e)};a.ca.prototype.isTemplateRewritten=function(a,c){return!1===this.allowTemplateRewriting?!0:this.makeTemplateSource(a,c).data(\"isRewritten\")};a.ca.prototype.rewriteTemplate=function(a,c,d){a=this.makeTemplateSource(a,d);c=c(a.text());a.text(c);a.data(\"isRewritten\",!0)};a.b(\"templateEngine\",a.ca);a.kc=function(){function b(b,c,d,h){b=a.m.ac(b);for(var m=a.m.Ra,k=0;k]*))?)*\\s+)data-bind\\s*=\\s*([\"'])([\\s\\S]*?)\\3/gi,\r\nd=/\\x3c!--\\s*ko\\b\\s*([\\s\\S]*?)\\s*--\\x3e/g;return{xd:function(b,c,d){c.isTemplateRewritten(b,d)||c.rewriteTemplate(b,function(b){return a.kc.Ld(b,c)},d)},Ld:function(a,f){return a.replace(c,function(a,c,d,e,l){return b(l,c,d,f)}).replace(d,function(a,c){return b(c,\"\\x3c!-- ko --\\x3e\",\"#comment\",f)})},md:function(b,c){return a.aa.Xb(function(d,h){var m=d.nextSibling;m&&m.nodeName.toLowerCase()===c&&a.ib(m,b,h)})}}}();a.b(\"__tr_ambtns\",a.kc.md);(function(){a.C={};a.C.F=function(b){if(this.F=b){var c=\r\na.a.R(b);this.ab=\"script\"===c?1:\"textarea\"===c?2:\"template\"==c&&b.content&&11===b.content.nodeType?3:4}};a.C.F.prototype.text=function(){var b=1===this.ab?\"text\":2===this.ab?\"value\":\"innerHTML\";if(0==arguments.length)return this.F[b];var c=arguments[0];\"innerHTML\"===b?a.a.fc(this.F,c):this.F[b]=c};var b=a.a.g.Z()+\"_\";a.C.F.prototype.data=function(c){if(1===arguments.length)return a.a.g.get(this.F,b+c);a.a.g.set(this.F,b+c,arguments[1])};var c=a.a.g.Z();a.C.F.prototype.nodes=function(){var b=this.F;\r\nif(0==arguments.length){var e=a.a.g.get(b,c)||{},f=e.lb||(3===this.ab?b.content:4===this.ab?b:n);if(!f||e.jd){var g=this.text();g&&g!==e.bb&&(f=a.a.Md(g,b.ownerDocument),a.a.g.set(b,c,{lb:f,bb:g,jd:!0}))}return f}e=arguments[0];this.ab!==n&&this.text(\"\");a.a.g.set(b,c,{lb:e})};a.C.ia=function(a){this.F=a};a.C.ia.prototype=new a.C.F;a.C.ia.prototype.constructor=a.C.ia;a.C.ia.prototype.text=function(){if(0==arguments.length){var b=a.a.g.get(this.F,c)||{};b.bb===n&&b.lb&&(b.bb=b.lb.innerHTML);return b.bb}a.a.g.set(this.F,\r\nc,{bb:arguments[0]})};a.b(\"templateSources\",a.C);a.b(\"templateSources.domElement\",a.C.F);a.b(\"templateSources.anonymousTemplate\",a.C.ia)})();(function(){function b(b,c,d){var e;for(c=a.h.nextSibling(c);b&&(e=b)!==c;)b=a.h.nextSibling(e),d(e,b)}function c(c,d){if(c.length){var e=c[0],f=c[c.length-1],g=e.parentNode,h=a.ga.instance,m=h.preprocessNode;if(m){b(e,f,function(a,b){var c=a.previousSibling,d=m.call(h,a);d&&(a===e&&(e=d[0]||b),a===f&&(f=d[d.length-1]||c))});c.length=0;if(!e)return;e===f?c.push(e):\r\n(c.push(e,f),a.a.Ua(c,g))}b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.vc(d,b)});b(e,f,function(b){1!==b.nodeType&&8!==b.nodeType||a.aa.cd(b,[d])});a.a.Ua(c,g)}}function d(a){return a.nodeType?a:0a.a.W?0:b.nodes)?b.nodes():null)return a.a.la(c.cloneNode(!0).childNodes);b=b.text();return a.a.ua(b,e)};a.ba.Ma=new a.ba;a.gc(a.ba.Ma);a.b(\"nativeTemplateEngine\",a.ba);(function(){a.$a=function(){var a=this.Hd=function(){if(!v||!v.tmpl)return 0;try{if(0<=v.tmpl.tag.tmpl.open.toString().indexOf(\"__\"))return 2}catch(a){}return 1}();\r\nthis.renderTemplateSource=function(b,e,f,g){g=g||w;f=f||{};if(2>a)throw Error(\"Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.\");var h=b.data(\"precompiled\");h||(h=b.text()||\"\",h=v.template(null,\"{{ko_with $item.koBindingContext}}\"+h+\"{{/ko_with}}\"),b.data(\"precompiled\",h));b=[e.$data];e=v.extend({koBindingContext:e},f.templateOptions);e=v.tmpl(h,b,e);e.appendTo(g.createElement(\"div\"));v.fragments={};return e};this.createJavaScriptEvaluatorBlock=function(a){return\"{{ko_code ((function() { return \"+\r\na+\" })()) }}\"};this.addTemplate=function(a,b){w.write(\"