{"version":3,"sources":["node_modules/browser-pack/_prelude.js","assets/app/appEntry.js","assets/app/componentLoader.js","assets/app/components/addToLibraryButton.js","assets/app/components/asideWidget.js","assets/app/components/base/BaseComponent.js","assets/app/components/buyButton.js","assets/app/components/chatRemoveButton.js","assets/app/components/commentFormV1.js","assets/app/components/deleteUserForm.js","assets/app/components/disputedItems.js","assets/app/components/editAvatar.js","assets/app/components/editProfileBg.js","assets/app/components/feedbackForm.js","assets/app/components/hideButton.js","assets/app/components/ignoreListButton.js","assets/app/components/libraryButton.js","assets/app/components/likeButton.js","assets/app/components/markButton.js","assets/app/components/modalDialog.js","assets/app/components/moderateCommentForm.js","assets/app/components/notifications.js","assets/app/components/subToCollectionButton.js","assets/app/components/subToSeriesButton.js","assets/app/components/subscribeButton.js","assets/app/components/userAvatar.js","assets/app/components/videoPlayer.js","assets/app/components/worksWidget.js","assets/app/customBindings/ko.btn.js","assets/app/customBindings/ko.checkPermissions.js","assets/app/customBindings/ko.checkedWithInit.js","assets/app/customBindings/ko.datePicker.js","assets/app/customBindings/ko.dateRangePicker.js","assets/app/customBindings/ko.drop.js","assets/app/customBindings/input.js","assets/app/customBindings/ko.readMore.js","assets/app/customBindings/ko.richContent.js","assets/app/customBindings/ko.select2.js","assets/app/customBindings/ko.sortable.js","assets/app/customBindings/ko.sumoSelect.js","assets/app/customBindings/ko.time.js","assets/app/customBindings/ko.valueWithInit.js","assets/app/plugins/stickySidebar.js","assets/app/utils/input.js","assets/app/utils/authorRewardUtils.js","assets/app/utils/browserUtils.js","assets/app/utils/commentLoadUtil.js","assets/app/utils/dateTimeUtils.js","assets/app/utils/devTools.js","assets/app/utils/exportBookUtils.js","assets/app/utils/giftCodeUtils.js","assets/app/utils/imageUtils.js","assets/app/utils/localStorageUtils.js","assets/app/utils/merchantUtils.js","assets/app/utils/metrikaUtils.js","assets/app/utils/navBarUtils.js","assets/app/utils/oAuthUtils.js","assets/app/utils/postUtils.js","assets/app/utils/profileUtils.js","assets/app/utils/richContentUtils.js","assets/app/utils/socialUtils.js","assets/app/utils/stringUtils.js","assets/app/utils/vkIdUtils.js","assets/app/utils/webSocketUtils.js","assets/app/utils/windowUtils.js","assets/app/viewModels/accountLogin.js","assets/app/viewModels/accountMyPage.js","assets/app/viewModels/accountNotifications.js","assets/app/viewModels/accountOrders.js","assets/app/viewModels/accountPrivacy.js","assets/app/viewModels/accountRecovery.js","assets/app/viewModels/accountRegister.js","assets/app/viewModels/accountResetPassword.js","assets/app/viewModels/accountSecurity.js","assets/app/viewModels/accountSettings.js","assets/app/viewModels/input.js","assets/app/viewModels/artView.js","assets/app/viewModels/audiobookEditContent.js","assets/app/viewModels/audiobookView.js","assets/app/viewModels/authorRatingReport.js","assets/app/viewModels/base/baseViewModel.js","assets/app/viewModels/base/validatedViewModel.js","assets/app/viewModels/blackFriday.js","assets/app/viewModels/collectionComments.js","assets/app/viewModels/collectionEdit.js","assets/app/viewModels/collectionView.js","assets/app/viewModels/contestAssessment.js","assets/app/viewModels/contestGroupEdit.js","assets/app/viewModels/contestModerate.js","assets/app/viewModels/contestMyArts.js","assets/app/viewModels/contestMyWork.js","assets/app/viewModels/contestSelfJuryPreparation.js","assets/app/viewModels/contestSettings.js","assets/app/viewModels/discountEdit.js","assets/app/viewModels/feedUnreadComments.js","assets/app/viewModels/forumIndex.js","assets/app/viewModels/forumModerate.js","assets/app/viewModels/forumOrders.js","assets/app/viewModels/forumTicket.js","assets/app/viewModels/homeIndex.js","assets/app/viewModels/homeLibrary.js","assets/app/viewModels/merchantDashboard.js","assets/app/viewModels/merchantDiscounts.js","assets/app/viewModels/merchantReports.js","assets/app/viewModels/merchantStep1.js","assets/app/viewModels/merchantStep3.js","assets/app/viewModels/merchantStep4.js","assets/app/viewModels/merchantStep5.js","assets/app/viewModels/peopleIndex.js","assets/app/viewModels/pmIndex.js","assets/app/viewModels/postEdit.js","assets/app/viewModels/postView.js","assets/app/viewModels/postsIndex.js","assets/app/viewModels/postsSettings.js","assets/app/viewModels/profileAwards.js","assets/app/viewModels/profileBaseEditPage.js","assets/app/viewModels/profileComments.js","assets/app/viewModels/profileEditArts.js","assets/app/viewModels/profileEditWorkSeries.js","assets/app/viewModels/profileEditWorks.js","assets/app/viewModels/profileIndex.js","assets/app/viewModels/profileLibrary.js","assets/app/viewModels/profileWorks.js","assets/app/viewModels/promoMigration.js","assets/app/viewModels/quiz1.js","assets/app/viewModels/quiz2.js","assets/app/viewModels/removeTotp.js","assets/app/viewModels/reportUserActivity.js","assets/app/viewModels/reportWorkStats.js","assets/app/viewModels/reviewEdit.js","assets/app/viewModels/reviewIndex.js","assets/app/viewModels/reviewManage.js","assets/app/viewModels/reviewView.js","assets/app/viewModels/searchIndex.js","assets/app/viewModels/simpleViewModel.js","assets/app/viewModels/totp.js","assets/app/viewModels/userRatingReport.js","assets/app/viewModels/walletSettings.js","assets/app/viewModels/workDiscounts.js","assets/app/viewModels/workEdit.js","assets/app/viewModels/workEditChapter.js","assets/app/viewModels/workEditContent.js","assets/app/viewModels/workEditSales.js","assets/app/viewModels/workGenre.js","assets/app/viewModels/workGift.js","assets/app/viewModels/workImport.js","assets/app/viewModels/workRecommended.js","assets/app/viewModels/workSelectForm.js","assets/app/viewModels/workSeriesEdit.js","assets/app/viewModels/workSeriesView.js","assets/app/viewModels/workTag.js","assets/app/viewModels/workUploads.js","assets/app/viewModels/workView.js","assets/lib/cropper/js/input.js","assets/lib/crosstab/js/crosstab.js","assets/lib/fingerprint/js/input.js","assets/lib/screenfull/js/screenfull.js","assets/lib/select2/js/input.js","assets/lib/sumoSelect/js/jquery.sumoselect.js","bower_components/Readmore.js/readmore.js","bower_components/Sortable/knockout-sortable.js","bower_components/bootstrap-hover-dropdown/bootstrap-hover-dropdown.js","bower_components/bootstrap-sass/assets/javascripts/input.js","bower_components/director/build/director.js","bower_components/intro.js/input.js","bower_components/jquery-pjax/input.js","bower_components/jquery.countdown/dist/input.js","bower_components/knockout.validation/Dist/knockout.validation.js","bower_components/knockout/dist/input.js","bower_components/nanoscroller/bin/javascripts/input.js","bower_components/nprogress/input.js","bower_components/scriptjs/dist/script.js","bower_components/signalr/jquery.signalR.js","bower_components/sortable/input.js","bower_components/tether-drop/dist/js/input.js","bower_components/tether/dist/js/input.js","bower_components/toastr/input.js","node_modules/bootstrap-daterangepicker/daterangepicker.js","node_modules/clipboard/lib/clipboard-action.js","node_modules/clipboard/lib/clipboard.js","node_modules/delegate/src/closest.js","node_modules/delegate/src/delegate.js","node_modules/desandro-matches-selector/matches-selector.js","node_modules/ev-emitter/ev-emitter.js","node_modules/fizzy-ui-utils/utils.js","node_modules/get-size/get-size.js","node_modules/good-listener/src/is.js","node_modules/good-listener/src/listen.js","node_modules/imagesloaded/imagesloaded.js","node_modules/jquery-mousewheel/jquery.mousewheel.js","node_modules/jquery/dist/jquery.js","node_modules/js.cookie/dst/Cookie.js","node_modules/lodash/lodash.js","node_modules/masonry-layout/masonry.js","node_modules/moment/locale/ru.js","node_modules/moment/moment.js","node_modules/numeral/numeral.js","node_modules/outlayer/item.js","node_modules/outlayer/outlayer.js","node_modules/select/src/select.js","node_modules/tiny-emitter/index.js","node_modules/typograf/dist/typograf.js"],"names":[],"mappings":"AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AClGA;AACA;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;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA,CAAC,UAAU,OAAO,EAAE;IAChB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE;QAClE,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;KAC9E;SACI,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE;QACjD,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC,CAAC;KAClJ;CACJ,EAAE,UAAU,OAAO,EAAE,OAAO,EAAE;IAC3B,YAAY,CAAC;IACb,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,IAAI,CAA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CtfH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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EAAE;gBACrB,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;aACvC;YACD,EAAE,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YACvC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO,EAAE,CAAC;SACb,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;KACpB,EAAE,CAAC,CAAC;IACL,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;CACjC,CAAC,CAAC;;;;;;;AClMH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AHpBA,CAAC,UAAU,OAAO,EAAE;IAChB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE;QAClE,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,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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;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,GAAG,WAAW,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;SACrE,CAAC;QACF,OAAO,cAAc,CAAC;KACzB,EAAE,CAAC,CAAC;IACL,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,OAAO,GAAG,cAAc,CAAC;CACpC,CAAC,CAAC;;;;;ASjIH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC7GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACnHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;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;;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;;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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BACJ,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN,CAAC;QACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;YACnD,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;gBACxC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACrD;SACJ,CAAC;QACF,SAAS,CAAC,SAAS,CAAC,KAAK,GAAG,UAAU,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE;YACnD,IAAI,KAAK,GAAG,GAAG;gBACX,OAAO,GAAG,CAAC;YACf,IAAI,KAAK,GAAG,GAAG;gBACX,OAAO,GAAG,CAAC;YACf,OAAO,KAAK,CAAC;SAChB,CAAC;QACF,OAAO,SAAS,CAAC;KACpB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC,CAAC;;;;;ACrRH;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/nBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ATzNA,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE;IACxD,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,K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IAAI,MAAM,CAAC,YAAY,EAAE;4BACrB,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;yBACtD;qBACJ,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN,CAAC;QACF,SAAS,CAAC,SAAS,CAAC,YAAY,GAAG,YAAY;YAC3C,IAAI,IAAI,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB;SACJ,CAAC;QACF,OAAO,SAAS,CAAC;KACpB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC,CAAC;;;;;AU5aH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AV9GA,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE;IACxD,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI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;aAChB,CAAC,CAAC;SACN,CAAC;QACF,OAAO,iBAAiB,CAAC;KAC5B,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,OAAO,GAAG,iBAAiB,CAAC;CACvC,CAAC,CAAC;;;;;AWnLH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AlBpGA,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE;IACxD,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,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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;;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;;AtBjFA,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE;IACxD,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CACxF,CAAC;AACF,CAAC,UAAU,OAAO,EAAE;IAChB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE;QAClE,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;KAC9E;SACI,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE;QACjD,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,2BAA2B,CAAC,EAAE,OAAO,CAAC,CAAC;KAC9F;CACJ,EAAE,UAAU,OAAO,EAAE,OAAO,EAAE;IAC3B,YAAY,CAAC;IACb,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1B,IAAI,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,IAAI,oBAAoB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAChE,IAAI,SAAS,IAAI,UAAU,MAAM,EAAE;QAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7B,SAAS,SAAS,CAAC,OAAO,EAAE;YACxB,IAAI,KAAK,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC;gBAChC,QAAQ,EAAE,IAAI;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC,EAAE;gBACpC,UAAU,CAAC,YAAY;oBACnB,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;iBAC1D,EAAE,GAAG,CAAC,CAAC;aACX,CAAC;YACF,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,EAAE;gBAChC,IAAI,CAAC,CAAC,MAAM,EAAE;oBACV,IAAI,OAAO,GAAG,WAAW,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,EAAE,KAAK,EAAE;wBACnC,IAAI,QAAQ,IAAI,KAAK,EAAE;4BACnB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY;gCAC7B,OAAO,IAAI,IAAI,GAAG,MAAM,CAAC;6BAC5B,CAAC,CAAC;yBACN;qBACJ,CAAC,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBACzB;aACJ,CAAC;YACF,UAAU,CAAC,YAAY;gBACnB,KAAK,CAAC,cAAc,EAAE,CAAC;aAC1B,EAAE,CAAC,CAAC,CAAC;SACT;QACD,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,UAAU,MAAM,EAAE;YACnD,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE;gBAC/D,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACrD;iBACI;gBACD,IAAI,CAAC,UAAU,EAAE,CAAC;aACrB;SACJ,CAAC;QACF,OAAO,SAAS,CAAC;KACpB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC,CAAC;;;;;AuB5DH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnsBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AC7BA;AACA;AACA;AACA;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;;ACjEA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AlD7TA,IAAI,SAAS,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE;IACxD,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;IACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;CAC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,CAAC;YACzD,SAAS,GAAG,SAAS,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;YACvE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;SAC7C,CAAC;QACF,SAAS,CAAC,SAAS,CAAC,cAAc,GAAG,YAAY;YAC7C,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;SAC3C,CAAC;QACF,OAAO,SAAS,CAAC;KACpB,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAC/B,CAAC,CAAC;;;;;AmD/gCH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChJA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;;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;;AC3JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvIA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,WAAW,GAAG,OAAO,CAAC;IACnC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;;;IAG/C,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,GAAG,YAAY;QAClC,CAAC,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7B,OAAO,IAAI,CAAC;KACf,CAAC;;CAEL,CAAC,CAAC;;;;;AC57FH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACr1BA;;;;;;;;;;;;AAYA,CAAC,UAAU,MAAM,EAAE,OAAO,EAAE;IACxB,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAC/E,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;KACxE,MAAM,GAAG,OAAO,UAAU,KAAK,WAAW,GAAG,UAAU,GAAG,MAAM,IA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AC;;;ACrvGJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;;AAOA,CAAC,UAAU,OAAO,EAAE;EAClB,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE;;IAE9C,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;GAC7B,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;;IAEtC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;GAC5B,MAAM;;IAEL,OAAO,CAAC,MAAM,CAAC,CAAC;GACjB;CACF,CAAC,UAAU,MAAM,EAAE;;;;EAIlB,IAAI,EAAE;CACP,YAAY;;;EAGX,IAAI,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AAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,IAAI;IACd,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,E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,CAAC,MAAM;IACjB,OAAO,EAAE,EAAE,CAAC,OAAO;GACpB,CAAC;CACH,EAAE,CAAC,CAAC;;;;EAIH,IAAI,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;;;;;EAK3C,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC;;;EAG3B,OAAO,OAAO,CAAC;CAChB,CAAC,EAAE;;;ACn4KJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;;;;;AAMA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;EACjC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;CAC3D;;AAED,CAAC,UAAU,CAAC,EAAE;EACZ,YAAY,CAAC;EACb,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;EAClD,IAAI,CAAC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AAI,EAAE,IAAI,CAAC;KACxB,CAAC;GACH,CAAC;;CAEH,CAAC,MAAM,CAAC,CAAC;;;AC1zEV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;;;IAGjD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;GAC9D;;;;;;;;EAQD,SAAS,SAAS,CAAC,OAAO,EAAE;IAC1B,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;GACtE;;;;;;EAMD,SAAS,aAAa,CAAC,OAAO,EAAE;IAC9B,OAAO,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;GAC1E;;EAED,OAAO,SAAS,CAAC;CAClB,CAAC,CAAC;;;AC1dH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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C,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC/C,MAAM;QACH,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;KAC1C;CACJ,CAAC,EAAE;;;AClbJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtlTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;ACzzhBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpiLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC50BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1iBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC36BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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":"app.bundle.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 300) {\r\n $updownScroll.addClass(\"active\");\r\n }\r\n else if (lastScrollPosition === 0 && !isScrolling) {\r\n $updownScroll.removeClass(\"active\");\r\n }\r\n if (lastScrollPosition < position) {\r\n $updownScroll.removeClass(\"scroll-down\");\r\n }\r\n });\r\n if (!_this.isAuthenticated) {\r\n if ($(\"#authModal\")[0]) {\r\n $(\"#authModal\").modal({ show: false });\r\n var loginViewModel = _this.createViewModel(\"accountLogin\", {});\r\n ko.applyBindings(loginViewModel, $(\"#authModal\")[0]);\r\n }\r\n }\r\n });\r\n };\r\n SiteApp.prototype.init = function (page, options) {\r\n var _this = this;\r\n $.pjax.defaults.timeout = 10000;\r\n $.pjax.defaults.maxCacheLength = 0;\r\n ko[\"options\"].deferUpdates = true;\r\n if (window[\"kendo\"]) {\r\n window[\"kendo\"].culture(\"ru-RU\");\r\n }\r\n toastr.options.timeOut = 10000;\r\n toastr.options.extendedTimeOut = 5000;\r\n window.alert = function (message) {\r\n toastr.error(message, \"Произошла ошибка\");\r\n };\r\n // Выключаем pjax в IE\r\n if (browserUtils_1.default.isIE()) {\r\n $.ajaxSetup({ cache: false });\r\n }\r\n if ($.support.pjax) {\r\n $(document).on(\"click\", \"[data-pjax] a, a[data-pjax]\", function (event) {\r\n var $el = $(this);\r\n var $container;\r\n if ($el.attr(\"data-pjax-custom\")) {\r\n if ($el.attr(\"data-pjax-container\")) {\r\n $container = $($el.attr(\"data-pjax-container\"));\r\n }\r\n else {\r\n $container = $el.closest(\"[data-pjax-container]\");\r\n }\r\n }\r\n else {\r\n $container = $(\"#pjax-container\");\r\n }\r\n $.pjax.click(event, { container: $container });\r\n });\r\n }\r\n nprogress.configure({\r\n parent: \".brand-logo\",\r\n showSpinner: true,\r\n template: \"
\" +\r\n \"
\" +\r\n \"
\"\r\n });\r\n window[\"nprogress\"] = nprogress;\r\n if (this.isInitialized)\r\n return;\r\n this.initUtils();\r\n // Dispose previous view model\r\n if (this.viewModel && _.isFunction(this.viewModel.dispose)) {\r\n this.viewModel.dispose();\r\n }\r\n this.viewModel = this.createViewModel(page, options);\r\n this.isInitialized = true;\r\n if (!this.isKoInit) {\r\n window[\"ko\"] = ko;\r\n window[\"viewModel\"] = this.viewModel;\r\n var isAccountLayoutCollapsed = $(\".account-layout:not(.aside-collapsed)\")[0] !== undefined;\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n nprogress.start();\r\n isAccountLayoutCollapsed = $(\".account-layout:not(.aside-collapsed)\")[0] !== undefined;\r\n })\r\n .on(\"pjax:success\", function (xhr, options) {\r\n try {\r\n ko.applyBindingsToDescendants(_this.viewModel, xhr.target);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n })\r\n .on(\"pjax:complete\", function (xhr, options) {\r\n nprogress.done();\r\n })\r\n .on(\"pjax:end\", function () {\r\n _this.initUtils();\r\n if (isAccountLayoutCollapsed) {\r\n $(\"#aside-toggle\").trigger(\"click\");\r\n }\r\n });\r\n ko.applyBindings(this.viewModel, $(\"#pjax-container\")[0]);\r\n if ($(\".topnavbar-wrapper\")[0]) {\r\n ko.applyBindings(this.viewModel, $(\".topnavbar-wrapper\")[0]);\r\n }\r\n this.isKoInit = true;\r\n }\r\n ;\r\n };\r\n SiteApp.prototype.showLoginModal = function () {\r\n try {\r\n metrikaUtils_1.default.reachGoal(\"showLoginForm\");\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n try {\r\n if (this.canBeHandledByAndroid()) {\r\n this.getAndroidMobileHandler().handleLogin();\r\n return;\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n $(\"#authModal\").modal(\"toggle\");\r\n };\r\n SiteApp.prototype.ensureAuth = function (onlyIfEmailConfirmed) {\r\n if (onlyIfEmailConfirmed === void 0) { onlyIfEmailConfirmed = false; }\r\n if (!this.isAuthenticated) {\r\n this.showLoginModal();\r\n return false;\r\n }\r\n if (onlyIfEmailConfirmed && !this.emailConfirmed) {\r\n var modal = window[\"AppComponents\"].ModalDialog;\r\n var confirmEmailUrl = this.rootUrl + \"account/settings\";\r\n modal.show({\r\n title: \"Ошибка\",\r\n message: \"\\u0412\\u044B \\u043D\\u0435 \\u043F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0434\\u0438\\u043B\\u0438 \\u0441\\u0432\\u043E\\u0439 \\u0430\\u0434\\u0440\\u0435\\u0441 \\u044D\\u043B\\u0435\\u043A\\u0442\\u0440\\u043E\\u043D\\u043D\\u043E\\u0439 \\u043F\\u043E\\u0447\\u0442\\u044B. \\u041F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0434\\u0438\\u0442\\u044C\",\r\n type: 3\r\n });\r\n return false;\r\n }\r\n return true;\r\n };\r\n SiteApp.prototype.getAndroidMobileHandler = function () {\r\n return window[\"authorTodayMobileHandler\"];\r\n };\r\n SiteApp.prototype.canBeHandledByAndroid = function () {\r\n return this.isAndroid\r\n && this.getAndroidMobileHandler() !== undefined\r\n && this.getAndroidMobileHandler() !== null;\r\n };\r\n SiteApp.prototype.logOff = function () {\r\n try {\r\n if (this.canBeHandledByAndroid()) {\r\n this.getAndroidMobileHandler().handleLogout();\r\n return;\r\n }\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n $(\"#logoffForm\").submit();\r\n };\r\n /** Настраивает меню аватарки */\r\n SiteApp.prototype.setAvaMenu = function () {\r\n var topAvaMenu = $('.top-ava-menu').hide();\r\n $('.user-dropdown-toggle').hover(function (e) {\r\n topAvaMenu.show();\r\n });\r\n $('.dropdown').find('.dropdown-menu-links').find('li:eq(1)').hover(function (e) {\r\n topAvaMenu.hide();\r\n });\r\n };\r\n return SiteApp;\r\n }());\r\n ;\r\n window[\"app\"] = new SiteApp();\r\n});\r\n//# sourceMappingURL=appEntry.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"lodash\", \"./utils/AjaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var AjaxUtils_1 = require(\"./utils/AjaxUtils\");\r\n var componentViewModels = {'addToLibraryButton': require('./components/addToLibraryButton.js'),'asideWidget': require('./components/asideWidget.js'),'buyButton': require('./components/buyButton.js'),'chatRemoveButton': require('./components/chatRemoveButton.js'),'commentFormV1': require('./components/commentFormV1.js'),'deleteUserForm': require('./components/deleteUserForm.js'),'disputedItems': require('./components/disputedItems.js'),'editAvatar': require('./components/editAvatar.js'),'editProfileBg': require('./components/editProfileBg.js'),'feedbackForm': require('./components/feedbackForm.js'),'hideButton': require('./components/hideButton.js'),'ignoreListButton': require('./components/ignoreListButton.js'),'libraryButton': require('./components/libraryButton.js'),'likeButton': require('./components/likeButton.js'),'markButton': require('./components/markButton.js'),'modalDialog': require('./components/modalDialog.js'),'moderateCommentForm': require('./components/moderateCommentForm.js'),'notifications': require('./components/notifications.js'),'subToCollectionButton': require('./components/subToCollectionButton.js'),'subToSeriesButton': require('./components/subToSeriesButton.js'),'subscribeButton': require('./components/subscribeButton.js'),'userAvatar': require('./components/userAvatar.js'),'videoPlayer': require('./components/videoPlayer.js'),'worksWidget': require('./components/worksWidget.js')};\r\n var componentLoader = {\r\n getConfig: function (name, callback) {\r\n var componentName = _.camelCase(name);\r\n var viewModelConstructor = componentViewModels[componentName];\r\n if (viewModelConstructor === undefined) {\r\n throw new Error(\"Unable to find view model for component \\\"\" + componentName + \"\\\"\");\r\n }\r\n callback({\r\n viewModel: {\r\n createViewModel: function (params, componentInfo) {\r\n var viewModel = new viewModelConstructor.default(params, componentInfo.element, componentInfo.templateNodes);\r\n var appComponentName = _.upperFirst(componentName);\r\n window[\"AppComponents\"][appComponentName] = viewModel;\r\n return viewModel;\r\n }\r\n },\r\n template: { fromUrl: componentName },\r\n synchronous: true\r\n });\r\n },\r\n loadTemplate: function (name, templateConfig, callback) {\r\n if (templateConfig.fromUrl) {\r\n AjaxUtils_1.AjaxUtils.getTemplate(templateConfig.fromUrl).done(function (result) {\r\n if (_.isString(result)) {\r\n ko.components.defaultLoader.loadTemplate(name, result, callback);\r\n }\r\n });\r\n }\r\n else {\r\n callback(null);\r\n }\r\n }\r\n };\r\n ko.components.loaders.unshift(componentLoader);\r\n});\r\n//# sourceMappingURL=componentLoader.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/BaseComponent\", \"knockout\", \"../utils/ajaxUtils\", \"../utils/metrikaUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var BaseComponent_1 = require(\"./base/BaseComponent\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var metrikaUtils_1 = require(\"../utils/metrikaUtils\");\r\n var AddToLibraryButtonComponent = (function (_super) {\r\n __extends(AddToLibraryButtonComponent, _super);\r\n function AddToLibraryButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.libraryId = ko.observable();\r\n this.isActive = ko.pureComputed(function () {\r\n return !!_this.libraryId();\r\n });\r\n this.libraryId(params.libraryId);\r\n this.workId = params.workId;\r\n this.inlineBtn = params.inlineBtn;\r\n }\r\n AddToLibraryButtonComponent.prototype.toggle = function () {\r\n var _this = this;\r\n if (!app.ensureAuth()) {\r\n return;\r\n }\r\n if (this.processing())\r\n return;\r\n this.processing(true);\r\n if (this.isActive()) {\r\n ajaxUtils_1.AjaxUtils.post(\"work/removeFromLibrary\", { id: this.libraryId() })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.libraryId(null);\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n else {\r\n ajaxUtils_1.AjaxUtils.post(\"work/addToLibrary\", { workId: this.workId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n try {\r\n metrikaUtils_1.default.reachGoal(\"addToLibrary\", { workId: _this.workId });\r\n }\r\n catch (ex) { }\r\n _this.libraryId(result.data);\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n };\r\n return AddToLibraryButtonComponent;\r\n }(BaseComponent_1.default));\r\n ko.components.register(\"add-to-library-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = AddToLibraryButtonComponent;\r\n});\r\n//# sourceMappingURL=addToLibraryButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"lodash\", \"../utils/localStorageUtils\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var localStorageUtils_1 = require(\"../utils/localStorageUtils\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var AsideWidgetComponent = (function (_super) {\r\n __extends(AsideWidgetComponent, _super);\r\n function AsideWidgetComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.isLoading = ko.observable(true);\r\n this.widgetHtml = ko.observable();\r\n this.url = params.url;\r\n this.title = params.title;\r\n this.requestParams = params.rParams || {};\r\n this.localeStorageParams = params.lsParams || {};\r\n this.css = params.css;\r\n var cache = params.cache || false;\r\n _.each(this.localeStorageParams, function (rKey, lsKey) {\r\n _this.requestParams[rKey] = localStorageUtils_1.default.get(lsKey);\r\n });\r\n ajaxUtils_1.AjaxUtils.get(this.url, this.requestParams, cache)\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n console.warn(result.messages[0]);\r\n $(element).hide();\r\n return;\r\n }\r\n _this.widgetHtml(result.data.html);\r\n setTimeout(function () {\r\n $(element).find(\".widget-content\").addClass(\"in\");\r\n });\r\n }).always(function () {\r\n _this.isLoading(false);\r\n });\r\n }\r\n return AsideWidgetComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"aside-widget\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = AsideWidgetComponent;\r\n});\r\n//# sourceMappingURL=asideWidget.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"../../viewModels/base/baseViewModel\", \"knockout\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseViewModel_1 = require(\"../../viewModels/base/baseViewModel\");\r\n var ko = require(\"knockout\");\r\n var BaseComponent = (function (_super) {\r\n __extends(BaseComponent, _super);\r\n function BaseComponent(params, element, templateNodes) {\r\n _super.call(this);\r\n this.processing = ko.observable(false);\r\n this.params = params;\r\n this.element = element;\r\n this.templateNodes = templateNodes;\r\n }\r\n return BaseComponent;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = BaseComponent;\r\n});\r\n//# sourceMappingURL=baseComponent.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/BaseComponent\", \"knockout\", \"jquery\", \"lodash\", \"numeral\", \"./modalDialog\", \"moment\", \"jquery.countdown\", \"../utils/merchantUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var BaseComponent_1 = require(\"./base/BaseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var numeral = require(\"numeral\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var moment = require(\"moment\");\r\n require(\"jquery.countdown\");\r\n var merchantUtils_1 = require(\"../utils/merchantUtils\");\r\n var BuyButtonComponent = (function (_super) {\r\n __extends(BuyButtonComponent, _super);\r\n function BuyButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.priceFormat = \"0,0.[00]\";\r\n this.discount = ko.observable();\r\n this.priceText = ko.observable();\r\n this.mode = ko.observable(\"work\");\r\n this.stage = ko.observable(\"startBuyingWork\");\r\n this.rewardOptions = [10, 25, 50, 75, 100, 150];\r\n this.isCustomRewardValue = ko.observable(false);\r\n this.minReward = 10;\r\n this.maxReward = 15000;\r\n this.rewardStep = 10;\r\n this.savePaymentMethod = ko.observable();\r\n this.savePaymentMethodDontAsk = ko.observable();\r\n this.selectedPaymentMethod = ko.observable();\r\n this.rewardValue = ko.observable(25).extend({\r\n required: {\r\n onlyIf: function () {\r\n return (_this.stage() === \"setRewardAmount\" || _this.stage() === \"setBalanceAmount\") && _this.isCustomRewardValue();\r\n }\r\n },\r\n min: this.minReward,\r\n max: this.maxReward\r\n });\r\n this.rewardValueText = ko.pureComputed(function () {\r\n return numeral(_this.rewardValue()).format(_this.priceFormat);\r\n });\r\n this.reputationBonusText = ko.pureComputed(function () {\r\n var rewardValue = _this.rewardValue();\r\n if (rewardValue <= 25)\r\n return 15;\r\n if (rewardValue <= 100)\r\n return 30;\r\n return 50;\r\n });\r\n this.decreaseCustomRewardValue = function () {\r\n var val = _this.rewardValue() - _this.rewardStep;\r\n if (val >= _this.minReward) {\r\n _this.rewardValue(val);\r\n }\r\n };\r\n this.increaseCustomRewardValue = function () {\r\n var val = _this.rewardValue() + _this.rewardStep;\r\n if (val <= _this.maxReward) {\r\n _this.rewardValue(val);\r\n }\r\n };\r\n this.rewardTitleOptions = merchantUtils_1.default.getRewardTitleOptions();\r\n this.rewardTitleMaxLength = 45;\r\n this.rewardTitle = ko.observable(\"Отличная книга!\").extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.stage() === \"setRewardAmount\" && _this.isCustomRewardValue();\r\n }\r\n },\r\n minLengthLength: { params: 3, message: \"Слишком короткое название\" },\r\n maxLength: { params: this.rewardTitleMaxLength, message: \"Название не может быть длиннее 45-ти символов\" }\r\n });\r\n this.rewardTitleHint = ko.pureComputed(function () {\r\n var title = _this.rewardTitle() || \"\";\r\n var characters = title.length;\r\n return characters + \"/\" + _this.rewardTitleMaxLength;\r\n });\r\n this.priceWithReward = ko.pureComputed(function () {\r\n var mode = _this.mode();\r\n var reward = parseInt(_this.rewardValue());\r\n return mode === \"reward\" ? reward : _this.price + reward;\r\n });\r\n this.priceWithRewardText = ko.pureComputed(function () {\r\n return \"\" + numeral(_this.priceWithReward()).format(_this.priceFormat);\r\n });\r\n this.bankcardOptions = ko.observableArray();\r\n this.selectedBankCard = ko.observable();\r\n this.promoCode = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.stage() === \"promoCode\";\r\n }\r\n }\r\n });\r\n this.showBuyModal = function (mode) {\r\n if (_this.disabled || !app.ensureAuth(true)) {\r\n return;\r\n }\r\n _this.mode(mode);\r\n if (mode === \"reward\") {\r\n _this.stage(\"setRewardAmount\");\r\n _this.selectRandomRewardTitle();\r\n _this.showModal({\r\n title: \"Подарить автору награду за книгу\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"buyWorkModal\",\r\n viewModel: _this,\r\n maxWidth: \"600px\",\r\n onSubmit: function () { }\r\n });\r\n }\r\n else if (mode === \"wallet\") {\r\n _this.stage(\"setBalanceAmount\");\r\n _this.workId = -1;\r\n _this.workStatus = 1;\r\n _this.workTitle = \"Пополнение кошелька #\" + _this.userId;\r\n _this.allowDownloads = false;\r\n _this.price = 0;\r\n _this.discount(0);\r\n _this.freezed = false;\r\n _this.rewardsEnabled = false;\r\n _this.coverUrl = \"\";\r\n _this.visible = false;\r\n _this.disabled = false;\r\n _this.fb2FileMaxSize = 0;\r\n _this.rewardTitle(null);\r\n _this.rewardValue(_this.rewardOptions[1]);\r\n if (_this.balanceAmount) {\r\n _this.isCustomRewardValue(true);\r\n _this.rewardValue(_this.balanceAmount);\r\n }\r\n _this.showModal({\r\n title: \"Пополнить кошелек\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"buyWorkModal\",\r\n viewModel: _this,\r\n maxWidth: \"600px\",\r\n onSubmit: function () { }\r\n });\r\n }\r\n else if (mode === \"gift\") {\r\n _this.stage(\"selectPaymentMethod\");\r\n _this.showModal({\r\n title: \"Покупка книги в подарок\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"buyWorkModal\",\r\n viewModel: _this,\r\n maxWidth: \"600px\",\r\n onSubmit: function () { }\r\n });\r\n }\r\n else {\r\n _this.stage(\"startBuyingWork\");\r\n _this.selectRandomRewardTitle();\r\n _this.showModal({\r\n title: \"Оплата доступа к книге\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"buyWorkModal\",\r\n viewModel: _this,\r\n maxWidth: \"600px\",\r\n onSubmit: function () { }\r\n });\r\n }\r\n };\r\n this.checkSavedBankCards = function (el, payMethod) {\r\n _this.selectedPaymentMethod(payMethod);\r\n merchantUtils_1.default.checkSavedBankCards(el, payMethod, _this, app);\r\n };\r\n this.deleteSavedCard = function () {\r\n merchantUtils_1.default.deleteSavedCard(_this);\r\n };\r\n this.goToStage = function (stage, mode) {\r\n merchantUtils_1.default.goToStage(stage, mode, _this);\r\n };\r\n this.payMethodEnabled = function (payMethod) {\r\n return merchantUtils_1.default.payMethodEnabled(payMethod, _this);\r\n };\r\n this.selectPayMethod = function (el, payMethod) {\r\n _this.selectedPaymentMethod(payMethod);\r\n merchantUtils_1.default.createOder(el, payMethod, _this, null);\r\n };\r\n this.selectReward = function (value) {\r\n merchantUtils_1.default.selectReward(value, _this);\r\n };\r\n this.previousRandomTitles = [];\r\n this.submitPromoCode = function () {\r\n merchantUtils_1.default.submitPromoCode(_this, function () { _this.modal.hide(); });\r\n };\r\n this.workId = params.workId;\r\n this.workStatus = params.workStatus;\r\n this.workTitle = JSON.parse(\"\\\"\" + params.workTitle + \"\\\"\");\r\n this.allowDownloads = params.allowDownloads;\r\n this.price = params.price;\r\n this.discount(params.discount);\r\n this.freezed = params.freezed;\r\n this.rewardsEnabled = params.rewardsEnabled;\r\n this.coverUrl = params.coverUrl;\r\n this.visible = params.visible;\r\n this.disabled = params.disabled;\r\n this.fb2FileMaxSize = params.fb2FileMaxSize;\r\n this.saveCard = params.saveCard;\r\n this.userId = params.userId;\r\n this.balance = params.balance;\r\n this.balanceAmount = params.balanceAmount;\r\n this.paySelectionMin = params.paySelectionMin;\r\n this.paySelectionCommission = params.paySelectionCommission;\r\n this.giftsEnabled = params.giftsEnabled;\r\n this.isPurchased = params.isPurchased;\r\n this.cloudPaymentsCommission = params.cloudPaymentsCommission;\r\n this.cloudPaymentsMin = params.cloudPaymentsMin;\r\n if (params.discount) {\r\n var that = this;\r\n this.oldPrice = params.price;\r\n this.oldPriceText = numeral(this.oldPrice).format(this.priceFormat) + \" \\u20BD\";\r\n this.discountText = this.discount() + \"%\";\r\n this.price = this.price - this.price * this.discount() / 100;\r\n var discountCountdown = $(\"#discountCountDown\");\r\n var moreThan24Hours = moment(params.discountEnd).diff(moment(), \"h\") > 24;\r\n discountCountdown[\"countdown\"](moment(params.discountEnd).toDate(), function (event) {\r\n if (event.handleObj.type === \"stop\") {\r\n that.price = that.oldPrice;\r\n that.priceText(that.oldPrice);\r\n that.discount(0);\r\n }\r\n else {\r\n if (moreThan24Hours) {\r\n $(this).html(event.strftime(\"%-D %!D:день,дня; %H:%M:%S\"));\r\n }\r\n else {\r\n $(this).html(event.strftime(\"%H:%M:%S\"));\r\n }\r\n }\r\n });\r\n }\r\n if (params.rewardOptions)\r\n this.rewardOptions = params.rewardOptions;\r\n if (params.rewardStep)\r\n this.rewardStep = params.rewardStep;\r\n this.downloadText = \"Доступно только чтение на сайте. \";\r\n if (params.downloadText) {\r\n this.downloadText += params.downloadText;\r\n }\r\n if (params.disabledPayMethods)\r\n this.disabledPayMethods = params.disabledPayMethods;\r\n else\r\n this.disabledPayMethods = null;\r\n this.rewardValue.subscribe(function (newVal) {\r\n if (parseFloat(newVal) > _this.maxReward) {\r\n _this.rewardValue(_this.maxReward);\r\n }\r\n });\r\n this.priceText(numeral(this.price).format(this.priceFormat));\r\n this.validation = ko.validatedObservable(this);\r\n merchantUtils_1.default.initButton(this);\r\n }\r\n BuyButtonComponent.prototype.selectRandomRewardTitle = function () {\r\n var index = _.random(0, this.rewardTitleOptions.length - 1);\r\n merchantUtils_1.default.selectRewardTitle(index, this);\r\n };\r\n return BuyButtonComponent;\r\n }(BaseComponent_1.default));\r\n ko.components.register(\"buy-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = BuyButtonComponent;\r\n});\r\n//# sourceMappingURL=buyButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"toastr\", \"../viewModels/base/validatedViewModel\", \"../utils/ajaxUtils\", \"./modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var validatedViewModel_1 = require(\"../viewModels/base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var ChatRemoveButtonComponent = (function (_super) {\r\n __extends(ChatRemoveButtonComponent, _super);\r\n function ChatRemoveButtonComponent(params) {\r\n _super.call(this, params);\r\n this.userId = params.userId;\r\n }\r\n ChatRemoveButtonComponent.prototype.deleteChat = function () {\r\n var _this = this;\r\n this.init();\r\n setTimeout(function () {\r\n if (_this.validation === undefined) {\r\n _this.initValidation();\r\n }\r\n }, 0);\r\n this.showModal({\r\n title: 'Требуется подтверждение',\r\n message: 'Вы уверены что хотите удалить диалог?',\r\n type: modalDialog_1.ModalType.ConfirmDelete,\r\n onSubmit: function () {\r\n _this.modal.hide();\r\n _this.init();\r\n _this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"pm/deleteChat\", { userId: _this.userId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n toastr.success(\"Вы удалили диалог.\");\r\n ChatRemoveButtonComponent.reloadNotificationCount();\r\n setTimeout(function () {\r\n var url = window.location.pathname;\r\n _this.redirectToPage(url);\r\n }, 2000);\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n });\r\n };\r\n ChatRemoveButtonComponent.prototype.init = function () {\r\n this.errorMessages([]);\r\n };\r\n ChatRemoveButtonComponent.reloadNotificationCount = function () {\r\n var component = window[\"AppComponents\"].Notifications;\r\n if (component) {\r\n component.reload();\r\n }\r\n };\r\n return ChatRemoveButtonComponent;\r\n }(validatedViewModel_1.default));\r\n ko.components.register(\"chat-remove-buttton\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ChatRemoveButtonComponent;\r\n});\r\n//# sourceMappingURL=chatRemoveButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"lodash\", \"../utils/ajaxUtils\", \"../utils/dateTimeUtils\", \"./modalDialog\", \"../utils/imageZoomUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n // @ts-ignore\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var imageZoomUtils_1 = require(\"../utils/imageZoomUtils\");\r\n var CommentFormV1Component = (function (_super) {\r\n __extends(CommentFormV1Component, _super);\r\n function CommentFormV1Component(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.$comments = $(\".comments\");\r\n this.$element = $(this.element);\r\n this.commentData = ko.observable();\r\n this._isTextChange = false;\r\n this.errorMessages = ko.observableArray([]);\r\n this.text = ko.observable(\"\");\r\n this.mode = ko.observable();\r\n this.isIgnored = ko.observable();\r\n this.isPinned = ko.observable();\r\n this.canBePinned = ko.pureComputed(function () {\r\n var commentData = _this.commentData();\r\n return !commentData && _this.canPinned;\r\n });\r\n this.initialized = ko.observable(false);\r\n this.froalaOptions = {\r\n heightMin: 75,\r\n heightMax: 400,\r\n charCounterMax: 25000,\r\n initOnClick: true,\r\n placeholderText: \"Написать комментарий...\",\r\n pastePlain: true,\r\n charCounterCount: true,\r\n imageDefaultDisplay: \"block\",\r\n imageEditButtons: [\"imageReplace\", \"imageAlign\", \"imageDisplay\",\r\n \"imageAlt\", \"imageSize\", \"imageRemove\"],\r\n imageDefaultAlign: \"left\",\r\n htmlAllowedTags: [\r\n \"a\", \"b\", \"blockquote\", \"br\", \"del\", \"div\", \"em\", \"embed\", \"i\",\r\n \"iframe\", \"img\", \"p\", \"small\", \"span\", \"strike\", \"strong\", \"u\"\r\n ],\r\n toolbarButtons: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"emoticons\", \"spoiler\", \"insertLink\", \"insertImage\", \"insertVideo\",\r\n \"clearFormatting\", \"fullscreen\"\r\n ],\r\n toolbarButtonsMD: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"emoticons\", \"spoiler\", \"insertLink\", \"insertImage\", \"insertVideo\",\r\n \"clearFormatting\", \"fullscreen\"\r\n ],\r\n toolbarButtonsSM: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\", \"quote\", \"emoticons\", \"spoiler\", \"insertLink\", \"insertImage\", \"fullscreen\", \"|\", \"undo\", \"redo\"\r\n ],\r\n toolbarButtonsXS: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\", \"quote\", \"emoticons\", \"spoiler\", \"insertLink\", \"insertImage\", \"fullscreen\", \"|\", \"undo\", \"redo\"\r\n ]\r\n };\r\n this.disableSubmit = ko.pureComputed(function () {\r\n var text = _this.text();\r\n var isEmpty = _.isEmpty(text);\r\n if (!isEmpty && !_this._isTextChange) {\r\n _this.setDirtyText(true);\r\n }\r\n else if (isEmpty && _this._isTextChange) {\r\n _this.setDirtyText(false);\r\n }\r\n return isEmpty;\r\n });\r\n this.submit = function () {\r\n if (_this.processing())\r\n return;\r\n _this.processing(true);\r\n _this.errorMessages([]);\r\n var text = _this.text();\r\n var data = _.assign(_this.commentData() || {}, {\r\n rootId: _this.rootId,\r\n rootType: _this.rootType,\r\n text: text,\r\n isPinned: _this.isPinned()\r\n });\r\n ajaxUtils_1.AjaxUtils.post(\"comment/submit\", data)\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n if (result.data.isPinned) {\r\n $.pjax.reload(\"#pjax-container\");\r\n return;\r\n }\r\n _this.onSubmit(result.data);\r\n _this.onSubmit = _this.defaultOnSubmit;\r\n _this.initData();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n this.rootId = params.rootId;\r\n this.rootType = params.rootType;\r\n this.canPinned = params.canPinned;\r\n this.onSubmit = this.defaultOnSubmit;\r\n this.initData();\r\n this.$element.find(\"textarea\").on(\"froalaEditor.initialized\", function (e, editor) {\r\n _this.initialized(true);\r\n });\r\n }\r\n CommentFormV1Component.prototype.showConfirmModal = function (submitFunc) {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Вы уверены?\",\r\n message: \"Комментарий не отправлен и не будет сохранён. Продолжить?\",\r\n maxWidth: \"400px\",\r\n type: modalDialog_1.ModalType.Confirm,\r\n okBtnText: \"Продолжить\",\r\n onSubmit: function () {\r\n submitFunc();\r\n _this.modal.hide();\r\n }\r\n });\r\n };\r\n CommentFormV1Component.prototype.setDirtyText = function (value) {\r\n if (value === void 0) { value = true; }\r\n this._isTextChange = value;\r\n };\r\n CommentFormV1Component.prototype.startEditing = function (comment, onSubmit, onCancel, onDelete) {\r\n this.commentData(comment);\r\n this.onSubmit = onSubmit;\r\n this.onCancel = onCancel;\r\n this.onDelete = onDelete;\r\n this.resetState();\r\n this.mode(\"edit\");\r\n this.isIgnored(comment.isIgnored);\r\n this.isPinned(comment.isPinned);\r\n $(\".edit-reply textarea\").froalaEditor(\"events.focus\");\r\n };\r\n CommentFormV1Component.prototype.startCreating = function (comment, onSubmit) {\r\n this.commentData(comment);\r\n this.onSubmit = onSubmit;\r\n this.resetState();\r\n this.mode(\"new\");\r\n this.isIgnored(comment.isIgnored);\r\n this.isPinned(comment.isPinned);\r\n };\r\n CommentFormV1Component.prototype.resetState = function () {\r\n var text = this.commentData() ? this.commentData().text : \"\";\r\n this.text(text);\r\n this.errorMessages([]);\r\n };\r\n CommentFormV1Component.prototype.cancel = function () {\r\n this.initData();\r\n this.onSubmit = this.defaultOnSubmit;\r\n if (this.onCancel) {\r\n this.onCancel();\r\n }\r\n };\r\n CommentFormV1Component.prototype.defaultOnSubmit = function (data) {\r\n var $html = $(data.html);\r\n this.$comments.prepend($html);\r\n dateTimeUtils_1.default.displayTime($html);\r\n imageZoomUtils_1.default.init($html);\r\n };\r\n CommentFormV1Component.prototype.remove = function () {\r\n var _this = this;\r\n if (this.processing())\r\n return;\r\n this.processing(true);\r\n this.errorMessages([]);\r\n ajaxUtils_1.AjaxUtils.post(\"comment/delete\", { id: this.commentData().id })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.onDelete(result.data);\r\n _this.initData();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n CommentFormV1Component.prototype.initData = function () {\r\n this.commentData(null);\r\n this.resetState();\r\n this.mode(\"new\");\r\n this.isIgnored(false);\r\n this.isPinned(false);\r\n };\r\n Object.defineProperty(CommentFormV1Component.prototype, \"isTextChange\", {\r\n get: function () {\r\n return this._isTextChange;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return CommentFormV1Component;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"comment-form-v1\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = CommentFormV1Component;\r\n});\r\n//# sourceMappingURL=commentFormV1.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"bootstrap\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n require(\"bootstrap\");\r\n /** Компонент для загрузки диалогового окна удаления пользователя */\r\n var DeleteUserFormComponent = (function (_super) {\r\n __extends(DeleteUserFormComponent, _super);\r\n function DeleteUserFormComponent() {\r\n _super.apply(this, arguments);\r\n }\r\n return DeleteUserFormComponent;\r\n }(baseComponent_1.default));\r\n exports.DeleteUserFormComponent = DeleteUserFormComponent;\r\n var componentName = \"delete-user-form\";\r\n if (!ko.components.isRegistered(componentName)) {\r\n ko.components.register(componentName, {});\r\n }\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = DeleteUserFormComponent;\r\n});\r\n//# sourceMappingURL=deleteUserForm.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var DisputedPostsComponent = (function (_super) {\r\n __extends(DisputedPostsComponent, _super);\r\n function DisputedPostsComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.items = ko.observableArray();\r\n var url;\r\n switch (params.type) {\r\n case \"posts\":\r\n this.title = \" Последние комментарии\";\r\n url = \"widget/disputedPosts\";\r\n break;\r\n case \"works\":\r\n this.title = \" Последние комментарии\";\r\n url = \"widget/disputedWorks\";\r\n break;\r\n case \"arts\":\r\n this.title = \" Последние комментарии\";\r\n url = \"widget/disputedArts\";\r\n break;\r\n default:\r\n console.error(\"Unsupported widget type.\");\r\n return;\r\n }\r\n ajaxUtils_1.AjaxUtils.get(url, {})\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.items(result.data);\r\n });\r\n }\r\n return DisputedPostsComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"disputed-items\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = DisputedPostsComponent;\r\n});\r\n//# sourceMappingURL=disputedItems.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"../utils/ajaxUtils\", \"../utils/imageUtils\", \"./modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var imageUtils_1 = require(\"../utils/imageUtils\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var EditAvatarComponent = (function (_super) {\r\n __extends(EditAvatarComponent, _super);\r\n function EditAvatarComponent(params, element, templateNodes) {\r\n _super.call(this, params, element, templateNodes);\r\n this.stage = ko.observable(\"uploadImage\");\r\n this.fileType = \"image/png\";\r\n this.isLoading = ko.observable(false);\r\n }\r\n EditAvatarComponent.prototype.showEditModal = function () {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.stage(\"uploadImage\");\r\n this.showModal({\r\n title: \"Загрузка фотографии\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"editAvatarModal\",\r\n viewModel: this,\r\n maxWidth: \"580px\",\r\n onShow: function ($modal) {\r\n var $dropZone = $modal.find((\".drop-zone\"));\r\n imageUtils_1.default.createDropZone($dropZone, function (files) {\r\n _this.processFiles(files);\r\n });\r\n $modal.find(\"#editAvatarInput\").on(\"change\", function (e) {\r\n _this.onSelectImage(e);\r\n });\r\n }\r\n });\r\n };\r\n EditAvatarComponent.prototype.showConfirmDeleteModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление фотографии\",\r\n message: \"Вы уверены, что хотите удалить фотографию?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"account/deleteProfileImage\", {})\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.fullReloadPage();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n EditAvatarComponent.prototype.selectImage = function () {\r\n var $input = this.modal.getModal().find(\"input[type='file']\");\r\n $input.click();\r\n };\r\n EditAvatarComponent.prototype.onSelectImage = function (event) {\r\n this.errorMessages([]);\r\n var $input = $(event.target), files = event.target.files;\r\n this.processFiles(files);\r\n $input.val(\"\");\r\n };\r\n EditAvatarComponent.prototype.processFiles = function (files) {\r\n var _this = this;\r\n if (files && files.length) {\r\n var file = files[0];\r\n if (file.size > 3145728) {\r\n this.errorMessages([\"Слишком большой размер файла. Пожалуйста, выберите файл размером не более 3 мб.\"]);\r\n return;\r\n }\r\n if (!/^image\\/\\w+$/.test(file.type)) {\r\n this.errorMessages([\"Данный формат файла не поддерживается. Пожалуйста, выберите изображение.\"]);\r\n return;\r\n }\r\n this.isLoading(true);\r\n this.stage(\"cropImage\");\r\n var blobUrl = URL.createObjectURL(file);\r\n var windowWidth = $(window).width();\r\n var windowHeight = $(window).height();\r\n imageUtils_1.default.getImageSize(blobUrl).done(function (imageSize) {\r\n if (imageSize.width < 150 || imageSize.height < 150) {\r\n _this.errorMessages([\"Слишком маленький размер фотографии.\"]);\r\n _this.stage(\"uploadImage\");\r\n _this.isLoading(false);\r\n return;\r\n }\r\n _this.fileType = file.type || _this.fileType;\r\n var cropperSize = { width: Math.min(550, windowWidth - 70), height: Math.min(300, windowHeight - 70) };\r\n var cropperAspectRatio = cropperSize.width / cropperSize.height;\r\n var imageAspectRatio = imageSize.width / imageSize.height;\r\n var scale = 1;\r\n if (imageAspectRatio >= cropperAspectRatio) {\r\n scale = cropperSize.height / imageSize.height;\r\n }\r\n else {\r\n scale = cropperSize.width / imageSize.width;\r\n }\r\n var cropperWidth = _this.limit(scale * imageSize.width, 160, cropperSize.width);\r\n var cropperHeight = _this.limit(scale * imageSize.height, 160, cropperSize.height);\r\n var minCropBoxWidth = Math.max(cropperWidth, cropperHeight);\r\n var minCropBoxHeight = minCropBoxWidth;\r\n if (scale < 1) {\r\n minCropBoxWidth = 160 * cropperSize.width / imageSize.width;\r\n minCropBoxHeight = 160 * cropperSize.height / imageSize.height;\r\n }\r\n _this.$editAvatarImage = $(\".edit-avatar-image\");\r\n _this.$editAvatarImage.cropper(\"destroy\");\r\n _this.$editAvatarImage.attr('src', blobUrl);\r\n _this.$editAvatarImage.cropper({\r\n aspectRatio: 1,\r\n autoCropArea: 1,\r\n viewMode: 1,\r\n movable: false,\r\n scalable: false,\r\n zoomable: false,\r\n doubleClickToggle: false,\r\n minContainerWidth: cropperWidth,\r\n minContainerHeight: cropperHeight,\r\n minCropBoxWidth: minCropBoxWidth,\r\n minCropBoxHeight: minCropBoxHeight,\r\n preview: \".image-preview\"\r\n });\r\n _this.$editAvatarImage\r\n .one(\"built.cropper\", function () {\r\n try {\r\n URL.revokeObjectURL(blobUrl); // Revoke when load complete\r\n _this.isLoading(false);\r\n }\r\n catch (e) { }\r\n });\r\n });\r\n }\r\n };\r\n EditAvatarComponent.prototype.backToUpload = function () {\r\n this.stage(\"uploadImage\");\r\n };\r\n EditAvatarComponent.prototype.uploadImage = function (formElement) {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.processing(true);\r\n _this.errorMessages([]);\r\n }, 0);\r\n var dataUrl = this.$editAvatarImage.cropper(\"getCroppedCanvas\")\r\n .toDataURL(this.fileType);\r\n ajaxUtils_1.AjaxUtils.post(\"account/updateAvatarImage\", { \"dataUrl\": dataUrl })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n }\r\n else {\r\n _this.fullReloadPage();\r\n }\r\n })\r\n .always(function () {\r\n setTimeout(function () {\r\n _this.processing(false);\r\n }, 0);\r\n });\r\n };\r\n EditAvatarComponent.prototype.limit = function (value, min, max) {\r\n if (value < min)\r\n return min;\r\n if (value > max)\r\n return max;\r\n return value;\r\n };\r\n return EditAvatarComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"edit-avatar\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = EditAvatarComponent;\r\n});\r\n//# sourceMappingURL=editAvatar.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"./base/baseComponent\", \"../utils/ajaxUtils\", \"../utils/imageUtils\", \"./modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var imageUtils_1 = require(\"../utils/imageUtils\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var EditProfileBgComponent = (function (_super) {\r\n __extends(EditProfileBgComponent, _super);\r\n function EditProfileBgComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.imageUrl = ko.observable(this.params.url);\r\n this.status = this.params.status;\r\n this.fio = this.params.fio;\r\n this.isVerified = this.params.isVerified;\r\n this.profileUrl = this.params.profileUrl;\r\n this.isDefaultBg = this.params.isDefaultBg;\r\n this.bgImageUrl = ko.pureComputed(function () {\r\n return \"url(\" + _this.imageUrl() + \")\";\r\n });\r\n this.editingBg = ko.observable(false);\r\n this.currentBgPosition = { x: 0, y: 0 };\r\n this.file = undefined;\r\n this.galleryUrl = undefined;\r\n this.galeryImages = ko.observableArray([]);\r\n this.choiseFromGalery = function (image) {\r\n _this.modal.hide();\r\n _this.imageUrl(image.url);\r\n _this.galleryUrl = image.url;\r\n _this.file = undefined;\r\n _this.editingBg(true);\r\n imageUtils_1.default.getImageSize(image.url).done(function (imageSize) {\r\n _this.enableImageResize(imageSize);\r\n });\r\n };\r\n this.processFiles = function (files) {\r\n if (files && files.length) {\r\n var file = files[0];\r\n if (!/^image\\/\\w+$/.test(file.type)) {\r\n _this.errorMessages([\"Пожалуйста, выберите изображение.\"]);\r\n return;\r\n }\r\n try {\r\n URL.revokeObjectURL(_this.imageUrl());\r\n }\r\n catch (e) { }\r\n var blobUrl_1 = URL.createObjectURL(file);\r\n _this.file = file;\r\n _this.galleryUrl = undefined;\r\n imageUtils_1.default.getImageSize(blobUrl_1).done(function (imageSize) {\r\n if (imageSize.width < 1140 || imageSize.height < 250) {\r\n _this.errorMessages([\"Слишком маленькое изображение. Пожалуйста, выберите изображение побольше.\"]);\r\n return;\r\n }\r\n _this.modal.hide();\r\n _this.imageUrl(blobUrl_1);\r\n _this.editingBg(true);\r\n setTimeout(function () {\r\n _this.enableImageResize(imageSize);\r\n }, 0);\r\n });\r\n }\r\n };\r\n this.editingBg.subscribe(function (value) {\r\n if (value) {\r\n $(\".my-profile\").addClass(\"editing-bg\");\r\n }\r\n else {\r\n $(\".my-profile\").removeClass(\"editing-bg\");\r\n }\r\n });\r\n }\r\n EditProfileBgComponent.prototype.showEditModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Фоновое изображение\",\r\n templateId: \"editProfileBgTemplate\",\r\n type: modalDialog_1.ModalType.Custom,\r\n maxWidth: \"700px\",\r\n viewModel: this,\r\n onShow: function ($modal) {\r\n var $dropZone = $modal.find((\".drop-zone\"));\r\n imageUtils_1.default.createDropZone($dropZone, function (files) { return _this.processFiles(files); });\r\n $modal.find(\"#editBgInput\").on(\"change\", function (e) {\r\n _this.onSelectImage(e);\r\n });\r\n var imgGaleryRootUrl = window[\"app\"].rootUrl + \"dist/images/bgimages/\";\r\n _this.galeryImages([]);\r\n for (var i = 1; i <= 38; i++) {\r\n _this.galeryImages.push({\r\n url: imgGaleryRootUrl + \"full/\" + i + \".jpg\",\r\n thumb: imgGaleryRootUrl + \"thumbnails/\" + i + \".jpg\"\r\n });\r\n }\r\n $($modal).find(\"a[data-toggle='tab']\").on(\"show.bs.tab\", function (e) {\r\n if ($(e.target).attr(\"href\") === \"#gallery\") {\r\n $(\"#gallery\").find(\"img\").each(function (index, el) {\r\n var $el = $(el);\r\n $el.attr(\"src\", $el.attr(\"lazy-src\"));\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n EditProfileBgComponent.prototype.showConfirmDeleteModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление фонового изображения\",\r\n message: \"Вы уверены, что хотите удалить фоновое изображение?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"account/deleteProfileBgImage\", {})\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.fullReloadPage();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n EditProfileBgComponent.prototype.selectImage = function () {\r\n var $input = this.modal.getModal().find(\"input[type='file']\");\r\n $input.click();\r\n };\r\n EditProfileBgComponent.prototype.uploadImage = function (formElement) {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.processing(true);\r\n _this.errorMessages([]);\r\n }, 0);\r\n var formData = new FormData();\r\n if (this.file) {\r\n formData.append(\"file\", this.file);\r\n }\r\n else if (this.galleryUrl) {\r\n formData.append(\"galleryUrl\", this.galleryUrl);\r\n }\r\n formData.append(\"x\", this.currentBgPosition.x);\r\n formData.append(\"y\", this.currentBgPosition.y);\r\n this.currentAjaxRejuest = ajaxUtils_1.AjaxUtils.uploadFile(\"account/updateProfileBgImage\", formData);\r\n this.currentAjaxRejuest.done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(\"Произошла ошибка во время загрузки изображения. Попробуйте повторить загрузку через несколько минут.\");\r\n }\r\n else {\r\n _this.fullReloadPage();\r\n }\r\n }).always(function () {\r\n _this.currentAjaxRejuest = null;\r\n setTimeout(function () {\r\n _this.processing(false);\r\n }, 0);\r\n });\r\n };\r\n EditProfileBgComponent.prototype.onSelectImage = function (event) {\r\n var files = event.target.files;\r\n this.processFiles(files);\r\n $(event.target).val(\"\");\r\n };\r\n EditProfileBgComponent.prototype.cancelBgEditing = function () {\r\n try {\r\n URL.revokeObjectURL(this.imageUrl());\r\n if (this.currentAjaxRejuest) {\r\n this.currentAjaxRejuest.abort();\r\n this.currentAjaxRejuest = null;\r\n }\r\n }\r\n catch (e) { }\r\n this.imageUrl(this.params.url);\r\n this.editingBg(false);\r\n var $window = $(window), $cover = $(\".cover\");\r\n $window.off(\"mousemove touchmove\");\r\n $window.off(\"mouseup touchend mouseleave\");\r\n $cover.css(\"background-position\", \"0 0\");\r\n $cover.off(\"mousedown touchstart\");\r\n this.modal.hide();\r\n };\r\n EditProfileBgComponent.prototype.enableImageResize = function (imageSize) {\r\n var _this = this;\r\n var $cover = $(\".editing-bg .cover\"), $window = $(window);\r\n // Helper function to guarantee a value between low and hi unless bool is false\r\n var limit = function (low, hi, value) {\r\n if (value < low)\r\n return low;\r\n if (value > hi)\r\n return hi;\r\n return value;\r\n };\r\n var modifyEventForTouch = function (e) {\r\n e.clientX = e.originalEvent.touches[0].clientX;\r\n e.clientY = e.originalEvent.touches[0].clientY;\r\n };\r\n var imageDimensions = this.getImageDimensions(imageSize, $cover);\r\n $cover.on(\"mousedown touchstart\", function (e) {\r\n if (e.target !== $cover[0]) {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (e.originalEvent[\"touches\"]) {\r\n modifyEventForTouch(e);\r\n }\r\n else if (e.which !== 1) {\r\n return;\r\n }\r\n var x0 = e.clientX, y0 = e.clientY, pos = $cover.css(\"background-position\").match(/(-?\\d+).*?\\s(-?\\d+)/) || [], xPos = parseInt(pos[1]) || 0, yPos = parseInt(pos[2]) || 0;\r\n $window.on(\"mousemove touchmove\", function (e) {\r\n e.preventDefault();\r\n if (e.originalEvent[\"touches\"]) {\r\n modifyEventForTouch(e);\r\n }\r\n var x = e.clientX, y = e.clientY;\r\n xPos = limit($cover.innerWidth() - imageDimensions.width, 0, xPos + x - x0);\r\n yPos = limit($cover.innerHeight() - imageDimensions.height + 1, 0, yPos + y - y0);\r\n x0 = x;\r\n y0 = y;\r\n $cover.css(\"background-position\", xPos + \"px \" + yPos + \"px\");\r\n _this.currentBgPosition = {\r\n x: xPos,\r\n y: yPos\r\n };\r\n });\r\n $window.on(\"mouseup touchend\", function () {\r\n $window.off(\"mousemove touchmove\");\r\n $window.off(\"mouseup touchend.dbg mouseleave\");\r\n });\r\n });\r\n };\r\n EditProfileBgComponent.prototype.getImageDimensions = function (imageSize, $container) {\r\n var imageDimensions = { width: imageSize.width, height: imageSize.height };\r\n var elementWidth = $container.innerWidth(), elementHeight = $container.innerHeight(), elementAspectRatio = elementWidth / elementHeight, imageAspectRatio = imageSize.width / imageSize.height;\r\n var scale;\r\n if (imageAspectRatio >= elementAspectRatio) {\r\n scale = elementHeight / imageSize.height;\r\n }\r\n else {\r\n scale = elementWidth / imageSize.width;\r\n }\r\n imageDimensions.width = imageSize.width * scale;\r\n imageDimensions.height = imageSize.height * scale;\r\n return imageDimensions;\r\n };\r\n return EditProfileBgComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"edit-profile-bg\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = EditProfileBgComponent;\r\n});\r\n//# sourceMappingURL=editProfileBg.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"../viewModels/base/validatedViewModel\", \"../utils/ajaxUtils\", \"./modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"../viewModels/base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var TargetType;\r\n (function (TargetType) {\r\n TargetType[TargetType[\"User\"] = 0] = \"User\";\r\n TargetType[TargetType[\"Work\"] = 1] = \"Work\";\r\n TargetType[TargetType[\"Post\"] = 2] = \"Post\";\r\n TargetType[TargetType[\"Review\"] = 3] = \"Review\";\r\n TargetType[TargetType[\"Comment\"] = 4] = \"Comment\";\r\n TargetType[TargetType[\"Collection\"] = 5] = \"Collection\";\r\n TargetType[TargetType[\"Art\"] = 6] = \"Art\";\r\n })(TargetType || (TargetType = {}));\r\n var FeedbackFormComponent = (function (_super) {\r\n __extends(FeedbackFormComponent, _super);\r\n function FeedbackFormComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params);\r\n this.commentMaxLength = 1000;\r\n this.targetId = ko.observable();\r\n this.targetType = ko.observable();\r\n this.targetTypeAsString = ko.pureComputed(function () {\r\n return TargetType[_this.targetType()];\r\n });\r\n this.url = ko.observable();\r\n this.title = ko.pureComputed(function () {\r\n var title = \"Жалоба на \";\r\n switch (_this.targetType()) {\r\n case TargetType.User:\r\n title += \"пользователя\";\r\n break;\r\n case TargetType.Work:\r\n title += \"произведение\";\r\n break;\r\n case TargetType.Post:\r\n title += \"запись в блоге\";\r\n break;\r\n case TargetType.Review:\r\n title += \"рецензию\";\r\n break;\r\n case TargetType.Comment:\r\n title += \"комментарий\";\r\n break;\r\n case TargetType.Collection:\r\n title += \"подборку\";\r\n break;\r\n case TargetType.Art:\r\n title += \"иллюстрацию\";\r\n break;\r\n }\r\n return title;\r\n });\r\n this.comment = ko.observable(\"\");\r\n this.commentHint = ko.pureComputed(function () {\r\n var comment = _this.comment() || \"\";\r\n return comment.length + \"/\" + _this.commentMaxLength;\r\n });\r\n this.categories = ko.pureComputed(function () {\r\n var result = [];\r\n switch (_this.targetType()) {\r\n case TargetType.User:\r\n result = [\r\n \"Нарушение правил\",\r\n \"Оскорбление\",\r\n \"Спам\",\r\n \"Остальное\"\r\n ];\r\n break;\r\n case TargetType.Comment:\r\n result = [\r\n \"Нарушение правил\",\r\n \"Оскорбление\",\r\n \"Провокация конфликта\",\r\n \"Спам\",\r\n \"Остальное\"\r\n ];\r\n break;\r\n case TargetType.Post:\r\n result = [\r\n \"Нарушение правил\",\r\n \"Неправильная тема\",\r\n \"Спам\",\r\n \"Остальное\"\r\n ];\r\n break;\r\n case TargetType.Review:\r\n case TargetType.Collection:\r\n result = [\r\n \"Нарушение правил\",\r\n \"Неправильные тэги\",\r\n \"Спам\",\r\n \"Остальное\"\r\n ];\r\n break;\r\n case TargetType.Work:\r\n result = [\r\n \"Неправильный жанр (укажите какой именно)\",\r\n \"Книга продается по подписке и давно не обновлялась автором\",\r\n 'Произведение не соответствует статусу (\"полный текст\", \"в процессе\", \"ознакомительный фрагмент\")',\r\n \"Нарушение авторского права\",\r\n \"Материал для взрослых (18+)\",\r\n \"Нарушение правил сайта\",\r\n \"Спам\",\r\n \"Остальное\"\r\n ];\r\n break;\r\n case TargetType.Art:\r\n result = [\r\n \"Нарушение авторского права\",\r\n \"Материал для взрослых (18+)\",\r\n \"Нарушение правил сайта\",\r\n \"Спам\",\r\n \"Остальное\"\r\n ];\r\n break;\r\n }\r\n return result;\r\n });\r\n this.selectedCategory = ko.observable().extend({\r\n required: {\r\n value: true,\r\n message: \"Пожалуйста, укажите причину жалобы\"\r\n }\r\n });\r\n }\r\n FeedbackFormComponent.prototype.show = function (targetId, targetType, url) {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.targetId(targetId);\r\n this.targetType(TargetType[targetType]);\r\n this.url(url);\r\n if (this.comment()) {\r\n this.comment(null);\r\n }\r\n if (this.selectedCategory()) {\r\n this.selectedCategory(null);\r\n }\r\n setTimeout(function () {\r\n if (_this.validation === undefined) {\r\n _this.initValidation();\r\n }\r\n }, 0);\r\n if (!app.ensureAuth()) {\r\n return;\r\n }\r\n this.showModal({\r\n title: this.title(),\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"feedBackFormModal\",\r\n maxWidth: \"435px\",\r\n viewModel: this\r\n });\r\n };\r\n FeedbackFormComponent.prototype.submit = function () {\r\n var _this = this;\r\n if (this.validation !== undefined && !this.validation.isValid()) {\r\n this.validation.errors.showAllMessages();\r\n return;\r\n }\r\n ;\r\n if (this.processing())\r\n return;\r\n this.processing(true);\r\n this.errorMessages([]);\r\n var data = {\r\n targetId: this.targetId(),\r\n targetType: this.targetTypeAsString(),\r\n url: this.url(),\r\n category: this.selectedCategory(),\r\n comment: this.comment()\r\n };\r\n ajaxUtils_1.AjaxUtils.post(\"feedback/complaint\", data)\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.showModal({\r\n title: _this.title(),\r\n type: modalDialog_1.ModalType.Success,\r\n message: \"Спасибо за то, что помогаете делать наш сервис еще лучше!\",\r\n maxWidth: \"435px\"\r\n });\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n return FeedbackFormComponent;\r\n }(validatedViewModel_1.default));\r\n ko.components.register(\"feedback-form\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = FeedbackFormComponent;\r\n});\r\n//# sourceMappingURL=feedbackForm.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/BaseComponent\", \"knockout\", \"./modalDialog\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var BaseComponent_1 = require(\"./base/BaseComponent\");\r\n var ko = require(\"knockout\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var HideButtonComponent = (function (_super) {\r\n __extends(HideButtonComponent, _super);\r\n function HideButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.isDisliked = ko.observable(false);\r\n this.isSeriesHidden = ko.observable(false);\r\n this.hiddenAuthorIds = ko.observableArray([]);\r\n this.isHidden = ko.observable(false);\r\n this.getHideOptions = ko.pureComputed(function () {\r\n var hideOptions = [];\r\n var isHidden = false;\r\n if (_this.workId) {\r\n if (_this.isDisliked()) {\r\n hideOptions.push({ command: \"Hide\", text: \"Скрывать произведение\", icon: \"icon-book\", checked: true });\r\n isHidden = true;\r\n }\r\n else {\r\n hideOptions.push({ command: \"Hide\", text: \"Скрыть произведение\", icon: \"icon-book\", checked: false });\r\n }\r\n }\r\n if (_this.seriesId) {\r\n if (_this.isSeriesHidden()) {\r\n hideOptions.push({ command: \"Series\", text: \"Скрывать произведения цикла «\" + _this.seriesTitle + \"»\", icon: \"icon-2-books-stack\", checked: true });\r\n isHidden = true;\r\n }\r\n else {\r\n hideOptions.push({ command: \"Series\", text: \"Скрыть произведения цикла «\" + _this.seriesTitle + \"»\", icon: \"icon-2-books-stack\", checked: false });\r\n }\r\n }\r\n if (_this.authors) {\r\n for (var authorId in _this.authors) {\r\n var hiddenAuthorIds = _this.hiddenAuthorIds();\r\n if (hiddenAuthorIds && hiddenAuthorIds.indexOf(parseInt(authorId)) != -1) {\r\n hideOptions.push({ command: \"Author\", authorId: authorId, text: \"Скрывать произведения автора «\" + _this.authors[authorId] + \"»\", icon: \"icon-user\", checked: true });\r\n isHidden = true;\r\n }\r\n else {\r\n hideOptions.push({ command: \"Author\", authorId: authorId, text: \"Скрыть произведения автора «\" + _this.authors[authorId] + \"»\", icon: \"icon-user\", checked: false });\r\n }\r\n }\r\n }\r\n _this.isHidden(isHidden);\r\n return hideOptions;\r\n });\r\n this.showHelp = function () {\r\n _this.showModal({\r\n title: \"Как работает скрытие?\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"hideButtonHelp\",\r\n maxWidth: \"600px\"\r\n });\r\n };\r\n this.updateHidden = function (args) {\r\n if (!app.ensureAuth()) {\r\n return;\r\n }\r\n // Режим переключателя единственной сущности\r\n if (_this.displayMode) {\r\n args = {\r\n checked: _this.isHidden()\r\n };\r\n if (_this.workId) {\r\n args.command = \"Hide\";\r\n }\r\n else if (_this.seriesId) {\r\n args.command = \"Series\";\r\n }\r\n else if (_this.authors) {\r\n args.command = \"Author\";\r\n args.authorId = Object.keys(_this.authors)[0];\r\n }\r\n else\r\n return;\r\n }\r\n var libraryButton = _this.workId ? window[\"AppComponents\"].LibraryButton : null;\r\n var libraryState = libraryButton ? libraryButton.currentState() : \"\";\r\n var params = {\r\n url: \"\",\r\n data: {}\r\n };\r\n if (_this.processing())\r\n return;\r\n _this.processing(true);\r\n if (libraryButton)\r\n libraryButton.processing(true);\r\n if (args.command === \"Hide\") {\r\n libraryState = args.checked ? \"None\" : \"Disliked\";\r\n params.url = \"work/updateLibrary\";\r\n params.data = {\r\n ids: [_this.workId],\r\n state: libraryState\r\n };\r\n }\r\n else if (args.command === \"Series\") {\r\n params.url = \"hide/series\";\r\n params.data = {\r\n id: _this.seriesId,\r\n deleted: args.checked\r\n };\r\n }\r\n else if (args.command === \"Author\") {\r\n params.url = \"hide/author\";\r\n params.data = {\r\n id: args.authorId,\r\n deleted: args.checked\r\n };\r\n }\r\n else\r\n return;\r\n ajaxUtils_1.AjaxUtils.post(params.url, params.data).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n else {\r\n if (args.command === \"Hide\") {\r\n _this.isDisliked(!args.checked);\r\n if (libraryButton)\r\n libraryButton.currentState(libraryState);\r\n }\r\n else if (args.command === \"Series\") {\r\n _this.isSeriesHidden(!args.checked);\r\n }\r\n else if (args.command === \"Author\") {\r\n var authorId = parseInt(args.authorId);\r\n var arr = _this.hiddenAuthorIds();\r\n var index = arr.indexOf(authorId, 0);\r\n if (index > -1) {\r\n arr.splice(index, 1);\r\n }\r\n if (!args.checked)\r\n arr.push(authorId);\r\n _this.hiddenAuthorIds(arr);\r\n }\r\n if (_this.displayMode)\r\n _this.getHideOptions();\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n if (libraryButton)\r\n libraryButton.processing(false);\r\n });\r\n };\r\n this.workId = params.workId;\r\n this.leftMenu = params.leftMenu === true;\r\n this.displayMode = params.displayMode ? params.displayMode : null;\r\n this.isHidden(false);\r\n this.isDisliked(params.isDisliked === true);\r\n this.isSeriesHidden(params.isSeriesHidden === true);\r\n this.seriesId = params.seriesId;\r\n this.seriesTitle = params.seriesTitle;\r\n if (params.hiddenAuthorIds)\r\n this.hiddenAuthorIds(params.hiddenAuthorIds);\r\n this.authors = params.authors;\r\n if (this.displayMode)\r\n this.getHideOptions();\r\n }\r\n return HideButtonComponent;\r\n }(BaseComponent_1.default));\r\n ko.components.register(\"hide-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = HideButtonComponent;\r\n});\r\n//# sourceMappingURL=hideButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"toastr\", \"../viewModels/base/validatedViewModel\", \"../utils/ajaxUtils\", \"./modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var validatedViewModel_1 = require(\"../viewModels/base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var IgnoreListButtonComponent = (function (_super) {\r\n __extends(IgnoreListButtonComponent, _super);\r\n function IgnoreListButtonComponent(params, element, templateNodes) {\r\n _super.call(this, params);\r\n this.commentMaxLength = 500;\r\n this.ignored = ko.observable();\r\n this.userId = params.userId;\r\n this.fio = params.fio;\r\n if (ko.isWriteableObservable(params.ignored)) {\r\n this.ignored = params.ignored;\r\n }\r\n else {\r\n this.ignored(params.ignored);\r\n }\r\n }\r\n IgnoreListButtonComponent.prototype.confirm = function () {\r\n var _this = this;\r\n this.errorMessages([]);\r\n setTimeout(function () {\r\n if (_this.validation === undefined) {\r\n _this.initValidation();\r\n }\r\n }, 0);\r\n this.showModal({\r\n title: \"Добавить в игнор-лист\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"ignoreListModal\",\r\n maxWidth: \"500px\",\r\n viewModel: this\r\n });\r\n };\r\n IgnoreListButtonComponent.prototype.submit = function () {\r\n var _this = this;\r\n this.processing(true);\r\n this.errorMessages([]);\r\n ajaxUtils_1.AjaxUtils.post(\"ignoreList/add\", { userId: this.userId })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"Вы добавили пользователя в игнор-лист.\");\r\n _this.ignored(true);\r\n _this.modal.hide();\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n IgnoreListButtonComponent.prototype.remove = function () {\r\n var _this = this;\r\n this.processing(true);\r\n this.errorMessages([]);\r\n ajaxUtils_1.AjaxUtils.post(\"ignoreList/remove\", { userId: this.userId })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"Вы убрали пользователя из игнор-листа.\");\r\n _this.ignored(false);\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n return IgnoreListButtonComponent;\r\n }(validatedViewModel_1.default));\r\n ko.components.register(\"ignore-list-buttton\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = IgnoreListButtonComponent;\r\n});\r\n//# sourceMappingURL=ignoreListButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/BaseComponent\", \"knockout\", \"lodash\", \"../utils/ajaxUtils\", \"../utils/metrikaUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var BaseComponent_1 = require(\"./base/BaseComponent\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var metrikaUtils_1 = require(\"../utils/metrikaUtils\");\r\n var LibraryButtonComponent = (function (_super) {\r\n __extends(LibraryButtonComponent, _super);\r\n function LibraryButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.currentState = ko.observable(\"None\");\r\n this.stateForDropdown = ko.pureComputed(function () {\r\n var currentState = _this.currentState();\r\n if (currentState === \"None\") {\r\n return { title: \"В библиотеку\", icon: \"icon-plus\" };\r\n }\r\n return _this.getStateInfo(currentState);\r\n });\r\n this.statesToUpdate = ko.pureComputed(function () {\r\n var currentState = _this.currentState();\r\n return _.filter(_this.libraryStates, function (s) {\r\n return s.state !== currentState;\r\n });\r\n });\r\n this.getStateInfo = function (state) {\r\n return _.find(_this.libraryStates, function (s) {\r\n return s.state === state;\r\n });\r\n };\r\n this.updateLibrary = function (stateInfo) {\r\n if (!app.ensureAuth()) {\r\n return;\r\n }\r\n var hideButton = window[\"AppComponents\"].HideButton;\r\n if (_this.processing())\r\n return;\r\n _this.processing(true);\r\n if (hideButton)\r\n hideButton.processing(true);\r\n var state = stateInfo.state;\r\n if (state !== \"None\" && state !== \"Disliked\") {\r\n try {\r\n metrikaUtils_1.default.reachGoal(\"addToLibrary\", { workId: _this.workId, state: state });\r\n }\r\n catch (ex) { }\r\n }\r\n ajaxUtils_1.AjaxUtils.post(\"work/updateLibrary\", {\r\n ids: [_this.workId],\r\n state: state\r\n }).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n else {\r\n _this.currentState(state);\r\n if (hideButton)\r\n hideButton.isDisliked(state == \"Disliked\");\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n if (hideButton)\r\n hideButton.processing(false);\r\n });\r\n };\r\n if (params.format === \"EBook\") {\r\n this.libraryStates = [\r\n { state: \"Reading\", title: \"Читаю\", icon: \"icon-2-library-reading\" },\r\n { state: \"Saved\", title: \"Отложено на потом\", icon: \"icon-2-clock\" },\r\n { state: \"Finished\", title: \"Прочитано\", icon: \"icon-2-library-finished\" }];\r\n }\r\n else if (params.format === \"Audiobook\") {\r\n this.libraryStates = [\r\n { state: \"Reading\", title: \"Слушаю\", icon: \"icon-2-player-play\" },\r\n { state: \"Saved\", title: \"Отложено на потом\", icon: \"icon-2-clock\" },\r\n { state: \"Finished\", title: \"Прослушано\", icon: \"icon-2-library-finished\" }];\r\n }\r\n (_a = this.libraryStates).push.apply(_a, [\r\n { state: \"Disliked\", title: \"Не интересно\", icon: \"icon-eye-slash\" },\r\n { state: \"None\", title: \"Удалить из библиотеки\", icon: \"icon-cross text-danger\" }\r\n ]);\r\n this.currentState(params.state);\r\n this.workId = params.workId;\r\n this.inlineBtn = params.inlineBtn;\r\n this.onlyIcon = params.onlyIcon;\r\n this.leftMenu = params.leftMenu;\r\n var _a;\r\n }\r\n return LibraryButtonComponent;\r\n }(BaseComponent_1.default));\r\n ko.components.register(\"library-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = LibraryButtonComponent;\r\n});\r\n//# sourceMappingURL=libraryButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"numeral\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var numeral = require(\"numeral\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var LikeButtonComponent = (function (_super) {\r\n __extends(LikeButtonComponent, _super);\r\n function LikeButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.voteId = ko.observable();\r\n this.numeral = numeral;\r\n this.isLiked = ko.pureComputed(function () {\r\n return !!_this.voteId();\r\n });\r\n this.likeCount = ko.observable();\r\n this.targetId = params.targetId;\r\n this.type = params.type;\r\n this.disabled = params.disabled;\r\n this.voteId(params.voteId);\r\n this.likeCount(params.likeCount);\r\n var $siblings = $(element).siblings();\r\n this.$btn = $siblings.filter(\".btn-like\");\r\n this.$heart = $siblings.find(\".heart\");\r\n this.$heartContainer = $siblings.find(\".heart-container\");\r\n }\r\n LikeButtonComponent.prototype.toggleLike = function () {\r\n var _this = this;\r\n if (this.disabled)\r\n return;\r\n if (this.$btn.attr(\"disabled\"))\r\n return;\r\n this.$btn.attr(\"disabled\", \"disabled\");\r\n if (this.isLiked()) {\r\n this.$heart.removeClass(\"heart-animation\");\r\n this.$btn.addClass(\"hover-state-canceled\");\r\n this.$btn.on(\"mouseleave\", function () {\r\n _this.$btn.removeClass(\"hover-state-canceled\");\r\n _this.$btn.off(\"mouseleave\");\r\n });\r\n }\r\n else {\r\n this.$heartContainer.css({ overflow: \"visible\" });\r\n this.$btn.removeClass(\"hover-state-canceled\");\r\n this.$heart.addClass(\"heart-animation\");\r\n setTimeout(function () {\r\n _this.$heartContainer.css({ overflow: \"hidden\" });\r\n }, 800);\r\n }\r\n var url = \"\";\r\n switch (this.type) {\r\n case \"Work\":\r\n url = \"work/like\";\r\n break;\r\n case \"Art\":\r\n url = \"art/like\";\r\n break;\r\n case \"Collection\":\r\n url = \"collection/like\";\r\n break;\r\n default:\r\n alert(\"LikeButton error. Unknown type.\");\r\n break;\r\n }\r\n ajaxUtils_1.AjaxUtils.post(url, {\r\n targetId: this.targetId,\r\n isLiked: !this.isLiked(),\r\n voteId: this.voteId()\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.voteId(result.data.voteId);\r\n _this.likeCount(result.data.likeCount);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.$btn.removeAttr(\"disabled\");\r\n });\r\n };\r\n return LikeButtonComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"like-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = LikeButtonComponent;\r\n});\r\n//# sourceMappingURL=likeButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"lodash\", \"drop\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var Drop = require(\"drop\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var MarkButtonComponent = (function (_super) {\r\n __extends(MarkButtonComponent, _super);\r\n function MarkButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.defaultBtnTitle = \"Реакции\";\r\n this.workMarks = ko.observableArray();\r\n this.isDisabled = ko.observable(false);\r\n this.disabledBtnTitle = ko.observable();\r\n this.activeMark = ko.pureComputed(function () {\r\n return _.find(_this.allMarks, function (m) { return m.enumValue === _this.workMarks()[0]; });\r\n });\r\n this.titleBtn = ko.pureComputed(function () {\r\n if (_this.activeMark()) {\r\n return _this.activeMark().title;\r\n }\r\n else {\r\n return _this.defaultBtnTitle;\r\n }\r\n });\r\n this.activeMarkSrc = ko.pureComputed(function () {\r\n if (_this.activeMark()) {\r\n return app.rootUrl + \"distCommon/emoji/\" + _this.activeMark().code + \".svg\";\r\n }\r\n else {\r\n return \"\";\r\n }\r\n });\r\n this.activeMarkAlt = ko.pureComputed(function () {\r\n if (_this.activeMark()) {\r\n return \"&#x\" + _this.activeMark().code;\r\n }\r\n else {\r\n return \"\";\r\n }\r\n });\r\n this.isLoading = ko.observable(false);\r\n this.toggleMark = function (mark) {\r\n if (_this.isLoading())\r\n return;\r\n _this.isLoading(true);\r\n var isActive = _this.workMarks().indexOf(mark) === -1;\r\n ajaxUtils_1.AjaxUtils.post(\"work/mark\", {\r\n workId: _this.workId,\r\n isActive: isActive,\r\n mark: mark\r\n }).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.workMarks(result.data.marks);\r\n }).always(function () {\r\n _this.isLoading(false);\r\n });\r\n };\r\n this.workId = params.workId;\r\n this.allMarks = params.allMarks;\r\n this.workMarks(params.workMarks || []);\r\n this.isDisabled(params.disabled || false);\r\n this.disabledBtnTitle(params.disabledBtnTitle);\r\n var marksDropdowm = document.getElementById(\"marks-dropdown\");\r\n if (marksDropdowm && !this.isDisabled()) {\r\n var marksTemplateMarkup = marksDropdowm.innerHTML;\r\n this.initDropdown($(element), marksTemplateMarkup, function ($content) {\r\n $content.find(\".work-mark-button img\")\r\n .on(\"mouseover\", function (e) {\r\n var $img = $(e.target);\r\n $img.attr(\"src\", $img.attr(\"data-animated-src\"));\r\n })\r\n .on(\"mouseout\", function (e) {\r\n var $img = $(e.target);\r\n $img.attr(\"src\", $img.attr(\"data-src\"));\r\n });\r\n });\r\n }\r\n }\r\n MarkButtonComponent.prototype.initDropdown = function ($btn, template, postProcessFunc) {\r\n var _this = this;\r\n if (postProcessFunc === void 0) { postProcessFunc = null; }\r\n var drop = new Drop({\r\n target: $btn[0],\r\n content: function () {\r\n var $content = $(\"
\").html(template);\r\n ko.applyBindingsToDescendants(_this, $content[0]);\r\n if (postProcessFunc) {\r\n setTimeout(function () {\r\n postProcessFunc($content);\r\n }, 100);\r\n }\r\n return $content[0];\r\n },\r\n /*openOn: \"hover\",*/\r\n hoverCloseDelay: 150,\r\n constrainToScrollParent: true,\r\n tetherOptions: {\r\n attachment: \"top center\",\r\n targetAttachment: \"bottom center\",\r\n constraints: [\r\n {\r\n to: \"window\",\r\n attachment: \"together\",\r\n pin: true\r\n }\r\n ]\r\n }\r\n });\r\n $btn.addClass(\"btn-tether-drop\");\r\n drop.on(\"open\", function () {\r\n drop.position();\r\n $btn.addClass(\"open\");\r\n });\r\n drop.on(\"close\", function () {\r\n $btn.removeClass(\"open\");\r\n });\r\n $btn.data(\"drop\", drop);\r\n };\r\n return MarkButtonComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"mark-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = MarkButtonComponent;\r\n});\r\n//# sourceMappingURL=markButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"lodash\", \"bootstrap\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n require(\"bootstrap\");\r\n (function (ModalType) {\r\n ModalType[ModalType[\"Custom\"] = 0] = \"Custom\";\r\n ModalType[ModalType[\"ConfirmDelete\"] = 1] = \"ConfirmDelete\";\r\n ModalType[ModalType[\"Confirm\"] = 2] = \"Confirm\";\r\n ModalType[ModalType[\"Alert\"] = 3] = \"Alert\";\r\n ModalType[ModalType[\"Success\"] = 4] = \"Success\";\r\n ModalType[ModalType[\"Error\"] = 5] = \"Error\";\r\n ModalType[ModalType[\"ConfirmDeleteWithoutUndone\"] = 6] = \"ConfirmDeleteWithoutUndone\";\r\n ModalType[ModalType[\"ReverseConfirm\"] = 7] = \"ReverseConfirm\";\r\n })(exports.ModalType || (exports.ModalType = {}));\r\n var ModalType = exports.ModalType;\r\n var defaultOptions = {\r\n width: \"600px\",\r\n type: ModalType.ConfirmDelete,\r\n okBtnText: \"OK\",\r\n deleteBtnText: \"Удалить\"\r\n };\r\n var ModalDialogComponent = (function (_super) {\r\n __extends(ModalDialogComponent, _super);\r\n function ModalDialogComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.title = ko.observable();\r\n this.message = ko.observable();\r\n this.minWidth = ko.observable();\r\n this.maxWidth = ko.observable();\r\n this.type = ko.observable();\r\n this.deleteBtnText = ko.observable();\r\n this.okBtnText = ko.observable();\r\n this.templateId = ko.observable();\r\n this.isVisible = ko.observable(false);\r\n this.templateData = ko.observable();\r\n this.deleteWithoutUndoneText = ko.observable();\r\n this.deleteWithoutUndoneBtnDisabled = ko.pureComputed(function () {\r\n var text = _this.deleteWithoutUndoneText() || \"\";\r\n return text.toUpperCase() !== \"УДАЛИТЬ\";\r\n });\r\n var $el = $(element);\r\n if ($el.parent()[0] !== document.body) {\r\n $el.appendTo(document.body);\r\n }\r\n this.$modal = $el.find(\".modal\");\r\n var modalOptions = _.defaults({}, params.modal, {\r\n backdrop: true,\r\n show: false\r\n });\r\n this.$modal.modal(modalOptions);\r\n }\r\n ModalDialogComponent.prototype.show = function (modalOptions) {\r\n var _this = this;\r\n var options = _.defaults(modalOptions, defaultOptions);\r\n this.title(options.title);\r\n this.minWidth(options.minWidth);\r\n if (options.maxWidth) {\r\n var width = parseInt(options.maxWidth.substring(0, options.maxWidth.indexOf(\"px\")));\r\n var maxWidth = $(window).width() - 40;\r\n if (width > maxWidth) {\r\n options.maxWidth = maxWidth + \"px\";\r\n }\r\n }\r\n this.maxWidth(options.maxWidth);\r\n this.deleteBtnText(options.deleteBtnText);\r\n this.okBtnText(options.okBtnText);\r\n this.type(options.type);\r\n if (this.type() === ModalType.Custom) {\r\n if (_.isEmpty(options.templateId)) {\r\n throw new Error(\"\\\"CustomMarkup\\\" property should be specified.\");\r\n }\r\n if (!(document.getElementById(options.templateId))) {\r\n throw new Error(\"Template \" + options.templateId + \" not found\");\r\n }\r\n if (options.viewModel === undefined) {\r\n options.viewModel = window[\"app\"].viewModel;\r\n }\r\n this.templateData(options.viewModel);\r\n this.templateId(options.templateId);\r\n }\r\n else {\r\n if (_.isEmpty(options.message)) {\r\n throw new Error(\"\\\"Message\\\" property should be specified.\");\r\n }\r\n this.message(options.message);\r\n this.onSubmit = options.onSubmit;\r\n }\r\n this.errorMessages([]);\r\n this.$modal.modal(\"show\");\r\n this.isVisible(true);\r\n this.$modal.on(\"hide.bs.modal\", function () {\r\n _this.isVisible(false);\r\n if (options.onHide) {\r\n options.onHide(_this.getModal());\r\n }\r\n });\r\n if (options.onShow) {\r\n setTimeout(function () {\r\n options.onShow(_this.getModal());\r\n });\r\n }\r\n };\r\n ModalDialogComponent.prototype.toggleProcessing = function (isProcessing) {\r\n this.processing(isProcessing);\r\n };\r\n ModalDialogComponent.prototype.showErrorMessage = function (messages) {\r\n this.errorMessages(messages);\r\n };\r\n ModalDialogComponent.prototype.submitBtnClick = function () {\r\n var _this = this;\r\n this.toggleProcessing(true);\r\n try {\r\n var result = this.onSubmit();\r\n if (result && result[\"done\"]) {\r\n result.done(function (result) {\r\n if (result) {\r\n if (result.isSuccessful) {\r\n _this.hide();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n else {\r\n this.processing(false);\r\n }\r\n }\r\n catch (ex) {\r\n this.errorMessages([\"Упс, произошла ошибка. Сообщите, пожалуйста, в тех. поддержку.\"]);\r\n console.error(ex.toString());\r\n this.processing(false);\r\n }\r\n };\r\n ModalDialogComponent.prototype.hide = function () {\r\n this.$modal.modal(\"hide\");\r\n };\r\n ModalDialogComponent.prototype.getModal = function () {\r\n return this.$modal;\r\n };\r\n return ModalDialogComponent;\r\n }(baseComponent_1.default));\r\n exports.ModalDialogComponent = ModalDialogComponent;\r\n var componentName = \"modal-dialog\";\r\n if (!ko.components.isRegistered(componentName)) {\r\n ko.components.register(componentName, {});\r\n }\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ModalDialogComponent;\r\n});\r\n//# sourceMappingURL=modalDialog.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"../viewModels/base/validatedViewModel\", \"../utils/ajaxUtils\", \"../utils/dateTimeUtils\", \"./modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var validatedViewModel_1 = require(\"../viewModels/base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var modalDialog_1 = require(\"./modalDialog\");\r\n var ModerateCommentComponent = (function (_super) {\r\n __extends(ModerateCommentComponent, _super);\r\n function ModerateCommentComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params);\r\n this.commentMaxLength = 500;\r\n this.targetId = ko.observable();\r\n this.isModerator = ko.observable(false);\r\n this.removalReasonComment = ko.observable(\"\");\r\n this.removalReasonCommentHint = ko.pureComputed(function () {\r\n var comment = _this.removalReasonComment() || \"\";\r\n return comment.length + \"/\" + _this.commentMaxLength;\r\n });\r\n this.removeAndHide = ko.observable(\"\");\r\n this.removalReasons = [\r\n \"Оскорбление пользователя\",\r\n \"Провокация конфликта\",\r\n \"Спам\",\r\n \"Нарушение правил\",\r\n \"Остальное\"\r\n ];\r\n this.selectedReason = ko.observable().extend({\r\n required: {\r\n params: true,\r\n message: \"Пожалуйста, укажите причину удаления.\"\r\n }\r\n });\r\n }\r\n ModerateCommentComponent.prototype.showEdit = function (commentId, selectedReason, removalReason) {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.targetId(commentId);\r\n this.isModerator(true);\r\n this.selectedReason(selectedReason);\r\n this.removalReasonComment(removalReason);\r\n setTimeout(function () {\r\n if (_this.validation === undefined) {\r\n _this.initValidation();\r\n }\r\n }, 0);\r\n this.showModal({\r\n title: \"Редактирование причины удаления комментария\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"moderateCommentFormModal\",\r\n maxWidth: \"435px\",\r\n viewModel: this\r\n });\r\n };\r\n ModerateCommentComponent.prototype.show = function (commentId, isModerator) {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.targetId(commentId);\r\n this.isModerator(isModerator);\r\n if (this.selectedReason()) {\r\n this.selectedReason(null);\r\n }\r\n if (this.removalReasonComment()) {\r\n this.removalReasonComment(\"\");\r\n }\r\n setTimeout(function () {\r\n if (_this.validation === undefined) {\r\n _this.initValidation();\r\n }\r\n }, 0);\r\n this.showModal({\r\n title: \"Удаление комментария\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"moderateCommentFormModal\",\r\n maxWidth: \"435px\",\r\n viewModel: this\r\n });\r\n };\r\n ModerateCommentComponent.prototype.submit = function () {\r\n var _this = this;\r\n if (this.validation !== undefined && !this.validation.isValid()) {\r\n this.validation.errors.showAllMessages();\r\n return;\r\n }\r\n this.processing(true);\r\n this.errorMessages([]);\r\n var data = {\r\n id: this.targetId(),\r\n removalReason: this.selectedReason(),\r\n removalReasonComment: this.removalReasonComment(),\r\n removeAndHide: this.removeAndHide()\r\n };\r\n ajaxUtils_1.AjaxUtils.post(\"comment/delete\", data)\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n if (result.data.isReload) {\r\n ModerateCommentComponent.reloadComments();\r\n }\r\n else {\r\n var $comment = $(\"#comment_\" + _this.targetId()).siblings(\".comment\");\r\n var $html = $(result.data.html);\r\n $comment.replaceWith($html);\r\n dateTimeUtils_1.default.displayTime($html);\r\n }\r\n _this.modal.hide();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n ModerateCommentComponent.reloadComments = function () {\r\n $.pjax.reload(\"#pjax-container\");\r\n };\r\n return ModerateCommentComponent;\r\n }(validatedViewModel_1.default));\r\n ko.components.register(\"moderate-comment-form\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ModerateCommentComponent;\r\n});\r\n//# sourceMappingURL=moderateCommentForm.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"../utils/commentLoadUtil\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var commentLoadUtil_1 = require(\"../utils/commentLoadUtil\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var NotificationsComponent = (function (_super) {\r\n __extends(NotificationsComponent, _super);\r\n function NotificationsComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.userNotificationCount = ko.observable(0);\r\n this.unreadCommentCount = ko.observable(0);\r\n this.recentChats = ko.observableArray([]);\r\n this.unreadPMCount = ko.observable(0);\r\n this.reload();\r\n $(document).on(\"pjax:end\", function () {\r\n _this.reload();\r\n });\r\n var $pmDropdown = $(\"#pmNotificationDropdown\");\r\n $pmDropdown.on(\"mouseover.pm\", function () {\r\n $pmDropdown.off(\"mouseover.pm\");\r\n _this.processing(true);\r\n ajaxUtils_1.AjaxUtils.get(\"pm/recentChats\", { page: 1, onlyUnread: true })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.recentChats(result.data.chats);\r\n _this.processing(false);\r\n });\r\n });\r\n $(document).ready(function () {\r\n $pmDropdown.find('[data-hover=\"dropdown\"]')[\"dropdownHover\"]();\r\n });\r\n }\r\n NotificationsComponent.prototype.reload = function () {\r\n var _this = this;\r\n var commentsContainer = $(\"#commentsAsync\");\r\n if (commentsContainer.length == 0) {\r\n this.notificationCheck();\r\n }\r\n else {\r\n var subscription = commentLoadUtil_1.default.loaded.subscribe(function (value) {\r\n if (value) {\r\n _this.notificationCheck();\r\n subscription.dispose();\r\n }\r\n });\r\n }\r\n };\r\n NotificationsComponent.prototype.notificationCheck = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.get(\"notification/check\", {})\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n return;\r\n }\r\n _this.userNotificationCount(result.data.userNotificationCount);\r\n _this.unreadCommentCount(result.data.unreadCommentCount);\r\n _this.unreadPMCount(result.data.unreadPMCount);\r\n });\r\n };\r\n return NotificationsComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"notifications\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = NotificationsComponent;\r\n});\r\n//# sourceMappingURL=notifications.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/BaseComponent\", \"knockout\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var BaseComponent_1 = require(\"./base/BaseComponent\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var SubToCollectionButtonComponent = (function (_super) {\r\n __extends(SubToCollectionButtonComponent, _super);\r\n function SubToCollectionButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.subscriptionId = ko.observable();\r\n this.isActive = ko.pureComputed(function () {\r\n return !!_this.subscriptionId();\r\n });\r\n this.subscriptionId(params.subscriptionId);\r\n this.collectionId = params.collectionId;\r\n }\r\n SubToCollectionButtonComponent.prototype.toggle = function () {\r\n var _this = this;\r\n if (!app.ensureAuth()) {\r\n return;\r\n }\r\n if (this.processing())\r\n return;\r\n this.processing(true);\r\n if (this.isActive()) {\r\n ajaxUtils_1.AjaxUtils.post(\"collection/unsubscribe\", { subscriptionId: this.subscriptionId() })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.subscriptionId(null);\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n else {\r\n ajaxUtils_1.AjaxUtils.post(\"collection/subscribe\", { id: this.collectionId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.subscriptionId(result.data);\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n };\r\n return SubToCollectionButtonComponent;\r\n }(BaseComponent_1.default));\r\n ko.components.register(\"sub-to-collection-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = SubToCollectionButtonComponent;\r\n});\r\n//# sourceMappingURL=subToCollectionButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/BaseComponent\", \"knockout\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var BaseComponent_1 = require(\"./base/BaseComponent\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var SubToSeriesButtonComponent = (function (_super) {\r\n __extends(SubToSeriesButtonComponent, _super);\r\n function SubToSeriesButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.subscriptionId = ko.observable();\r\n this.isActive = ko.pureComputed(function () {\r\n return !!_this.subscriptionId();\r\n });\r\n this.subscriptionId(params.subscriptionId);\r\n this.seriesId = params.seriesId;\r\n }\r\n SubToSeriesButtonComponent.prototype.toggle = function () {\r\n var _this = this;\r\n if (!app.ensureAuth()) {\r\n return;\r\n }\r\n if (this.processing())\r\n return;\r\n this.processing(true);\r\n if (this.isActive()) {\r\n ajaxUtils_1.AjaxUtils.post(\"work/series/unsubscribe\", { subscriptionId: this.subscriptionId() })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.subscriptionId(null);\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n else {\r\n ajaxUtils_1.AjaxUtils.post(\"work/series/subscribe\", { id: this.seriesId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.subscriptionId(result.data);\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n };\r\n return SubToSeriesButtonComponent;\r\n }(BaseComponent_1.default));\r\n ko.components.register(\"sub-to-series-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = SubToSeriesButtonComponent;\r\n});\r\n//# sourceMappingURL=subToSeriesButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"toastr\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var SubscribeButtonComponent = (function (_super) {\r\n __extends(SubscribeButtonComponent, _super);\r\n function SubscribeButtonComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.currentUserSubscription = ko.observable();\r\n this.btnCss = \"\";\r\n this.processing = ko.observable(false);\r\n this.mainContentMarkup = ko.pureComputed(function () {\r\n var currentUserSubscription = _this.currentUserSubscription(), targetUserSubscription = _this.targetUserSubscription;\r\n if (!currentUserSubscription) {\r\n if (targetUserSubscription) {\r\n return \" Добавить в друзья\";\r\n }\r\n return \" Подписаться\";\r\n }\r\n if (currentUserSubscription.isMutual) {\r\n return \" Вы друзья \";\r\n }\r\n if (currentUserSubscription.dontShowUpdates) {\r\n return \" Вы подписаны \";\r\n }\r\n return \" Вы подписаны\";\r\n });\r\n this.toggleDontShowUpdatesMarkup = ko.pureComputed(function () {\r\n var currentUserSubscription = _this.currentUserSubscription();\r\n if (currentUserSubscription && currentUserSubscription.dontShowUpdates) {\r\n return \"Показывать новости\";\r\n }\r\n return \" Показывать новости\";\r\n });\r\n this.unsubscribeMarkup = ko.pureComputed(function () {\r\n var currentUserSubscription = _this.currentUserSubscription();\r\n if (currentUserSubscription && currentUserSubscription.isMutual) {\r\n return \" Удалить из друзей\";\r\n }\r\n return \"Отписаться\";\r\n });\r\n this.toggle = function (toggleOnlyShowingUpdates) {\r\n if (_this.processing())\r\n return;\r\n _this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"subscription/updateSubscription\", {\r\n userId: _this.userId,\r\n toggleOnlyShowingUpdates: toggleOnlyShowingUpdates,\r\n subscribe: !_this.currentUserSubscription()\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.currentUserSubscription(result.data);\r\n if (!result.data) {\r\n var drop = $(_this.element).siblings(\".dropdown\").find(\".btn-tether-drop\").data(\"drop\");\r\n if (drop) {\r\n drop.close();\r\n }\r\n }\r\n else {\r\n if (toggleOnlyShowingUpdates) {\r\n if (result.data.dontShowUpdates) {\r\n toastr.success(\"Вы больше не будете получать уведомления о действиях пользователя.\");\r\n }\r\n else {\r\n toastr.success(\"Вы снова будете получать уведомления о действиях пользователя.\");\r\n }\r\n }\r\n }\r\n }\r\n else if (result.isWarning) {\r\n toastr.warning(result.messages[0]);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n if (params.subscriptionInfo) {\r\n this.currentUserSubscription(params.subscriptionInfo.currentUserSubscription);\r\n this.targetUserSubscription = params.subscriptionInfo.targetUserSubscription;\r\n }\r\n this.userId = params.userId;\r\n this.ignored = params.ignored;\r\n var mode = params.mode || \"normal\";\r\n if (mode === \"small\") {\r\n this.btnCss = \"btn-sm\";\r\n }\r\n if (mode === \"profile-aside\") {\r\n this.btnCss = \"btn-primary\";\r\n }\r\n }\r\n return SubscribeButtonComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"subscribe-button\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = SubscribeButtonComponent;\r\n});\r\n//# sourceMappingURL=subscribeButton.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var UserAvatarComponent = (function (_super) {\r\n __extends(UserAvatarComponent, _super);\r\n function UserAvatarComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.cssClass = ko.pureComputed(function () {\r\n if (_this.online === undefined || !_this.online())\r\n return _this.params.css;\r\n return _this.params.css + \" online\";\r\n });\r\n this.online = params.online;\r\n this.avatarUrl = params.url;\r\n }\r\n return UserAvatarComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"user-avatar\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = UserAvatarComponent;\r\n});\r\n//# sourceMappingURL=userAvatar.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/BaseComponent\", \"knockout\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var BaseComponent_1 = require(\"./base/BaseComponent\");\r\n var ko = require(\"knockout\");\r\n var VideoPlayerComponent = (function (_super) {\r\n __extends(VideoPlayerComponent, _super);\r\n function VideoPlayerComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.url = ko.observable(\"\");\r\n this.width = 300;\r\n this.height = 200;\r\n this.providers = [\r\n {\r\n test_regex: /^.+(vk.com)\\/(?:.+)?((vkvideo)|(video))[^_&]+/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:vk\\.com)(?:.+)?(?:video)([0-9a-zA-Z_\\-]+)_([0-9a-zA-Z_\\-]+)%?(?:.*)/g,\r\n url_text: \"//vk.com/video_ext.php?oid=$1&id=$2\",\r\n html: '',\r\n provider: \"vk\"\r\n },\r\n {\r\n test_regex: /^.+(?:vk\\.com)\\/(?:.*clip)(.+)/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:vk\\.com)\\/(?:.*clip)([0-9a-zA-Z_\\-]+)_([0-9a-zA-Z]+)(?:.*)/g,\r\n url_text: \"//vk.com/video_ext.php?oid=$1&id=$2\",\r\n html: '',\r\n provider: \"vk\"\r\n },\r\n {\r\n test_regex: /^.+(yappy.media)\\/video?[^_&]+/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:yappy\\.media)\\/(?:video)\\/([0-9a-zA-Z_\\-]+)/g,\r\n url_text: \"//yappy.media/default/embed/$1\",\r\n html: '',\r\n provider: \"yappy\"\r\n },\r\n {\r\n test_regex: /^.+(rutube.ru)(?!\\/yappy)(?!\\/live)\\/[^_&\\n]+/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:rutube\\.ru)(?:\\/shorts)?(?:\\/video)?(?:\\/private)?\\/([0-9a-zA-Z_\\-]+\\/\\?\\S*)?\\s*/g,\r\n url_text: \"//rutube.ru/play/embed/$1\",\r\n html: '',\r\n provider: \"rutube\"\r\n },\r\n {\r\n test_regex: /^.*((youtu.be)|(youtube.com))\\/((v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))?\\??v?=?([^#\\&\\?]*).*/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:m\\.)?(?:youtube\\.com|youtu\\.be)\\/(?:watch\\?v=|embed\\/|shorts\\/)?([0-9a-zA-Z_\\-]+)(.+)?/g,\r\n url_text: \"//www.youtube.com/embed/$1\",\r\n html: '',\r\n provider: \"youtube\"\r\n },\r\n {\r\n test_regex: /^.*(?:vimeo.com)\\/(?:channels(\\/\\w+\\/)?|groups\\/*\\/videos\\/\\u200b\\d+\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/,\r\n url_regex: /(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?/i,\r\n url_text: \"//player.vimeo.com/video/$1\",\r\n html: '',\r\n provider: \"vimeo\"\r\n }\r\n ];\r\n this.html = ko.computed(function () {\r\n var videoUrl = _this.url();\r\n if (!videoUrl)\r\n return \"\";\r\n var providers = _this.providers;\r\n var width = _this.width.toString();\r\n var height = _this.height.toString();\r\n var html = \"\";\r\n for (var i = 0; i < providers.length; i++) {\r\n var p = providers[i];\r\n if (p.test_regex.test(videoUrl)) {\r\n var embedUrl = videoUrl.replace(p.url_regex, p.url_text);\r\n html = p.html\r\n .replace(\"{url}\", embedUrl)\r\n .replace(\"{width}\", width)\r\n .replace(\"{height}\", height);\r\n break;\r\n }\r\n }\r\n return html;\r\n });\r\n if (params.width)\r\n this.width = params.width;\r\n if (params.height)\r\n this.height = params.height;\r\n this.url(ko.utils.unwrapObservable(params.url));\r\n }\r\n return VideoPlayerComponent;\r\n }(BaseComponent_1.default));\r\n ko.components.register(\"video-player\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = VideoPlayerComponent;\r\n});\r\n//# sourceMappingURL=videoPlayer.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseComponent\", \"knockout\", \"jquery\", \"lodash\", \"../utils/localStorageUtils\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseComponent_1 = require(\"./base/baseComponent\");\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var localStorageUtils_1 = require(\"../utils/localStorageUtils\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var WorksWidgetComponent = (function (_super) {\r\n __extends(WorksWidgetComponent, _super);\r\n function WorksWidgetComponent(params, element, templateNodes) {\r\n var _this = this;\r\n _super.call(this, params, element, templateNodes);\r\n this.isLoading = ko.observable(true);\r\n this.noData = ko.observable(false);\r\n this.url = params.url;\r\n this.title = params.title;\r\n this.requestParams = params.rParams || {};\r\n this.localeStoraParams = params.lsParams || {};\r\n _.each(this.localeStoraParams, function (rKey, lsKey) {\r\n _this.requestParams[rKey] = localStorageUtils_1.default.get(lsKey);\r\n });\r\n ajaxUtils_1.AjaxUtils.get(this.url, this.requestParams)\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n _this.isLoading(false);\r\n return;\r\n }\r\n if (result.data.noData) {\r\n _this.noData(true);\r\n _this.isLoading(false);\r\n setTimeout(function () {\r\n $(element).find(\".empty-widget\").addClass(\"in\");\r\n });\r\n return;\r\n }\r\n _this.isLoading(false);\r\n setTimeout(function () {\r\n var $slick = $(element).find(\".slick-container\");\r\n $slick.slick({\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n adaptiveHeight: true,\r\n responsive: [\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 1,\r\n slidesToScroll: 1\r\n }\r\n }, {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 4,\r\n slidesToScroll: 4\r\n }\r\n }, {\r\n breakpoint: 600,\r\n settings: {\r\n slidesToShow: 3,\r\n slidesToScroll: 3\r\n }\r\n }, {\r\n breakpoint: 460,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 2\r\n }\r\n }\r\n ]\r\n });\r\n _.each(result.data.works, function (w) {\r\n $slick.slick(\"slickAdd\", w);\r\n });\r\n }, 0);\r\n }).fail(function () {\r\n _this.isLoading(false);\r\n });\r\n }\r\n return WorksWidgetComponent;\r\n }(baseComponent_1.default));\r\n ko.components.register(\"works-widget\", {});\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = WorksWidgetComponent;\r\n});\r\n//# sourceMappingURL=worksWidget.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n ko.bindingHandlers[\"btn\"] = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var observable = valueAccessor(), $el = $(element);\r\n observable.subscribe(function (isProcessing) {\r\n if (isProcessing) {\r\n $el.attr(\"disabled\", \"disabled\").addClass(\"is-loading\");\r\n }\r\n else {\r\n $el.removeAttr(\"disabled\").removeClass(\"is-loading\");\r\n }\r\n });\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.btn.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n ko.bindingHandlers[\"checkPermissions\"] = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var options = ko.unwrap(valueAccessor()), $el = $(element);\r\n if ($el.attr(\"data-is-banned\") === undefined && $el.attr(\"data-email-confirmed\") === undefined)\r\n return;\r\n var isBanned = $el.attr(\"data-is-banned\") === \"true\", emailConfirmed = $el.attr(\"data-email-confirmed\") === \"true\";\r\n if (isBanned || !emailConfirmed) {\r\n $el.attr(\"disabled\", \"disabled\")\r\n .removeAttr(\"href\")\r\n .removeAttr(\"data-pjax\");\r\n var hint = \"\";\r\n if (isBanned) {\r\n hint = \"Вы не можете это сделать, пока ваша учетная запись заблокирована.\";\r\n }\r\n else {\r\n hint = \"Вы не можете это сделать, пока ваш электронный адрес не подтвержден.\";\r\n }\r\n var hintPosition = \"hint-\" + (options.position || \"top\");\r\n var $span = $(\"\");\r\n $span.attr(\"data-hint\", hint)\r\n .addClass(hintPosition)\r\n .addClass(options.css || \"\");\r\n $el.wrap($span);\r\n }\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.checkPermissions.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n ko.bindingHandlers[\"checkedWithInit\"] = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var observable = valueAccessor();\r\n var value = $(element).attr(\"checked\");\r\n if (!ko.isWriteableObservable(observable)) {\r\n throw new Error(\"Observable should be writeable\");\r\n }\r\n if (value !== undefined && value === \"checked\") {\r\n observable(true);\r\n }\r\n var bindings = {\r\n checked: observable\r\n };\r\n ko.applyBindingsToNode(element, bindings, viewModel);\r\n }\r\n };\r\n ko.bindingHandlers[\"radioWithInit\"] = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var observable = valueAccessor();\r\n var value = $(element).attr(\"checked\");\r\n if (!ko.isWriteableObservable(observable)) {\r\n throw new Error(\"Observable should be writeable\");\r\n }\r\n if (value) {\r\n observable($(element).val());\r\n }\r\n var bindings = {\r\n checked: observable\r\n };\r\n ko.applyBindingsToNode(element, bindings, viewModel);\r\n }\r\n };\r\n ko.bindingHandlers[\"checkedArrayWithInit\"] = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var observable = valueAccessor();\r\n var isChecked = $(element).attr(\"checked\");\r\n if (!ko.isWriteableObservable(observable)) {\r\n throw new Error(\"Observable should be writeable\");\r\n }\r\n if (isChecked) {\r\n var values = observable();\r\n values.push($(element).val());\r\n observable(values);\r\n }\r\n var bindings = {\r\n checked: observable\r\n };\r\n ko.applyBindingsToNode(element, bindings, viewModel);\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.checkedWithInit.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"lodash\", \"moment\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n ko.bindingHandlers[\"datePicker\"] = {\r\n init: function (element, valueAccessor, allBindings) {\r\n var $container = $(element), observable = valueAccessor();\r\n var customParams = allBindings.get(\"datePickerOptions\");\r\n var defaultOptions = {\r\n locale: {\r\n \"format\": \"DD.MM.YYYY\",\r\n \"customRangeLabel\": \"За период\",\r\n \"applyLabel\": \"Выбрать\",\r\n \"cancelLabel\": \"Отмена\"\r\n },\r\n opens: \"center\",\r\n singleDatePicker: true,\r\n showDropdowns: true,\r\n linkedCalendars: false,\r\n buttonClasses: \"btn\",\r\n applyClass: \"btn-primary\"\r\n };\r\n var daterangepickerOptions = _.defaultsDeep(customParams || {}, defaultOptions);\r\n $container.addClass(\"form-control\");\r\n function callback(startDate) {\r\n if (!moment.isMoment(startDate)) {\r\n startDate = moment(startDate);\r\n }\r\n observable(startDate);\r\n }\r\n callback(observable());\r\n $container.daterangepicker(daterangepickerOptions, callback);\r\n var drp = $container.data(\"daterangepicker\");\r\n var currentValue = moment(observable());\r\n drp.setStartDate(currentValue);\r\n drp.setEndDate(currentValue);\r\n observable.subscribe(function (newValue) {\r\n var val = newValue;\r\n if (newValue === null || newValue === undefined) {\r\n currentValue = newValue;\r\n observable(newValue);\r\n $container.val(null);\r\n return;\r\n }\r\n if (!moment.isMoment(val)) {\r\n val = moment(val);\r\n }\r\n if (!val.isValid()) {\r\n return;\r\n }\r\n if (currentValue.isSame(val)) {\r\n return;\r\n }\r\n drp.setStartDate(newValue);\r\n drp.setEndDate(newValue);\r\n callback(newValue);\r\n currentValue = val;\r\n });\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.datePicker.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"lodash\", \"moment\", \"bootstrap-daterangepicker\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n require(\"bootstrap-daterangepicker\");\r\n ko.bindingHandlers[\"dateRangePicker\"] = {\r\n init: function (element, valueAccessor, allBindings) {\r\n var $container = $(element), options = valueAccessor();\r\n var startDateObs = options.start, endDateObs = options.end;\r\n if (!ko.observable(startDateObs) || !ko.observable(endDateObs)) {\r\n throw new Error(\"Please specify valid \\\"start\\\" and \\\"end\\\" parameters.\");\r\n }\r\n var currentDate = moment().startOf(\"day\");\r\n var currentDateEnd = moment().endOf(\"day\");\r\n var startOfWeek = currentDate.clone().add(-6, \"days\");\r\n var startOfMonth = currentDate.clone().add(-30, \"days\");\r\n var pastMonthStart = startOfMonth.clone().add(-1, \"months\");\r\n var pastMonthEnd = startOfMonth.clone().add(-1, \"days\").endOf(\"day\");\r\n var threeMonths = startOfMonth.clone().add(-2, \"months\");\r\n var yearStart = currentDate.clone().add(-12, \"months\");\r\n var defaultOptions = {\r\n startDate: startDateObs(),\r\n endDate: endDateObs(),\r\n ranges: {\r\n 'За неделю': [startOfWeek, currentDateEnd],\r\n 'За месяц': [startOfMonth, currentDateEnd],\r\n 'За прошлый месяц': [pastMonthStart, pastMonthEnd],\r\n 'За год': [yearStart, currentDateEnd]\r\n },\r\n locale: {\r\n \"format\": \"DD MMMM YYYY\",\r\n \"customRangeLabel\": \"За период\",\r\n \"applyLabel\": \"Показать\",\r\n \"cancelLabel\": \"Отмена\"\r\n },\r\n linkedCalendars: false,\r\n opens: \"center\",\r\n buttonClasses: \"btn\",\r\n showDropdowns: true,\r\n applyClass: \"btn-primary\"\r\n };\r\n if (options.ranges) {\r\n defaultOptions.ranges = options.ranges;\r\n }\r\n var daterangepickerOptions = _.defaultsDeep(options.custom || {}, defaultOptions);\r\n $container.addClass(\"daterangepicker-container\");\r\n var $span = $(\"\", {\r\n \"class\": \"text-caption\"\r\n });\r\n $container.append(\"\", $span, \"\");\r\n function formatCaptionText(startDate, endDate) {\r\n if (startDate.isSame(currentDate) && endDate.isSame(currentDateEnd)) {\r\n return \"За сегодня\";\r\n }\r\n if (startDate.isSame(startOfWeek) && endDate.isSame(currentDateEnd)) {\r\n return \"За неделю\";\r\n }\r\n if (startDate.isSame(startOfMonth) && endDate.isSame(currentDateEnd)) {\r\n return \"За месяц\";\r\n }\r\n if (startDate.isSame(pastMonthStart) && endDate.isSame(pastMonthEnd)) {\r\n return \"За прошлый месяц\";\r\n }\r\n if (startDate.isSame(threeMonths) && endDate.isSame(currentDateEnd)) {\r\n return \"За 3 месяца\";\r\n }\r\n if (startDate.isSame(yearStart) && endDate.isSame(currentDateEnd)) {\r\n return \"За год\";\r\n }\r\n if (startDate.year() !== endDate.year()) {\r\n return startDate.format(\"D MMMM YYYY\") + \" — \" + endDate.format(\"D MMMM YYYY\");\r\n }\r\n if (startDate.month() !== endDate.month()) {\r\n return startDate.format(\"D MMMM\") + \" — \" + endDate.format(\"D MMMM YYYY\");\r\n }\r\n return startDate.format(\"D\") + \" — \" + endDate.format(\"D MMMM YYYY\");\r\n }\r\n function callback(startDate, endDate, label) {\r\n if (label === void 0) { label = \"\"; }\r\n if (!moment.isMoment(startDate)) {\r\n startDate = moment(startDate);\r\n }\r\n if (!moment.isMoment(endDate)) {\r\n endDate = moment(endDate);\r\n }\r\n $span.html(formatCaptionText(startDate, endDate));\r\n if (!startDate.isSame(startDateObs())) {\r\n startDateObs(startDate);\r\n }\r\n if (!endDate.isSame(endDateObs())) {\r\n endDateObs(endDate);\r\n }\r\n }\r\n callback(startDateObs(), endDateObs());\r\n $container.daterangepicker(daterangepickerOptions, callback);\r\n var drp = $container.data(\"daterangepicker\");\r\n startDateObs.subscribe(function (newValue) {\r\n drp.setStartDate(newValue);\r\n callback(newValue, endDateObs());\r\n });\r\n endDateObs.subscribe(function (newValue) {\r\n drp.setEndDate(newValue);\r\n callback(startDateObs(), newValue);\r\n });\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.dateRangePicker.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"lodash\", \"drop\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var Drop = require(\"drop\");\r\n ko.bindingHandlers[\"drop\"] = {\r\n init: function (element, valueAccessor, allBindings, viewModel) {\r\n var $btn = $(element), options = valueAccessor(), $dropContent = $btn.siblings(\".tether-drop-content\");\r\n if (options.content === undefined && $dropContent.length === 0) {\r\n throw new Error(\"Drop content not found! Please specify content options or add container with class \\\"tether-drop-content\\\" right after button.\");\r\n }\r\n var dropOptions = _.defaultsDeep(options || {}, {\r\n target: element,\r\n content: $dropContent[0],\r\n openOn: \"click\",\r\n constrainToScrollParent: true,\r\n classes: \"drop-theme-arrows\",\r\n tetherOptions: {\r\n attachment: \"top center\",\r\n targetAttachment: \"bottom center\",\r\n constraints: [\r\n {\r\n to: \"window\",\r\n attachment: \"together\"\r\n }\r\n ]\r\n }\r\n });\r\n var drop = new Drop(dropOptions);\r\n $btn.addClass(\"btn-tether-drop\");\r\n $btn.data(\"drop\", drop);\r\n drop.once(\"open\", function () {\r\n ko.applyBindingsToDescendants(viewModel, this.content);\r\n });\r\n drop.on(\"open\", function () {\r\n drop.position();\r\n $btn.addClass(\"open\");\r\n });\r\n drop.on(\"close\", function () {\r\n $btn.removeClass(\"open\");\r\n });\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.drop.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"lodash\", \"../utils/browserUtils\", \"../utils/windowUtils\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var browserUtils_1 = require(\"../utils/browserUtils\");\r\n var windowUtils_1 = require(\"../utils/windowUtils\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var scriptjs = require(\"scriptjs\");\r\n var typograf = require('typograf');\r\n var destroy = function (element) {\r\n var $el = $(element);\r\n return function () {\r\n if ($el.data(\"froala.editor\")) {\r\n $el.froalaEditor(\"destroy\");\r\n }\r\n };\r\n };\r\n var loadFroala = function (onLoad) {\r\n if ($.FroalaEditor) {\r\n onLoad();\r\n return;\r\n }\r\n var cssAnchor = $(\"#dynamicCss\")[0];\r\n ajaxUtils_1.AjaxUtils.loadCss(\"distCommon/vendor/froala-wysiwyg-editor/css/froala_editor.pkgd.min.css?v=010417\", cssAnchor);\r\n scriptjs([\r\n ajaxUtils_1.AjaxUtils.getFullUrl(\"distCommon/vendor/froala-wysiwyg-editor/js/froala_editor.min.js?v=010417\")\r\n ], function () {\r\n scriptjs([\r\n ajaxUtils_1.AjaxUtils.getFullUrl(\"dist/vendor/froala-wysiwyg-editor/js/plugins.min.js?v=010417\")\r\n ], function () {\r\n $.FroalaEditor.DefineIcon(\"quote\", { NAME: \"quote-left\" });\r\n $.FroalaEditor.RegisterShortcut($.FE.KEYCODE.SINGLE_QUOTE, \"quote\", \"decrease\", \"'\", !0);\r\n $.FroalaEditor.RegisterCommand(\"quote\", {\r\n title: \"Цитата\",\r\n focus: false,\r\n undo: false,\r\n refreshAfterCallback: false,\r\n callback: function () {\r\n var self = this;\r\n var i, blocks = this.selection.blocks();\r\n var isBlockquote = false;\r\n this.selection.save();\r\n for (i = 0; i < blocks.length; i++) {\r\n var blockquote = $(blocks[i]).parentsUntil(this.$el, \"BLOCKQUOTE\")[0];\r\n if (blocks[i].tagName !== \"BLOCKQUOTE\" && blockquote) {\r\n isBlockquote = true;\r\n $(blockquote).replaceWith(blockquote.innerHTML);\r\n }\r\n }\r\n if (!isBlockquote) {\r\n var $blockquote = $(\"
\");\r\n $blockquote.insertBefore(blocks[0]);\r\n for (i = 0; i < blocks.length; i++) {\r\n $blockquote.append(blocks[i]);\r\n }\r\n }\r\n this.html.unwrap(), this.selection.restore();\r\n }\r\n });\r\n $.FroalaEditor.DefineIconTemplate(\"custom-icons\", \"\");\r\n $.FroalaEditor.ICON_DEFAULT_TEMPLATE = \"custom-icons\";\r\n $.FroalaEditor.DefineIcon(\"typograf\", { NAME: \"paragraph\" });\r\n $.FroalaEditor.RegisterCommand(\"typograf\", {\r\n title: \"Оттипографить\",\r\n focus: false,\r\n undo: true,\r\n refreshAfterCallback: true,\r\n callback: function () {\r\n var _this = this;\r\n var html = this.html.getSelected();\r\n if (!html || !html.length)\r\n return;\r\n ajaxUtils_1.AjaxUtils.get(\"utils/gettypograftype\", {}).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n var typografType = result.data;\r\n switch (typografType) {\r\n case \"lebedev\": {\r\n _this.undo.saveStep();\r\n ajaxUtils_1.AjaxUtils.post(\"utils/typograf\", { text: html }).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.html.insert(result.data);\r\n _this.undo.saveStep();\r\n _this.events.focus();\r\n setTimeout(function () {\r\n _this.cursor.backspace();\r\n }, 0);\r\n });\r\n break;\r\n }\r\n default: {\r\n var tp = new typograf({ locale: ['ru', 'en-US'] });\r\n tp.enableRule('common/nbsp/replaceNbsp');\r\n var newText = tp.execute(html);\r\n _this.html.insert(newText);\r\n _this.undo.saveStep();\r\n _this.events.focus();\r\n }\r\n }\r\n });\r\n }\r\n });\r\n // Define popup template.\r\n $.extend($.FroalaEditor.POPUP_TEMPLATES, {\r\n \"spoilerPlugin.popup\": \"[_FORM_]\"\r\n });\r\n $.FroalaEditor.PLUGINS.spoilerPlugin = function (editor) {\r\n // Create custom popup.\r\n function initPopup() {\r\n var formHtml = \"
\";\r\n formHtml += \"
\";\r\n formHtml += \"
\";\r\n formHtml += \"
\" +\r\n \"
\";\r\n // Load popup template.\r\n var template = {\r\n form: formHtml\r\n };\r\n // Create popup.\r\n var $popup = editor.popups.create(\"spoilerPlugin.popup\", template);\r\n return $popup;\r\n }\r\n // Show the popup\r\n function showPopup() {\r\n var html = editor.html.getSelected();\r\n if (!html || !html.length) {\r\n alert(\"Пожалуйста, выделите текст.\");\r\n return;\r\n }\r\n ;\r\n // Get the popup object defined above.\r\n var $popup = editor.popups.get(\"spoilerPlugin.popup\");\r\n // If popup doesn't exist then create it.\r\n // To improve performance it is best to create the popup when it is first needed\r\n // and not when the editor is initialized.\r\n if (!$popup)\r\n $popup = initPopup();\r\n // Set the editor toolbar as the popup's container.\r\n editor.popups.setContainer(\"spoilerPlugin.popup\", editor.$tb);\r\n // This will trigger the refresh event assigned to the popup.\r\n // editor.popups.refresh('customPlugin.popup');\r\n // This custom popup is opened by pressing a button from the editor's toolbar.\r\n // Get the button's object in order to place the popup relative to it.\r\n var $btn = editor.$tb.find('.fr-command[data-cmd=\"spoiler\"]');\r\n // Set the popup's position.\r\n var left = $btn.offset().left + $btn.outerWidth() / 2;\r\n var top = $btn.offset().top + (editor.opts.toolbarBottom ? 10 : $btn.outerHeight() - 10);\r\n editor.selection.save();\r\n // Show the custom popup.\r\n // The button's outerHeight is required in case the popup needs to be displayed above it.\r\n editor.popups.show(\"spoilerPlugin.popup\", left, top, $btn.outerHeight());\r\n }\r\n // Hide the custom popup.\r\n function hidePopup() {\r\n editor.popups.hide(\"spoilerPlugin.popup\");\r\n }\r\n function getPopupTitle() {\r\n return editor.popups.get(\"spoilerPlugin.popup\").find(\"input[name='title']\").val();\r\n }\r\n // Methods visible outside the plugin.\r\n return {\r\n showPopup: showPopup,\r\n hidePopup: hidePopup,\r\n getPopupTitle: getPopupTitle\r\n };\r\n };\r\n // Define an icon and command for the button that opens the custom popup.\r\n $.FroalaEditor.DefineIcon(\"spoiler\", { NAME: \"eye-slash\" });\r\n $.FroalaEditor.RegisterCommand(\"spoiler\", {\r\n title: \"Спойлер\",\r\n undo: false,\r\n focus: false,\r\n plugin: \"spoilerPlugin\",\r\n callback: function () {\r\n if (!this.popups.isVisible(\"spoilerPlugin.popup\")) {\r\n this.spoilerPlugin.showPopup();\r\n }\r\n else {\r\n if (this.$el.find(\".fr-marker\")) {\r\n this.events.disableBlur();\r\n this.selection.restore();\r\n }\r\n this.popups.hide(\"spoilerPlugin.popup\");\r\n }\r\n }\r\n });\r\n $.FroalaEditor.RegisterCommand(\"spoilerInsert\", {\r\n focus: false,\r\n refreshAfterCallback: false,\r\n undo: true,\r\n callback: function () {\r\n var popupTitle = this.spoilerPlugin.getPopupTitle();\r\n if (!popupTitle || !popupTitle.length)\r\n return;\r\n this.selection.restore();\r\n var html = this.html.getSelected();\r\n this.undo.saveStep();\r\n this.spoilerPlugin.hidePopup();\r\n this.html.insert(\"[spoiler=\" + popupTitle + \"]\" + html + \"[/spoiler]\");\r\n this.undo.saveStep();\r\n this.events.focus();\r\n }\r\n });\r\n $.FroalaEditor.DefineIcon(\"paragraphFormat\", { NAME: \"header\" });\r\n $.FroalaEditor.VIDEO_PROVIDERS = [\r\n {\r\n test_regex: /^.+(vk.com)\\/(?:.+)?((vkvideo)|(video))[^_&]+/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:vk\\.com)(?:.+)?(?:video)([0-9a-zA-Z_\\-]+)_([0-9a-zA-Z_\\-]+)%?(?:.*)/g,\r\n url_text: \"//vk.com/video_ext.php?oid=$1&id=$2\",\r\n html: '',\r\n provider: \"vk\"\r\n },\r\n {\r\n test_regex: /^.+(?:vk\\.com)\\/(?:.*clip)(.+)/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:vk\\.com)\\/(?:.*clip)([0-9a-zA-Z_\\-]+)_([0-9a-zA-Z]+)(?:.*)/g,\r\n url_text: \"//vk.com/video_ext.php?oid=$1&id=$2\",\r\n html: '',\r\n provider: \"vk\"\r\n },\r\n {\r\n test_regex: /^.+(yappy.media)\\/video?[^_&]+/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:yappy\\.media)\\/(?:video)\\/([0-9a-zA-Z_\\-]+)/g,\r\n url_text: \"//yappy.media/default/embed/$1\",\r\n html: '',\r\n provider: \"yappy\"\r\n },\r\n {\r\n test_regex: /^.+(rutube.ru)(?!\\/yappy)(?!\\/live)\\/[^_&\\n]+/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:rutube\\.ru)(?:\\/shorts)?(?:\\/video)?(?:\\/private)?\\/([0-9a-zA-Z_\\-]+\\/\\?\\S*)?\\s*/g,\r\n url_text: \"//rutube.ru/play/embed/$1\",\r\n html: '',\r\n provider: \"rutube\"\r\n },\r\n {\r\n test_regex: /^.*((youtu.be)|(youtube.com))\\/((v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?))?\\??v?=?([^#\\&\\?]*).*/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.)?(?:m\\.)?(?:youtube\\.com|youtu\\.be)\\/(?:watch\\?v=|embed\\/|shorts\\/)?([0-9a-zA-Z_\\-]+)(.+)?/g,\r\n url_text: \"//www.youtube.com/embed/$1\",\r\n html: '',\r\n provider: \"youtube\"\r\n },\r\n {\r\n test_regex: /^.*(?:vimeo.com)\\/(?:channels(\\/\\w+\\/)?|groups\\/*\\/videos\\/\\u200b\\d+\\/|video\\/|)(\\d+)(?:$|\\/|\\?)/,\r\n url_regex: /(?:https?:\\/\\/)?(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?/i,\r\n url_text: \"//player.vimeo.com/video/$1\",\r\n html: '',\r\n provider: \"vimeo\"\r\n }\r\n ];\r\n $.FroalaEditor.VIDEO_EMBED_REGEX = /((<\\/iframe>)|())/i;\r\n onLoad();\r\n });\r\n });\r\n };\r\n var getDefaultOptions = function () {\r\n var rootUrl = window[\"app\"].rootUrl;\r\n var defaultOptions = {\r\n language: \"ru\",\r\n key: \"eQZMe1NJGC1HTMVANU==\",\r\n imageUploadURL: rootUrl + \"file/froalaUploadImage\",\r\n imagePaste: false,\r\n imageUploadMethod: \"POST\",\r\n imageMaxSize: 5 * 1024 * 1024,\r\n linkInsertButtons: [\"linkBack\"],\r\n linkEditButtons: [\"linkOpen\", \"linkEdit\", \"linkRemove\"],\r\n tableEditButtons: [\"tableRows\", \"tableColumns\", \"tableCells\", \"tableCellBackground\",\r\n \"tableCellVerticalAlign\", \"tableCellHorizontalAlign\", \"tableRemove\"],\r\n imageEditButtons: [\"imageReplace\", \"imageAlign\", \"imageDisplay\",\r\n \"|\", \"imageLink\", \"linkOpen\", \"linkEdit\", \"linkRemove\",\r\n \"-\", \"imageAlt\", \"imageSize\", \"imageRemove\"],\r\n imageDefaultWidth: 0,\r\n typingTimer: 250,\r\n htmlAllowComments: false,\r\n wordPasteModal: false,\r\n wordAllowedStyleProps: [\"background\", \"color\", \"width\", \"text-align\", \"vertical-align\", \"background-color\"],\r\n videoDefaultDisplay: \"block\",\r\n videoInsertButtons: [\"videoBack\", \"|\", \"videoByURL\", \"videoEmbed\"],\r\n htmlAllowedTags: [\r\n \"a\", \"b\", \"blockquote\", \"br\", \"s\", \"h2\",\r\n \"cite\", \"code\", \"col\", \"colgroup\", \"del\", \"details\",\r\n \"div\", \"em\", \"embed\", \"hr\", \"i\", \"iframe\", \"img\", \"li\",\r\n \"ol\", \"p\", \"pre\", \"small\", \"span\", \"strike\",\r\n \"strong\", \"sub\", \"sup\", \"table\", \"dd\",\r\n \"tbody\", \"td\", \"th\", \"thead\",\r\n \"time\", \"tr\", \"u\", \"ul\", \"video\"\r\n ],\r\n toolbarButtons: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"align\", \"paragraphFormat\", \"typograf\", \"spoiler\", \"color\", \"emoticons\", \"inlineStyle\",\r\n \"formatOL\", \"formatUL\",\r\n //\"insertHR\", \"-\", \"undo\", \"redo\",\r\n \"insertLink\", \"insertImage\", \"insertVideo\", \"insertFile\", \"insertTable\", \"fullscreen\", \"html\", \"|\", \"undo\", \"redo\"\r\n ],\r\n toolbarButtonsMD: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"align\", \"paragraphFormat\", \"typograf\", \"spoiler\", \"color\", \"emoticons\", \"inlineStyle\",\r\n \"formatOL\", \"formatUL\",\r\n // \"insertHR\", \"-\", \"undo\", \"redo\",\r\n \"insertLink\", \"insertImage\", \"insertVideo\", \"insertFile\", \"insertTable\", \"fullscreen\", \"html\", \"|\", \"undo\", \"redo\"\r\n ],\r\n toolbarButtonsSM: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"align\", \"paragraphFormat\", \"typograf\", \"spoiler\", \"color\", \"emoticons\",\r\n \"paragraphFormat\", \"formatOL\", \"formatUL\",\r\n //\"insertHR\", \"-\", \"undo\", \"redo\",\r\n \"insertLink\", \"insertImage\", \"insertVideo\", \"insertFile\", \"insertTable\", \"fullscreen\", \"html\"\r\n ],\r\n toolbarButtonsXS: [\r\n \"bold\", \"italic\", \"strikeThrough\", \"|\", \"quote\", \"insertLink\", \"insertImage\", \"fullscreen\", \"|\", \"undo\", \"redo\"\r\n ],\r\n paragraphFormat: {\r\n N: \"Обычный текст\",\r\n H2: \"Подзаголовок\"\r\n },\r\n emoticonsSet: [\r\n { code: \"1f642\", desc: \"Slightly smiling face\" },\r\n { code: \"1f600\", desc: \"Grinning face\" },\r\n { code: \"1f602\", desc: \"Face with tears of joy\" },\r\n { code: \"1f605\", desc: \"Smiling face with open mouth and cold sweat\" },\r\n { code: \"1f606\", desc: \"Smiling face with open mouth and tightly-closed eyes\" },\r\n { code: \"1f607\", desc: \"Smiling face with halo\" },\r\n { code: \"1f608\", desc: \"Smiling face with horns\" },\r\n { code: \"1f609\", desc: \"Winking face\" },\r\n { code: \"1f60a\", desc: \"Smiling face with smiling eyes\" },\r\n { code: \"1f60b\", desc: \"Face savoring delicious food\" },\r\n { code: \"1f60d\", desc: \"Smiling face with heart-shaped eyes\" },\r\n { code: \"1f60e\", desc: \"Smiling face with sunglasses\" },\r\n { code: \"1f913\", desc: \"Nerd face\" },\r\n { code: \"1f60f\", desc: \"Smirking face\" },\r\n { code: \"1f610\", desc: \"Neutral face\" },\r\n { code: \"1f612\", desc: \"Unamused face\" },\r\n { code: \"1f613\", desc: \"Face with cold sweat\" },\r\n { code: \"1f614\", desc: \"Pensive face\" },\r\n { code: \"1f615\", desc: \"Confused face\" },\r\n { code: \"1f618\", desc: \"Face throwing a kiss\" },\r\n { code: \"1f917\", desc: \"hugging face\" },\r\n { code: \"1f61d\", desc: \"Face with stuck out tongue\" },\r\n { code: \"1f641\", desc: \"Slightly frowning face\" },\r\n { code: \"1f61e\", desc: \"Disappointed face\" },\r\n { code: \"1f621\", desc: \"Pouting face\" },\r\n { code: \"1f622\", desc: \"Crying face\" },\r\n { code: \"1f623\", desc: \"Persevering face\" },\r\n { code: \"1f625\", desc: \"Disappointed but relieved face\" },\r\n { code: \"1f627\", desc: \"Anguished face\" },\r\n { code: \"1f628\", desc: \"Fearful face\" },\r\n { code: \"1f62a\", desc: \"Sleepy face\" },\r\n { code: \"1f62b\", desc: \"Tired face\" },\r\n { code: \"1f62c\", desc: \"Grimacing face\" },\r\n { code: \"1f62d\", desc: \"Loudly crying face\" },\r\n { code: \"1f62f\", desc: \"Hushed face\" },\r\n { code: \"1f630\", desc: \"Face with open mouth and cold sweat\" },\r\n { code: \"1f631\", desc: \"Face screaming in fear\" },\r\n { code: \"1f632\", desc: \"Astonished face\" },\r\n { code: \"1f633\", desc: \"Flushed face\" },\r\n { code: \"1f634\", desc: \"Sleeping face\" },\r\n { code: \"1f635\", desc: \"Dizzy face\" },\r\n { code: \"1f63a\", desc: \"Smiling cat face with open mouth\" },\r\n { code: \"1f639\", desc: \"Cat face with tears of joy\" },\r\n { code: \"1f63b\", desc: \"Smiling cat face with heart-eyes\" },\r\n { code: \"1f640\", desc: \"Weary cat face\" },\r\n { code: \"1f44d\", desc: \"Thumbs up sign\" },\r\n { code: \"1f44e\", desc: \"Thumbs down sign\" },\r\n { code: \"270c\", desc: \"Victory hand\" },\r\n { code: \"1f91d\", desc: \"Handshake\" },\r\n { code: \"1f37f\", desc: \"Popcorn\" },\r\n { code: \"1f37a\", desc: \"Beer mug\" },\r\n { code: \"1f37b\", desc: \"Clinking beer mugs\" },\r\n { code: \"1f942\", desc: \"Clinking glasses\" },\r\n { code: \"1f379\", desc: \"Tropical drink\" },\r\n { code: \"1f37e\", desc: \"Bottle with popping cork\" },\r\n { code: \"1f370\", desc: \"Shortcake\" },\r\n { code: \"1f382\", desc: \"Birthday cake\" },\r\n { code: \"1f3c6\", desc: \"Trophy\" },\r\n { code: \"1f381\", desc: \"Wrapped present\" },\r\n { code: \"1f389\", desc: \"Party popper\" },\r\n { code: \"2764\", desc: \"Heart\" },\r\n { code: \"1f494\", desc: \"Broken heart\" },\r\n { code: \"1f339\", desc: \"Rose\" },\r\n { code: \"1f490\", desc: \"Bouquet\" },\r\n { code: \"1f31f\", desc: \"Glowing star\" },\r\n { code: \"1f525\", desc: \"Fire\" },\r\n { code: \"1f648\", desc: \"See-no-evil monkey\" },\r\n { code: \"1f649\", desc: \"Hear-no-evil monkey\" },\r\n { code: \"1f64a\", desc: \"Speak-no-evil monkey\" },\r\n { code: \"1f43a\", desc: \"Wolf face\" },\r\n { code: \"1f984\", desc: \"Unicorn face\" },\r\n { code: \"1f40c\", desc: \"Snail\" }\r\n ]\r\n };\r\n return defaultOptions;\r\n };\r\n ko.bindingHandlers[\"froala\"] = {\r\n init: function (element, value, bindings) {\r\n var $el = $(element);\r\n $el.hide();\r\n loadFroala(function () {\r\n var model = value();\r\n var allBindings = ko.unwrap(bindings());\r\n var options = ko.toJS(allBindings.froalaOptions) || {};\r\n if (model.isModified) {\r\n var text = $el.val() || \"\";\r\n model(text);\r\n setTimeout(function () {\r\n model.isModified(false);\r\n }, 50);\r\n }\r\n options = _.defaults(options, getDefaultOptions());\r\n // initialize the editor\r\n $el.froalaEditor(options);\r\n var editor = $el.data(\"froala.editor\");\r\n //$el.on(\"froalaEditor.focus\", function (e, editor) {\r\n // $el.siblings(\".fr-box\").addClass(\"focused\");\r\n //});\r\n //$el.on(\"froalaEditor.blur\", function (e, editor) {\r\n // $el.siblings(\".fr-box\").removeClass(\"focused\");\r\n //});\r\n // provide froala editor instance for flexibility\r\n if (allBindings.froalaInstance && ko.isWriteableObservable(allBindings.froalaInstance)) {\r\n allBindings.froalaInstance($el.data(editor));\r\n }\r\n if (allBindings.froalaSubmit) {\r\n $el.on(\"froalaEditor.keydown\", function (e, editor, keydownEvent) {\r\n if ((keydownEvent.keyCode == 10 || keydownEvent.keyCode == 13) && keydownEvent.ctrlKey) {\r\n // Ctrl-Enter pressed\r\n allBindings.froalaSubmit();\r\n }\r\n });\r\n }\r\n // update underlying model whenever editor content changed\r\n $el.on(\"froalaEditor.contentChanged\", function (e, editor) {\r\n if (ko.isWriteableObservable(model)) {\r\n var editorValue = editor.html.get();\r\n var current = model();\r\n if (current !== editorValue) {\r\n if (options.dirtyWhenUpdate) {\r\n windowUtils_1.default.setDirty();\r\n }\r\n model(editorValue);\r\n }\r\n }\r\n });\r\n // Грязный хак чтобы работало обновление в мобильных браузерах\r\n var interval;\r\n if (browserUtils_1.default.isMobile()) {\r\n interval = setInterval(function () {\r\n var editorValue = editor.html.get();\r\n var current = model();\r\n if (current !== editorValue) {\r\n model(editorValue);\r\n }\r\n }, 1000);\r\n }\r\n // cleanup editor, when dom node is removed\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n destroy(element);\r\n if (interval) {\r\n try {\r\n clearInterval(interval);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n });\r\n var unsupportedVideoUrlRegex = /dzen.ru/;\r\n $el.on(\"froalaEditor.video.linkError\", function (ev, el, url) {\r\n var alertText = unsupportedVideoUrlRegex.test(url)\r\n ? 'Вставить по ссылке нельзя. Используйте вариант \"Вставить как код\"'\r\n : 'Данный видеосервис не поддерживается';\r\n alert(alertText);\r\n });\r\n });\r\n // do not handle child nodes\r\n return { controlsDescendantBindings: true };\r\n },\r\n update: function (element, value) {\r\n var $el = $(element);\r\n var modelValue = ko.unwrap(value());\r\n var editorInstance = $el.data(\"froala.editor\");\r\n if (editorInstance == null) {\r\n return;\r\n }\r\n var editorValue = editorInstance.html.get();\r\n // avoid any un-necessary updates\r\n if (editorValue !== modelValue && (typeof modelValue === \"string\" || modelValue === null)) {\r\n editorInstance.html.set(modelValue);\r\n }\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.froala.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"lodash\", \"readmore\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var imagesLoaded = require(\"imagesloaded\");\r\n require(\"readmore\");\r\n ko.bindingHandlers[\"read-more\"] = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var $el = $(element);\r\n var options = valueAccessor();\r\n var moreLinkText = options.moreLinkText || \"показать все\";\r\n var defaultOptions = {\r\n moreLink: \"\" + moreLinkText + \"\",\r\n lessLink: \"свернуть\",\r\n embedCSS: false,\r\n collapsedHeight: 84\r\n };\r\n options = _.defaults(options, defaultOptions);\r\n if ($el.find(\"img\").length > 0) {\r\n $el.on('lazyloaded', function (e) {\r\n // Только если загрузка не произошла при открытии спойлера\r\n if (!$(e.target).parents('.panel-collapse').parents(\".spoiler\").length) {\r\n $el.readmore(options);\r\n }\r\n });\r\n }\r\n else {\r\n $el.readmore(options);\r\n }\r\n if ($el.find(\".spoiler\").length > 0) {\r\n $el.find(\".spoiler\").on(\"show.bs.collapse\", function () {\r\n $el.readmore(\"destroy\");\r\n });\r\n }\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.readMore.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"../utils/richContentUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n ko.bindingHandlers[\"richContent\"] = {\r\n init: function () {\r\n // Prevent binding on the dynamically-injected HTML (as developers are unlikely to expect that, and it has security implications)\r\n return { \"controlsDescendantBindings\": true };\r\n },\r\n update: function (element, valueAccessor) {\r\n // setHtml will unwrap the value if needed\r\n var html = \"
\" + ko.unwrap(valueAccessor()) + \"
\";\r\n ko.utils.setHtml(element, html);\r\n richContentUtils_1.default.processHtml($(element));\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.richContent.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"lodash\", \"../utils/stringUtils\", \"select2\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n require(\"select2\");\r\n var defaultOptions = {\r\n minimumResultsForSearch: Infinity,\r\n language: {\r\n errorLoading: function () {\r\n return \"Невозможно загрузить результаты\";\r\n },\r\n inputTooLong: function (args) {\r\n var overChars = args.input.length - args.maximum;\r\n var message = \"Пожалуйста, введите на \" + overChars + \" символ\";\r\n message += stringUtils_1.default.pluralize(overChars, [\"\", \"a\", \"ов\"]);\r\n message += \" меньше\";\r\n return message;\r\n },\r\n inputTooShort: function (args) {\r\n var remainingChars = args.minimum - args.input.length;\r\n var message = \"Пожалуйста, введите еще хотя бы \" + remainingChars +\r\n \" символ\";\r\n message += stringUtils_1.default.pluralize(remainingChars, [\"\", \"a\", \"ов\"]);\r\n return message;\r\n },\r\n loadingMore: function () {\r\n return \"Загрузка данных…\";\r\n },\r\n maximumSelected: function (args) {\r\n var message = \"Вы можете выбрать не более \" + args.maximum + \" элемент\";\r\n message += stringUtils_1.default.pluralize(args.maximum, [\"\", \"a\", \"ов\"]);\r\n return message;\r\n },\r\n noResults: function () {\r\n return \"Совпадений не найдено\";\r\n },\r\n searching: function () {\r\n return \"Поиск…\";\r\n }\r\n }\r\n };\r\n ko.bindingHandlers[\"select2\"] = {\r\n init: function (el, valueAccessor, allBindingsAccessor, viewModel) {\r\n ko.utils.domNodeDisposal.addDisposeCallback(el, function () {\r\n $(el).select2(\"destroy\");\r\n });\r\n var select2Options = ko.utils.unwrapObservable(valueAccessor());\r\n $(el).select2(_.defaultsDeep(select2Options, defaultOptions));\r\n // Для мультиселекта сохраняем порядок выбора\r\n if ($(el).prop(\"multiple\")) {\r\n $(el).on(\"select2:select\", function (e) {\r\n var elm = e.params.data.element, $elm = $(elm), $t = $(this);\r\n $t.append($elm);\r\n $t.trigger(\"change.select2\");\r\n });\r\n }\r\n },\r\n update: function (el, valueAccessor, allBindingsAccessor, viewModel) {\r\n var allBindings = allBindingsAccessor();\r\n if (\"value\" in allBindings) {\r\n if (allBindings.select2.multiple && allBindings.value().constructor !== Array) {\r\n $(el).select2(\"val\", allBindings.value().split(\",\"));\r\n }\r\n else {\r\n $(el).select2(\"val\", allBindings.value());\r\n }\r\n }\r\n else if (\"selectedOptions\" in allBindings) {\r\n var converted = [];\r\n var textAccessor = function (value) { return value; };\r\n if (\"optionsText\" in allBindings) {\r\n textAccessor = function (value) {\r\n var valueAccessor = function (item) { return item; };\r\n if (\"optionsValue\" in allBindings) {\r\n valueAccessor = function (item) { return item[allBindings.optionsValue]; };\r\n }\r\n var items = $.grep(allBindings.options(), function (e) { return (valueAccessor(e) === value); });\r\n if (items.length === 0 || items.length > 1) {\r\n return \"UNKNOWN\";\r\n }\r\n return items[0][allBindings.optionsText];\r\n };\r\n }\r\n $.each(allBindings.selectedOptions(), function (key, value) {\r\n converted.push({ id: value, text: textAccessor(value) });\r\n });\r\n $(el).select2(\"data\", converted);\r\n }\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.select2.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"sortable\", \"knockout\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var Sortable = require(\"sortable\");\r\n var ko = require(\"knockout\");\r\n var swap = function (array, x, y) {\r\n var b = array[x];\r\n array[x] = array[y];\r\n array[y] = b;\r\n return array;\r\n };\r\n ko.utils[\"moveTo\"] = function (currentIndex, newIndex) {\r\n var array = ko.unwrap(this);\r\n if (currentIndex >= array.length || currentIndex < 0 || newIndex >= array.length || newIndex < 0)\r\n return;\r\n array.splice(newIndex, 0, array.splice(currentIndex, 1)[0]);\r\n this(array);\r\n };\r\n ko.utils[\"moveUp\"] = function (x) {\r\n var array = ko.unwrap(this), item = ko.unwrap(x);\r\n var index = ko.utils.arrayIndexOf(array, item);\r\n if (index === -1)\r\n return;\r\n if (index === 0) {\r\n array.push(array.shift());\r\n }\r\n else {\r\n swap(array, index, index - 1);\r\n }\r\n this(array);\r\n };\r\n ko.utils[\"moveDown\"] = function (x) {\r\n var array = ko.unwrap(this), item = ko.unwrap(x);\r\n var index = ko.utils.arrayIndexOf(array, item);\r\n if (index === -1)\r\n return;\r\n if (index === array.length - 1) {\r\n array.unshift(array.pop());\r\n }\r\n else {\r\n swap(array, index, index + 1);\r\n }\r\n this(array);\r\n };\r\n var init = function (element, valueAccessor, allBindings, viewModel, bindingContext, sortableOptions) {\r\n var options = buildOptions(valueAccessor, sortableOptions);\r\n // It's seems that we cannot update the eventhandlers after we've created\r\n // the sortable, so define them in init instead of update\r\n ['onStart', 'onEnd', 'onRemove', 'onAdd', 'onUpdate', 'onSort', 'onFilter', 'onMove', 'onClone'].forEach(function (e) {\r\n if (options[e] || eventHandlers[e])\r\n options[e] = function (eventType, parentVM, parentBindings, handler, e) {\r\n var itemVM = ko.dataFor(e.item), \r\n // All of the bindings on the parent element\r\n bindings = ko.utils.peekObservable(parentBindings()), \r\n // The binding options for the draggable/sortable binding of the parent element\r\n bindingHandlerBinding = bindings.sortable || bindings.draggable, \r\n // The collection that we should modify\r\n collection = bindingHandlerBinding.collection || bindingHandlerBinding.foreach;\r\n if (handler)\r\n handler(e, itemVM, parentVM, collection, bindings);\r\n if (eventHandlers[eventType])\r\n eventHandlers[eventType](e, itemVM, parentVM, collection, bindings);\r\n }.bind(undefined, e, viewModel, allBindings, options[e]);\r\n });\r\n var sortableElement = new Sortable(element, options);\r\n // Destroy the sortable if knockout disposes the element it's connected to\r\n ko.utils.domNodeDisposal.addDisposeCallback(element, function () {\r\n sortableElement.destroy();\r\n });\r\n return ko.bindingHandlers.template.init(element, valueAccessor);\r\n }, update = function (element, valueAccessor, allBindings, viewModel, bindingContext, sortableOptions) {\r\n // There seems to be some problems with updating the options of a sortable\r\n // Tested to change eventhandlers and the group options without any luck\r\n return ko.bindingHandlers.template.update(element, valueAccessor, allBindings, viewModel, bindingContext);\r\n }, eventHandlers = (function (handlers) {\r\n var moveOperations = [], tryMoveOperation = function (e, itemVM, parentVM, collection, parentBindings) {\r\n // A move operation is the combination of a add and remove event,\r\n // this is to make sure that we have both the target and origin collections\r\n var currentOperation = { event: e, itemVM: itemVM, parentVM: parentVM, collection: collection, parentBindings: parentBindings }, existingOperation = moveOperations.filter(function (op) {\r\n return op.itemVM === currentOperation.itemVM;\r\n })[0];\r\n if (!existingOperation) {\r\n moveOperations.push(currentOperation);\r\n }\r\n else {\r\n // We're finishing the operation and already have a handle on\r\n // the operation item meaning that it's safe to remove it\r\n moveOperations.splice(moveOperations.indexOf(existingOperation), 1);\r\n var removeOperation = currentOperation.event.type === 'remove' ? currentOperation : existingOperation, addOperation = currentOperation.event.type === 'add' ? currentOperation : existingOperation;\r\n moveItem(itemVM, removeOperation.collection, addOperation.collection, addOperation.event.clone, addOperation.event);\r\n }\r\n }, \r\n // Moves an item from the \"from\" collection to the \"to\" collection, these\r\n // can be references to the same collection which means it's a sort.\r\n // clone indicates if we should move or copy the item into the new collection\r\n moveItem = function (itemVM, from, to, clone, e) {\r\n // Unwrapping this allows us to manipulate the actual array\r\n var fromArray = from(), \r\n // It's not certain that the items actual index is the same\r\n // as the index reported by sortable due to filtering etc.\r\n originalIndex = fromArray.indexOf(itemVM), newIndex = e.newIndex;\r\n // We have to find out the actual desired index of the to array,\r\n // as this might be a computed array. We could otherwise potentially\r\n // drop an item above the 3rd visible item, but the 2nd visible item\r\n // has an actual index of 5.\r\n //if (e.item.previousElementSibling) {\r\n // newIndex = to().indexOf(ko.dataFor(e.item.previousElementSibling)) + 1;\r\n //}\r\n // Remove sortables \"unbound\" element\r\n e.item.parentNode.removeChild(e.item);\r\n // This splice is necessary for both clone and move/sort\r\n // In sort/move since it shouldn't be at this index/in this array anymore\r\n // In clone since we have to work around knockouts valuHasMutated\r\n // when manipulating arrays and avoid a \"unbound\" item added by sortable\r\n fromArray.splice(originalIndex, 1);\r\n // Update the array, this will also remove sortables \"unbound\" clone\r\n from.valueHasMutated();\r\n if (clone && from !== to) {\r\n // Read the item\r\n fromArray.splice(originalIndex, 0, itemVM);\r\n // Force knockout to update\r\n from.valueHasMutated();\r\n }\r\n // Force deferred tasks to run now, registering the removal\r\n ko.tasks.runEarly();\r\n // Insert the item on its new position\r\n to().splice(newIndex, 0, itemVM);\r\n // Make sure to tell knockout that we've modified the actual array.\r\n to.valueHasMutated();\r\n };\r\n handlers[\"onRemove\"] = tryMoveOperation;\r\n handlers[\"onAdd\"] = tryMoveOperation;\r\n handlers[\"onUpdate\"] = function (e, itemVM, parentVM, collection, parentBindings) {\r\n // This will be performed as a sort since the to/from collections\r\n // reference the same collection and clone is set to false\r\n moveItem(itemVM, collection, collection, false, e);\r\n };\r\n return handlers;\r\n })({}), \r\n // bindingOptions are the options set in the \"data-bind\" attribute in the ui.\r\n // options are custom options, for instance draggable/sortable specific options\r\n buildOptions = function (bindingOptions, options) {\r\n // deep clone/copy of properties from the \"from\" argument onto\r\n // the \"into\" argument and returns the modified \"into\"\r\n var merge = function (into, from) {\r\n for (var prop in from) {\r\n if (Object.prototype.toString.call(from[prop]) === '[object Object]') {\r\n if (Object.prototype.toString.call(into[prop]) !== '[object Object]') {\r\n into[prop] = {};\r\n }\r\n into[prop] = merge(into[prop], from[prop]);\r\n }\r\n else\r\n into[prop] = from[prop];\r\n }\r\n return into;\r\n }, \r\n // unwrap the supplied options\r\n unwrappedOptions = ko.utils.peekObservable(bindingOptions())[\"options\"] || {};\r\n // Make sure that we don't modify the provided settings object\r\n options = merge({}, options);\r\n // group is handled differently since we should both allow to change\r\n // a draggable to a sortable (and vice versa), but still be able to set\r\n // a name on a draggable without it becoming a drop target.\r\n if (unwrappedOptions.group && Object.prototype.toString.call(unwrappedOptions.group) !== '[object Object]') {\r\n // group property is a name string declaration, convert to object.\r\n unwrappedOptions.group = { name: unwrappedOptions.group };\r\n }\r\n return merge(options, unwrappedOptions);\r\n };\r\n ko.bindingHandlers[\"draggable\"] = {\r\n sortableOptions: {\r\n group: { pull: 'clone', put: false },\r\n sort: false\r\n },\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n return init(element, valueAccessor, allBindings, viewModel, bindingContext, ko.bindingHandlers[\"draggable\"][\"sortableOptions\"]);\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n return update(element, valueAccessor, allBindings, viewModel, bindingContext, ko.bindingHandlers[\"draggable\"][\"sortableOptions\"]);\r\n }\r\n };\r\n ko.bindingHandlers[\"sortable\"] = {\r\n sortableOptions: {\r\n group: { pull: true, put: true }\r\n },\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n return init(element, valueAccessor, allBindings, viewModel, bindingContext, ko.bindingHandlers[\"sortable\"][\"sortableOptions\"]);\r\n },\r\n update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n return update(element, valueAccessor, allBindings, viewModel, bindingContext, ko.bindingHandlers[\"sortable\"][\"sortableOptions\"]);\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.sortable.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"lodash\", \"sumoSelect\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n require(\"sumoSelect\");\r\n ko.bindingHandlers[\"sumo-select\"] = {\r\n init: function (element, valueAccessor, allBindingsAccessor) {\r\n var $el = $(element), options = valueAccessor(), allBindings = allBindingsAccessor();\r\n var defaultOptions = {};\r\n var forceUpdate = function (newValue) {\r\n $el.val(newValue);\r\n element.sumo.reload();\r\n };\r\n if (allBindings.value) {\r\n allBindings.value.forceUpdate = function (newValue) {\r\n allBindings.value(newValue);\r\n $el.val(newValue);\r\n setTimeout(function () {\r\n element.sumo.reload();\r\n }, 0);\r\n };\r\n }\r\n else if (allBindings.selectedOptions) {\r\n allBindings.selectedOptions.forceUpdate = function (newValue) {\r\n allBindings.selectedOptions(newValue);\r\n $el.val(newValue);\r\n setTimeout(function () {\r\n element.sumo.reload();\r\n }, 0);\r\n };\r\n allBindings.selectedOptions($el.val());\r\n }\r\n if (allBindings.options) {\r\n allBindings.options.forceUpdate = function (newValue) {\r\n allBindings.options(newValue);\r\n setTimeout(function () {\r\n element.sumo.reload();\r\n }, 0);\r\n };\r\n }\r\n setTimeout(function () {\r\n $el.sumoSelect(_.defaults(options, defaultOptions));\r\n }, 0);\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.sumoSelect.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"jquery\", \"moment\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var $ = require(\"jquery\");\r\n var moment = require(\"moment\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n ko.bindingHandlers[\"time\"] = {\r\n update: function (element, valueAccessor, allBindings) {\r\n var value = ko.unwrap(valueAccessor()), $el = $(element), time = moment(value);\r\n if (!time.isValid()) {\r\n return;\r\n }\r\n var format = allBindings.get(\"format\");\r\n var hintPosition = \"hint-\" + (allBindings.get(\"hintPosition\") || \"top\");\r\n var formattedText;\r\n if (format === undefined || format === null || format.indexOf(\"calendar\") !== -1) {\r\n formattedText = dateTimeUtils_1.default.formatCalendar(time, format);\r\n }\r\n else {\r\n formattedText = time.format(format);\r\n }\r\n $el.attr(\"data-hint\", time.format(\"D MMMM YYYY в HH:mm:ss\"));\r\n $el.addClass(hintPosition);\r\n $el.html(formattedText);\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.time.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n ko.bindingHandlers[\"valueWithInit\"] = {\r\n init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {\r\n var observable = valueAccessor();\r\n var value = element.value;\r\n if (!ko.isWriteableObservable(observable)) {\r\n throw new Error(\"Observable should be writeable\");\r\n }\r\n if (value) {\r\n observable(value);\r\n }\r\n else if (element.type === \"date\" && element.defaultValue) {\r\n value = new Date(element.defaultValue);\r\n observable(value);\r\n setTimeout(function () {\r\n var datepicker = $(element).data(\"kendoDatePicker\");\r\n datepicker.value(value);\r\n }, 100);\r\n }\r\n var bindings = {\r\n value: observable\r\n };\r\n var valueUpdate = allBindings.get(\"valueUpdate\");\r\n if (valueUpdate) {\r\n bindings[\"valueUpdate\"] = valueUpdate;\r\n }\r\n ko.applyBindingsToNode(element, bindings, viewModel);\r\n }\r\n };\r\n});\r\n//# sourceMappingURL=ko.valueWithInit.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var StickySidebar = (function () {\r\n function StickySidebar() {\r\n }\r\n StickySidebar.init = function (el, options) {\r\n var config = $.extend({\r\n headerSelector: \".navbar-fixed-top\",\r\n navSelector: \"\",\r\n contentSelector: \".content\",\r\n footerSelector: \"footer\",\r\n sidebarTopMargin: 64,\r\n footerThreshold: 165\r\n }, options);\r\n var fixSidebar = function () {\r\n var sidebarSelector = $(this);\r\n var viewportHeight = $(window).height();\r\n var documentHeight = $(document).height();\r\n var headerHeight = $(config.headerSelector).outerHeight();\r\n var navHeight = $(config.navSelector).outerHeight();\r\n var sidebarHeight = sidebarSelector.height() + 80;\r\n if ($(sidebarSelector).hasClass(\"sticky\")) {\r\n {\r\n sidebarHeight -= 15;\r\n }\r\n }\r\n var contentHeight = $(config.contentSelector).outerHeight();\r\n var footerHeight = $(config.footerSelector).outerHeight();\r\n var scrollTop = $(window).scrollTop();\r\n var breakingPoint1 = headerHeight > navHeight ? headerHeight : navHeight;\r\n var breakingPoint2 = documentHeight - (sidebarHeight + footerHeight + config.footerThreshold);\r\n // calculate\r\n if ((contentHeight > sidebarHeight) && (viewportHeight + 15 > sidebarHeight)) {\r\n if (scrollTop < breakingPoint1) {\r\n sidebarSelector.removeClass(\"sticky\");\r\n }\r\n else if ((scrollTop >= breakingPoint1) && (scrollTop < breakingPoint2)) {\r\n sidebarSelector.addClass(\"sticky\").css(\"top\", config.sidebarTopMargin);\r\n }\r\n else {\r\n var negative = breakingPoint2 - scrollTop;\r\n sidebarSelector.addClass(\"sticky\").css(\"top\", negative);\r\n }\r\n }\r\n else {\r\n sidebarSelector.removeClass(\"sticky\");\r\n }\r\n };\r\n return $(el).each(function () {\r\n $(window).on(\"scroll\", $.proxy(fixSidebar, this));\r\n $(window).on(\"resize\", $.proxy(fixSidebar, this));\r\n $.proxy(fixSidebar, this)();\r\n });\r\n };\r\n return StickySidebar;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = StickySidebar;\r\n});\r\n//# sourceMappingURL=stickySidebar.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ImageZoomMode;\r\n (function (ImageZoomMode) {\r\n ImageZoomMode[ImageZoomMode[\"PhotoSwipe\"] = 1] = \"PhotoSwipe\";\r\n ImageZoomMode[ImageZoomMode[\"NativeAndroid\"] = 2] = \"NativeAndroid\";\r\n })(ImageZoomMode || (ImageZoomMode = {}));\r\n var ImageZoomUtils = (function () {\r\n function ImageZoomUtils() {\r\n }\r\n ImageZoomUtils.setNativeAndroidMode = function (androidMobileHandler) {\r\n this.zoomMode = ImageZoomMode.NativeAndroid;\r\n this.androidMobileHandler = androidMobileHandler;\r\n };\r\n ImageZoomUtils.init = function (rootEl) {\r\n var _this = this;\r\n if (!rootEl)\r\n rootEl = window.document;\r\n $(rootEl).find(\"[image-zoom]\").each(function (index, el) {\r\n var $el = $(el);\r\n var $images = $el.find(\"img[data-width][data-height]\").not(\"a img\");\r\n if ($images.length === 0)\r\n return;\r\n // Отображать картинки в галерее, с возможностью листания\r\n var gallery = !!$el.attr(\"image-zoom\");\r\n var items = [];\r\n $images.each(function (i, img) {\r\n var $img = $(img);\r\n var src = $(img).attr(\"data-src-orig\") ||\r\n $img.attr(\"data-src\") ||\r\n $img.attr(\"src\");\r\n if (src && src.indexOf(\"?\") > 0 && src.indexOf(window.location.hostname) > 0) {\r\n src = src.split(\"?\")[0];\r\n }\r\n if (_this.zoomMode === ImageZoomMode.PhotoSwipe) {\r\n var item = {\r\n src: src,\r\n w: $img.attr(\"data-width\"),\r\n h: $img.attr(\"data-height\")\r\n };\r\n items.push(item);\r\n }\r\n else {\r\n items.push(src);\r\n }\r\n });\r\n var self = _this;\r\n $images.each(function (index, img) {\r\n $(img).on(\"click\", function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n var options = {\r\n index: index,\r\n bgOpacity: 0.7,\r\n arrowEl: gallery,\r\n history: true,\r\n getThumbBoundsFn: function () { return _this.getThumbBounds(img); }\r\n };\r\n if (_this.zoomMode === ImageZoomMode.PhotoSwipe) {\r\n self.photoSwipe = new PhotoSwipe($(\".pswp\")[0], PhotoSwipeUI_Default, items, options);\r\n self.photoSwipe.init();\r\n }\r\n else {\r\n try {\r\n _this.androidMobileHandler.nativeImageZoom(index, items);\r\n }\r\n catch (ex) {\r\n console.error(\"Image zoom error: \", ex);\r\n }\r\n }\r\n });\r\n });\r\n });\r\n };\r\n /*\r\n * Инициализация дом материалов к книге\r\n */\r\n ImageZoomUtils.initWorkMaterials = function () {\r\n var $figures = $(\"#masonry figure\");\r\n if (!$figures[0] || this.zoomMode !== ImageZoomMode.PhotoSwipe)\r\n return;\r\n var items = [];\r\n $figures.each(function (i, el) {\r\n var $link = $(el).find(\"a\");\r\n var item = {\r\n src: $link.attr(\"href\"),\r\n w: $link.data(\"width\"),\r\n h: $link.data(\"height\"),\r\n title: $(el).find(\"figcaption\").text()\r\n };\r\n items.push(item);\r\n });\r\n var pswp = $(\".pswp\")[0];\r\n var self = this;\r\n $figures.off(\"click\");\r\n $figures.on(\"click\", function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n var index = $figures.index($(this));\r\n var options = {\r\n index: index,\r\n bgOpacity: 0.7,\r\n history: true,\r\n showHideOpacity: true\r\n };\r\n // Initialize PhotoSwipe\r\n self.photoSwipe = new PhotoSwipe(pswp, PhotoSwipeUI_Default, items, options);\r\n self.photoSwipe.init();\r\n });\r\n };\r\n ImageZoomUtils.photoSwipe = null;\r\n ImageZoomUtils.zoomMode = ImageZoomMode.PhotoSwipe;\r\n ImageZoomUtils.getThumbBounds = function (img) {\r\n var pageYScroll = window.pageYOffset || document.documentElement.scrollTop;\r\n var rect = img.getBoundingClientRect();\r\n return { x: rect.left, y: rect.top + pageYScroll, w: rect.width };\r\n };\r\n return ImageZoomUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ImageZoomUtils;\r\n});\r\n//# sourceMappingURL=imageZoomUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"lodash\", \"toastr\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var AuthorRewardUtils = (function () {\r\n function AuthorRewardUtils() {\r\n }\r\n AuthorRewardUtils.toggle = function (btn) {\r\n var $icon = $(btn), $btn = $icon.parent();\r\n if ($btn.attr(\"disabled\"))\r\n return;\r\n $btn.attr(\"disabled\", \"disabled\").addClass(\"is-loading\");\r\n var $reward = $($btn.parents(\".reward\").get(0));\r\n var rewardId = $reward.attr(\"data-reward-id\"), isHidden = $reward.attr(\"data-hidden\") === \"true\";\r\n isHidden = !isHidden;\r\n ajaxUtils_1.AjaxUtils.post(\"authorReward/toggleTitleVisibility\", {\r\n id: rewardId,\r\n isHidden: isHidden\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n $reward.attr(\"data-hidden\", isHidden + \"\");\r\n var $rewardTitle = $reward.find(\".reward-title\");\r\n if (isHidden) {\r\n $rewardTitle.removeClass(\"text-bold\").addClass(\"text-muted\").text(\"Название скрыто\");\r\n $btn.parent().html(\"\\\r\n \\\r\n \");\r\n }\r\n else {\r\n $rewardTitle.addClass(\"text-bold\").removeClass(\"text-muted\").text(\"\\u00AB\" + result.data.title + \"\\u00BB\");\r\n $btn.parent().html(\"\\\r\n \\\r\n \");\r\n }\r\n toastr.success(result.messages[0]);\r\n }\r\n else if (result.isWarning) {\r\n toastr.warning(result.messages[0]);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n $btn.removeAttr(\"disabled\").removeClass(\"is-loading\");\r\n });\r\n };\r\n return AuthorRewardUtils;\r\n }());\r\n _.extend(window[\"AppUtils\"], {\r\n AuthorReward: AuthorRewardUtils\r\n });\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = AuthorRewardUtils;\r\n});\r\n//# sourceMappingURL=authorRewardUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var BrowserUtils = (function () {\r\n function BrowserUtils() {\r\n }\r\n /**\r\n * Detect IE *\r\n * @returns {} returns version of IE or false, if browser is not Internet Explorer\r\n */\r\n BrowserUtils.isIE = function () {\r\n var ua = window.navigator.userAgent;\r\n // Test values; Uncomment to check result …\r\n // IE 10\r\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\r\n // IE 11\r\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\r\n // Edge 12 (Spartan)\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\r\n // Edge 13\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\r\n var msie = ua.indexOf(\"MSIE \");\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf(\".\", msie)), 10);\r\n }\r\n var trident = ua.indexOf(\"Trident/\");\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n var rv = ua.indexOf(\"rv:\");\r\n return parseInt(ua.substring(rv + 3, ua.indexOf(\".\", rv)), 10);\r\n }\r\n var edge = ua.indexOf(\"Edge/\");\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf(\".\", edge)), 10);\r\n }\r\n // other browser\r\n return false;\r\n };\r\n BrowserUtils.isMobile = function () {\r\n if (this.isMobileDevice !== null)\r\n return this.isMobileDevice;\r\n var test = false; //initiate as false\r\n // device detection\r\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent)\r\n || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0, 4)))\r\n test = true;\r\n this.isMobileDevice = test;\r\n return test;\r\n };\r\n BrowserUtils.isMobileDevice = null;\r\n return BrowserUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = BrowserUtils;\r\n});\r\n//# sourceMappingURL=browserUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var CommentLoadUtil = (function () {\r\n function CommentLoadUtil() {\r\n }\r\n /** Флаг загрузки комментариев */\r\n CommentLoadUtil.loaded = ko.observable(false);\r\n return CommentLoadUtil;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = CommentLoadUtil;\r\n});\r\n//# sourceMappingURL=commentLoadUtil.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"lodash\", \"moment\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n var DateTimeUtils = (function () {\r\n function DateTimeUtils() {\r\n }\r\n DateTimeUtils.displayTime = function ($container) {\r\n if ($container === void 0) { $container = null; }\r\n var $items;\r\n if (_.isElement($container)) {\r\n $items = $container.find(\"span[data-time]\");\r\n }\r\n else {\r\n $items = $(\"span[data-time]\");\r\n }\r\n $items.each(function (index, el) {\r\n var $el = $(el), value = $el.attr(\"data-time\"), format = $el.attr(\"data-format\"), showOnlyHint = $el.attr(\"data-only-hint\");\r\n var time = moment(value, moment.ISO_8601, true);\r\n var formattedText;\r\n if (format === undefined || format === null || format.indexOf(\"calendar\") !== -1) {\r\n formattedText = DateTimeUtils.formatCalendar(time, format);\r\n }\r\n else if (format === \"from-now\") {\r\n formattedText = time.fromNow();\r\n }\r\n else {\r\n formattedText = time.format(format);\r\n }\r\n var currentTite = $el.attr(\"data-hint\") || \"\";\r\n var formattedTextTitle = time.format(\"D MMMM YYYY в HH:mm:ss\");\r\n if (currentTite.indexOf(formattedTextTitle) === -1) {\r\n $el.attr(\"data-hint\", currentTite + formattedTextTitle);\r\n }\r\n if (showOnlyHint) {\r\n return;\r\n }\r\n var initialHtml = $el.html();\r\n if (initialHtml.indexOf(formattedText) === -1) {\r\n $el.html(initialHtml + formattedText);\r\n }\r\n });\r\n };\r\n DateTimeUtils.formatCalendar = function (time, format) {\r\n if (!time.isValid())\r\n return \"\";\r\n if (format === \"calendar-xs\") {\r\n if (time.year() !== moment().year()) {\r\n return time.format(\"D.MM.YY\");\r\n }\r\n return time.calendar(null, {\r\n sameDay: \"HH:mm\",\r\n lastDay: \"вчера\",\r\n lastWeek: \"D MMM\",\r\n sameElse: \"D MMM\"\r\n });\r\n }\r\n if (format === \"calendar-sm\") {\r\n if (time.year() !== moment().year()) {\r\n return time.format(\"D.MM.YY[
]HH:mm\");\r\n }\r\n return time.calendar(null, {\r\n sameDay: \"HH:mm\",\r\n lastDay: \"вчера[
]HH:mm\",\r\n lastWeek: \"D MMM[
]HH:mm\",\r\n sameElse: \"D MMM[
]HH:mm\"\r\n });\r\n }\r\n var formattedText;\r\n if (time.year() !== moment().year()) {\r\n return time.format(this.defaultFormat);\r\n }\r\n if (format === \"calendar-short\") {\r\n formattedText = time.calendar(null, {\r\n sameDay: \"сегодня в HH:mm\",\r\n lastDay: \"вчера в HH:mm\",\r\n lastWeek: \"D MMMM\",\r\n sameElse: \"D MMMM\"\r\n });\r\n }\r\n else {\r\n formattedText = time.calendar(null, {\r\n sameDay: \"сегодня в HH:mm\",\r\n lastDay: \"вчера в HH:mm\",\r\n lastWeek: \"D MMMM в HH:mm\",\r\n nextDay: \"[завтра в] HH:mm\",\r\n nextWeek: \"D MMMM в HH:mm\",\r\n sameElse: \"D MMMM в HH:mm\"\r\n });\r\n }\r\n return formattedText;\r\n };\r\n DateTimeUtils.defaultFormat = \"D MMMM YYYY\";\r\n return DateTimeUtils;\r\n }());\r\n _.extend(window[\"AppUtils\"], {\r\n DateTime: DateTimeUtils\r\n });\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = DateTimeUtils;\r\n});\r\n//# sourceMappingURL=dateTimeUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var DevTools = (function () {\r\n function DevTools() {\r\n }\r\n DevTools.init = function (devToolsCallback, clearConsole, delay) {\r\n if (delay === void 0) { delay = 500; }\r\n try {\r\n var open = false;\r\n var threshold = 160;\r\n var timer = setInterval(function () {\r\n try {\r\n if (clearConsole) {\r\n console.clear();\r\n }\r\n var widthThreshold = window.outerWidth - window.innerWidth > threshold;\r\n var heightThreshold = window.outerHeight - window.innerHeight > threshold;\r\n if (!(heightThreshold && widthThreshold) &&\r\n ((window.Firebug && window.Firebug.chrome && window.Firebug.chrome.isInitialized) || widthThreshold || heightThreshold)) {\r\n if (!open) {\r\n devToolsCallback();\r\n if (!clearConsole) {\r\n clearInterval(timer);\r\n }\r\n }\r\n open = true;\r\n }\r\n else {\r\n open = false;\r\n }\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n clearInterval(timer);\r\n }\r\n }, delay);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n };\r\n return DevTools;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = DevTools;\r\n});\r\n//# sourceMappingURL=devTools.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"lodash\", \"jquery\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var _ = require(\"lodash\");\r\n var $ = require(\"jquery\");\r\n /** Утилита для экспорта книг */\r\n var ExportBookUtils = (function () {\r\n function ExportBookUtils() {\r\n }\r\n /**\r\n * Скачивает файл книги\r\n * @param id - идентификатор работы\r\n * @param type - формат книги\r\n * @param trial - флаг для ознакомления\r\n * @param fileName - название файла\r\n */\r\n ExportBookUtils.download = function (id, type, trial, fileName) {\r\n if (!window.URL.createObjectURL) {\r\n throw new Error('createObjectURL is not supported!');\r\n }\r\n var btn = $(\"#btn-download\");\r\n var spinner = $(\"#spinner\");\r\n btn.hide();\r\n spinner.show();\r\n var req = new XMLHttpRequest();\r\n req.open(\"GET\", this.getFullUrl(\"work/download?id=\" + id + \"&type=\" + type + \"&trial=\" + trial), true);\r\n req.responseType = \"blob\";\r\n req.onload = function (event) {\r\n spinner.hide();\r\n btn.show();\r\n var blob = req.response;\r\n if (blob.size === 0) {\r\n alert(\"Ошибка скачивания!\");\r\n return;\r\n }\r\n var link = document.createElement('a');\r\n link.href = window.URL.createObjectURL(blob);\r\n type = type === \"fb2\" ? \"fb2.zip\" : type;\r\n link.download = fileName + \".\" + type;\r\n link.click();\r\n };\r\n req.send();\r\n };\r\n /** Формирует полный урл к api */\r\n ExportBookUtils.getFullUrl = function (url) {\r\n if (url.substring(0, window[\"app\"].rootUrl.length).toLowerCase() === window[\"app\"].rootUrl.toLowerCase()) {\r\n return url;\r\n }\r\n return window[\"app\"].rootUrl + url;\r\n };\r\n return ExportBookUtils;\r\n }());\r\n _.extend(window[\"AppUtils\"], {\r\n ExportBook: ExportBookUtils\r\n });\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ExportBookUtils;\r\n});\r\n//# sourceMappingURL=exportBookUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"lodash\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var Clipboard = require(\"clipboard\");\r\n var GiftCodeUtils = (function () {\r\n function GiftCodeUtils() {\r\n }\r\n GiftCodeUtils.init = function () {\r\n var _this = this;\r\n $(document).ready(function () {\r\n if (_this.clipboard) {\r\n _this.clipboard.destroy();\r\n }\r\n if (_this.clipboardShare) {\r\n _this.clipboardShare.destroy();\r\n }\r\n _this.clipboard = new Clipboard(\".gift-code-to-copy\", {\r\n text: function (el) { return $(el).attr(\"data-clipboard\"); }\r\n });\r\n _this.clipboardShare = new Clipboard(\".btn-share-gift\", {\r\n text: function (el) { return $(el).attr(\"data-clipboard\"); }\r\n });\r\n _this.clipboard\r\n .off(\"sucess\")\r\n .on(\"success\", function (e) {\r\n var $el = $(e.trigger);\r\n $el.attr(\"data-hint-prev\", $el.attr(\"data-hint\"))\r\n .attr(\"data-hint\", \"Подарочный код скопирован\")\r\n .addClass(\"hint-always\");\r\n setTimeout(function () {\r\n $el.attr(\"data-hint\", $el.attr(\"data-hint-prev\")).removeClass(\"hint-always\");\r\n }, 3000);\r\n })\r\n .on(\"error\", function (e) {\r\n var $el = $(e.trigger);\r\n var url = $el.attr(\"data-clipboard\");\r\n prompt(\"Чтобы скопировать подарочный код, нажмите Ctrl+C и потом Enter.\", url);\r\n });\r\n _this.clipboardShare\r\n .off(\"sucess\")\r\n .on(\"success\", function (e) {\r\n var $el = $(e.trigger);\r\n $el.attr(\"data-hint-prev\", $el.attr(\"data-hint\"))\r\n .attr(\"data-hint\", \"Сообщение скопировано\")\r\n .addClass(\"hint-always\");\r\n setTimeout(function () {\r\n $el.attr(\"data-hint\", $el.attr(\"data-hint-prev\")).removeClass(\"hint-always\");\r\n }, 3000);\r\n })\r\n .on(\"error\", function (e) {\r\n var $el = $(e.trigger);\r\n var url = $el.attr(\"data-clipboard\");\r\n prompt(\"Чтобы скопировать сообщение, нажмите Ctrl+C и потом Enter.\", url);\r\n });\r\n });\r\n };\r\n GiftCodeUtils.clipboard = null;\r\n GiftCodeUtils.clipboardShare = null;\r\n return GiftCodeUtils;\r\n }());\r\n _.extend(window[\"AppUtils\"], {\r\n GiftCodes: GiftCodeUtils\r\n });\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = GiftCodeUtils;\r\n});\r\n//# sourceMappingURL=giftCodeUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ImageUtils = (function () {\r\n function ImageUtils() {\r\n }\r\n ImageUtils.getImageSize = function (url) {\r\n var deferred = $.Deferred(), image = new Image();\r\n image.onload = function () {\r\n var size = {\r\n width: image.width,\r\n height: image.height\r\n };\r\n deferred.resolve(size);\r\n };\r\n image.src = url;\r\n return deferred.promise();\r\n };\r\n ImageUtils.createDropZone = function ($el, onDrop) {\r\n var lastenter;\r\n $el.on({\r\n dragover: function (event) {\r\n event.preventDefault();\r\n event[\"dataTransfer\"].dropEffect = \"copy\";\r\n },\r\n dragenter: function (event) {\r\n lastenter = event.target;\r\n $el.addClass(\"over\");\r\n },\r\n dragleave: function (event) {\r\n if (lastenter === event.target) {\r\n $el.removeClass(\"over\");\r\n }\r\n },\r\n drop: function (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n $el.removeClass(\"over\");\r\n var files = event[\"dataTransfer\"].files;\r\n if (onDrop) {\r\n onDrop(files);\r\n }\r\n }\r\n });\r\n };\r\n return ImageUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ImageUtils;\r\n});\r\n//# sourceMappingURL=imageUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n // Store.js\r\n var store = {}, win = window, doc = win.document, localStorageName = 'localStorage', scriptTag = 'script', storage;\r\n store.disabled = false;\r\n store.version = '1.3.20';\r\n store.set = function (key, value) { };\r\n store.get = function (key, defaultVal) { };\r\n store.has = function (key) { return store.get(key) !== undefined; };\r\n store.remove = function (key) { };\r\n store.clear = function () { };\r\n store.transact = function (key, defaultVal, transactionFn) {\r\n if (transactionFn == null) {\r\n transactionFn = defaultVal;\r\n defaultVal = null;\r\n }\r\n if (defaultVal == null) {\r\n defaultVal = {};\r\n }\r\n var val = store.get(key, defaultVal);\r\n var ret = transactionFn(val);\r\n store.set(key, ret === undefined ? val : ret);\r\n };\r\n store.getAll = function () {\r\n var ret = {};\r\n store.forEach(function (key, val) {\r\n ret[key] = val;\r\n });\r\n return ret;\r\n };\r\n store.forEach = function () { };\r\n store.serialize = function (value) { return JSON.stringify(value); };\r\n store.deserialize = function (value) {\r\n if (typeof value != 'string') {\r\n return undefined;\r\n }\r\n try {\r\n return JSON.parse(value);\r\n }\r\n catch (e) {\r\n return value || undefined;\r\n }\r\n };\r\n // Functions to encapsulate questionable FireFox 3.6.13 behavior\r\n // when about.config::dom.storage.enabled === false\r\n // See https://github.com/marcuswestin/store.js/issues#issue/13\r\n function isLocalStorageNameSupported() {\r\n try {\r\n return (localStorageName in win && win[localStorageName]);\r\n }\r\n catch (err) {\r\n return false;\r\n }\r\n }\r\n if (isLocalStorageNameSupported()) {\r\n storage = win[localStorageName];\r\n store.set = function (key, val) {\r\n if (val === undefined) {\r\n return store.remove(key);\r\n }\r\n storage.setItem(key, store.serialize(val));\r\n return val;\r\n };\r\n store.get = function (key, defaultVal) {\r\n var val = store.deserialize(storage.getItem(key));\r\n return (val === undefined ? defaultVal : val);\r\n };\r\n store.remove = function (key) { storage.removeItem(key); };\r\n store.clear = function () { storage.clear(); };\r\n store.forEach = function (callback) {\r\n for (var i = 0; i < storage.length; i++) {\r\n var key = storage.key(i);\r\n callback(key, store.get(key));\r\n }\r\n };\r\n }\r\n else if (doc && doc.documentElement[\"addBehavior\"]) {\r\n var storageOwner, storageContainer;\r\n // Since #userData storage applies only to specific paths, we need to\r\n // somehow link our data to a specific path. We choose /favicon.ico\r\n // as a pretty safe option, since all browsers already make a request to\r\n // this URL anyway and being a 404 will not hurt us here. We wrap an\r\n // iframe pointing to the favicon in an ActiveXObject(htmlfile) object\r\n // (see: http://msdn.microsoft.com/en-us/library/aa752574(v=VS.85).aspx)\r\n // since the iframe access rules appear to allow direct access and\r\n // manipulation of the document element, even for a 404 page. This\r\n // document can be used instead of the current document (which would\r\n // have been limited to the current path) to perform #userData storage.\r\n try {\r\n storageContainer = new ActiveXObject('htmlfile');\r\n storageContainer.open();\r\n storageContainer.write('<' + scriptTag + '>document.w=window');\r\n storageContainer.close();\r\n storageOwner = storageContainer.w.frames[0].document;\r\n storage = storageOwner.createElement('div');\r\n }\r\n catch (e) {\r\n // somehow ActiveXObject instantiation failed (perhaps some special\r\n // security settings or otherwse), fall back to per-path storage\r\n storage = doc.createElement('div');\r\n storageOwner = doc.body;\r\n }\r\n var withIEStorage = function (storeFunction) { return function () {\r\n var args = Array.prototype.slice.call(arguments, 0);\r\n args.unshift(storage);\r\n // See http://msdn.microsoft.com/en-us/library/ms531081(v=VS.85).aspx\r\n // and http://msdn.microsoft.com/en-us/library/ms531424(v=VS.85).aspx\r\n storageOwner.appendChild(storage);\r\n storage.addBehavior('#default#userData');\r\n storage.load(localStorageName);\r\n var result = storeFunction.apply(store, args);\r\n storageOwner.removeChild(storage);\r\n return result;\r\n }; };\r\n // In IE7, keys cannot start with a digit or contain certain chars.\r\n // See https://github.com/marcuswestin/store.js/issues/40\r\n // See https://github.com/marcuswestin/store.js/issues/83\r\n var forbiddenCharsRegex = new RegExp(\"[!\\\"#$%&'()*+,/\\\\\\\\:;<=>?@[\\\\]^`{|}~]\", \"g\");\r\n var ieKeyFix = function (key) { return key.replace(/^d/, '___$&').replace(forbiddenCharsRegex, '___'); };\r\n store.set = withIEStorage(function (storage, key, val) {\r\n key = ieKeyFix(key);\r\n if (val === undefined) {\r\n return store.remove(key);\r\n }\r\n storage.setAttribute(key, store.serialize(val));\r\n storage.save(localStorageName);\r\n return val;\r\n });\r\n store.get = withIEStorage(function (storage, key, defaultVal) {\r\n key = ieKeyFix(key);\r\n var val = store.deserialize(storage.getAttribute(key));\r\n return (val === undefined ? defaultVal : val);\r\n });\r\n store.remove = withIEStorage(function (storage, key) {\r\n key = ieKeyFix(key);\r\n storage.removeAttribute(key);\r\n storage.save(localStorageName);\r\n });\r\n store.clear = withIEStorage(function (storage) {\r\n var attributes = storage.XMLDocument.documentElement.attributes;\r\n storage.load(localStorageName);\r\n for (var i = attributes.length - 1; i >= 0; i--) {\r\n storage.removeAttribute(attributes[i].name);\r\n }\r\n storage.save(localStorageName);\r\n });\r\n store.forEach = withIEStorage(function (storage, callback) {\r\n var attributes = storage.XMLDocument.documentElement.attributes;\r\n for (var i = 0, attr; attr = attributes[i]; ++i) {\r\n callback(attr.name, store.deserialize(storage.getAttribute(attr.name)));\r\n }\r\n });\r\n }\r\n try {\r\n var testKey = '__storejs__';\r\n store.set(testKey, testKey);\r\n if (store.get(testKey) != testKey) {\r\n store.disabled = true;\r\n }\r\n store.remove(testKey);\r\n }\r\n catch (e) {\r\n store.disabled = true;\r\n }\r\n store.enabled = !store.disabled;\r\n var LocalStorageUtils = (function () {\r\n function LocalStorageUtils() {\r\n }\r\n LocalStorageUtils.get = function (key) {\r\n try {\r\n var data = store.get(this.prefix + key);\r\n if (data === undefined || data === null) {\r\n return null;\r\n }\r\n return JSON.parse(data);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n return null;\r\n };\r\n LocalStorageUtils.set = function (key, value) {\r\n try {\r\n store.set(this.prefix + key, JSON.stringify(value));\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n };\r\n LocalStorageUtils.addToList = function (key, value, maxLength) {\r\n if (maxLength === void 0) { maxLength = 20; }\r\n try {\r\n var data = store.get(this.prefix + key);\r\n if (data === undefined || data === null) {\r\n data = [];\r\n }\r\n else {\r\n data = JSON.parse(data);\r\n while (data.indexOf(value) !== -1) {\r\n data.splice(data.indexOf(value), 1);\r\n }\r\n }\r\n data.unshift(value);\r\n if (data.length > maxLength) {\r\n data = data.slice(0, maxLength);\r\n }\r\n this.set(key, data);\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n };\r\n LocalStorageUtils.prefix = \"author.today.\";\r\n LocalStorageUtils.RecentlyViewedKey = \"recently_viewed\";\r\n return LocalStorageUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = LocalStorageUtils;\r\n});\r\n//# sourceMappingURL=localStorageUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./ajaxUtils\", \"./metrikaUtils\", \"js.cookie\", \"lodash\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ajaxUtils_1 = require(\"./ajaxUtils\");\r\n var metrikaUtils_1 = require(\"./metrikaUtils\");\r\n var Cookies = require(\"js.cookie\");\r\n var _ = require(\"lodash\");\r\n var scriptjs = require(\"scriptjs\");\r\n var MerchantUtils = (function () {\r\n function MerchantUtils() {\r\n }\r\n MerchantUtils.getRewardTitleOptions = function () {\r\n return [\r\n \"Отличная книга!\",\r\n \"Прекрасная работа\",\r\n \"Качественная и достойная вещь!\",\r\n \"Потрясающе и интригующе\",\r\n \"Мне очень нравится!\",\r\n \"Спасибо за работу, автор\",\r\n \"Потрясающе!\",\r\n \"Рекомендую!\",\r\n \"Спасибо за ваш труд!\",\r\n \"Очень увлекательно!\",\r\n \"Хорошее произведение!\",\r\n \"Восхитительная работа!\",\r\n \"Просто ОГОНЬ\"\r\n ];\r\n };\r\n MerchantUtils.initButton = function (buyButton) {\r\n setTimeout(function () {\r\n if (buyButton.saveCard !== null) {\r\n buyButton.savePaymentMethod(buyButton.saveCard);\r\n }\r\n else {\r\n buyButton.savePaymentMethod(true);\r\n }\r\n var updateSaveCard = function (value) {\r\n if (buyButton.processing())\r\n return;\r\n buyButton.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"account/wallet\", { saveCard: value })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n buyButton.saveCard = value;\r\n }\r\n else {\r\n buyButton.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n buyButton.processing(false);\r\n });\r\n };\r\n buyButton.savePaymentMethod.subscribe(function (value) {\r\n if (buyButton.stage() === \"askToSavePaymentMethod\") {\r\n updateSaveCard(value);\r\n }\r\n });\r\n buyButton.savePaymentMethodDontAsk.subscribe(function (value) {\r\n if (buyButton.stage() === \"askToSavePaymentMethod\") {\r\n if (value) {\r\n updateSaveCard(buyButton.savePaymentMethod());\r\n }\r\n else {\r\n updateSaveCard(null);\r\n }\r\n }\r\n });\r\n });\r\n if (buyButton.workStatus === 2) {\r\n buyButton.rewardTitleOptions.push(\"Жду продолжения!\");\r\n buyButton.rewardTitleOptions.push(\"Поскорее бы проду... :-)\");\r\n buyButton.rewardTitleOptions.push(\"С нетерпением жду каждую главу!\");\r\n }\r\n };\r\n MerchantUtils.goToStage = function (stage, mode, buyButton) {\r\n if (stage !== \"startBuyingWork\" && buyButton.validation !== undefined && !buyButton.validation.isValid()) {\r\n buyButton.validation.errors.showAllMessages();\r\n return;\r\n }\r\n ;\r\n try {\r\n switch (stage) {\r\n case \"selectPaymentMethod\":\r\n switch (mode) {\r\n case \"work\":\r\n case \"gift\":\r\n metrikaUtils_1.default.reachGoal(\"buyWork\");\r\n break;\r\n case \"workWithReward\":\r\n metrikaUtils_1.default.reachGoal(\"buyWorkWithReward\");\r\n break;\r\n case \"reward\":\r\n metrikaUtils_1.default.reachGoal(\"buyReward\");\r\n break;\r\n }\r\n break;\r\n case \"promoCode\":\r\n metrikaUtils_1.default.reachGoal(\"promoCodeForm\");\r\n break;\r\n }\r\n }\r\n catch (ex) { }\r\n if (buyButton.mode() !== mode) {\r\n buyButton.mode(mode);\r\n }\r\n buyButton.errorMessages([]);\r\n buyButton.stage(stage);\r\n };\r\n MerchantUtils.checkSavedBankCards = function (el, payMethod, buyButton, app) {\r\n if (buyButton.processing())\r\n return;\r\n buyButton.processing(true);\r\n var $loadingIndicator = $(\"
\" +\r\n \"
\");\r\n ajaxUtils_1.AjaxUtils.get(\"merchant/getSavedBankCards?payMethod=\" + payMethod, null).done(function (result) {\r\n if (result.isSuccessful && result.data && result.data.length > 0) {\r\n buyButton.errorMessages([]);\r\n var options = _.map(result.data, function (x) {\r\n return {\r\n id: x.id,\r\n cardType: x.cardType,\r\n expiryMonth: x.expiryMonth,\r\n expiryYear: x.expiryYear,\r\n title: x.first6.substring(0, 4) + \" \" + x.first6.substring(4) + \"XX XXXX \" + x.last4\r\n };\r\n });\r\n options.push({\r\n id: null,\r\n cardType: \"New\",\r\n title: \"Другая\"\r\n });\r\n buyButton.bankcardOptions(options);\r\n buyButton.selectedBankCard(options[0]);\r\n buyButton.stage(\"fastPayment\");\r\n }\r\n else {\r\n var isBlocked = app.yaKassaBlocked;\r\n if (isBlocked) {\r\n buyButton.savePaymentMethod(false);\r\n }\r\n else {\r\n if (buyButton.saveCard !== null) {\r\n buyButton.savePaymentMethod(buyButton.saveCard);\r\n }\r\n }\r\n setTimeout(function () {\r\n if (buyButton.saveCard !== null || isBlocked) {\r\n buyButton.selectPayMethod(el, payMethod);\r\n }\r\n else {\r\n buyButton.stage(\"askToSavePaymentMethod\");\r\n }\r\n }, 0);\r\n }\r\n }).always(function () {\r\n $loadingIndicator.remove();\r\n $(\".pay-method > a\").each(function (i, el) { $(el).parent().removeClass(\"temp-disabled\"); });\r\n buyButton.processing(false);\r\n });\r\n };\r\n MerchantUtils.deleteSavedCard = function (buyButton) {\r\n if (buyButton.processing())\r\n return;\r\n buyButton.processing(true);\r\n var card = buyButton.selectedBankCard();\r\n ajaxUtils_1.AjaxUtils.post(\"merchant/deleteSavedCard\", { id: card.id })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n buyButton.bankcardOptions.remove(card);\r\n }\r\n else {\r\n buyButton.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n buyButton.processing(false);\r\n });\r\n };\r\n MerchantUtils.payMethodEnabled = function (payMethod, buyButton) {\r\n if (buyButton.disabledPayMethods && Array.isArray(buyButton.disabledPayMethods)) {\r\n return buyButton.disabledPayMethods.indexOf(payMethod) === -1;\r\n }\r\n return true;\r\n };\r\n /**\r\n * Проверка, что пользователю нужно показать более выгодный способ оплаты зарубежной картой\r\n */\r\n MerchantUtils.needToShowBetterForeignPayMethod = function (payMethod, buyButton) {\r\n if (!(payMethod == \"PaySelection\" || payMethod == \"CloudPayments\"))\r\n return false;\r\n if (!MerchantUtils.payMethodEnabled(\"Robokassa\", buyButton))\r\n return false;\r\n var cookieName = \"BetterForeignPayMethod\";\r\n if (Cookies.get(cookieName) == \"1\")\r\n return false;\r\n var date = new Date();\r\n date.setMonth(date.getMonth() + 3);\r\n Cookies.set(cookieName, \"1\", { \"expires\": date });\r\n return true;\r\n };\r\n MerchantUtils.createOder = function (el, payMethod, buyButton, successCallback) {\r\n var _this = this;\r\n if (buyButton.processing())\r\n return;\r\n if (!buyButton.payMethodEnabled(payMethod))\r\n return;\r\n if (MerchantUtils.needToShowBetterForeignPayMethod(payMethod, buyButton)) {\r\n MerchantUtils.goToStage(\"confirmForeignPaymentMethod\", buyButton.mode(), buyButton);\r\n return;\r\n }\r\n buyButton.processing(true);\r\n $(\".pay-method > a\").each(function (i, el) { $(el).parent().addClass(\"temp-disabled\"); });\r\n if ($(el).is(\"a\")) {\r\n var $loadingIndicator = $(\"
\" +\r\n \"
\");\r\n $loadingIndicator.appendTo(el);\r\n }\r\n var mode = buyButton.mode();\r\n var savePaymentMethod = buyButton.savePaymentMethod();\r\n if (payMethod !== \"CreditCard\" && payMethod !== \"YaKassa\" && payMethod !== \"SberPay\" && payMethod !== \"Tinkoff\" && payMethod !== \"TinkoffCard\") {\r\n savePaymentMethod = false;\r\n }\r\n var orderData = {\r\n workId: buyButton.workId,\r\n payMethod: payMethod,\r\n savePaymentMethod: savePaymentMethod,\r\n mode: mode,\r\n price: buyButton.price\r\n };\r\n if (mode === \"workWithReward\" || mode === \"reward\" || mode === \"wallet\") {\r\n orderData.rewardPrice = buyButton.rewardValue();\r\n orderData.rewardTitle = buyButton.rewardTitle();\r\n }\r\n var selectedCard = buyButton.selectedBankCard();\r\n if (selectedCard && selectedCard.cardType !== \"New\") {\r\n orderData.savedCardId = selectedCard.id;\r\n }\r\n ajaxUtils_1.AjaxUtils.post(\"merchant/createWorkOrder\", orderData).done(function (result) {\r\n if (result.isSuccessful) {\r\n try {\r\n metrikaUtils_1.default.reachGoal(\"createOrder\", {\r\n order_price: buyButton.price,\r\n currency: \"RUB\",\r\n orderId: result.data.orderId,\r\n workId: buyButton.workId,\r\n workStatus: buyButton.workStatus,\r\n workTitle: buyButton.workTitle,\r\n payMethod: payMethod,\r\n savePaymentMethod: savePaymentMethod\r\n });\r\n if (successCallback)\r\n successCallback(buyButton, result);\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n }\r\n setTimeout(function () {\r\n var method = result.data.method || \"post\";\r\n if (method === \"get\") {\r\n window.location.href = result.data.url;\r\n return;\r\n }\r\n if (method === \"widget\") {\r\n if (payMethod === \"PaySelection\") {\r\n _this.processPaySelectionOrder(result.data, buyButton);\r\n return;\r\n }\r\n else if (payMethod === \"CloudPayments\") {\r\n _this.processCloudPaymentsOrder(result.data, buyButton);\r\n return;\r\n }\r\n }\r\n if (method === \"post\") {\r\n var $form = $(\"
\");\r\n if (result.data.formData) {\r\n _.each(JSON.parse(result.data.formData), function (v, k) {\r\n if (_.isString(v)) {\r\n var $input = $(\"\", {\r\n name: k,\r\n value: v\r\n });\r\n $form.append($input);\r\n }\r\n else {\r\n _.each(v, function (arr) {\r\n var $input = $(\"\", {\r\n name: k,\r\n value: arr\r\n });\r\n $form.append($input);\r\n });\r\n }\r\n });\r\n }\r\n $(\"body\").append($form);\r\n $form.submit();\r\n }\r\n }, 1000);\r\n }\r\n else {\r\n buyButton.errorMessages(result.messages);\r\n }\r\n })\r\n .always(function () {\r\n setTimeout(function () {\r\n if ($(el).is(\"a\")) {\r\n $loadingIndicator.remove();\r\n }\r\n $(\".pay-method > a\").each(function (i, el) { $(el).parent().removeClass(\"temp-disabled\"); });\r\n buyButton.processing(false);\r\n if ($(el).is(\"button\")) {\r\n $(el).removeClass(\"is-loading\");\r\n $(el).removeAttr(\"disabled\");\r\n }\r\n }, 1000);\r\n });\r\n };\r\n MerchantUtils.processCloudPaymentsOrder = function (data, buyButton) {\r\n scriptjs([\"https://widget.cloudpayments.ru/bundles/cloudpayments.js\"], function () {\r\n var widget = new cp.CloudPayments();\r\n widget.pay('charge', {\r\n publicId: data.publicId,\r\n description: \"\\u041E\\u043F\\u043B\\u0430\\u0442\\u0430 \\u0437\\u0430\\u043A\\u0430\\u0437\\u0430 #\" + data.orderId + \" \\u043D\\u0430 Author.Today\",\r\n amount: data.amount,\r\n currency: \"RUB\",\r\n accountId: data.userId.toString(),\r\n invoiceId: data.orderId.toString(),\r\n email: data.email,\r\n skin: 'mini',\r\n retryPayment: false,\r\n autoClose: 3,\r\n configuration: {\r\n common: {\r\n successRedirectUrl: data.successUrl,\r\n failRedirectUrl: data.failUrl\r\n }\r\n }\r\n }, {\r\n onSuccess: function (options) {\r\n console.log(\"CloudPayments: onSuccess\");\r\n try {\r\n buyButton.modal.hide();\r\n }\r\n catch (e) { }\r\n window.location.href = data.successUrl;\r\n },\r\n onFail: function (reason, options) {\r\n console.error(\"CloudPayments: onFail: \", reason);\r\n if (!(reason) || reason === \"User has cancelled\") {\r\n // Пользователь отменил покупку или закрыл окно\r\n return;\r\n }\r\n buyButton.errorMessages([\r\n \"Произошла ошибка. Пожалуйста, немного подождите и попробуйте еще раз. \" +\r\n \"Если ошибка повторяется - сообщите об этом в службу поддержки.\",\r\n (\"\\u041F\\u0440\\u0438\\u0447\\u0438\\u043D\\u0430: \" + reason)\r\n ]);\r\n },\r\n onComplete: function (paymentResult, options) {\r\n }\r\n });\r\n });\r\n };\r\n ;\r\n MerchantUtils.processPaySelectionOrder = function (data, buyButton) {\r\n scriptjs([\"https://widget.payselection.com/lib/pay-widget.js\"], function () {\r\n var widget = new pw.PayWidget();\r\n console.log(\"PayWidget: init\");\r\n var widgetParams = [\r\n {\r\n serviceId: data.serviceId,\r\n key: data.key\r\n },\r\n JSON.parse(data.requestBody),\r\n {\r\n // Варианты ключей которые могут приходить по колбекам:\r\n // для onSuccess -> PAY_WIDGET:TRANSACTION_SUCCESS, PAY_WIDGET:CLOSE_AFTER_SUCCESS\r\n // для onError -> PAY_WIDGET:TRANSACTION_FAIL, PAY_WIDGET:CREATE_NETWORK_ERROR, PAY_WIDGET:CREATE_BAD_REQUEST_ERROR, PAY_WIDGET:CLOSE_AFTER_FAIL, PAY_WIDGET:CLOSE_AFTER_CREATE_NETWORK_ERROR\r\n // для onClose -> PAY_WIDGET:CLOSE_BEFORE_PAY\r\n onSuccess: function (res) {\r\n console.log(\"PayWidget: onSuccess\", res);\r\n window.location.href = data.returnUrl;\r\n },\r\n onError: function (res) {\r\n console.error(\"PayWidget: onFail\", res);\r\n if (res.code === \"CLOSE_AFTER_FAIL\" ||\r\n res.code === \"CLOSE_AFTER_CREATE_NETWORK_ERROR\") {\r\n // Ошибка во время оплаты, но пользователь получил уведомление\r\n return;\r\n }\r\n // Хак для скрытия виджета. Возможно, в будущем нужно будет убрать.\r\n $(\"#paywidget-loader-overlay\").remove();\r\n $(\"iframe\").parent().remove();\r\n buyButton.errorMessages([\r\n \"Произошла ошибка. Пожалуйста, немного подождите и попробуйте еще раз. \" +\r\n \"Если ошибка повторяется - сообщите об этом в службу поддержки.\",\r\n (\"\\u041A\\u043E\\u0434: \" + res.code)\r\n ]);\r\n },\r\n onClose: function (res) {\r\n console.log(\"PayWidget: onClose\", res);\r\n if (res.code === \"PAY_WIDGET:CLOSE_BEFORE_PAY\") {\r\n }\r\n else {\r\n buyButton.errorMessages([\r\n \"Вы закрыли форму при создании заказа. Если у вас возникла проблема с оплатой - сообщите об этом в службу поддержки.\",\r\n (\"\\u041A\\u043E\\u0434: \" + res.code)\r\n ]);\r\n }\r\n },\r\n }\r\n ];\r\n widget.pay.apply(widget, widgetParams);\r\n });\r\n };\r\n MerchantUtils.selectReward = function (value, buyButton) {\r\n if (value === \"custom\") {\r\n buyButton.isCustomRewardValue(true);\r\n }\r\n else {\r\n buyButton.rewardValue(value);\r\n buyButton.isCustomRewardValue(false);\r\n }\r\n };\r\n MerchantUtils.selectRewardTitle = function (index, buyButton) {\r\n var title = buyButton.rewardTitleOptions[index];\r\n if (buyButton.previousRandomTitles.indexOf(title) !== -1) {\r\n buyButton.selectRandomRewardTitle();\r\n }\r\n else {\r\n buyButton.rewardTitle(title);\r\n buyButton.previousRandomTitles = buyButton.previousRandomTitles.slice(0, 5);\r\n }\r\n };\r\n MerchantUtils.submitPromoCode = function (buyButton, successCallback) {\r\n if (buyButton.validation !== undefined && !buyButton.validation.isValid()) {\r\n buyButton.validation.errors.showAllMessages();\r\n return;\r\n }\r\n ;\r\n buyButton.errorMessages([]);\r\n buyButton.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"merchant/promoCode\", {\r\n code: buyButton.promoCode(),\r\n workId: buyButton.workId\r\n })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n if (successCallback)\r\n successCallback(buyButton);\r\n try {\r\n metrikaUtils_1.default.reachGoal(\"promoCodeActivation\");\r\n }\r\n catch (ex) { }\r\n try {\r\n buyButton.reloadPage();\r\n }\r\n catch (ex) {\r\n buyButton.fullReloadPage();\r\n }\r\n }\r\n else {\r\n buyButton.errorMessages(result.messages);\r\n }\r\n })\r\n .always(function () {\r\n buyButton.processing(false);\r\n });\r\n };\r\n return MerchantUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = MerchantUtils;\r\n});\r\n//# sourceMappingURL=merchantUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"lodash\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var _ = require(\"lodash\");\r\n var MetrikaUtils = (function () {\r\n function MetrikaUtils() {\r\n }\r\n MetrikaUtils.init = function (mode) {\r\n $(document).off(\"yacounter35844850inited\");\r\n $(document).on(\"yacounter35844850inited\", function () {\r\n try {\r\n console.log(\"Main yaCounter is ready...\");\r\n if (app.isAuthenticated) {\r\n ym(app.yaCounterId, \"setUserID\", app.userId);\r\n }\r\n ym(app.yaCounterId, \"userParams\", {\r\n isAuthenticated: app.isAuthenticated,\r\n userId: app.userId,\r\n viewMode: mode\r\n });\r\n }\r\n catch (e) {\r\n }\r\n });\r\n if (app.yaProfileCounterId) {\r\n $(document).off(\"yacounter\" + app.yaProfileCounterId + \"inited\");\r\n $(document).on(\"yacounter\" + app.yaProfileCounterId + \"inited\", function () {\r\n try {\r\n console.log(\"Profile yaCounter is ready...\");\r\n if (app.isAuthenticated) {\r\n ym(app.yaProfileCounterId, \"setUserID\", app.userId);\r\n }\r\n ym(app.yaProfileCounterId, \"userParams\", {\r\n isAuthenticated: app.isAuthenticated,\r\n userId: app.userId,\r\n viewMode: mode\r\n });\r\n }\r\n catch (e) {\r\n }\r\n });\r\n }\r\n };\r\n MetrikaUtils.proxyMethod = function (methodName, params, params2) {\r\n try {\r\n var call = function (counterId) {\r\n if (params2) {\r\n ym(counterId, methodName, params, params2);\r\n }\r\n else if (params) {\r\n ym(counterId, methodName, params);\r\n }\r\n else {\r\n ym(counterId, methodName);\r\n }\r\n };\r\n call(app.yaCounterId);\r\n call(app.yaProfileCounterId);\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n }\r\n };\r\n MetrikaUtils.hit = function (url) {\r\n this.proxyMethod(\"hit\", url);\r\n };\r\n MetrikaUtils.reachGoal = function (goalName, params) {\r\n this.proxyMethod(\"reachGoal\", goalName, params);\r\n try {\r\n _tmr.push({ type: \"reachGoal\", id: 3310925, goal: goalName });\r\n fbq(\"trackCustom\", goalName, params);\r\n }\r\n catch (ex) { }\r\n };\r\n /**\r\n * Передача данных Ecommerce\r\n */\r\n MetrikaUtils.dataLayer_Purchase = function (orderId, products) {\r\n try {\r\n var dataLayer = window[\"dataLayer\"] || [];\r\n dataLayer.push({\r\n \"ecommerce\": {\r\n \"purchase\": {\r\n \"actionField\": {\r\n \"id\": orderId\r\n },\r\n \"products\": products\r\n }\r\n }\r\n });\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n }\r\n };\r\n return MetrikaUtils;\r\n }());\r\n _.extend(window[\"AppUtils\"], {\r\n Metrika: MetrikaUtils\r\n });\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = MetrikaUtils;\r\n});\r\n//# sourceMappingURL=metrikaUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var NavBarUtils = (function () {\r\n function NavBarUtils() {\r\n }\r\n NavBarUtils.init = function () {\r\n $(\"[data-search-open]\").off('click').click(function () {\r\n var target = $(this).attr(\"data-search-open\") || \".navbar-form\";\r\n var $form = $(target);\r\n $form.addClass(\"open\");\r\n $form.find(\"input[name='q']\").focus();\r\n return false;\r\n });\r\n $(\"[data-search-dismiss]\").off('click').click(function () {\r\n var target = $(this).attr(\"data-search-dismiss\") || \".navbar-form\";\r\n var $form = $(target);\r\n $form.removeClass(\"open\");\r\n $form.find(\"input[name='q']\").val(\"\");\r\n return false;\r\n });\r\n var $body = $(document.body);\r\n if ($body.is(\".account-layout\")) {\r\n $(function () {\r\n $(\"#aside-toggle\").off('click').on(\"click\", function () {\r\n var $trigger = $(this);\r\n if ($trigger.hasClass(\"open\")) {\r\n $body.addClass(\"aside-collapsed\");\r\n $trigger.removeClass(\"open\");\r\n }\r\n else {\r\n $trigger.addClass(\"open\");\r\n $body.removeClass(\"aside-collapsed\");\r\n }\r\n $(window).trigger(\"resize\");\r\n });\r\n $(\".wrapper .aside + section.content\").off('click').on(\"click\", function () {\r\n if (!$body.hasClass(\"aside-collapsed\")) {\r\n $body.addClass(\"aside-collapsed\");\r\n $(\"#aside-toggle\").removeClass(\"open\");\r\n }\r\n });\r\n });\r\n }\r\n };\r\n return NavBarUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = NavBarUtils;\r\n});\r\n//# sourceMappingURL=navBarUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var oAuthUtils = (function () {\r\n function oAuthUtils() {\r\n }\r\n oAuthUtils.generateRandomString = function () {\r\n var array = new Uint32Array(56 / 2);\r\n window.crypto.getRandomValues(array);\r\n var s = '';\r\n for (var i = 0; i < array.length; i++) {\r\n s += ('0' + array[i].toString(16)).substr(-2);\r\n }\r\n return s;\r\n };\r\n oAuthUtils.sha256 = function (plain, callback) {\r\n var data = oAuthUtils.str2ab(plain);\r\n window.crypto.subtle.digest('SHA-256', data).then(function (hashed) {\r\n callback(hashed);\r\n });\r\n };\r\n oAuthUtils.str2ab = function (str) {\r\n var buf = new ArrayBuffer(str.length);\r\n var bufView = new Uint8Array(buf);\r\n for (var i = 0, strLen = str.length; i < strLen; i++) {\r\n bufView[i] = str.charCodeAt(i);\r\n }\r\n return bufView;\r\n };\r\n oAuthUtils.base64urlencode = function (a) {\r\n var str = \"\";\r\n var bytes = new Uint8Array(a);\r\n var len = bytes.byteLength;\r\n for (var i = 0; i < len; i++) {\r\n str += String.fromCharCode(bytes[i]);\r\n }\r\n return btoa(str)\r\n .replace(/\\+/g, \"-\")\r\n .replace(/\\//g, \"_\")\r\n .replace(/=+$/, \"\");\r\n };\r\n oAuthUtils.challenge_from_verifier = function (v, callback) {\r\n oAuthUtils.sha256(v, function (hashed) {\r\n var base64encoded = oAuthUtils.base64urlencode(hashed);\r\n callback(base64encoded);\r\n });\r\n };\r\n return oAuthUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = oAuthUtils;\r\n});\r\n//# sourceMappingURL=oAuthUtils.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"lodash\", \"toastr\", \"../viewModels/base/baseViewModel\", \"../components/modalDialog\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var toastr = require(\"toastr\");\r\n var baseViewModel_1 = require(\"../viewModels/base/baseViewModel\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var PostUtils = (function (_super) {\r\n __extends(PostUtils, _super);\r\n function PostUtils() {\r\n _super.call(this);\r\n }\r\n PostUtils.prototype.vote = function (btn, postId, vote) {\r\n var $icon = $(btn), $btn = $icon.parent();\r\n if ($btn.attr(\"disabled\"))\r\n return;\r\n $btn.attr(\"disabled\", \"disabled\");\r\n var toggleClass = \"toggle\", $rating = $btn.siblings(\".rating-count\"), voteId = $rating.attr(\"data-vote-id\");\r\n if (!$icon.hasClass(toggleClass)) {\r\n $btn.addClass(\"animate\");\r\n setTimeout(function () {\r\n $btn.removeClass(\"animate\");\r\n }, 500);\r\n }\r\n ajaxUtils_1.AjaxUtils.post(\"post/vote\", {\r\n voteId: voteId,\r\n targetId: postId,\r\n isLiked: $icon.hasClass(toggleClass) ? null : vote === 1\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n $rating.html(result.data.rating);\r\n $rating.attr(\"data-vote-id\", result.data.voteId);\r\n if ($icon.hasClass(toggleClass)) {\r\n $icon.removeClass(toggleClass);\r\n $icon.addClass(\"hover-state-canceled\");\r\n $icon.on(\"mouseleave\", function () {\r\n $icon.removeClass(\"hover-state-canceled\");\r\n $icon.off(\"mouseleave\");\r\n });\r\n }\r\n else {\r\n $btn.siblings().find(\".like, .dislike\").removeClass(toggleClass);\r\n $icon.removeClass(\"hover-state-canceled\");\r\n $icon.addClass(toggleClass);\r\n }\r\n }\r\n else if (result.isWarning) {\r\n toastr.warning(result.messages[0]);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n $btn.removeAttr(\"disabled\");\r\n });\r\n };\r\n PostUtils.prototype.toggleFavorite = function (btn, postId) {\r\n var _this = this;\r\n var $btn = $(btn), $icon = $btn.find(\"i\");\r\n if ($btn.attr(\"disabled\"))\r\n return;\r\n $btn.attr(\"disabled\", \"disabled\");\r\n var toggleClass = \"toggle\", isActive = $icon.hasClass(toggleClass);\r\n if (!isActive) {\r\n $btn.addClass(\"animate\");\r\n setTimeout(function () {\r\n $btn.removeClass(\"animate\");\r\n }, 500);\r\n }\r\n var ajaxSetFavor = function () {\r\n ajaxUtils_1.AjaxUtils.post(\"post/toggleFavorite\", {\r\n postId: postId,\r\n toggle: !isActive\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n if (isActive) {\r\n $icon.removeClass(toggleClass);\r\n $btn.attr(\"data-hint\", \"Добавить пост в сохраненные\");\r\n }\r\n else {\r\n $icon.addClass(toggleClass);\r\n $btn.attr(\"data-hint\", \"Удалить пост из сохраненных\");\r\n }\r\n }\r\n else if (result.isWarning) {\r\n toastr.warning(result.messages[0]);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n $btn.removeAttr(\"disabled\");\r\n });\r\n };\r\n if (isActive) {\r\n this.showModal({\r\n title: \"Вы уверены?\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u043F\\u043E\\u0441\\u0442 \\u0438\\u0437 \\u0441\\u043E\\u0445\\u0440\\u0430\\u043D\\u0435\\u043D\\u043D\\u044B\\u0445?\",\r\n maxWidth: \"400px\",\r\n type: modalDialog_1.ModalType.ConfirmDelete,\r\n deleteBtnText: \"Удалить\",\r\n onSubmit: function () {\r\n ajaxSetFavor();\r\n _this.modal.hide();\r\n }\r\n });\r\n $btn.removeAttr(\"disabled\");\r\n }\r\n else {\r\n ajaxSetFavor();\r\n }\r\n };\r\n PostUtils.prototype.toggleUserPinned = function (btn, postId, toogle) {\r\n var _this = this;\r\n var $btn = $(btn);\r\n var postPinnedClass = 'post-pinned', toogleClass = 'toogle', isActive = $btn.hasClass(toogleClass);\r\n if ($btn.attr(\"disabled\"))\r\n return;\r\n $btn.attr(\"disabled\", \"disabled\");\r\n ajaxUtils_1.AjaxUtils.post(\"post/toggleUserPin\", {\r\n objectId: postId,\r\n enabled: !isActive\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n if (!isActive) {\r\n $(\".\" + postPinnedClass + \".\" + toogleClass).removeClass(toogleClass);\r\n }\r\n $btn.addClass(toogleClass);\r\n toastr.success(result.messages[0]);\r\n setTimeout(function () {\r\n _this.reloadPage();\r\n }, 1000);\r\n }\r\n else if (result.isWarning) {\r\n toastr.warning(result.messages[0]);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n $btn.removeAttr(\"disabled\");\r\n });\r\n };\r\n PostUtils.startViewStatsCollector = function () {\r\n try {\r\n var $posts = $(\".post\");\r\n var observerElements = $posts.toArray();\r\n // Создаем новый observer (наблюдатель)\r\n var observer_1 = new window[\"IntersectionObserver\"](function (entries) {\r\n entries.forEach(function (entry) {\r\n if (entry.isIntersecting) {\r\n setTimeout(function () {\r\n var parent = entry.target.parentNode;\r\n if (observerElements.indexOf(parent) >= 0 &&\r\n entry.target.getBoundingClientRect().bottom > 0 &&\r\n entry.target.getBoundingClientRect().top < document.documentElement.clientHeight) {\r\n observerElements = observerElements.filter(function (elem) { return elem !== parent; });\r\n var id = $(parent).attr(\"id\").split(\"_\")[1];\r\n ajaxUtils_1.AjaxUtils.post(app.statsApiUrl + \"post/hit/\" + id, {});\r\n }\r\n }, 10000); // 10 секунд\r\n }\r\n });\r\n });\r\n $posts.find(\".rich-content\").each(function (index, el) {\r\n observer_1.observe(el);\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n return PostUtils;\r\n }(baseViewModel_1.BaseViewModel));\r\n _.extend(window[\"AppUtils\"], {\r\n Post: new PostUtils()\r\n });\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = PostUtils;\r\n});\r\n//# sourceMappingURL=postUtils.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"lodash\", \"../viewModels/base/baseViewModel\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var _ = require(\"lodash\");\r\n var baseViewModel_1 = require(\"../viewModels/base/baseViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var ProfileUtils = (function (_super) {\r\n __extends(ProfileUtils, _super);\r\n function ProfileUtils() {\r\n _super.call(this);\r\n }\r\n ProfileUtils.prototype.showConfirmDeleteAvatarModal = function (id) {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление фотографии\",\r\n message: \"Вы уверены, что хотите удалить фотографию?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"account/moderatorDeleteProfileImage\", { id: id })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.fullReloadPage();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ProfileUtils.prototype.showConfirmDeleteBgModal = function (id) {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление фонового изображения\",\r\n message: \"Вы уверены, что хотите удалить фоновое изображение?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"account/moderatorDeleteProfileBgImage\", { id: id })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.fullReloadPage();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n return ProfileUtils;\r\n }(baseViewModel_1.BaseViewModel));\r\n _.extend(window[\"AppUtils\"], {\r\n Profile: new ProfileUtils()\r\n });\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ProfileUtils;\r\n});\r\n//# sourceMappingURL=profileUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var RichContentUtils = (function () {\r\n function RichContentUtils() {\r\n }\r\n RichContentUtils.replaceEmoji = function (html) {\r\n try {\r\n var $div = $(\"
\").html(html);\r\n $div.find(\"img.emojione\").each(function (i, el) {\r\n var $el = $(el), src = $el.attr(\"src\"), alt = $el.attr(\"alt\");\r\n var $span = $(\"\", {\r\n \"class\": \"emojione fr-emoticon fr-deletable fr-emoticon-img\",\r\n \"data-emoji\": alt,\r\n css: {\r\n 'background-image': \"url(\" + src + \")\"\r\n },\r\n text: \" \"\r\n });\r\n html = html.replace(el.outerHTML, $span[0].outerHTML);\r\n });\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n return html;\r\n };\r\n RichContentUtils.richTextToFroala = function (html) {\r\n try {\r\n html = this.replaceEmoji(html);\r\n var $div = $(\"
\").html(html);\r\n $div.find(\".spoiler\").each(function (i, el) {\r\n var $el = $(el), title = $el.find(\".spoiler-title\").first().text(), content = $el.find(\".spoiler-content\").first().html();\r\n var spoilerHtml = (\"

[spoiler=\" + title + \"]

\") + content + \"

[/spoiler]

\";\r\n html = html.replace(el.outerHTML, spoilerHtml);\r\n });\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n return html;\r\n };\r\n RichContentUtils.processHtml = function (html) {\r\n $(html).find(\".rich-content\").each(function (i, el) {\r\n $(\".img-gif\").each(function (ind, el) {\r\n var $el = $(el);\r\n if ($el.data(\"gif-init\"))\r\n return;\r\n $el.data(\"gif-init\", true);\r\n var prevImage = $el.attr(\"data-src\");\r\n var srcImage = $el.attr(\"data-gif\");\r\n $el.bind(\"load\", function () {\r\n if ($el.width() < 100 || $el.width < 100) {\r\n $el.attr(\"src\", srcImage);\r\n $el.unbind(\"load\");\r\n return;\r\n }\r\n var a = document.createElement(\"a\");\r\n a.href = srcImage;\r\n var html = $('
' +\r\n '\t\t
' +\r\n '\t\t\t' +\r\n '\t\t\t
' +\r\n '\t\t\t\t
' +\r\n '\t\t\t\t
' +\r\n '\t\t\t\t
' +\r\n \"\t\t\t
\" +\r\n \"\t\t
\" +\r\n '\t\t
' +\r\n '\t\t\t' +\r\n \"\t\t
\" +\r\n \"
\");\r\n $el.css(\"display\", \"none\");\r\n $(html).insertAfter(el);\r\n var $btn = $(html).find(\".gif-preview-button\");\r\n var $circle = $(html).find(\".gif-preview-circle\");\r\n var $footer = $(html).find(\".gif-preview-fotter\");\r\n var $gifImage = $(html).find(\".gif-preview-img\");\r\n $(html).find(\".gif-preview-wrapper\").click(function () {\r\n if ($gifImage.data(\"is-gif\")) {\r\n $gifImage.show();\r\n $circle.removeClass(\"gif-preview-rotating\");\r\n $footer.show();\r\n $btn.show();\r\n $gifImage.attr(\"src\", prevImage);\r\n $gifImage.data(\"is-gif\", false);\r\n }\r\n else {\r\n $circle.addClass(\"gif-preview-rotating\");\r\n $footer.hide();\r\n $gifImage.attr(\"src\", srcImage);\r\n $gifImage.bind(\"load\", function () {\r\n $circle.removeClass(\"rotating\");\r\n $btn.hide();\r\n $gifImage.unbind(\"load\");\r\n });\r\n $gifImage.data(\"is-gif\", true);\r\n }\r\n });\r\n });\r\n });\r\n });\r\n };\r\n return RichContentUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = RichContentUtils;\r\n});\r\n//# sourceMappingURL=richContentUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var Sharer = (function () {\r\n function Sharer(elem) {\r\n this.elem = elem;\r\n }\r\n Sharer.prototype.getValue = function (attr) {\r\n var val = this.elem.getAttribute('data-' + attr);\r\n return (val === undefined || val === null) ? false : val;\r\n };\r\n Sharer.prototype.share = function () {\r\n var sharer = this.getValue('sharer').toLowerCase(), sharers = {\r\n facebook: {\r\n shareUrl: 'https://www.facebook.com/sharer/sharer.php',\r\n params: { u: this.getValue('url') }\r\n },\r\n googleplus: {\r\n shareUrl: 'https://plus.google.com/share',\r\n params: { url: this.getValue('url') }\r\n },\r\n linkedin: {\r\n shareUrl: 'https://www.linkedin.com/shareArticle',\r\n params: {\r\n url: this.getValue('url'),\r\n mini: true\r\n }\r\n },\r\n twitter: {\r\n shareUrl: 'https://twitter.com/intent/tweet/',\r\n params: {\r\n text: this.getValue('title'),\r\n url: this.getValue('url'),\r\n hashtags: this.getValue('hashtags'),\r\n via: this.getValue('via')\r\n }\r\n },\r\n email: {\r\n shareUrl: 'mailto:' + this.getValue('to'),\r\n params: {\r\n subject: this.getValue('subject'),\r\n body: this.getValue('title') + '\\n' + this.getValue('url')\r\n },\r\n isLink: true\r\n },\r\n whatsapp: {\r\n shareUrl: 'whatsapp://send',\r\n params: {\r\n text: this.getValue('title') + ' ' + this.getValue('url')\r\n },\r\n isLink: true\r\n },\r\n telegram: {\r\n shareUrl: 'tg://msg_url',\r\n params: {\r\n text: this.getValue('title') + ' ' + this.getValue('url')\r\n },\r\n isLink: true\r\n },\r\n viber: {\r\n shareUrl: 'viber://forward',\r\n params: {\r\n text: this.getValue('title') + ' ' + this.getValue('url')\r\n },\r\n isLink: true\r\n },\r\n line: {\r\n shareUrl: 'http://line.me/R/msg/text/?' + encodeURIComponent(this.getValue('title') + ' ' + this.getValue('url')),\r\n isLink: true\r\n },\r\n pinterest: {\r\n shareUrl: 'https://www.pinterest.com/pin/create/button/',\r\n params: {\r\n url: this.getValue('url'),\r\n media: this.getValue('image'),\r\n description: this.getValue('description')\r\n }\r\n },\r\n tumblr: {\r\n shareUrl: 'http://tumblr.com/widgets/share/tool',\r\n params: {\r\n canonicalUrl: this.getValue('url'),\r\n content: this.getValue('url'),\r\n posttype: 'link',\r\n title: this.getValue('title'),\r\n caption: this.getValue('caption'),\r\n tags: this.getValue('tags')\r\n }\r\n },\r\n hackernews: {\r\n shareUrl: 'https://news.ycombinator.com/submitlink',\r\n params: {\r\n u: this.getValue('url'),\r\n t: this.getValue('title')\r\n }\r\n },\r\n reddit: {\r\n shareUrl: 'https://www.reddit.com/submit',\r\n params: { 'url': this.getValue('url') }\r\n },\r\n vk: {\r\n shareUrl: 'http://vk.com/share.php',\r\n params: {\r\n url: this.getValue('url'),\r\n title: this.getValue('title'),\r\n description: this.getValue('caption'),\r\n image: this.getValue('image')\r\n }\r\n },\r\n xing: {\r\n shareUrl: 'https://www.xing.com/app/user',\r\n params: {\r\n 'op': 'share',\r\n 'url': this.getValue('url'),\r\n 'title': this.getValue('title')\r\n }\r\n },\r\n buffer: {\r\n shareUrl: 'https://buffer.com/add',\r\n params: {\r\n url: this.getValue('url'),\r\n title: this.getValue('title'),\r\n via: this.getValue('via'),\r\n picture: this.getValue('picture')\r\n }\r\n },\r\n instapaper: {\r\n shareUrl: 'http://www.instapaper.com/edit',\r\n params: {\r\n url: this.getValue('url'),\r\n title: this.getValue('title'),\r\n description: this.getValue('description')\r\n }\r\n },\r\n pocket: {\r\n shareUrl: 'https://getpocket.com/save',\r\n params: {\r\n url: this.getValue('url')\r\n }\r\n },\r\n digg: {\r\n shareUrl: 'http://www.digg.com/submit',\r\n params: {\r\n url: this.getValue('url')\r\n }\r\n },\r\n stumbleupon: {\r\n shareUrl: 'http://www.stumbleupon.com/submit',\r\n params: {\r\n url: this.getValue('url'),\r\n title: this.getValue('title')\r\n }\r\n },\r\n flipboard: {\r\n shareUrl: 'https://share.flipboard.com/bookmarklet/popout',\r\n params: {\r\n v: 2,\r\n title: this.getValue('title'),\r\n url: this.getValue('url'),\r\n t: Date.now()\r\n }\r\n },\r\n weibo: {\r\n shareUrl: 'http://service.weibo.com/share/share.php',\r\n params: {\r\n url: this.getValue('url'),\r\n title: this.getValue('title'),\r\n pic: this.getValue('image'),\r\n appkey: this.getValue('appkey'),\r\n ralateUid: this.getValue('ralateuid'),\r\n language: 'zh_cn'\r\n }\r\n },\r\n renren: {\r\n shareUrl: 'http://share.renren.com/share/buttonshare',\r\n params: {\r\n link: this.getValue('url')\r\n }\r\n },\r\n myspace: {\r\n shareUrl: 'https://myspace.com/post',\r\n params: {\r\n u: this.getValue('url'),\r\n t: this.getValue('title'),\r\n c: this.getValue('description')\r\n }\r\n },\r\n blogger: {\r\n shareUrl: 'https://www.blogger.com/blog-this.g',\r\n params: {\r\n u: this.getValue('url'),\r\n n: this.getValue('title'),\r\n t: this.getValue('description')\r\n }\r\n },\r\n baidu: {\r\n shareUrl: 'http://cang.baidu.com/do/add',\r\n params: {\r\n it: this.getValue('title'),\r\n iu: this.getValue('url')\r\n }\r\n }\r\n }, s = sharers[sharer];\r\n // custom popups sizes\r\n if (s) {\r\n s.width = this.getValue('width');\r\n s.height = this.getValue('height');\r\n }\r\n return s !== undefined ? this.urlSharer(s) : false;\r\n };\r\n Sharer.prototype.urlSharer = function (sharer) {\r\n var p = sharer.params || {};\r\n var keys = Object.keys(p);\r\n var i;\r\n var str = keys.length > 0 ? '?' : '';\r\n for (i = 0; i < keys.length; i++) {\r\n if (str !== '?') {\r\n str += '&';\r\n }\r\n if (p[keys[i]]) {\r\n str += keys[i] + '=' + encodeURIComponent(p[keys[i]]);\r\n }\r\n }\r\n sharer.shareUrl += str;\r\n if (!sharer.isLink) {\r\n var popWidth = sharer.width || 600;\r\n var popHeight = sharer.height || 480;\r\n var left = window.innerWidth / 2 - popWidth / 2 + window.screenX;\r\n var top_1 = window.innerHeight / 2 - popHeight / 2 + window.screenY;\r\n var popParams = 'scrollbars=no, width=' + popWidth + ', height=' + popHeight + ', top=' + top_1 + ', left=' + left;\r\n var newWindow = window.open(sharer.shareUrl, '', popParams);\r\n if (window.focus) {\r\n newWindow.focus();\r\n }\r\n }\r\n else {\r\n window.location.href = sharer.shareUrl;\r\n }\r\n };\r\n Sharer.init = function () {\r\n var elems = document.querySelectorAll('.sharer');\r\n var i;\r\n var l = elems.length;\r\n function addShare(elem) {\r\n var target = elem.currentTarget || elem.srcElement;\r\n var sharer = new Sharer(target);\r\n sharer.share();\r\n }\r\n for (i = 0; i < l; i++) {\r\n elems[i].addEventListener(\"click\", addShare);\r\n }\r\n };\r\n return Sharer;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = Sharer;\r\n});\r\n//# sourceMappingURL=socialUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"numeral\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var Numeral = require(\"numeral\");\r\n var language = {\r\n delimiters: {\r\n thousands: \" \",\r\n decimal: \",\"\r\n },\r\n abbreviations: {\r\n thousand: \"тыс.\",\r\n million: \"млн\",\r\n billion: \"b\",\r\n trillion: \"t\"\r\n },\r\n ordinal: function () {\r\n // not ideal, but since in Russian it can taken on \r\n // different forms (masculine, feminine, neuter)\r\n // this is all we can do\r\n return \".\";\r\n },\r\n currency: {\r\n symbol: \"₽\"\r\n }\r\n };\r\n Numeral.language(\"ru\", language);\r\n Numeral.language(\"ru\");\r\n var StringUtils = (function () {\r\n function StringUtils() {\r\n }\r\n StringUtils.pluralize = function (number, titles) {\r\n var cases = [2, 0, 1, 1, 1, 2];\r\n return titles[(number % 100 > 4 && number % 100 < 20) ? 2 : cases[(number % 10 < 5) ? number % 10 : 5]];\r\n };\r\n StringUtils.clearFromTags = function (html) {\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = html;\r\n var text = div.textContent || div.innerText || \"\";\r\n return text;\r\n };\r\n StringUtils.getParam = function (name) {\r\n var queryString = window.location.search.replace(\"?\", \"\").toLowerCase();\r\n var params = queryString.split(\"&\").filter(function (p) { return p.indexOf(name) !== -1; });\r\n if (params.length > 0) {\r\n return params[0].replace(name + \"=\", \"\");\r\n }\r\n return null;\r\n };\r\n StringUtils.compareWithoutLineBreaks = function (str1, str2) {\r\n var lineBreakSymbols = /(\\r\\n|\\n|\\r)/gm;\r\n if (!str1 || !str2) {\r\n return false;\r\n }\r\n return str1.replace(lineBreakSymbols, \" \") != str2.replace(lineBreakSymbols, \" \");\r\n };\r\n return StringUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = StringUtils;\r\n});\r\n//# sourceMappingURL=stringUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"lodash\", \"../utils/oAuthUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var _ = require(\"lodash\");\r\n var oAuthUtils_1 = require(\"../utils/oAuthUtils\");\r\n var VkIdUtils = (function () {\r\n function VkIdUtils() {\r\n }\r\n /** Осуществляет авторизацию через VK ID */\r\n VkIdUtils.authorize = function (clientId, redirectUri, returnUrl) {\r\n if (returnUrl === void 0) { returnUrl = null; }\r\n if (returnUrl)\r\n VkIdUtils.setCookie('VkId.ReturnUrl', returnUrl);\r\n else\r\n VkIdUtils.setCookie('VkId.ReturnUrl', '');\r\n var verifier = oAuthUtils_1.default.generateRandomString();\r\n var state = oAuthUtils_1.default.generateRandomString();\r\n VkIdUtils.setCookie('VkId.Verifier', verifier);\r\n VkIdUtils.setCookie('VkId.State', state);\r\n oAuthUtils_1.default.challenge_from_verifier(verifier, function (codeChallenge) {\r\n var query = '?response_type=code'\r\n + '&client_id=' + clientId\r\n + '&redirect_uri=' + redirectUri\r\n + '&state=' + state\r\n + '&code_challenge=' + codeChallenge\r\n + '&code_challenge_method=S256'\r\n + '&scope=email';\r\n location.assign('https://id.vk.com/authorize' + query);\r\n });\r\n };\r\n /** Установка cookie на 60 секунд */\r\n VkIdUtils.setCookie = function (name, value) {\r\n if (value)\r\n document.cookie = name + '=' + encodeURIComponent(value) + '; path=/; max-age=60;';\r\n else\r\n document.cookie = name + '=0; path=/; max-age=0;';\r\n };\r\n return VkIdUtils;\r\n }());\r\n _.extend(window[\"AppUtils\"], {\r\n VkId: VkIdUtils\r\n });\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = VkIdUtils;\r\n});\r\n//# sourceMappingURL=vkIdUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"lodash\", \"crosstab\", \"./ajaxUtils\", \"../utils/localStorageUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var _ = require(\"lodash\");\r\n var crosstab = require(\"crosstab\");\r\n var FingerprintJS = require(\"fingerprint\");\r\n var ajaxUtils_1 = require(\"./ajaxUtils\");\r\n var localStorageUtils_1 = require(\"../utils/localStorageUtils\");\r\n var WebSocketUtils = (function () {\r\n function WebSocketUtils() {\r\n }\r\n WebSocketUtils.isPushDisabled = function () {\r\n var value = localStorageUtils_1.default.get(this.pushDisabledKey);\r\n if (value === undefined || value === null) {\r\n return false;\r\n }\r\n return value;\r\n };\r\n WebSocketUtils.isConnected = function () {\r\n return localStorageUtils_1.default.get(this.pushTokenIdKey);\r\n };\r\n WebSocketUtils.getPushTokenId = function () {\r\n return localStorageUtils_1.default.get(this.pushTokenIdKey);\r\n };\r\n WebSocketUtils.setPushTokenId = function (id) {\r\n localStorageUtils_1.default.set(this.pushTokenIdKey, id);\r\n };\r\n WebSocketUtils.getPushToken = function () {\r\n return localStorageUtils_1.default.get(this.pushTokenKey + \".\" + app.userId);\r\n };\r\n WebSocketUtils.savePushToken = function (token) {\r\n localStorageUtils_1.default.set(this.pushTokenKey + \".\" + app.userId, token);\r\n localStorageUtils_1.default.set(this.pushTokenUserIdKey, app.userId);\r\n };\r\n WebSocketUtils.disablePushNotifications = function () {\r\n localStorageUtils_1.default.set(this.pushDisabledKey, true);\r\n };\r\n WebSocketUtils.sendTokenToServer = function (refreshedToken, onSuccessCallback) {\r\n var _this = this;\r\n var savedToken = this.getPushToken();\r\n var lastUserId = localStorageUtils_1.default.get(this.pushTokenUserIdKey);\r\n var isSynced = savedToken === refreshedToken && lastUserId === app.userId;\r\n if (isSynced) {\r\n console.log(\"Token already sent to server so won\\'t send it again unless it changes\");\r\n return;\r\n }\r\n var tokenId = this.getPushTokenId();\r\n ajaxUtils_1.AjaxUtils.post(\"account/updateFirebaseToken\", {\r\n id: tokenId,\r\n token: refreshedToken\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n localStorageUtils_1.default.set(_this.pushTokenIdKey, result.data.id);\r\n _this.savePushToken(refreshedToken);\r\n if (onSuccessCallback) {\r\n onSuccessCallback();\r\n }\r\n }\r\n else {\r\n console.error(\"UpdateFirebaseToken error: \", result.messages[0]);\r\n }\r\n });\r\n };\r\n WebSocketUtils.registerServiceWorker = function () {\r\n var _this = this;\r\n // Удаляем OneSignal\r\n try {\r\n if (navigator && navigator.serviceWorker) {\r\n var oneSignalUninstalledKey_1 = \"oneSignalUninstalled\";\r\n var oneSignalUninstalled = localStorageUtils_1.default.get(oneSignalUninstalledKey_1);\r\n if (oneSignalUninstalled) {\r\n console.log(\"OneSignalSDKWorker was already uninstalled.\");\r\n }\r\n else {\r\n navigator.serviceWorker.getRegistrations().then(function (registrations) {\r\n if (!registrations.length) {\r\n console.log(\"No serviceWorker registrations found.\");\r\n localStorageUtils_1.default.set(\"OneSignalUninstalled\", true);\r\n return;\r\n }\r\n for (var _i = 0, registrations_1 = registrations; _i < registrations_1.length; _i++) {\r\n var registration = registrations_1[_i];\r\n var scriptURL = registration.installing\r\n ? registration.installing.scriptURL\r\n : registration.waiting\r\n ? registration.waiting.scriptURL\r\n : registration.active\r\n ? registration.active.scriptURL\r\n : \"\";\r\n console.log(\"ScriptURL: \", scriptURL);\r\n if (scriptURL && scriptURL.indexOf(\"OneSignalSDKWorker\") !== -1) {\r\n console.log(\"OneSignalSDKWorker was found.\");\r\n registration.unregister().then(function (isOk) {\r\n if (isOk) {\r\n console.log(\"Successfully unregistered OneSignalSDKWorker\");\r\n }\r\n else {\r\n console.log(\"Failed to unregister OneSignalSDKWorker\");\r\n }\r\n });\r\n }\r\n }\r\n localStorageUtils_1.default.set(oneSignalUninstalledKey_1, true);\r\n });\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n try {\r\n console.error(ex);\r\n }\r\n catch (ex2) { }\r\n }\r\n try {\r\n var app = window[\"at_firebaseApp\"];\r\n if (app) {\r\n return;\r\n }\r\n var firebaseConfig = {\r\n apiKey: \"AIzaSyA0Sykval4lnNmJLFM5eY0_dCfvVJZmgvE\",\r\n //authDomain: \"authortoday-b4da3.firebaseapp.com\",\r\n //databaseURL: \"https://authortoday-b4da3.firebaseio.com\",\r\n projectId: \"authortoday-b4da3\",\r\n //storageBucket: \"authortoday-b4da3.appspot.com\",\r\n messagingSenderId: \"650481789785\",\r\n appId: \"1:650481789785:web:5ccbb36a4d7b0346\"\r\n };\r\n // Initialize Firebase\r\n window[\"at_firebaseApp\"] = firebase.initializeApp(firebaseConfig);\r\n // Retrieve Firebase Messaging object.\r\n var messaging = firebase.messaging();\r\n // Handle incoming messages. Called when:\r\n // - a message is received while the app has focus\r\n // - the user clicks on an app notification created by a service worker\r\n // `messaging.setBackgroundMessageHandler` handler.\r\n messaging.onMessage(function (payload) {\r\n console.log(\"Push received. \", payload);\r\n var iconUrl = payload.data.largeIconUrl || window[\"app\"].rootUrl + \"dist/favicons/android-chrome-192x192.png\";\r\n var notification = new Notification(payload.data.contentTitle, {\r\n body: payload.data.contentText,\r\n dir: \"auto\",\r\n tag: \"PMMessage\",\r\n icon: iconUrl\r\n });\r\n if (payload.data.url) {\r\n var url = window[\"app\"].rootUrl + payload.data.url;\r\n if (url.indexOf(location.origin) === -1) {\r\n url = location.origin + url;\r\n }\r\n notification.onclick = function () {\r\n window.open(url);\r\n notification.close();\r\n };\r\n }\r\n });\r\n messaging.getToken({ vapidKey: \"BHoD83g9Ie39LDASicR38lhqzF7t4hMTdJgpewwftIUUv4dvEeTeuCA-aOB-qWrAmNDwDsTXSaAjHURQ6p6efqE\" })\r\n .then(function (currentToken) {\r\n if (currentToken) {\r\n _this.sendTokenToServer(currentToken);\r\n }\r\n else {\r\n // Show permission request.\r\n console.log(\"No Instance Push ID token available. Request permission to generate one.\");\r\n }\r\n }).catch(function (err) {\r\n console.log(\"An error occurred while retrieving token. \", err);\r\n });\r\n }\r\n catch (ex) {\r\n try {\r\n console.error(ex);\r\n }\r\n catch (ex2) { }\r\n }\r\n };\r\n WebSocketUtils.initCrossTab = function () {\r\n var _this = this;\r\n try {\r\n // Проверяем заполненность LocalStorage\r\n try {\r\n var localStorageSize = JSON.stringify(localStorage).length;\r\n if (localStorageSize > 3 * 1024 * 1024) {\r\n console.log(\"LocalStorage size is TOO big: \", localStorageSize);\r\n localStorage.clear();\r\n console.log(\"LocalStorage was cleared.\");\r\n }\r\n }\r\n catch (ex) {\r\n console.log(ex);\r\n }\r\n // Если пользователь не авторизован, ничего не делаем.\r\n if (!window[\"app\"].isAuthenticated)\r\n return;\r\n FingerprintJS.load().then(function (fp) { return fp.get(); }).then(function (result) {\r\n ajaxUtils_1.AjaxUtils.post(app.statsApiUrl + \"account/track-last-activity\", { id: result.visitorId }, true);\r\n });\r\n // if (window[\"app\"].disableWebSockets) return;\r\n // Если уже была инициализация, то это PJAX запрос. Больше ничего делать не нужно.\r\n if (window[\"crosstab\"])\r\n return;\r\n window[\"crosstab\"] = crosstab;\r\n if (!(\"Notification\" in window)) {\r\n this.html5NotificationSupported = false;\r\n console.log(\"HTML5 Notifications unsupported.\");\r\n }\r\n else {\r\n this.html5NotificationSupported = true;\r\n }\r\n if (this.html5NotificationSupported) {\r\n this.html5NotificationPermision = window[\"Notification\"].permission;\r\n }\r\n else {\r\n this.html5NotificationPermision = \"denied\";\r\n }\r\n if (this.html5NotificationPermision === \"default\") {\r\n window[\"Notification\"].requestPermission(function (permission) {\r\n _this.html5NotificationPermision = permission;\r\n });\r\n }\r\n if (!crosstab.supported) {\r\n console.error(\"Crosstab IS NOT SUPPORTED.\");\r\n return;\r\n }\r\n crosstab.off(\"activePage\");\r\n crosstab.on(\"activePage\", function (message) {\r\n console.log(\"Crosstab | activePage:\", message.data);\r\n window[\"app\"].activePage = message.data;\r\n });\r\n crosstab.off(\"focusPage\");\r\n crosstab.on(\"focusPage\", function (message) {\r\n window.focus();\r\n if (message.data && message.data.url) {\r\n window.location.href = message.data.url;\r\n }\r\n });\r\n crosstab.off(\"unfocusPage\");\r\n crosstab.on(\"unfocusPage\", function (message) {\r\n app.activePage = null;\r\n });\r\n crosstab.on(\"\", function (message) {\r\n });\r\n crosstab.broadcast(\"activePage\", window.location.href);\r\n $(window).on(\"focus\", function () {\r\n crosstab.broadcast(\"activePage\", window.location.href);\r\n });\r\n $(window).on(\"blur beforeunload\", function () {\r\n crosstab.broadcast(\"unfocusPage\", window.location.href);\r\n app.activePage = null;\r\n });\r\n }\r\n catch (e) {\r\n console.error(e);\r\n }\r\n };\r\n WebSocketUtils.getPMTabId = function () {\r\n var tabs = crosstab.util.tabs;\r\n var pmTabId = null;\r\n _.forOwn(tabs, function (v, k) {\r\n if (v.url && v.url.indexOf(\"/pm\") !== -1) {\r\n pmTabId = v.id;\r\n }\r\n });\r\n return pmTabId;\r\n };\r\n WebSocketUtils.html5NotificationSupported = false;\r\n WebSocketUtils.pushDisabledKey = \"pushDisabled\";\r\n WebSocketUtils.pushTokenIdKey = \"pushToken.id\";\r\n WebSocketUtils.pushTokenKey = \"pushToken\";\r\n WebSocketUtils.pushTokenUserIdKey = \"pushToken.userId\";\r\n return WebSocketUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = WebSocketUtils;\r\n});\r\n//# sourceMappingURL=webSocketUtils.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var WindowUtils = (function () {\r\n function WindowUtils() {\r\n }\r\n WindowUtils.setDirty = function (value, withPjax) {\r\n if (value === void 0) { value = true; }\r\n if (withPjax === void 0) { withPjax = true; }\r\n if (window.onbeforeunload && value) {\r\n return;\r\n }\r\n window.onbeforeunload = value\r\n ? function () { return true; }\r\n : null;\r\n if (withPjax) {\r\n var self = this;\r\n $(document).off('pjax:beforeSend', self.confirmFunc);\r\n if (value) {\r\n $(document).on('pjax:beforeSend', null, { msg: self.beforeUnloadMessage, confirmCallback: self.setDirty }, self.confirmFunc);\r\n }\r\n }\r\n };\r\n WindowUtils.beforeUnloadMessage = \"Внесенные изменения не сохранятся. Продолжить?\";\r\n WindowUtils.confirmFunc = function (event) {\r\n if (window.onbeforeunload) {\r\n var choice = confirm(event.data.msg);\r\n if (choice) {\r\n event.data.confirmCallback(false, true);\r\n }\r\n return choice;\r\n }\r\n };\r\n return WindowUtils;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = WindowUtils;\r\n});\r\n//# sourceMappingURL=windowUtils.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.twoFactorEnabled = ko.observable(false);\r\n this.login = ko.observable().extend({ required: true });\r\n this.password = ko.observable().extend({ required: true });\r\n this.code = ko.observable();\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n ViewModel.prototype.submit = function (formElement, extendedData) {\r\n if (this.twoFactorEnabled() && !this.code()) {\r\n this.errorMessages([]);\r\n this.errorMessages([\"Введите код подтверждения двухфакторной аутентификации\"]);\r\n return;\r\n }\r\n _super.prototype.submit.call(this, formElement, extendedData);\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n if (result.data.twoFactorEnabled) {\r\n this.twoFactorEnabled(true);\r\n }\r\n else {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n }\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n ;\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountLogin.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"moment\", \"lodash\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var _ = require(\"lodash\");\r\n var Intro = require(\"introJs\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var MainInfoViewModel = (function (_super) {\r\n __extends(MainInfoViewModel, _super);\r\n function MainInfoViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isInitialized = false;\r\n this.userName = ko.observable()\r\n .extend({ rateLimit: 300 })\r\n .extend({\r\n required: true,\r\n pattern: {\r\n params: /^([A-Za-z0-9_]){3,25}$/,\r\n message: 'Только латинские буквы (A-Z a-z), цифры (0-9) и \"_\", не меньше 3 и не больше 25 символов'\r\n },\r\n validation: {\r\n async: true,\r\n validator: function (val, params, callback) {\r\n if (!_this.isInitialized) {\r\n callback(true);\r\n }\r\n else {\r\n ajaxUtils_1.AjaxUtils.get(\"account/checkIfUserNameUnique\", {\r\n userName: val\r\n })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n _this.errorMessages(result.messages);\r\n }\r\n else {\r\n callback(result.data);\r\n }\r\n });\r\n }\r\n },\r\n message: \"Адрес уже занят.\"\r\n }\r\n });\r\n this.userNamePreview = ko.pureComputed(function () {\r\n var userName = _this.userName() || \"\";\r\n return \"http://author.today/u/\" + userName;\r\n });\r\n this.status = ko.observable().extend({\r\n maxLength: 140\r\n });\r\n this.day = ko.observable();\r\n this.days = ko.observableArray(_.range(1, 32));\r\n this.month = ko.observable();\r\n this.months = [\r\n { id: 1, name: \"Января\" }, { id: 2, name: \"Февраля\" }, { id: 3, name: \"Марта\" }, { id: 4, name: \"Апреля\" }, { id: 5, name: \"Мая\" }, { id: 6, name: \"Июня\" },\r\n { id: 7, name: \"Июля\" }, { id: 8, name: \"Августа\" }, { id: 9, name: \"Сентября\" }, { id: 10, name: \"Октября\" }, { id: 11, name: \"Ноября\" }, { id: 12, name: \"Декабря\" }\r\n ];\r\n this.year = ko.observable();\r\n this.years = ko.observableArray(_.range(moment().year() - 5, moment().year() - 100, -1));\r\n this.birthDay = ko.pureComputed(function () {\r\n if (!_this.day() && !_this.month() && !_this.year)\r\n return new Date();\r\n var day = _this.day(), month = (_this.month() || 0) - 1, year = _this.year();\r\n var value = moment([year, month, day]);\r\n if (value.isValid()) {\r\n return value.toISOString();\r\n }\r\n return null;\r\n }).extend({ date: true, required: true });\r\n this.birthDayPrivacyOptions = [{}];\r\n this.privacyShowBirthdayOptions = [\r\n { id: 0, name: \"Не показывать дату рождения\" },\r\n { id: 1, name: \"Показывать только день и месяц\" },\r\n { id: 2, name: \"Показывать дату рождения\" }];\r\n this.privacyShowBirthDay = ko.observable();\r\n this.userSex = ko.observable();\r\n this.userSexOptions = [{ id: -1, name: \"не показывать\" }, { id: 1, name: \"женский\" }, { id: 2, name: \"мужской\" }];\r\n this.aboutMeOptions = {\r\n heightMin: 100,\r\n heightMax: 300,\r\n placeholderText: \"Вашим подписчикам будет интересно узнать о вас...\",\r\n pastePlain: true,\r\n charCounterCount: false,\r\n imageDefaultDisplay: \"block\"\r\n };\r\n this.aboutMe = ko.observable();\r\n setTimeout(function () {\r\n _this.initValidation();\r\n setTimeout(function () {\r\n _this.isInitialized = true;\r\n }, 200);\r\n }, 200);\r\n this.month.subscribe(function (monthValue) {\r\n _this.days(_.range(1, moment().set(\"y\", _this.year()).month(monthValue - 1).daysInMonth() + 1));\r\n setTimeout(function () {\r\n if (!_.includes(_this.days(), _this.day())) {\r\n _this.day(1);\r\n }\r\n });\r\n });\r\n this.year.subscribe(function (yearValue) {\r\n _this.days(_.range(1, moment().set(\"y\", yearValue).month(_this.month() - 1).daysInMonth() + 1));\r\n setTimeout(function () {\r\n if (!_.includes(_this.days(), _this.day())) {\r\n _this.day(1);\r\n }\r\n });\r\n });\r\n this.year(options.year);\r\n this.month(options.month);\r\n this.day(options.day);\r\n this.privacyShowBirthDay(options.privacyShowBirthDay);\r\n this.userSex(options.sex);\r\n if (options.allowModifyFIO) {\r\n this.fio = ko.observable().extend({\r\n required: true,\r\n maxLength: 50,\r\n minLength: 2\r\n });\r\n }\r\n this.errorMessages.subscribe(function (newValue) {\r\n if (newValue && newValue.length) {\r\n $(\"html, body\").stop().animate({ scrollTop: 0 }, \"fast\");\r\n }\r\n });\r\n }\r\n MainInfoViewModel.prototype.onSubmitSucess = function (result) {\r\n if (result.data.needsReload === true) {\r\n this.fullReloadPage();\r\n }\r\n };\r\n return MainInfoViewModel;\r\n }(validatedViewModel_1.default));\r\n var ContactsViewModel = (function (_super) {\r\n __extends(ContactsViewModel, _super);\r\n function ContactsViewModel() {\r\n _super.apply(this, arguments);\r\n // Contacts \r\n this.webSiteUrl = ko.observable().extend({\r\n maxLength: {\r\n params: 200,\r\n message: \"Длина поля должна быть не больше {0} символов.\"\r\n },\r\n pattern: {\r\n message: \"Неправильный адрес сайта\",\r\n params: /^((https|http)\\:\\/\\/)?([^/]*)\\.(.*)$/\r\n }\r\n });\r\n this.publicEmail = ko.observable().extend({\r\n email: {\r\n params: true,\r\n message: \"Пожалуйста, введите правильный адрес почты\"\r\n },\r\n maxLength: {\r\n message: \"Размер адреса почты не должен быть более 100 символов.\",\r\n params: 100\r\n }\r\n });\r\n this.vkUrl = ko.observable().extend({\r\n pattern: {\r\n message: \"Неправильный адрес страницы\",\r\n params: /^((https|http)\\:\\/\\/(new.vk.com|vk.com)\\/)?([a-zA-Z0-9\\._]{5,})$/i\r\n },\r\n maxLength: {\r\n message: \"Длина ссылки не может превышать 100 символов\",\r\n params: 100\r\n }\r\n });\r\n this.facebookUrl = ko.observable().extend({\r\n pattern: {\r\n message: \"Неправильный адрес страницы\",\r\n params: /(?:http:\\/\\/)?(?:www\\.)?facebook\\.com\\/(?:(?:\\w)*#!\\/)?(?:pages\\/)?(?:[\\w\\-]*\\/)*([\\w\\-]*)/\r\n },\r\n maxLength: {\r\n message: \"Длина ссылки не может превышать 100 символов\",\r\n params: 100\r\n }\r\n });\r\n this.instagramUrl = ko.observable().extend({\r\n pattern: {\r\n message: \"Неправильный адрес страницы\",\r\n params: /(https?)?:?(www)?instagram\\.com\\/[a-z].{1,255}/i\r\n },\r\n maxLength: {\r\n message: \"Длина ссылки не может превышать 100 символов\",\r\n params: 100\r\n }\r\n });\r\n this.twitterUrl = ko.observable().extend({\r\n pattern: {\r\n message: \"Неправильный адрес страницы\",\r\n params: /^((https|http)\\:\\/\\/(www.)?twitter.com\\/)?([a-zA-Z0-9_]{5,15})$/i\r\n },\r\n maxLength: {\r\n message: \"Длина ссылки не может превышать 100 символов\",\r\n params: 100\r\n }\r\n });\r\n this.telegramUrl = ko.observable().extend({\r\n pattern: {\r\n message: \"Неправильный адрес страницы\",\r\n params: /^((https|http)\\:\\/\\/(www.)?t.me\\/)?([a-zA-Z0-9_]{5,15})$/i\r\n },\r\n maxLength: {\r\n message: \"Длина ссылки не может превышать 100 символов\",\r\n params: 100\r\n }\r\n });\r\n this.skypeUserName = ko.observable().extend({\r\n pattern: {\r\n message: \"Некорректное имя пользователя или адрес страницы\",\r\n params: /^[a-z][-a-z0-9\\._]{5,31}$/i\r\n }\r\n });\r\n }\r\n return ContactsViewModel;\r\n }(validatedViewModel_1.default));\r\n var DonationViewModel = (function (_super) {\r\n __extends(DonationViewModel, _super);\r\n function DonationViewModel() {\r\n _super.apply(this, arguments);\r\n this.$textarea = $(\"#otherRequisites\");\r\n this.otherRequisitesMaxLength = 1000;\r\n this.donationUrl = ko.observable().extend({\r\n maxLength: {\r\n params: 200,\r\n message: \"Максимальная длина ссылки {0} символов.\"\r\n }\r\n });\r\n this.donationButtonText = ko.observable().extend({\r\n maxLength: {\r\n params: 35,\r\n message: \"Максимальная длина названия кнопки {0} символов.\"\r\n },\r\n pattern: {\r\n params: /^([A-Za-zA-Яа-я0-9 ]){3,25}$/,\r\n message: \"Только латинские и русские буквы, цифры (0-9) и пробел, не меньше 3 и не больше 35 символов\"\r\n }\r\n });\r\n this.otherRequisites = ko.observable();\r\n this.otherRequisitesOptions = {\r\n heightMin: 100,\r\n heightMax: 300,\r\n charCounterMax: 1000,\r\n placeholderText: \"Например, номер WebMoney кошельков, PayPal, Boosty и т.д.\",\r\n pastePlain: true,\r\n imageDefaultDisplay: \"block\",\r\n toolbarButtons: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"emoticons\", \"insertLink\", \"clearFormatting\", \"fullscreen\"\r\n ],\r\n toolbarButtonsMD: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"emoticons\", \"insertLink\", \"clearFormatting\", \"fullscreen\"\r\n ],\r\n toolbarButtonsSM: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\", \"quote\", \"insertLink\", \"fullscreen\", \"|\", \"undo\", \"redo\"\r\n ],\r\n toolbarButtonsXS: [\r\n \"bold\", \"|\", \"quote\", \"insertLink\", \"fullscreen\", \"|\", \"undo\", \"redo\"\r\n ]\r\n };\r\n }\r\n return DonationViewModel;\r\n }(validatedViewModel_1.default));\r\n var ViewModel = (function () {\r\n function ViewModel(options) {\r\n this.mainInfo = new MainInfoViewModel(options);\r\n this.contacts = new ContactsViewModel(options);\r\n this.donation = new DonationViewModel(options);\r\n }\r\n return ViewModel;\r\n }());\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountMyPage.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"toastr\", \"../utils/ajaxUtils\", \"../utils/webSocketUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var webSocketUtils_1 = require(\"../utils/webSocketUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isInitialized = ko.observable(false);\r\n this.isPushNotificationsSupported = ko.observable(false);\r\n this.notificationPermission = ko.observable(\"\");\r\n this.isPushNotificationsEnabled = ko.observable(false);\r\n this.pushButtonText = ko.pureComputed(function () {\r\n return _this.isPushNotificationsEnabled()\r\n ? \"Выключить push-уведомления\"\r\n : \"Включить push-уведомления\";\r\n });\r\n this.togglePush = function () {\r\n if (_this.processing()) {\r\n return;\r\n }\r\n _this.processing(true);\r\n var isEnabled = !webSocketUtils_1.default.isPushDisabled()\r\n && _this.isPushNotificationsEnabled();\r\n var permission = _this.notificationPermission();\r\n if (permission === \"default\") {\r\n toastr.info(\"Пожалуйста, разрешите показывать уведомления.\");\r\n }\r\n else if (permission === \"denied\") {\r\n toastr.error(\"Вы отключили уведомления.\");\r\n }\r\n if (permission !== \"granted\") {\r\n _this.processing(false);\r\n return;\r\n }\r\n var tokenId = webSocketUtils_1.default.getPushTokenId();\r\n var token = webSocketUtils_1.default.getPushToken();\r\n if (isEnabled) {\r\n ajaxUtils_1.AjaxUtils.post(\"account/deleteFirebaseToken\", {\r\n id: tokenId,\r\n token: token\r\n })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.isPushNotificationsEnabled(false);\r\n toastr.info(\"Вы больше не будете получать push-уведомления.\");\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n else {\r\n var messaging = firebase.messaging();\r\n messaging.getToken().then(function (currentToken) {\r\n if (currentToken) {\r\n ajaxUtils_1.AjaxUtils.post(\"account/updateFirebaseToken\", {\r\n id: tokenId,\r\n token: currentToken\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n webSocketUtils_1.default.setPushTokenId(result.data.id);\r\n webSocketUtils_1.default.savePushToken(currentToken);\r\n _this.isPushNotificationsEnabled(true);\r\n toastr.success(\"Спасибо за подписку на уведомления!\");\r\n }\r\n else {\r\n console.error(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n else {\r\n // Show permission request.\r\n console.log(\"No Instance ID push token available. Request permission to generate one.\");\r\n alert(\"Ошибка во время выполнения запроса токена для пуш уведомлений. Пожалуйста, свяжитесь с тех. поддержкой.\");\r\n _this.processing(false);\r\n }\r\n }).catch(function (err) {\r\n console.log(\"An error occurred while retrieving token. \", err);\r\n alert(\"Ошибка во время получения токена для пуш уведомлений. Пожалуйста, свяжитесь с тех. поддержкой.\");\r\n _this.processing(false);\r\n });\r\n }\r\n };\r\n this.webPushFrequency = ko.observable();\r\n this.webPushFrequencyOptions = [\r\n { id: 1, title: \"Всегда\" },\r\n { id: 2, title: \"Не чаще одного раза в час\" },\r\n { id: 3, title: \"Не чаще двух раз в сутки\" },\r\n { id: 4, title: \"Не чаще одного раза в сутки\" }\r\n ];\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n this.webPushFrequency(options.webPushFrequency);\r\n if (!(\"Notification\" in window)) {\r\n this.isPushNotificationsSupported(false);\r\n return;\r\n }\r\n this.notificationPermission(Notification.permission);\r\n this.isPushNotificationsSupported(true);\r\n var self = this;\r\n try {\r\n if (\"permissions\" in navigator) {\r\n navigator.permissions.query({ name: \"notifications\" }).then(function (notificationPerm) {\r\n notificationPerm.onchange = function () {\r\n var permission = notificationPerm.state;\r\n console.log(\"User decided to change his seettings. New permission: \" + permission);\r\n self.notificationPermission(permission);\r\n if (permission === \"default\") {\r\n toastr.info(\"Пожалуйста, разрешите показывать уведомления.\");\r\n }\r\n else if (permission === \"denied\") {\r\n toastr.error(\"Вы отключили уведомления.\");\r\n }\r\n else if (permission === \"granted\") {\r\n self.isPushNotificationsEnabled(false);\r\n self.isInitialized(true);\r\n }\r\n };\r\n });\r\n }\r\n if (!webSocketUtils_1.default.isPushDisabled()) {\r\n var messaging = firebase.messaging();\r\n messaging.getToken().then(function (currentToken) {\r\n if (currentToken) {\r\n webSocketUtils_1.default.sendTokenToServer(currentToken);\r\n var tokenId = webSocketUtils_1.default.getPushTokenId();\r\n if (tokenId) {\r\n ajaxUtils_1.AjaxUtils.get(\"account/checkFirebaseToken\", { id: tokenId }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.isPushNotificationsEnabled(result.data.isValid);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n _this.isPushNotificationsEnabled(false);\r\n }\r\n _this.isInitialized(true);\r\n });\r\n }\r\n else {\r\n _this.isPushNotificationsEnabled(false);\r\n _this.isInitialized(true);\r\n }\r\n }\r\n else {\r\n // Show permission request.\r\n console.log(\"No Instance ID push token available. Request permission to generate one.\");\r\n }\r\n }).catch(function (err) {\r\n console.log(\"An error occurred while retrieving token. \", err);\r\n alert(\"Ошибка во время получения токена для пуш уведомлений. Пожалуйста, свяжитесь с тех. поддержкой.\");\r\n });\r\n }\r\n else {\r\n this.isPushNotificationsEnabled(false);\r\n this.isInitialized(true);\r\n }\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountNotifications.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/validatedViewModel\", \"../utils/giftCodeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var giftCodeUtils_1 = require(\"../utils/giftCodeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n giftCodeUtils_1.default.init();\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountOrders.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.autoAddToLibrary = ko.observable();\r\n this.autoAddToLibraryOptions = [\r\n { id: 1, title: \"Активно (рекомендуется)\" },\r\n { id: 0, title: \"Не активно\" }\r\n ];\r\n this.viewLibraryId = ko.observable();\r\n this.viewLibraryOptions = [\r\n { id: 1, title: \"Все\" },\r\n { id: 2, title: \"Только друзья\" },\r\n { id: 0, title: \"Никто\" }\r\n ];\r\n this.guestBookId = ko.observable();\r\n this.guestBookOptions = [\r\n { id: 1, title: \"Все\" },\r\n { id: 0, title: \"Никто\" }\r\n ];\r\n this.privateMessageId = ko.observable();\r\n this.privateMessageOptions = [\r\n { id: 1, title: \"Все\" },\r\n { id: 2, title: \"Только друзья\" },\r\n { id: 0, title: \"Никто\" }\r\n ];\r\n this.commentsFeedId = ko.observable();\r\n this.commentsFeedOptions = [\r\n { id: 1, title: \"Все\" },\r\n { id: 0, title: \"Никто\" }\r\n ];\r\n this.isUnavailable = ko.observable(false);\r\n this.unavailableMessage = ko.observable();\r\n this.disableSeriesAfterword = ko.observable(false);\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n this.autoAddToLibrary(options.autoAddToLibrary);\r\n this.viewLibraryId(options.viewLibraryId);\r\n this.guestBookId(options.guestBookId);\r\n this.privateMessageId(options.privateMessageId);\r\n this.commentsFeedId(options.commentsFeedId);\r\n this.isUnavailable(options.isUnavailable);\r\n this.unavailableMessage(options.unavailableMessage);\r\n this.disableSeriesAfterword(options.disableSeriesAfterword);\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountPrivacy.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.email = ko.observable().extend({\r\n required: true,\r\n email: true\r\n });\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n ViewModel.prototype.submit = function () {\r\n if (this.validation !== undefined && !this.validation.isValid()) {\r\n this.validation.errors.showAllMessages();\r\n return false;\r\n }\r\n ;\r\n return true;\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n ;\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountRecovery.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.fio = ko.observable().extend({\r\n required: true,\r\n maxLength: 50,\r\n minLength: 2\r\n });\r\n this.email = ko.observable().extend({\r\n required: true,\r\n email: true,\r\n validation: {\r\n async: true,\r\n validator: function (val, params, callback) {\r\n ajaxUtils_1.AjaxUtils.get(\"account/checkIfEmailExists\", {\r\n email: val\r\n })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n callback({ isValid: result.data, message: result.messages.toString() });\r\n }\r\n else {\r\n callback(result.data);\r\n }\r\n });\r\n },\r\n message: \"Пользователь с такой электронной почтой уже зарегистрирован.\"\r\n }\r\n });\r\n this.password = ko.observable().extend({ required: true });\r\n this.termsAgree = ko.observable(false);\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountRegister.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.password = ko.observable().extend({ required: true });\r\n this.confirmPassword = ko.observable().extend({\r\n required: true,\r\n equal: {\r\n params: this.password,\r\n message: \"Пароли должны совпадать\"\r\n }\r\n });\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n ;\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountResetPassword.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.currentPassword = ko.observable().extend({ required: true });\r\n this.newPassword = ko.observable().extend({ required: true });\r\n this.confirmPassword = ko.observable().extend({\r\n required: true,\r\n equal: {\r\n params: this.newPassword,\r\n message: \"Пароли должны совпадать\"\r\n }\r\n });\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.reloadPage();\r\n };\r\n ViewModel.prototype.show2FaMessage = function () {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.showModal({\r\n title: \"\\u0418\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u044F\",\r\n type: 3,\r\n message: \"При входе на author.today через сторонние аккаунты ключ двухфакторной аутентификации не запрашивается\"\r\n });\r\n }, 100);\r\n };\r\n ViewModel.prototype.showOther = function () {\r\n $('#other-last-actyvity').show();\r\n $('#show-last-actyvity').hide();\r\n };\r\n ViewModel.prototype.showConfirmRefreshSecurityStampModal = function () {\r\n this.showModal({\r\n title: \"Завершение сеансов\",\r\n deleteBtnText: \"Завершить\",\r\n message: \"Вы уверены, что хотите завершить сеансы?\",\r\n onSubmit: function () {\r\n $(\"#refreshSecurityStampForm\").submit();\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n ;\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=accountSecurity.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\", \"../components/modalDialog\", \"../utils/stringUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n var AccountMainInfoViewModel = (function (_super) {\r\n __extends(AccountMainInfoViewModel, _super);\r\n function AccountMainInfoViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.initialEmail = this.options.email;\r\n this.isConfirmed = this.options.emailConfirmed;\r\n this.initialYaMetrikaEmail = this.options.yaMetrikaEmail;\r\n this.yaMetrikaFormActive = ko.observable(false);\r\n this.infoMessage = ko.observable();\r\n this.twoFactorEnabled = false;\r\n this.email = ko.observable().extend({\r\n required: true,\r\n email: true,\r\n maxLength: 256\r\n });\r\n this.code = ko.observable().extend({\r\n required: {\r\n message: \"Укажите код двухфакторной аутентификации\",\r\n onlyIf: function () {\r\n return _this.twoFactorEnabled;\r\n }\r\n }\r\n });\r\n this.isEditing = ko.observable(false);\r\n this.btnText = ko.pureComputed(function () {\r\n var currentEmail = _this.email();\r\n var isEditing = _this.isEditing();\r\n if (_this.isConfirmed && !isEditing) {\r\n return \"Изменить\";\r\n }\r\n if (_this.initialEmail === currentEmail) {\r\n return isEditing ? \"Отмена\" : \"Отправить письмо еще раз\";\r\n }\r\n ;\r\n return \"Сохранить и отправить письмо\";\r\n });\r\n this.yaMetrikaSubmitEnable = ko.pureComputed(function () {\r\n return _this.yaMetrikaEmail() && _this.yaMetrikaEmail() != _this.initialYaMetrikaEmail;\r\n });\r\n this.yaMetrikaEmail = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.yaMetrikaFormActive();\r\n }\r\n },\r\n email: true,\r\n maxLength: 256\r\n });\r\n this.twoFactorEnabled = options.twoFactorEnabled;\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n $(\".header-email-confirm\").hide();\r\n }\r\n AccountMainInfoViewModel.prototype.btnClick = function () {\r\n if (this.isConfirmed && !this.isEditing()) {\r\n this.isEditing(true);\r\n $(\"#Email\").focus();\r\n return false;\r\n }\r\n var currentEmail = this.email();\r\n if (this.isConfirmed && this.isEditing() && this.initialEmail === currentEmail) {\r\n this.isEditing(false);\r\n return false;\r\n }\r\n this.yaMetrikaFormActive(false);\r\n return true;\r\n };\r\n AccountMainInfoViewModel.prototype.showDeleteUserGrantConfirmationDialog = function () {\r\n var _this = this;\r\n this.processing(true);\r\n this.showModal({\r\n title: \"\\u041F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u044F \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0430 \\u043A \\u0441\\u0447\\u0435\\u0442\\u0447\\u0438\\u043A\\u0443\",\r\n type: 2,\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u043E\\u0442\\u043E\\u0437\\u0432\\u0430\\u0442\\u044C \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F \\u0434\\u043B\\u044F \\u043F\\u043E\\u0447\\u0442\\u044B \" + this.initialYaMetrikaEmail + \"?\",\r\n onHide: function () { _this.processing(false); },\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"account/metrika\", {}).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n _this.modal.hide();\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n ;\r\n }\r\n });\r\n };\r\n AccountMainInfoViewModel.prototype.btnYaMetrikaClick = function () {\r\n this.yaMetrikaFormActive(true);\r\n return true;\r\n };\r\n AccountMainInfoViewModel.prototype.checkHasCoAuthorWorks = function () {\r\n var _this = this;\r\n this.infoMessage();\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.get(\"account/get-coauthor-works-count\", {}).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful && result.data) {\r\n if (result.data > 0) {\r\n _this.infoMessage(\"\\u0423 \\u0432\\u0430\\u0441 \\u0435\\u0441\\u0442\\u044C \" + stringUtils_1.default.pluralize(result.data, [\"произведение, написанное\", (result.data + \" \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F, \\u043D\\u0430\\u043F\\u0438\\u0441\\u0430\\u043D\\u043D\\u044B\\u0445\"), (result.data + \" \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0439, \\u043D\\u0430\\u043F\\u0438\\u0441\\u0430\\u043D\\u043D\\u044B\\u0445\")]) + \" \\u0432 \\u0441\\u043E\\u0430\\u0432\\u0442\\u043E\\u0440\\u0441\\u0442\\u0432\\u0435. \\u0422\\u0430\\u043A\\u0438\\u0435 \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u043D\\u0435 \\u0431\\u0443\\u0434\\u0443\\u0442 \\u0441\\u043A\\u0440\\u044B\\u0442\\u044B \\u0438 \\u0432 \\u043D\\u0438\\u0445 \\u043E\\u0441\\u0442\\u0430\\u0451\\u0442\\u0441\\u044F \\u0443\\u043F\\u043E\\u043C\\u0438\\u043D\\u0430\\u043D\\u0438\\u0435 \\u043E \\u0432\\u0430\\u0441 \\u0432 \\u043A\\u0430\\u0447\\u0435\\u0441\\u0442\\u0432\\u0435 \\u043E\\u0434\\u043D\\u043E\\u0433\\u043E \\u0438\\u0437 \\u0430\\u0432\\u0442\\u043E\\u0440\\u043E\\u0432.\");\r\n }\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n AccountMainInfoViewModel.prototype.showDeactiveModal = function () {\r\n this.errorMessages([]);\r\n this.checkHasCoAuthorWorks();\r\n this.showModal({\r\n title: \"Отключение аккаунта\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"deactivateAccountModal\",\r\n maxWidth: \"500px\",\r\n viewModel: this\r\n });\r\n };\r\n AccountMainInfoViewModel.prototype.deactivateAccount = function () {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.processing(true);\r\n setTimeout(function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"account/deactivate\", {}).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n _this.modal.hide();\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n });\r\n };\r\n AccountMainInfoViewModel.prototype.showActiveModal = function () {\r\n this.showModal({\r\n title: \"Включение аккаунта\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"activateAccountModal\",\r\n maxWidth: \"500px\",\r\n viewModel: this\r\n });\r\n };\r\n AccountMainInfoViewModel.prototype.activateAccount = function () {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.processing(true);\r\n setTimeout(function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"account/activate\", {}).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n _this.reloadPage();\r\n _this.modal.hide();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n });\r\n };\r\n AccountMainInfoViewModel.prototype.onSubmitSucess = function (result) {\r\n this.reloadPage();\r\n };\r\n return AccountMainInfoViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = AccountMainInfoViewModel;\r\n});\r\n//# sourceMappingURL=accountSettings.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"toastr\", \"screenfull\", \"../utils/ajaxUtils\", \"../utils/localStorageUtils\", \"../components/modalDialog\", \"../utils/metrikaUtils\", \"../utils/imageZoomUtils\", \"./base/baseViewModel\", \"../../app/utils/cookieUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var toastr = require(\"toastr\");\r\n var screenfull = require(\"screenfull\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var localStorageUtils_1 = require(\"../utils/localStorageUtils\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var metrikaUtils_1 = require(\"../utils/metrikaUtils\");\r\n var imageZoomUtils_1 = require(\"../utils/imageZoomUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var cookieUtils_1 = require(\"../../app/utils/cookieUtils\");\r\n var Settings = (function () {\r\n function Settings() {\r\n }\r\n return Settings;\r\n }());\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.minFontSize = 1;\r\n this.maxFontSize = 30;\r\n this.minFieldSize = 1;\r\n this.maxFieldSize = 7;\r\n this.minLineHeight = 1;\r\n this.maxLineHeight = 5;\r\n this.minBrightness = 1;\r\n this.maxBrightness = 5;\r\n this.$reader = $(\"#reader\");\r\n this.$textWrapper = $(\".text-wrapper\");\r\n this.isLoading = ko.observable(true);\r\n this.isInit = false;\r\n this.showUnauthorizedForm = ko.observable(false);\r\n this.showSuspendedForm = ko.observable(false);\r\n this.showBuyForm = ko.observable(false);\r\n this.showUnadultedForm = ko.observable(false);\r\n this.showContent = ko.pureComputed(function () {\r\n return !_this.showUnauthorizedForm()\r\n && !_this.showSuspendedForm()\r\n && !_this.showBuyForm()\r\n && !_this.showUnadultedForm();\r\n });\r\n this.readerMode = ko.observable(\"scroll\");\r\n this.visibleLeftPanel = ko.observable(false);\r\n this.visibleRightPanel = ko.observable(false);\r\n this.controlsIsVisible = ko.observable(true);\r\n this.isDisabled = ko.pureComputed(function () {\r\n return (_this.visibleLeftPanel() || _this.visibleRightPanel());\r\n });\r\n this.currentChapterId = ko.observable();\r\n this.loginUrl = ko.pureComputed(function () {\r\n return app.rootUrl + \"account/login?returnUrl=\" + encodeURIComponent(app.rootUrl + \"reader/\" + _this.workId + \"/\" + _this.currentChapterId());\r\n });\r\n this.registerUrl = ko.pureComputed(function () {\r\n return app.rootUrl + \"account/register?returnUrl=\" + encodeURIComponent(app.rootUrl + \"reader/\" + _this.workId + \"/\" + _this.currentChapterId());\r\n });\r\n // Используются только в режиме Книги\r\n this.width = ko.observable();\r\n this.height = ko.observable();\r\n this.scrollWidth = ko.observable();\r\n this.singleColumn = ko.observable(true);\r\n this.page = ko.observable(0);\r\n // Используются в режиме Scroll\r\n this.chapters = ko.observableArray();\r\n this.totalTextLength = ko.pureComputed(function () {\r\n var length = 0;\r\n _.each(_this.chapters(), function (c) {\r\n length += c.textLength;\r\n });\r\n return length;\r\n });\r\n this.readTextLength = ko.observable(0);\r\n this.isFullScreenMode = ko.observable(false);\r\n this.fontList = [\"Roboto\", \"Verdana\", \"Georgia\", \"Arial\", \"Alegreya\", \"Times New Roman\", \"Comfortaa\", \"Fira Sans\", \"PT Sans\"];\r\n this.fontListIsOpen = ko.observable(false);\r\n this.fontPickerIcon = ko.pureComputed(function () {\r\n return _this.fontListIsOpen() ? \"fa-angle-up\" : \"fa-angle-down\";\r\n });\r\n this.fontSize = ko.observable();\r\n this.fieldSize = ko.observable();\r\n this.lineHeight = ko.observable();\r\n this.fontFamily = ko.observable();\r\n this.brightness = ko.observable();\r\n this.customColorScheme = ko.observable();\r\n this.customFontColor = ko.observable();\r\n this.customBackgroundColor = ko.observable();\r\n this.hyphenation = ko.observable();\r\n this.bodyClass = ko.pureComputed(function () {\r\n var brightness = _this.brightness();\r\n var customColorScheme = _this.customColorScheme();\r\n var customFontColor = _this.customFontColor();\r\n var customBackgroundColor = _this.customBackgroundColor();\r\n var css = \"\";\r\n if (customColorScheme) {\r\n var color = customBackgroundColor.substring(1); // strip #\r\n var rgb = parseInt(color, 16); // convert rrggbb to decimal\r\n var r = (rgb >> 16) & 0xff; // extract red\r\n var g = (rgb >> 8) & 0xff; // extract green\r\n var b = (rgb >> 0) & 0xff; // extract blue\r\n var luma = 0.2126 * r + 0.7152 * g + 0.0722 * b; // per ITU-R BT.709\r\n if (luma < 40) {\r\n css += \"dark-theme\";\r\n }\r\n else {\r\n css += \"light-theme\";\r\n }\r\n $(\"body\").css(\"color\", customFontColor);\r\n $(\"body\").css(\"background-color\", customBackgroundColor);\r\n }\r\n else {\r\n css += \"brightness-\" + brightness;\r\n $(\"body\").css(\"color\", \"\");\r\n $(\"body\").css(\"background-color\", \"\");\r\n }\r\n if (_this.readerMode() === \"scroll\") {\r\n css += \" scroll-mode\";\r\n }\r\n if (_this.showBuyForm()) {\r\n css += \" buy-form-active\";\r\n $(\"html\").css({\r\n overflow: \"auto\"\r\n });\r\n }\r\n else {\r\n $(\"html\").css({\r\n overflow: \"hidden\"\r\n });\r\n }\r\n return css;\r\n });\r\n this.textWrapperClass = ko.pureComputed(function () {\r\n var fieldSize = _this.fieldSize();\r\n return \"field-size-\" + fieldSize;\r\n });\r\n this.columnGap = ko.pureComputed(function () {\r\n return Math.ceil(_this.width() * 0.065);\r\n });\r\n this.columnWidth = ko.pureComputed(function () {\r\n if (_this.singleColumn()) {\r\n return _this.width() - _this.columnGap();\r\n }\r\n return (_this.width() - _this.columnGap()) / 2;\r\n });\r\n this.step = ko.pureComputed(function () {\r\n var singleStep = _this.columnWidth() + _this.columnGap();\r\n return _this.singleColumn() ? singleStep + _this.columnGap() : singleStep * 2;\r\n });\r\n this.totalPages = ko.pureComputed(function () {\r\n var value = _this.scrollWidth() / _this.step();\r\n if (!_this.singleColumn()) {\r\n value *= 2;\r\n }\r\n return Math.ceil(value);\r\n });\r\n this.singleEndPage = ko.pureComputed(function () {\r\n return _this.totalPages() % 2 === 1;\r\n });\r\n this.endOfChapter = ko.pureComputed(function () {\r\n var page = _this.currentPage(), totalPages = _this.totalPages();\r\n if (_this.singleColumn()) {\r\n return page === totalPages;\r\n }\r\n if (_this.singleEndPage()) {\r\n return page === totalPages;\r\n }\r\n return page + 1 >= totalPages;\r\n });\r\n this.currentPage = ko.pureComputed(function () {\r\n var value = _this.page(), totalPages = _this.totalPages();\r\n if (!_this.singleColumn()) {\r\n value = value * 2;\r\n }\r\n value++;\r\n if (value > totalPages) {\r\n value = totalPages;\r\n if (!_this.singleEndPage()) {\r\n value--;\r\n }\r\n _this.page(Math.ceil(totalPages / 2) - 1);\r\n }\r\n return value;\r\n });\r\n this.currentChapter = ko.pureComputed(function () {\r\n var id = _this.currentChapterId();\r\n return _.find(_this.chapters(), function (c) {\r\n return c.id === id;\r\n });\r\n });\r\n this.chapterInfo = ko.pureComputed(function () {\r\n var leftPages = _this.totalPages() - _this.currentPage() - 1;\r\n if (_this.workForm === \"Story\") {\r\n if (leftPages <= 0) {\r\n return \"Конец\";\r\n }\r\n return \"\\u041E\\u0441\\u0442\\u0430\\u043B\\u043E\\u0441\\u044C \" + leftPages + \" \\u0441\\u0442\\u0440.\";\r\n }\r\n if (leftPages <= 0) {\r\n return \"Конец главы\";\r\n }\r\n return \"\\u041E\\u0441\\u0442\\u0430\\u043B\\u043E\\u0441\\u044C \\u0432 \\u0433\\u043B\\u0430\\u0432\\u0435: \" + leftPages + \" \\u0441\\u0442\\u0440.\";\r\n });\r\n this.chapterInfoTitle = ko.pureComputed(function () {\r\n if (_this.singleColumn()) {\r\n return _this.currentPage() + \" \\u0438\\u0437 \" + _this.totalPages();\r\n }\r\n if (_this.currentPage() === _this.totalPages()) {\r\n return _this.currentPage() + \" \\u0438\\u0437 \" + _this.totalPages();\r\n }\r\n return _this.currentPage() + \"-\" + (_this.currentPage() + 1) + \" \\u0438\\u0437 \" + _this.totalPages();\r\n });\r\n this.readingInfo = ko.pureComputed(function () {\r\n var percent = _this.progressPercent().toFixed(1);\r\n return percent + \"%\";\r\n });\r\n this.footerTitle = ko.pureComputed(function () {\r\n var chapter = _this.currentChapter();\r\n if (chapter) {\r\n var title = _this.workTitle + \", \" + _this.authorName;\r\n if (_this.workForm !== \"Story\") {\r\n title = title + \", \" + chapter.title;\r\n }\r\n return title;\r\n }\r\n return \"\";\r\n });\r\n this.offset = ko.pureComputed(function () {\r\n var scrollWidth = _this.scrollWidth(), value = _this.page() * _this.step();\r\n if (value > scrollWidth) {\r\n return scrollWidth - _this.step();\r\n }\r\n return value;\r\n });\r\n this.lastNormalPercent = 0;\r\n this.progressPercent = ko.pureComputed(function () {\r\n var currentChapter = _this.currentChapter();\r\n if (!currentChapter)\r\n return 0;\r\n var chapterReadTextLength = currentChapter.textLength * _this.chapterProgressPercent();\r\n var totalReadTextLength = _this.readTextLength() + chapterReadTextLength;\r\n var percent = totalReadTextLength * 100 / _this.totalTextLength();\r\n if (_this.isLoading()) {\r\n percent = _this.lastNormalPercent;\r\n }\r\n else {\r\n _this.lastNormalPercent = percent;\r\n }\r\n return percent;\r\n });\r\n this.prevChapter = ko.pureComputed(function () {\r\n var index = _this.chapters().indexOf(_this.currentChapter());\r\n index--;\r\n if (index < 0)\r\n return null;\r\n return _this.chapters()[index];\r\n });\r\n this.nextChapter = ko.pureComputed(function () {\r\n var chapters = _this.chapters();\r\n var index = _this.chapters().indexOf(_this.currentChapter());\r\n index++;\r\n if (index >= chapters.length)\r\n return null;\r\n return _this.chapters()[index];\r\n });\r\n this.progressUpdated = true;\r\n this.progressPercentComputed = ko.pureComputed(function () {\r\n _this.progressUpdated = false;\r\n return _this.progressPercent();\r\n }).extend({\r\n rateLimit: {\r\n timeout: app.isAuthenticated ? 3000 : 30000,\r\n method: app.isAuthenticated ? \"notifyWhenChangesStop\" : \"notifyAtFixedRate\"\r\n }\r\n });\r\n this.textContainerStyle = ko.pureComputed(function () {\r\n if (_this.showBuyForm())\r\n return \"\";\r\n var columnWith = _this.columnWidth() + \"px\";\r\n var columnGap = _this.columnGap() + \"px\";\r\n var fontSize = 10 + _this.fontSize();\r\n var lineHeight = 0.9 + _this.lineHeight() * 0.15;\r\n setTimeout(function () {\r\n _this.scrollWidth($(\"#text-container\").get(0).scrollWidth);\r\n }, 100);\r\n if (_this.readerMode() === \"scroll\") {\r\n return \"font-family: \" + _this.fontFamily() + \";\\n line-height: \" + lineHeight + \"em !important;\\n font-size: \" + fontSize + \"px\";\r\n }\r\n return \"left: -\" + _this.offset() + \"px;\\n height: \" + _this.height() + \"px;\\n -webkit-column-width: \" + columnWith + \";\\n -moz-column-width: \" + columnWith + \";\\n column-width: \" + columnWith + \";\\n -webkit-column-gap: \" + columnGap + \";\\n -moz-column-gap: \" + columnGap + \";\\n column-gap: \" + columnGap + \";\\n font-family: \" + _this.fontFamily() + \";\\n line-height: \" + lineHeight + \"em !important;\\n font-size: \" + fontSize + \"px\";\r\n });\r\n this.selectFont = function (font) {\r\n _this.fontFamily(font);\r\n _this.toggleFontList();\r\n };\r\n this.goToChapter = function (chapter) {\r\n _this.hideLeftPanel();\r\n _this.showBuyForm(false);\r\n _this.showUnauthorizedForm(false);\r\n _this.showSuspendedForm(false);\r\n _this.showUnadultedForm(false);\r\n _this.loadChapter(chapter.id);\r\n };\r\n this.hyphenopoly = options.hyphenopoly;\r\n this.workId = options.workId;\r\n this.workTitle = options.workTitle;\r\n this.workForm = options.workForm;\r\n this.authorName = options.authorName;\r\n this.chapters(options.chapters);\r\n this.sessionId = options.sessionId;\r\n this.nextSeriesWorkId = options.nextSeriesWorkId;\r\n this.epilog = options.epilog;\r\n this.loadSettings();\r\n this.hanleUserInput();\r\n this.initObservables();\r\n this.recalculateSize();\r\n this.initSliders();\r\n localStorageUtils_1.default.addToList(localStorageUtils_1.default.RecentlyViewedKey, this.workId);\r\n this.loadChapter(options.chapterId, false, options.chapterProgress);\r\n setTimeout(function () {\r\n _this.isInit = true;\r\n }, 1000);\r\n this.progressPercentComputed.subscribe(function () {\r\n _this.updateReadingProgress();\r\n });\r\n $(function () {\r\n $('[data-toggle=\"tooltip\"]').tooltip({\r\n placement: \"bottom\",\r\n container: \"body\"\r\n });\r\n });\r\n try {\r\n document.addEventListener(screenfull.raw.fullscreenchange, function () {\r\n _this.isFullScreenMode(screenfull.isFullscreen);\r\n });\r\n }\r\n catch (ex) {\r\n // Safari iOS bug\r\n $(\"#btnFullScreen\").hide();\r\n }\r\n this.controlsIsVisible.subscribe(function (isVisible) {\r\n if (!isVisible) {\r\n $('[data-toggle=\"tooltip\"]').tooltip(\"hide\");\r\n }\r\n });\r\n this.isLoading.subscribe(function (value) {\r\n if (!value && _this.settings.hyphenation) {\r\n try {\r\n _this.loadHyphenopoly();\r\n }\r\n catch (ex) {\r\n alert(\"Перенос слов не работает на вашем устройстве!\");\r\n _this.hyphenation(false);\r\n _this.settings.hyphenation = false;\r\n localStorageUtils_1.default.set(\"reader.settings\", _this.settings);\r\n }\r\n }\r\n });\r\n }\r\n /** Загрузка переносов в тексте */\r\n ViewModel.prototype.loadHyphenopoly = function () {\r\n this.hyphenopoly.config({\r\n require: {\r\n \"ru\": \"\"\r\n },\r\n setup: {\r\n selectors: {\r\n \"#text-container\": {}\r\n }\r\n }\r\n });\r\n };\r\n ViewModel.prototype.initObservables = function () {\r\n var _this = this;\r\n if (this.readerMode() === \"scroll\") {\r\n this.chapterProgressPercent = ko.observable();\r\n }\r\n else {\r\n this.chapterProgressPercent = ko.pureComputed({\r\n read: function () {\r\n var offset = _this.offset(), scrollWidth = _this.scrollWidth(), currentChapter = _this.currentChapter();\r\n if (!currentChapter)\r\n return 0;\r\n var chapterPercent = offset / scrollWidth;\r\n if (_this.endOfChapter() && currentChapter === _this.chapters()[_this.chapters().length - 1]) {\r\n chapterPercent = 100;\r\n }\r\n return Math.min(1, chapterPercent);\r\n },\r\n write: function (value) {\r\n var scrollWidth = $(\"#text-container\").get(0).scrollWidth, step = _this.step();\r\n var offset = scrollWidth * (value / 100);\r\n var page = Math.round(offset / step);\r\n _this.scrollWidth(scrollWidth);\r\n _this.page(page);\r\n }\r\n });\r\n }\r\n };\r\n ViewModel.prototype.hanleUserInput = function () {\r\n var _this = this;\r\n $(window).on(\"resize\", function () {\r\n _this.recalculateSize();\r\n });\r\n if (this.readerMode() === \"book\") {\r\n $(document).on(\"keydown.reader\", function (e) {\r\n switch (e.which) {\r\n case 33: // page up\r\n case 38:\r\n _this.previousPage();\r\n break;\r\n case 37:\r\n if (e.ctrlKey) {\r\n _this.goToChapter(_this.prevChapter());\r\n }\r\n else {\r\n _this.previousPage();\r\n }\r\n break;\r\n case 32: // space\r\n case 34: // page down\r\n case 40:\r\n _this.nextPage();\r\n break;\r\n case 39:\r\n if (e.ctrlKey) {\r\n _this.goToChapter(_this.nextChapter());\r\n }\r\n else {\r\n _this.nextPage();\r\n }\r\n break;\r\n default:\r\n return; // exit this handler for other keys\r\n }\r\n e.preventDefault(); // prevent the default action (scroll / move caret)\r\n });\r\n }\r\n else {\r\n $(document).on(\"keydown.reader\", function (e) {\r\n //отключаем перехват ввода символов с клавиатуры\r\n if ($(e.target).is(\"#text-container\") || $(e.target).is(\"#rewardTitle\"))\r\n return;\r\n switch (e.which) {\r\n case 33:\r\n _this.$reader.animate({ scrollTop: _this.$reader.scrollTop() - $(\"#app\").height() + 70 }, \"fast\");\r\n break;\r\n case 32: // space\r\n case 34:\r\n _this.$reader.animate({ scrollTop: _this.$reader.scrollTop() + $(\"#app\").height() - 70 }, \"fast\");\r\n break;\r\n case 40:\r\n _this.$reader.scrollTop(_this.$reader.scrollTop() + 40);\r\n break;\r\n case 38:\r\n _this.$reader.scrollTop(_this.$reader.scrollTop() - 40);\r\n break;\r\n case 35:\r\n _this.$reader.animate({ scrollTop: $(\"#text-container\").height() }, \"fast\");\r\n break;\r\n case 36:\r\n _this.$reader.animate({ scrollTop: 0 }, \"fast\");\r\n break;\r\n case 37:\r\n if (e.ctrlKey) {\r\n _this.goToChapter(_this.prevChapter());\r\n }\r\n break;\r\n case 39:\r\n if (e.ctrlKey) {\r\n _this.goToChapter(_this.nextChapter());\r\n }\r\n break;\r\n default:\r\n return; // exit this handler for other keys\r\n }\r\n e.preventDefault(); // prevent the default action (scroll / move caret)\r\n });\r\n }\r\n var time = 0;\r\n var lastScrollPosition = 0;\r\n if (this.readerMode() === \"scroll\") {\r\n this.$reader.on(\"scroll.reader\", function (event) {\r\n var scrollTop = _this.$reader.scrollTop();\r\n if (scrollTop - lastScrollPosition > 120) {\r\n _this.controlsIsVisible(false);\r\n lastScrollPosition = scrollTop;\r\n }\r\n else if (scrollTop - lastScrollPosition < -60) {\r\n _this.controlsIsVisible(true);\r\n lastScrollPosition = scrollTop;\r\n }\r\n if ($.now() - time <= 500)\r\n return;\r\n time = $.now();\r\n var height = $(\"#text-container\").height();\r\n _this.chapterProgressPercent(scrollTop / height);\r\n });\r\n }\r\n else {\r\n $(window).on(\"mousewheel.reader\", function (event) {\r\n if ($.now() - time <= 500)\r\n return;\r\n time = $.now();\r\n if (event[\"deltaY\"] > 0) {\r\n // scroll up\r\n _this.previousPage();\r\n }\r\n else {\r\n // scroll down\r\n _this.nextPage();\r\n }\r\n });\r\n }\r\n };\r\n ViewModel.prototype.recalculateSize = function () {\r\n if (this.readerMode() !== \"scroll\") {\r\n var width = $(\"#text-container\").width();\r\n this.width(width);\r\n this.singleColumn(width < 940);\r\n this.height(this.$textWrapper.height());\r\n this.scrollWidth($(\"#text-container\").get(0).scrollWidth);\r\n }\r\n };\r\n ViewModel.prototype.loadSettings = function () {\r\n var _this = this;\r\n var settings = localStorageUtils_1.default.get(\"reader.settings\");\r\n if (settings === null || settings === undefined) {\r\n settings = {\r\n brightness: 5,\r\n fontSize: 8,\r\n fieldSize: 6,\r\n lineHeight: 3,\r\n fontFamily: this.fontList[0],\r\n readerMode: \"scroll\",\r\n customColorScheme: false,\r\n customFontColor: \"#444\",\r\n customBackgroundColor: \"#FFFFFF\",\r\n version: \"1.1\",\r\n hyphenation: false\r\n };\r\n }\r\n if (settings.version === undefined || settings.version === null) {\r\n settings.fontSize = (settings.fontSize || 4) * 2;\r\n this.saveSettings();\r\n }\r\n else {\r\n this.settings = settings;\r\n }\r\n this.brightness(settings.brightness || 5);\r\n this.fontSize(settings.fontSize || 8);\r\n this.fieldSize(settings.fieldSize || 6);\r\n this.lineHeight(settings.lineHeight || 3);\r\n this.fontFamily(settings.fontFamily);\r\n this.readerMode(settings.readerMode || \"scroll\");\r\n this.customColorScheme(settings.customColorScheme || false);\r\n this.hyphenation(settings.hyphenation || false);\r\n this.customFontColor(settings.customFontColor || \"#444\");\r\n this.customBackgroundColor(settings.customBackgroundColor || \"#FFFFFF\");\r\n this.brightness.subscribe(function () { return _this.saveSettings(); });\r\n this.fontSize.subscribe(function () { return _this.saveSettings(); });\r\n this.fieldSize.subscribe(function () { return _this.saveSettings(); });\r\n this.lineHeight.subscribe(function () { return _this.saveSettings(); });\r\n this.fontFamily.subscribe(function () { return _this.saveSettings(); });\r\n this.customColorScheme.subscribe(function () { return _this.saveSettings(); });\r\n this.hyphenation.subscribe(function () { return _this.saveSettings(); });\r\n this.customFontColor.subscribe(function () { return _this.saveSettings(); });\r\n this.customBackgroundColor.subscribe(function () { return _this.saveSettings(); });\r\n setTimeout(function () {\r\n _this.readerMode.subscribe(function () {\r\n _this.isLoading(true);\r\n _this.saveSettings();\r\n _this.fullReloadPage();\r\n });\r\n });\r\n };\r\n ViewModel.prototype.saveSettings = function () {\r\n if (this.settings.hyphenation != this.hyphenation()) {\r\n this.fullReloadPage();\r\n this.isLoading(true);\r\n }\r\n this.settings = {\r\n brightness: this.brightness(),\r\n fontSize: this.fontSize(),\r\n fieldSize: this.fieldSize(),\r\n lineHeight: this.lineHeight(),\r\n fontFamily: this.fontFamily(),\r\n readerMode: this.readerMode(),\r\n customColorScheme: this.customColorScheme(),\r\n customFontColor: this.customFontColor(),\r\n customBackgroundColor: this.customBackgroundColor(),\r\n version: \"1.1\",\r\n hyphenation: this.hyphenation()\r\n };\r\n localStorageUtils_1.default.set(\"reader.settings\", this.settings);\r\n };\r\n ViewModel.prototype.initSliders = function () {\r\n var _this = this;\r\n $(\"#fontSizeSlider\").kendoSlider({\r\n showButtons: false,\r\n min: this.minFontSize,\r\n max: this.maxFontSize,\r\n largeStep: this.maxFontSize,\r\n smallStep: 1,\r\n tickPlacement: \"none\",\r\n value: this.fontSize(),\r\n tooltip: {\r\n enabled: false\r\n },\r\n slide: function (e) {\r\n _this.fontSize(e.value);\r\n },\r\n change: function (e) {\r\n _this.fontSize(e.value);\r\n }\r\n });\r\n $(\"#fieldSizeSlider\").kendoSlider({\r\n showButtons: false,\r\n min: this.minFieldSize,\r\n max: this.maxFieldSize,\r\n largeStep: this.maxFieldSize,\r\n smallStep: 1,\r\n tickPlacement: \"none\",\r\n value: this.fieldSize(),\r\n tooltip: {\r\n enabled: false\r\n },\r\n slide: function (e) {\r\n _this.fieldSize(e.value);\r\n },\r\n change: function (e) {\r\n _this.fieldSize(e.value);\r\n }\r\n });\r\n $(\"#lineHeightSlider\").kendoSlider({\r\n showButtons: false,\r\n min: this.minLineHeight,\r\n max: this.maxLineHeight,\r\n largeStep: this.maxLineHeight,\r\n smallStep: 1,\r\n tickPlacement: \"none\",\r\n value: this.lineHeight(),\r\n tooltip: {\r\n enabled: false\r\n },\r\n slide: function (e) {\r\n _this.lineHeight(e.value);\r\n },\r\n change: function (e) {\r\n _this.lineHeight(e.value);\r\n }\r\n });\r\n $(\"#brightnessSlider\").kendoSlider({\r\n showButtons: false,\r\n min: this.minBrightness,\r\n max: this.maxBrightness,\r\n largeStep: this.maxBrightness,\r\n smallStep: 1,\r\n tickPlacement: \"none\",\r\n value: this.brightness(),\r\n tooltip: {\r\n enabled: false\r\n },\r\n slide: function (e) {\r\n _this.brightness(e.value);\r\n },\r\n change: function (e) {\r\n _this.brightness(e.value);\r\n }\r\n });\r\n var brightnessSlider = $(\"#brightnessSlider\").data(\"kendoSlider\");\r\n this.customColorScheme.subscribe(function (enabled) {\r\n brightnessSlider.enable(!enabled);\r\n });\r\n $(\"#customBackgroudColorpicker\").spectrum({\r\n color: this.customBackgroundColor(),\r\n hide: function (color) {\r\n _this.customBackgroundColor(color.toHexString());\r\n $(\"body\").css(\"background-color\", color.toHexString());\r\n },\r\n move: function (color) {\r\n $(\"body\").css(\"background-color\", color.toHexString());\r\n }\r\n });\r\n $(\"#customFontColorpicker\").spectrum({\r\n color: this.customFontColor(),\r\n hide: function (color) {\r\n _this.customFontColor(color.toHexString());\r\n $(\"body\").css(\"color\", color.toHexString());\r\n },\r\n move: function (color) {\r\n $(\"body\").css(\"color\", color.toHexString());\r\n }\r\n });\r\n };\r\n ViewModel.prototype.loadChapter = function (id, lastPage, chapterProgress) {\r\n var _this = this;\r\n if (lastPage === void 0) { lastPage = false; }\r\n if (chapterProgress === void 0) { chapterProgress = null; }\r\n this.isLoading(true);\r\n $(\"#text-container\").empty();\r\n this.currentChapterId(id);\r\n if (!lastPage) {\r\n this.page(0);\r\n }\r\n try {\r\n var url = \"reader/\" + this.workId + \"/\" + id;\r\n setTimeout(function () {\r\n metrikaUtils_1.default.hit(url);\r\n metrikaUtils_1.default.reachGoal(\"goToReader\", { workId: _this.workId });\r\n }, 100);\r\n if (this.isInit) {\r\n if (history && history.pushState) {\r\n history.pushState({ chapterId: id }, \"\", app.rootUrl + url);\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n try {\r\n console.error(ex);\r\n }\r\n catch (ex) { }\r\n }\r\n var readTextLength = 0;\r\n var chapters = this.chapters();\r\n for (var i = 0; i < chapters.length; i++) {\r\n var c = chapters[i];\r\n if (c.id === id) {\r\n break;\r\n }\r\n readTextLength += c.textLength;\r\n }\r\n this.readTextLength(readTextLength);\r\n ajaxUtils_1.AjaxUtils.get(\"reader/\" + this.workId + \"/chapter\", {\r\n id: id\r\n })\r\n .done(function (result, textStatus, jqXHR) {\r\n if (!result.isSuccessful) {\r\n if (result.messages && result.messages.length) {\r\n if (result.messages[0] === \"Suspended\") {\r\n _this.showSuspendedForm(true);\r\n _this.isLoading(false);\r\n return;\r\n }\r\n if (result.messages[0] === \"Unauthorized\") {\r\n _this.showUnauthorizedForm(true);\r\n _this.isLoading(false);\r\n return;\r\n }\r\n if (result.messages[0] === \"Paid\") {\r\n _this.price = result.data.price;\r\n _this.discount = result.data.discount;\r\n _this.discountEnd = result.data.discountEnd;\r\n _this.showBuyForm(true);\r\n _this.isLoading(false);\r\n return;\r\n }\r\n if (result.messages[0] === \"Unadulted\") {\r\n _this.showUnadultedForm(true);\r\n _this.isLoading(false);\r\n return;\r\n }\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n }\r\n var secret = jqXHR.getResponseHeader(\"Reader-Secret\");\r\n var userId = window[\"app\"].userId || \"\";\r\n var key = secret.split(\"\").reverse().join(\"\") + \"@_@\" + userId;\r\n var text = _.map(result.data.text, function (c, i) {\r\n return String.fromCharCode(result.data.text.charCodeAt(i) ^ key.charCodeAt(Math.floor(i % key.length)));\r\n })\r\n .join(\"\");\r\n var headerText;\r\n if (_this.workForm === \"Story\") {\r\n headerText = _this.workTitle;\r\n }\r\n else {\r\n headerText = _this.currentChapter().title;\r\n }\r\n if (_this.workForm !== \"Story\") {\r\n document.title = \"\\u041A\\u043D\\u0438\\u0433\\u0430 \" + _this.workTitle + \", \" + _this.currentChapter().title + \", \" + _this.authorName + \" \\u0447\\u0438\\u0442\\u0430\\u0442\\u044C \\u043E\\u043D\\u043B\\u0430\\u0439\\u043D\";\r\n }\r\n else {\r\n document.title = _this.workTitle + \", \" + _this.authorName + \" \\u0447\\u0438\\u0442\\u0430\\u0442\\u044C \\u043E\\u043D\\u043B\\u0430\\u0439\\u043D\";\r\n }\r\n var header = \"

\" + headerText + \"

\";\r\n if (_this.epilog && !_this.nextChapter()) {\r\n text += \"

\\u041E\\u0442 \\u0430\\u0432\\u0442\\u043E\\u0440\\u0430

\" + _this.epilog;\r\n }\r\n $(\"#text-container\").html(header + text);\r\n imageZoomUtils_1.default.init(\"#text-container\");\r\n setTimeout(function () {\r\n if (chapterProgress) {\r\n if (_this.readerMode() === \"book\") {\r\n _this.scrollWidth($(\"#text-container\").get(0).scrollWidth);\r\n _this.$reader.animate({ scrollTop: 0 }, \"fast\");\r\n if (lastPage) {\r\n _this.page(Math.ceil(_this.totalPages() / 2) - 1);\r\n }\r\n _this.chapterProgressPercent(chapterProgress);\r\n }\r\n else {\r\n var percent = chapterProgress / 100;\r\n var height = $(\"#text-container\").height();\r\n _this.$reader.animate({ scrollTop: height * percent }, \"fast\");\r\n _this.chapterProgressPercent(percent);\r\n }\r\n }\r\n else {\r\n _this.chapterProgressPercent(chapterProgress);\r\n }\r\n setTimeout(function () { _this.isLoading(false); }, 200);\r\n if (app.isAuthenticated) {\r\n setTimeout(function () {\r\n _this.updateReadingProgress();\r\n }, 10000);\r\n }\r\n }, 100);\r\n });\r\n };\r\n ViewModel.prototype.updateReadingProgress = function () {\r\n var _this = this;\r\n var data = {\r\n wId: this.workId,\r\n cId: this.currentChapterId(),\r\n wp: this.progressPercent(),\r\n cp: this.chapterProgressPercent() * 100,\r\n sId: this.sessionId,\r\n aa: app.isAuthenticated && (window[\"AppComponents\"].LibraryButton) && window[\"AppComponents\"].LibraryButton.currentState() !== \"Reading\"\r\n };\r\n if (this.readerMode() === \"scroll\") {\r\n var height = $(\"#text-container\").height();\r\n var scrollTop = this.$reader.scrollTop();\r\n data.cp = scrollTop / height * 100;\r\n }\r\n ajaxUtils_1.AjaxUtils.post(app.statsApiUrl + \"reader/update-progress?\" + $.param(data), null, true)\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n if (result.data && result.data.newLibraryId) {\r\n try {\r\n metrikaUtils_1.default.reachGoal(\"addToLibrary\", { workId: _this.workId, state: \"Reading\", inReader: true });\r\n }\r\n catch (ex) { }\r\n toastr.info(\"
Произведение добавлено в вашу библиотеку. Отменить?
\", \"\", {\r\n timeOut: 15000,\r\n tapToDismiss: false\r\n });\r\n var libraryBtn = window[\"AppComponents\"].LibraryButton;\r\n if (libraryBtn) {\r\n libraryBtn.currentState(\"Reading\");\r\n }\r\n $(\"#cancelAutoLibrary\").on(\"click\", function (e) {\r\n toastr.clear();\r\n ajaxUtils_1.AjaxUtils.post(\"work/removeFromLibrary\", { id: result.data.newLibraryId, cancel: true })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n ;\r\n _this.showModal({\r\n title: \"Изменение настроек\",\r\n maxWidth: \"450px\",\r\n message: \"Произведение удалено из вашей библиотеки.
\" +\r\n \"Хотите отключить автоматические добавление в библитеку (не рекомендуется)?
\" +\r\n \"Вы всегда можете поменять эти настройки в Личном кабинете.\",\r\n type: modalDialog_1.ModalType.ReverseConfirm,\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"account/disableAutoAddToLibrary\", {}).done(function () {\r\n toastr.success(\"Настройки сохранены.\");\r\n });\r\n }\r\n });\r\n if (libraryBtn) {\r\n libraryBtn.currentState(\"None\");\r\n }\r\n });\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.nextPage = function () {\r\n if (this.isDisabled() || this.isLoading() || this.showBuyForm())\r\n return;\r\n this.controlsIsVisible(false);\r\n if (!this.endOfChapter()) {\r\n var page = this.page();\r\n this.page(page + 1);\r\n }\r\n else {\r\n var chapters = this.chapters();\r\n var index = chapters.indexOf(this.currentChapter());\r\n index++;\r\n if (index < chapters.length) {\r\n this.loadChapter(chapters[index].id);\r\n }\r\n else if (this.nextSeriesWorkId) {\r\n this.showSeriesNextWork();\r\n }\r\n }\r\n };\r\n ViewModel.prototype.showSeriesNextWork = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Переход к следующей книге\",\r\n maxWidth: \"450px\",\r\n message: \"Вы дочитали последнюю главу этой книги.
\" +\r\n \"Перейти к следующей книге цикла?
\",\r\n type: modalDialog_1.ModalType.Confirm,\r\n onSubmit: function () {\r\n location.href = \"/reader/\" + _this.nextSeriesWorkId;\r\n }\r\n });\r\n };\r\n ViewModel.prototype.previousPage = function () {\r\n if (this.isDisabled() || this.isLoading() || this.showBuyForm())\r\n return;\r\n this.controlsIsVisible(false);\r\n var page = this.page();\r\n if (page > 0) {\r\n this.page(page - 1);\r\n }\r\n else {\r\n var chapters = this.chapters();\r\n var index = chapters.indexOf(this.currentChapter());\r\n index--;\r\n if (index >= 0) {\r\n this.loadChapter(chapters[index].id, true);\r\n }\r\n }\r\n };\r\n ViewModel.prototype.toggleFontList = function () {\r\n this.fontListIsOpen(!this.fontListIsOpen());\r\n };\r\n ViewModel.prototype.toggleReaderMode = function () {\r\n this.isLoading(true);\r\n if (this.readerMode() === \"scroll\") {\r\n this.readerMode(\"book\");\r\n }\r\n else {\r\n this.readerMode(\"scroll\");\r\n }\r\n };\r\n ViewModel.prototype.toggleFullScreen = function () {\r\n if (screenfull.isFullscreen) {\r\n screenfull.exit();\r\n }\r\n else {\r\n screenfull.request(document.body);\r\n }\r\n setTimeout(function () {\r\n $(\"#btnFullScreen\").blur();\r\n }, 50);\r\n };\r\n ViewModel.prototype.showLeftPanel = function () {\r\n var _this = this;\r\n if (this.visibleLeftPanel()) {\r\n this.hideLeftPanel();\r\n return;\r\n }\r\n this.visibleLeftPanel(true);\r\n setTimeout(function () {\r\n _this.$reader.on(\"click.panel\", function () {\r\n _this.hideLeftPanel();\r\n });\r\n });\r\n };\r\n ViewModel.prototype.hideLeftPanel = function () {\r\n this.visibleLeftPanel(false);\r\n this.$reader.off(\"click.panel\");\r\n };\r\n ViewModel.prototype.contentClick = function () {\r\n if (this.readerMode() !== \"scroll\") {\r\n this.controlsIsVisible(!this.controlsIsVisible());\r\n }\r\n return true;\r\n };\r\n ViewModel.prototype.onControlsHover = function () {\r\n this.controlsIsVisible(true);\r\n };\r\n ViewModel.prototype.increaseBrightness = function () {\r\n var brightness = this.brightness() + 1;\r\n if (brightness <= this.maxBrightness) {\r\n this.brightness(brightness);\r\n }\r\n };\r\n ViewModel.prototype.decreaseBrightness = function () {\r\n var brightness = this.brightness() - 1;\r\n if (brightness >= this.minBrightness) {\r\n this.brightness(brightness);\r\n }\r\n };\r\n ViewModel.prototype.increaseFontSize = function () {\r\n var fontSize = this.fontSize() + 1;\r\n if (fontSize <= this.maxFontSize) {\r\n this.fontSize(fontSize);\r\n }\r\n };\r\n ViewModel.prototype.decreaseFontSize = function () {\r\n var fontSize = this.fontSize() - 1;\r\n if (fontSize >= this.minFontSize) {\r\n this.fontSize(fontSize);\r\n }\r\n };\r\n ViewModel.prototype.nextFont = function () {\r\n var fontIndex = this.fontList.indexOf(this.fontFamily());\r\n fontIndex = fontIndex < this.fontList.length - 1 ? fontIndex + 1 : 0;\r\n this.fontFamily(this.fontList[fontIndex]);\r\n };\r\n ViewModel.prototype.previousFont = function () {\r\n var fontIndex = this.fontList.indexOf(this.fontFamily());\r\n fontIndex = fontIndex === 0 ? this.fontList.length - 1 : fontIndex - 1;\r\n this.fontFamily(this.fontList[fontIndex]);\r\n };\r\n ViewModel.prototype.setAdultCookie = function () {\r\n cookieUtils_1.default.setAdultUser();\r\n this.goToChapter(this.currentChapter());\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=readerIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"../utils/richContentUtils\", \"../utils/socialUtils\", \"./commentsView\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var socialUtils_1 = require(\"../utils/socialUtils\");\r\n var commentsView_1 = require(\"./commentsView\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n socialUtils_1.default.init();\r\n richContentUtils_1.default.processHtml(\".art-description\");\r\n this.loadComments(null, null, false);\r\n }\r\n return ViewModel;\r\n }(commentsView_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=artView.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"toastr\", \"sortable\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var toastr = require(\"toastr\");\r\n //@ts-ignore\r\n var Sortable = require(\"sortable\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var AudiobookChapter = (function () {\r\n function AudiobookChapter(options) {\r\n this.title = ko.observable();\r\n this.isEditing = ko.observable(false);\r\n this.processing = ko.observable(false);\r\n this.id = options.id;\r\n this.workId = options.workId;\r\n this.title(options.title);\r\n this.originalTitle = options.title;\r\n this.url = options.url;\r\n }\r\n AudiobookChapter.prototype.startEditing = function () {\r\n this.originalTitle = this.title();\r\n this.isEditing(true);\r\n };\r\n AudiobookChapter.prototype.cancelEditing = function () {\r\n this.title(this.originalTitle);\r\n this.isEditing(false);\r\n };\r\n AudiobookChapter.prototype.save = function () {\r\n var _this = this;\r\n this.processing(true);\r\n return ajaxUtils_1.AjaxUtils.post(\"audiobook/renameChapter\", {\r\n workId: this.workId,\r\n chapterId: this.id,\r\n title: this.title()\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"\\u0427\\u0430\\u0441\\u0442\\u044C \\u0431\\u044B\\u043B\\u0430 \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D\\u0430. \\u041D\\u043E\\u0432\\u043E\\u0435 \\u043D\\u0430\\u0437\\u0432\\u0430\\u043D\\u0438\\u0435: \\u00AB\" + result.data.title + \"\\u00BB\");\r\n _this.title(result.data.title);\r\n _this.isEditing(false);\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n return AudiobookChapter;\r\n }());\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.workId = this.options.workId;\r\n this.allowDelete = this.options.allowDelete;\r\n this.useUploadedFileName = ko.observable(false);\r\n this.enableSorting = ko.observable(false);\r\n this.chapters = ko.observableArray([]);\r\n var rootUrl = window[\"app\"].rootUrl;\r\n this.chapters(_.map(options.chapters, function (x) { return new AudiobookChapter(x); }));\r\n this.initSorting();\r\n $(document).ready(function () {\r\n if (!$(\"fine-uploader\"))\r\n return;\r\n var enableSortingValue = false;\r\n var uploader = new qq.FineUploader({\r\n element: document.getElementById(\"fine-uploader\"),\r\n request: {\r\n endpoint: rootUrl + \"audiobook/uploadChapterChunk\",\r\n params: {\r\n workId: options.workId,\r\n useUploadedFileName: function () { return _this.useUploadedFileName(); }\r\n }\r\n },\r\n chunking: {\r\n partSize: options.chunkSize,\r\n enabled: true,\r\n concurrent: {\r\n enabled: true\r\n },\r\n success: {\r\n endpoint: rootUrl + \"audiobook/uploadChapterChunksCompleted\"\r\n }\r\n },\r\n thumbnails: {\r\n placeholders: {\r\n notAvailablePath: rootUrl + \"dist/vendor/fine-uploader/placeholders/not_available-generic.png\",\r\n waitingPath: rootUrl + \"dist/vendor/fine-uploader/placeholders/waiting-generic.png\"\r\n }\r\n },\r\n messages: {\r\n unsupportedBrowser: \"Ваш браузер не поддерживает загрузку файлов.\",\r\n sizeError: \"Файл «{file}» слишком большой, максимальный размер файла — {sizeLimit}.\",\r\n typeError: \"Файл «{file}» имеет недопустимый формат. Разрешены следующие форматы: {extensions}.\",\r\n tooManyItemsError: \"\\u0412\\u044B \\u043C\\u043E\\u0436\\u0435\\u0442\\u0435 \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043D\\u0435 \\u0431\\u043E\\u043B\\u0435\\u0435 \" + options.maxChaptersCount + \" \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432.\"\r\n },\r\n text: {\r\n failUpload: \"Не удалось загрузить файл\",\r\n waitingForResponse: \"Обработка...\"\r\n },\r\n validation: {\r\n allowedExtensions: [\"mp3\"],\r\n sizeLimit: options.maxFileUploadSize,\r\n itemLimit: options.maxChaptersCount - _this.chapters().length\r\n },\r\n callbacks: {\r\n onComplete: function (id, name, response) {\r\n if (!response.success) {\r\n alert(response.error);\r\n return;\r\n }\r\n $(\"[qq-file-id=\" + id + \"]\").remove();\r\n _this.chapters.push(new AudiobookChapter(response.data));\r\n },\r\n onAllComplete: function () {\r\n _this.enableSorting(enableSortingValue);\r\n _this.reloadPage();\r\n },\r\n onSubmitted: function () {\r\n enableSortingValue = _this.enableSorting();\r\n _this.enableSorting(false);\r\n $(\".checkbox-edit-sorting\").attr(\"disabled\", 'disabled');\r\n }\r\n }\r\n });\r\n ko.computed(function () {\r\n var itemLimit = options.maxChaptersCount - _this.chapters().length;\r\n if (itemLimit === 0) {\r\n itemLimit = -1;\r\n }\r\n uploader.setItemLimit(itemLimit);\r\n });\r\n });\r\n }\r\n ViewModel.prototype.initSorting = function () {\r\n var _this = this;\r\n var list = $(\".sortable\")[0];\r\n if (list) {\r\n var sortable = new Sortable(list, {\r\n animation: 150,\r\n handle: \".sortable-handle\",\r\n filter: \".btn\",\r\n onFilter: function (evt) {\r\n var item = evt.item, $ctrl = $(evt.target);\r\n if ($ctrl.is(\".btn-simple-danger\"))\r\n return;\r\n $ctrl.trigger(evt);\r\n },\r\n onEnd: function (e) {\r\n ajaxUtils_1.AjaxUtils.post(\"audiobook/reorderChapter\", {\r\n workId: _this.workId,\r\n oldIndex: e.oldIndex,\r\n newIndex: e.newIndex\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"Порядок частей был изменен.\");\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n };\r\n ViewModel.prototype.updateState = function (state) {\r\n var _this = this;\r\n var message = \"Подтвердите изменение статуса\";\r\n switch (state) {\r\n case \"InProgress\":\r\n if (this.options.finished) {\r\n message = \"Вы точно хотите отменить статус \\\"завершено\\\" у произведения?\";\r\n }\r\n else {\r\n message = \"Важно! Если вы не собираетесь выкладывать книгу на Author.Today целиком, не меняйте данный статус. \" +\r\n \"В случае поступления жалобы от читателя на неверный статус ваш аккаунт может быть заблокирован.\";\r\n }\r\n break;\r\n case \"Finished\":\r\n message = \"Присваивая статус \\\"завершено\\\" вы подтверждаете, что весь текст произведения \" +\r\n \"опубликован на сайте и целиком доступен читателю.\" +\r\n \" В противном случае выберите статус ознакомительного фрагмента.
\" +\r\n \"В случае поступления жалобы от читателя на неверный статус ваш аккаунт может быть заблокирован.\";\r\n break;\r\n case \"PromoFragment\":\r\n message = \"Выберите этот статус, если не собираетесь выкладывать книгу на Author.Today целиком.\";\r\n break;\r\n }\r\n this.showModal({\r\n title: \"\\u0418\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0442\\u0430\\u0442\\u0443\\u0441\\u0430\",\r\n type: 2,\r\n okBtnText: \"Продолжить\",\r\n maxWidth: \"500px\",\r\n message: message,\r\n onSubmit: function () {\r\n _this.processing(true);\r\n return ajaxUtils_1.AjaxUtils.post(\"work/updateState\", {\r\n id: _this.workId,\r\n state: state\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.modal.hide();\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.publish = function () {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/publish\", {\r\n id: this.workId\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n });\r\n };\r\n ViewModel.prototype.showMoveToDraftModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"\\u041F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\",\r\n type: 2,\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0431\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0447\\u0435\\u0440\\u043D\\u043E\\u0432\\u0438\\u043A?\",\r\n onSubmit: function () {\r\n _this.processing(true);\r\n return ajaxUtils_1.AjaxUtils.post(\"work/moveToDraft\", {\r\n id: _this.workId\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.showDeleteChapterModal = function (id, title) {\r\n this.showModal({\r\n title: \"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0447\\u0430\\u0441\\u0442\\u0438\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u00AB\" + title + \"\\u00BB?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"audiobook/deleteChapter\", {\r\n id: id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n var $el = $(\"#chapter_\" + id);\r\n $el.hide({\r\n done: function () {\r\n $el.fadeOut();\r\n }\r\n });\r\n toastr.success(\"\\u00AB\" + title + \"\\u00BB \\u0431\\u044B\\u043B\\u0430 \\u0443\\u0441\\u043F\\u0435\\u0448\\u043D\\u043E \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0430.\");\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.showDeleteWorkModal = function () {\r\n var _this = this;\r\n if (!this.allowDelete) {\r\n this.showModal({\r\n title: \"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435\\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\",\r\n type: 5,\r\n maxWidth: \"500px\",\r\n message: \"Вы не можете удалить произведение, т.к. доступ к нему оплатил как минимум один человек.
\" +\r\n \"Чтобы скрыть его из общего доступа, уберите в черновики.\"\r\n });\r\n return;\r\n }\r\n this.showModal({\r\n title: \"Удаление произведения\",\r\n message: \"Вы точно хотите удалить произведение?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"work/delete\", {\r\n id: _this.workId\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.redirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n _this.modal.hide();\r\n _this.showModal({\r\n title: \"Удаление произведения\",\r\n message: result.messages[0],\r\n type: 5\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.deleteFile = function (viewModel, chapter) {\r\n var modal = window[\"AppComponents\"].ModalDialog;\r\n modal.show({\r\n title: \"Удаление аудиофайла\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0430\\u0443\\u0434\\u0438\\u043E\\u0444\\u0430\\u0439\\u043B \\u00AB\" + chapter.originalTitle + \"\\u00BB?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"audiobook/deleteChapter\", {\r\n workId: viewModel.workId,\r\n chapterId: chapter.id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"\\u0427\\u0430\\u0441\\u0442\\u044C \\u00AB\" + chapter.originalTitle + \"\\u00BB \\u0431\\u044B\\u043B\\u0430 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0430\");\r\n $(\"#\" + chapter.id).remove();\r\n viewModel.chapters.remove(chapter);\r\n if (result.data && result.data.withReloadPage) {\r\n viewModel.reloadPage();\r\n }\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=audiobookEditContent.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"moment\", \"numeral\", \"../utils/ajaxUtils\", \"../utils/dateTimeUtils\", \"../utils/socialUtils\", \"../utils/localStorageUtils\", \"../utils/metrikaUtils\", \"../utils/imageZoomUtils\", \"./commentsView\", \"../utils/richContentUtils\", \"../utils/cookieUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n var numeral = require(\"numeral\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var socialUtils_1 = require(\"../utils/socialUtils\");\r\n var scriptjs = require(\"scriptjs\");\r\n var localStorageUtils_1 = require(\"../utils/localStorageUtils\");\r\n var metrikaUtils_1 = require(\"../utils/metrikaUtils\");\r\n var imageZoomUtils_1 = require(\"../utils/imageZoomUtils\");\r\n var commentsView_1 = require(\"./commentsView\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var cookieUtils_1 = require(\"../utils/cookieUtils\");\r\n var Masonry = require(\"masonry-layout\");\r\n var imagesLoaded = require(\"imagesloaded\");\r\n var Settings = (function () {\r\n function Settings() {\r\n }\r\n return Settings;\r\n }());\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.metricsSpentTime = 0;\r\n this.s3url = \"audiobook/gets3url\";\r\n this.numeral = numeral;\r\n this.processing = ko.observable(false);\r\n this.workId = this.options.workId;\r\n this.isATRecommended = this.options.isATRecommended;\r\n this.startDate = ko.observable(moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate = ko.observable(moment().endOf(\"day\"));\r\n this.isLoading = ko.observable(true);\r\n this.statsViewCount = ko.observable(0);\r\n this.statsCommentCount = ko.observable(0);\r\n this.statsLikeCount = ko.observable(0);\r\n this.statsFilterData = ko.computed(function () {\r\n var filterData = {\r\n startDate: _this.startDate().toISOString(),\r\n endDate: _this.endDate().toISOString(),\r\n itemId: _this.workId,\r\n groupBy: \"work\"\r\n };\r\n return filterData;\r\n });\r\n this.booktrailerVideoUrl = ko.observable();\r\n this.showFullStats = ko.observable();\r\n this.currentChapter = ko.observable();\r\n this.chapterProgress = ko.observable();\r\n this.chapterDuration = ko.observable();\r\n this.chapterCurrentTime = ko.observable();\r\n this.progressComputed = ko.pureComputed(function () {\r\n return _this.chapterProgress();\r\n }).extend({\r\n rateLimit: {\r\n timeout: 30000,\r\n method: \"notifyAtFixedRate\"\r\n }\r\n });\r\n this.chapterEndTimeMessage = ko.pureComputed(function () {\r\n var duration = _this.chapterDuration(), currentTime = _this.chapterCurrentTime();\r\n var value = duration - currentTime;\r\n if (Math.floor(value) <= 0)\r\n return _this.getTimeCode(0);\r\n return \"-\" + _this.getTimeCode(value);\r\n });\r\n this.firstPlay = true;\r\n this.audioVolume = ko.observable(1);\r\n this.audioSpeed = ko.observable(1);\r\n this.audioPlaying = ko.observable(false);\r\n this.audioWaiting = ko.observable(true);\r\n this.audioSpeedOptions = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 1.75, 2];\r\n this.previousChapter = ko.pureComputed(function () {\r\n var index = _this.chapters.indexOf(_this.currentChapter());\r\n index--;\r\n if (index < 0)\r\n return null;\r\n return _this.chapters[index];\r\n });\r\n this.nextChapter = ko.pureComputed(function () {\r\n var index = _this.chapters.indexOf(_this.currentChapter());\r\n index++;\r\n if (index >= _this.chapters.length)\r\n return null;\r\n return _this.chapters[index];\r\n });\r\n this.audioPlayerIcon = ko.pureComputed(function () {\r\n var waiting = _this.audioWaiting(), playing = _this.audioPlaying();\r\n if (playing && waiting) {\r\n return \"icon-spinner icon-spin-animate\";\r\n }\r\n if (playing) {\r\n return \"icon-2-player-pause\";\r\n }\r\n return \"icon-2-player-play\";\r\n });\r\n this.registerUrl = app.rootUrl + \"account/register?returnUrl=\" + encodeURIComponent(app.rootUrl + \"audiobook/\" + this.workId);\r\n this.loadPreviousChapter = function () {\r\n var ch = _this.previousChapter();\r\n if (ch) {\r\n _this.loadChapter(ch);\r\n }\r\n };\r\n this.loadNextChapter = function () {\r\n var ch = _this.nextChapter();\r\n if (ch) {\r\n _this.loadChapter(ch);\r\n }\r\n };\r\n this.constRewindStep = 30; // шаг перемотки\r\n this.backwardBtn = function () {\r\n _this.audio.currentTime -= _this.constRewindStep;\r\n };\r\n this.forwardBtn = function () {\r\n _this.audio.currentTime += _this.constRewindStep;\r\n };\r\n this.togglePlay = function () {\r\n var playing = !_this.audioPlaying();\r\n var playAudio = function () {\r\n var playPromise = _this.audio.play();\r\n // In browsers that don’t yet support this functionality, playPromise won’t be defined.\r\n if (playPromise) {\r\n playPromise.catch(function (error) {\r\n console.error(\"Audio error: \", error);\r\n var time = _this.audio.currentTime;\r\n var src = _this.audio.src;\r\n _this.audio.src = null;\r\n _this.audio.src = src;\r\n _this.audio.currentTime = time;\r\n });\r\n }\r\n };\r\n if (playing) {\r\n if (_this.adultOnly && !(app.isAuthenticated || cookieUtils_1.default.getAdultUser())) {\r\n _this.showModal({\r\n title: \"\\u0412\\u0437\\u0440\\u043E\\u0441\\u043B\\u044B\\u0439 \\u043A\\u043E\\u043D\\u0442\\u0435\\u043D\\u0442\",\r\n type: 0,\r\n templateId: \"adultOnlyModal\",\r\n viewModel: _this\r\n });\r\n }\r\n else {\r\n if (_this.firstPlay) {\r\n $(\".btn-pulse\").removeClass(\"btn-pulse\");\r\n var currentChapter = _.find(_this.chapters, function (x) { return x.id === _this.options.chapterId; });\r\n _this.currentChapter(currentChapter);\r\n ajaxUtils_1.AjaxUtils.get(_this.s3url, { path: currentChapter.url })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.audio.src = result.data;\r\n $(\"#href-tab-chapters\").tab(\"show\");\r\n playAudio();\r\n });\r\n }\r\n else {\r\n playAudio();\r\n }\r\n _this.audioPlaying(playing);\r\n }\r\n }\r\n else {\r\n _this.audio.pause();\r\n _this.updateReadingProgress();\r\n _this.audioPlaying(playing);\r\n }\r\n };\r\n this.toggleAudioVolume = function () {\r\n if (_this.audioVolume() > 0) {\r\n _this.savedVolume = _this.audioVolume();\r\n _this.audioVolume(0);\r\n }\r\n else {\r\n _this.audioVolume(_this.savedVolume);\r\n }\r\n };\r\n this.changeAudioSpeed = function (speed) {\r\n _this.audioSpeed(speed);\r\n };\r\n this.loadChapter = function (chapter) {\r\n _this.currentChapter(chapter);\r\n ajaxUtils_1.AjaxUtils.get(_this.s3url, { path: chapter.url })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.audio.src = result.data;\r\n _this.audio.play();\r\n _this.chapterProgress(0);\r\n _this.$timelineSeek.val(0);\r\n _this.updateReadingProgress();\r\n });\r\n };\r\n this.getTimeCode = function (num) {\r\n if (isNaN(num))\r\n return \"00:00\";\r\n var seconds = Math.floor(num);\r\n var hours = Math.floor(seconds / 3600);\r\n var minutes = Math.floor((seconds - (hours * 3600)) / 60);\r\n seconds = seconds - (hours * 3600) - (minutes * 60);\r\n if (minutes < 10) {\r\n minutes = \"0\" + minutes;\r\n }\r\n if (seconds < 10) {\r\n seconds = \"0\" + seconds;\r\n }\r\n var result;\r\n if (hours > 0) {\r\n if (hours < 10) {\r\n hours = \"0\" + hours;\r\n }\r\n result = hours + \":\" + minutes + \":\" + seconds;\r\n }\r\n else {\r\n result = minutes + \":\" + seconds;\r\n }\r\n return result;\r\n };\r\n this.downloadFile = function (chapterId, viewModel, event) {\r\n if (!app.ensureAuth())\r\n return;\r\n var $button = $(event.currentTarget);\r\n $button.attr(\"disabled\", \"disabled\").addClass(\"is-loading\");\r\n $.get(window[\"app\"].rootUrl + \"audiobook/download\", { chapterId: chapterId })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n window.location = result.data;\r\n }\r\n })\r\n .always(function () {\r\n $button.removeAttr(\"disabled\").removeClass(\"is-loading\");\r\n });\r\n };\r\n this.statsInit = false;\r\n this.workStatLoaded = ko.observable(false);\r\n this.totalCount = ko.observable(0);\r\n this.readingCount = ko.observable(0);\r\n this.savedCount = ko.observable(0);\r\n this.finishedCount = ko.observable(0);\r\n this.dislikedCount = ko.observable(0);\r\n this.timelineLoaded = ko.observable(false);\r\n this.timelineHtml = ko.observable();\r\n this.chapters = options.chapters;\r\n socialUtils_1.default.init();\r\n richContentUtils_1.default.processHtml(\".annotation\");\r\n localStorageUtils_1.default.addToList(localStorageUtils_1.default.RecentlyViewedKey, this.workId);\r\n this.booktrailerVideoUrl(options.booktrailerVideoUrl);\r\n this.showFullStats(options.showFullStats);\r\n this.loadSettings();\r\n this.initAudioPlayer();\r\n this.loadComments(null, null, false);\r\n this.adultOnly = options.adultOnly;\r\n }\r\n ViewModel.prototype.loadSettings = function () {\r\n var _this = this;\r\n var settings = localStorageUtils_1.default.get(\"audio.settings\");\r\n if (settings === null || settings === undefined) {\r\n settings = {\r\n volume: 1,\r\n speed: 1,\r\n version: \"1.0\"\r\n };\r\n }\r\n this.audioVolume(settings.volume || 1);\r\n this.audioSpeed(settings.speed || 1);\r\n this.audioVolume.subscribe(function () { return _this.saveSettings(); });\r\n this.audioSpeed.subscribe(function () { return _this.saveSettings(); });\r\n };\r\n ViewModel.prototype.saveSettings = function () {\r\n var settings = {\r\n volume: this.audioVolume(),\r\n speed: this.audioSpeed(),\r\n version: \"1.0\"\r\n };\r\n localStorageUtils_1.default.set(\"audio.settings\", settings);\r\n };\r\n ViewModel.prototype.endOfAudio = function () {\r\n if (this.nextChapter()) {\r\n this.loadNextChapter();\r\n return;\r\n }\r\n if (this.chapters.length < this.options.totalChapterCount) {\r\n var messageText = void 0;\r\n if (app.isAuthenticated) {\r\n messageText =\r\n \"

Книга находится в платном доступе.

Чтобы продолжить, пожалуйста, оплатите доступ.

\";\r\n }\r\n else {\r\n messageText = \"

Книга находится в платном доступе.

\" +\r\n \"

Чтобы продолжить слушать аудиокнигу, пожалуйста, войдите в свой аккаунт на Author.Today \" +\r\n (\"\\u0438\\u043B\\u0438 \\u0437\\u0430\\u0440\\u0435\\u0433\\u0438\\u0441\\u0442\\u0440\\u0438\\u0440\\u0443\\u0439\\u0442\\u0435\\u0441\\u044C.

\");\r\n }\r\n this.showModal({\r\n title: \"\\u041A\\u043E\\u043D\\u0435\\u0446 \\u043E\\u0437\\u043D\\u0430\\u043A\\u043E\\u043C\\u0438\\u0442\\u0435\\u043B\\u044C\\u043D\\u043E\\u0433\\u043E \\u0444\\u0440\\u0430\\u0433\\u043C\\u0435\\u043D\\u0442\\u0430\",\r\n type: 3,\r\n message: messageText\r\n });\r\n }\r\n this.audio.pause();\r\n this.audioPlaying(false);\r\n };\r\n ViewModel.prototype.initAudioPlayer = function () {\r\n var _this = this;\r\n this.audio = new Audio();\r\n this.$timelineSeek = $(\"#timelineSeek\");\r\n $(this.audio)\r\n .on(\"loadedmetadata\", function () {\r\n console.info(\"Audio: loadedmetadata\");\r\n _this.chapterDuration(_this.audio.duration);\r\n })\r\n .on(\"loadeddata\", function () {\r\n console.info(\"Audio: loadeddata\");\r\n if (_this.firstPlay) {\r\n _this.firstPlay = false;\r\n $(\".btn-pulse\").removeClass(\"btn-pulse\");\r\n if (_this.options.chapterId === _this.currentChapter().id) {\r\n _this.chapterProgress(_this.options.chapterProgress);\r\n _this.audio.currentTime = _this.audio.duration * _this.options.chapterProgress / 100;\r\n }\r\n try {\r\n metrikaUtils_1.default.reachGoal(\"startAudio\", { from: \"WorkPage\" });\r\n }\r\n catch (ex) { }\r\n ;\r\n // запускаем подсчет метрики audio10Min\r\n _this.metricsLastTick = new Date().getTime();\r\n var spentTimeToCheck = 1000 * 60 * 10; // 10 минут\r\n var checkSpentTimeInterval = setInterval(function () {\r\n if (_this.metricsSpentTime > spentTimeToCheck) {\r\n clearInterval(checkSpentTimeInterval);\r\n try {\r\n metrikaUtils_1.default.reachGoal(\"audio10Min\", { from: \"WorkPage\" });\r\n }\r\n catch (ex) { }\r\n ;\r\n }\r\n }, 2000);\r\n }\r\n _this.audio.volume = _this.audioVolume();\r\n _this.audio.playbackRate = _this.audioSpeed();\r\n if (_this.audio.currentTime === _this.audio.duration) {\r\n _this.endOfAudio();\r\n }\r\n })\r\n .on(\"loadstart\", function () {\r\n console.info(\"Audio: loadstart\");\r\n _this.audioWaiting(true);\r\n })\r\n .on(\"waiting\", function () {\r\n console.info(\"Audio: waiting\");\r\n _this.audioWaiting(true);\r\n })\r\n .on(\"playing\", function () {\r\n console.info(\"Audio: playing\");\r\n _this.audioPlaying(true);\r\n _this.audioWaiting(false);\r\n })\r\n .on(\"timeupdate\", function () {\r\n var progress = _this.audio.currentTime / _this.audio.duration * 100;\r\n if (!isNaN(progress)) {\r\n _this.chapterCurrentTime(_this.audio.currentTime);\r\n _this.chapterProgress(progress);\r\n _this.$timelineSeek.val(progress * 10);\r\n }\r\n else {\r\n _this.chapterCurrentTime(0);\r\n _this.chapterProgress(0);\r\n }\r\n if (_this.metricsLastTick) {\r\n var tick = new Date().getTime();\r\n var delta = tick - _this.metricsLastTick;\r\n if (delta < 1000) {\r\n _this.metricsSpentTime += delta;\r\n }\r\n _this.metricsLastTick = tick;\r\n }\r\n })\r\n .on(\"ended\", function () {\r\n console.info(\"Audio: ended\");\r\n var endOfAudio = _this.audio.currentTime === _this.audio.duration;\r\n if (endOfAudio) {\r\n _this.endOfAudio();\r\n }\r\n else {\r\n _this.audioWaiting(true);\r\n }\r\n });\r\n this.audio.preload = \"metadata\";\r\n this.progressComputed.subscribe(function () {\r\n _this.updateReadingProgress();\r\n });\r\n this.$timelineSeek.on(\"input\", function (e) {\r\n var progress = _this.$timelineSeek.val() / 10;\r\n _this.audio.currentTime = _this.audio.duration * progress / 100;\r\n _this.chapterProgress(progress);\r\n });\r\n var $volumeSeek = $(\"#volumeSeek\");\r\n this.audioVolume.subscribe(function (volume) {\r\n _this.audio.volume = volume;\r\n $volumeSeek.val(volume * 100);\r\n });\r\n $volumeSeek.on(\"input\", function (e) {\r\n _this.audioVolume($volumeSeek.val() / 100);\r\n });\r\n this.audioSpeed.subscribe(function (speed) {\r\n _this.audio.playbackRate = speed;\r\n });\r\n $(\".chapter-available\").each(function (i, el) {\r\n $(el).on(\"click\", function (e) {\r\n if ($(e.target).is(\".chapter-download\") ||\r\n $(e.target).parents(\".chapter-download\").length)\r\n return;\r\n _this.loadChapter(_this.chapters[i]);\r\n });\r\n });\r\n if (location.hash === \"#startAudio\") {\r\n this.togglePlay();\r\n }\r\n };\r\n ViewModel.prototype.updateReadingProgress = function () {\r\n var data = {\r\n wId: this.workId,\r\n cId: this.currentChapter().id,\r\n wp: 0,\r\n cp: this.chapterProgress(),\r\n sId: this.options.sessionId\r\n };\r\n ajaxUtils_1.AjaxUtils.post(app.statsApiUrl + (\"audiobook/update-progress?\" + $.param(data)), null)\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n });\r\n };\r\n ViewModel.prototype.showMaterialsTab = function () {\r\n $(\"#href-tab-maretials\").tab(\"show\");\r\n setTimeout(function () {\r\n if (!$(\"#masonry\")[0])\r\n return;\r\n var masonry = new Masonry(\"#masonry\", {\r\n itemSelector: \"figure\",\r\n gutter: 10,\r\n columnWidth: \".grid-sizer\",\r\n percentPosition: true\r\n });\r\n $(\"#masonry figure\")[\"imagesLoaded\"]()\r\n .progress(function () {\r\n masonry.layout();\r\n });\r\n $(window)\r\n .on(\"resize\", function () {\r\n setTimeout(function () { return masonry.layout(); }, 200);\r\n });\r\n imageZoomUtils_1.default.initWorkMaterials();\r\n }, 200);\r\n };\r\n /** Загружает информацию для вкладки \"Статистика\" */\r\n ViewModel.prototype.showStatsTab = function () {\r\n var _this = this;\r\n $(\"#href-tab-stats\").tab(\"show\");\r\n if (this.statsInit)\r\n return;\r\n ajaxUtils_1.AjaxUtils.get(\"work/work-stats\", { workId: this.workId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.totalCount(result.data.totalCount);\r\n _this.readingCount(result.data.readingCount);\r\n _this.savedCount(result.data.savedCount);\r\n _this.finishedCount(result.data.finishedCount);\r\n _this.dislikedCount(result.data.dislikedCount);\r\n })\r\n .always(function () {\r\n _this.workStatLoaded(true);\r\n });\r\n if (this.showFullStats()) {\r\n scriptjs([ajaxUtils_1.AjaxUtils.getFullUrl(\"dist/js/amcharts?v=140717\")], function () {\r\n ko.computed(function () {\r\n _this.isLoading(true);\r\n _this.statsFilterData();\r\n _this.loadDynamicChart();\r\n });\r\n _this.statsInit = true;\r\n });\r\n }\r\n else {\r\n this.statsInit = true;\r\n }\r\n };\r\n ViewModel.prototype.showTimelineTab = function () {\r\n var _this = this;\r\n $(\"#href-tab-timeline\").tab(\"show\");\r\n if (this.timelineLoaded())\r\n return;\r\n ajaxUtils_1.AjaxUtils.get(\"work/timeline\", { id: this.workId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.timelineHtml(result.data.html);\r\n setTimeout(function () {\r\n var $timeline = $(\"#tab-timeline\").find(\".widget-content\");\r\n $timeline.addClass(\"in\");\r\n dateTimeUtils_1.default.displayTime($timeline);\r\n }, 0);\r\n })\r\n .always(function () {\r\n _this.timelineLoaded(true);\r\n });\r\n };\r\n ViewModel.prototype.loadDynamicChart = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.get(\"report/user-activity-data\", this.statsFilterData())\r\n .done(function (result) {\r\n var daysInPerios = Math.floor((_this.endDate() - _this.startDate()) / (1000 * 60 * 60 * 24));\r\n var minPeriod = \"DD\";\r\n var categoryBalloonDateFormat = \"MMMM DD, YYYY\";\r\n if (daysInPerios > 40) {\r\n minPeriod = \"MM\";\r\n categoryBalloonDateFormat = \"MMMM, YYYY\";\r\n }\r\n _this.dynamicChart = AmCharts.makeChart(\"statsChartdiv\", {\r\n language: \"ru\",\r\n type: \"serial\",\r\n theme: \"light\",\r\n valueAxes: [\r\n {\r\n id: \"countAxis\",\r\n axisAlpha: 0,\r\n position: \"left\",\r\n integersOnly: true,\r\n title: \"Количество просмотров\"\r\n }, {\r\n title: \"Время прослушивания, часы\",\r\n id: \"durationAxis\",\r\n axisAlpha: 0,\r\n gridAlpha: 0,\r\n position: \"right\"\r\n }\r\n ],\r\n graphs: [\r\n {\r\n balloonText: \"Просмотров: [[value]]\",\r\n fillAlphas: 0.7,\r\n legendValueText: \"[[value]]\",\r\n type: \"column\",\r\n valueField: \"totalViewCount\",\r\n valueAxis: \"countAxis\"\r\n }, {\r\n balloonText: \"Время прослушивания: [[value]]\",\r\n type: \"smoothedLine\",\r\n bullet: \"round\",\r\n bulletBorderAlpha: 1,\r\n useLineColorForBulletBorder: true,\r\n bulletColor: \"#FFFFFF\",\r\n hideBulletsCount: 30,\r\n legendValueText: \"[[value]] ч.\",\r\n fillAlphas: 0,\r\n valueField: \"spentTime\",\r\n valueAxis: \"durationAxis\"\r\n }\r\n ],\r\n chartCursor: {\r\n categoryBalloonDateFormat: categoryBalloonDateFormat,\r\n cursorAlpha: 0.1,\r\n cursorColor: \"#000000\",\r\n fullWidth: true,\r\n valueBalloonsEnabled: false,\r\n zoomable: false\r\n },\r\n dataDateFormat: \"DD.MM.YYYY\",\r\n categoryField: \"date\",\r\n categoryAxis: {\r\n parseDates: true,\r\n dashLength: 1,\r\n minorGridEnabled: true,\r\n minPeriod: minPeriod\r\n },\r\n legend: {\r\n equalWidths: false,\r\n useGraphSettings: true,\r\n align: \"center\"\r\n },\r\n dataProvider: result.data,\r\n pathToImages: window[\"app\"].rootUrl + \"dist/vendor/amcharts/images/\"\r\n });\r\n _this.isLoading(false);\r\n });\r\n };\r\n ViewModel.prototype.updateATRecState = function () {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/updateATRecomendation\", {\r\n id: this.workId,\r\n isATRecommended: !this.isATRecommended\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n });\r\n };\r\n ViewModel.prototype.setAdultCookie = function () {\r\n cookieUtils_1.default.setAdultUser();\r\n this.modal.hide();\r\n this.togglePlay();\r\n };\r\n return ViewModel;\r\n }(commentsView_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=audiobookView.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"moment\", \"../utils/ajaxUtils\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.ranges = {\r\n 'За неделю': [moment().startOf(\"day\").add(-6, \"days\"), moment().endOf(\"day\")],\r\n 'За месяц': [moment().startOf(\"day\").add(-30, \"days\"), moment().endOf(\"day\")]\r\n };\r\n this.dateRangePickerOptions = {\r\n minDate: moment().startOf(\"day\").add(-30, \"days\"),\r\n maxDate: moment()\r\n };\r\n this.startDate = ko.observable();\r\n this.endDate = ko.observable();\r\n this.isLoading = ko.observable(true);\r\n this.getFilterData = function () {\r\n return _this.filterData();\r\n };\r\n this.type = options.type;\r\n this.auId = options.auId;\r\n this.routeName = options.routeName;\r\n this.startDate(options.startDate ? moment(options.startDate) : moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate(options.endDate ? moment(options.endDate) : moment().endOf(\"day\"));\r\n this.filterData = ko.computed(function () {\r\n var filterData = {\r\n startDate: _this.toDateFormat(_this.startDate()),\r\n endDate: _this.toDateFormat(_this.endDate()),\r\n auId: _this.auId,\r\n type: 2\r\n };\r\n return filterData;\r\n }).extend({\r\n rateLimit: {\r\n timeout: 300,\r\n method: \"notifyWhenChangesStop\"\r\n }\r\n });\r\n var isInitialized = false;\r\n setTimeout(function () {\r\n ko.computed(function () {\r\n var data = _this.filterData();\r\n if (!isInitialized)\r\n return;\r\n _this.isLoading(true);\r\n _this.loadDynamicChart();\r\n var grid = $(\"#grid\").data(\"kendoGrid\");\r\n if (grid) {\r\n grid.dataSource.read(data);\r\n }\r\n try {\r\n if (!data.auId || data.auId === \"null\") {\r\n delete data.auId;\r\n }\r\n history.replaceState(null, null, \"author-rating?\" + $.param(data));\r\n }\r\n catch (e) {\r\n }\r\n });\r\n });\r\n this.filterData.subscribe(function () {\r\n isInitialized = true;\r\n });\r\n }\r\n ViewModel.prototype.loadDynamicChart = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.get(\"report/merged-by-day\", this.filterData())\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n AmCharts.makeChart(\"chartdiv\", {\r\n language: \"ru\",\r\n type: \"serial\",\r\n theme: \"light\",\r\n synchronizeGrid: true,\r\n thousandsSeparator: \" \",\r\n \"categoryField\": \"date\",\r\n \"categoryAxis\": {\r\n gridPosition: \"start\",\r\n parseDates: true,\r\n dashLength: 1,\r\n minPeriod: \"DD\"\r\n },\r\n \"graphs\": [\r\n {\r\n \"title\": \"Рейтинг\",\r\n \"valueField\": \"value\",\r\n \"lineColor\": \"#8ac858\",\r\n \"negativeLineColor\": \"#a94442\",\r\n \"fillAlphas\": 0.4,\r\n \"type\": \"smoothedLine\"\r\n }\r\n ],\r\n \"valueAxes\": [\r\n {\r\n \"title\": \"Авторский рейтинг\"\r\n }\r\n ],\r\n \"legend\": {\r\n \"useGraphSettings\": true\r\n },\r\n \"dataProvider\": result.data,\r\n chartCursor: {\r\n cursorAlpha: 0.1,\r\n cursorColor: \"#000000\",\r\n fullWidth: true,\r\n zoomable: false\r\n },\r\n dataDateFormat: \"DD.MM.YYYY\"\r\n });\r\n _this.isLoading(false);\r\n });\r\n };\r\n ViewModel.prototype.toDateFormat = function (date) {\r\n return date.toISOString();\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=authorRatingReport.js.map","(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var BaseViewModel = (function () {\r\n function BaseViewModel(options) {\r\n this.successMessage = ko.observable();\r\n this.errorMessages = ko.observableArray();\r\n this.options = options;\r\n if (options) {\r\n if (options.successMessage) {\r\n toastr.success(options.successMessage);\r\n }\r\n if (options.errorMessage) {\r\n toastr.error(options.errorMessage);\r\n }\r\n }\r\n }\r\n BaseViewModel.prototype.fullReloadPage = function () {\r\n window.location.reload(true);\r\n };\r\n BaseViewModel.prototype.reloadPage = function (fragment) {\r\n if (fragment) {\r\n $.pjax.reload(fragment, { fragment: fragment });\r\n }\r\n else {\r\n $.pjax.reload(\"#pjax-container\");\r\n }\r\n };\r\n BaseViewModel.prototype.redirectToPage = function (url, container) {\r\n if (container === void 0) { container = \"#pjax-container\"; }\r\n $.pjax({ url: url, container: container });\r\n };\r\n BaseViewModel.prototype.forceRedirectToPage = function (url) {\r\n window.location = url;\r\n };\r\n BaseViewModel.prototype.showModal = function (options) {\r\n var component = window[\"AppComponents\"].ModalDialog;\r\n this.modal = component;\r\n this.modal.show(options);\r\n };\r\n return BaseViewModel;\r\n }());\r\n exports.BaseViewModel = BaseViewModel;\r\n});\r\n//# sourceMappingURL=baseViewModel.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"knockout.validation\", \"./baseViewModel\", \"../../utils/ajaxUtils\", \"toastr\", \"../../utils/windowUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validation = require(\"knockout.validation\");\r\n var baseViewModel_1 = require(\"./baseViewModel\");\r\n var ajaxUtils_1 = require(\"../../utils/ajaxUtils\");\r\n var toastr = require(\"toastr\");\r\n var windowUtils_1 = require(\"../../utils/windowUtils\");\r\n validation.init({\r\n insertMessages: true,\r\n decorateInputElement: true,\r\n decorateElement: true,\r\n messagesOnModified: false,\r\n errorElementClass: \"has-error\",\r\n errorMessageClass: \"help-inline error\"\r\n }, true);\r\n validation.localize({\r\n required: \"Необходимо заполнить это поле.\",\r\n min: \"Значение должно быть больше или равно {0}.\",\r\n max: \"Значение должно быть меньше или равно {0}.\",\r\n minLength: \"Длина поля должна быть не меньше {0} символов.\",\r\n maxLength: \"Длина поля должна быть не больше {0} символов.\",\r\n pattern: \"Пожалуйста проверьте это поле.\",\r\n step: \"Значение поле должно изменяться с шагом {0}\",\r\n email: \"Введите в поле правильный адрес email\",\r\n date: \"Пожалуйста введите правильную дату\",\r\n dateISO: \"Пожалуйста введите правильную дату в формате ISO\",\r\n number: \"Поле должно содержать число\",\r\n digit: \"Поле должно содержать цифры\",\r\n phoneUS: \"Поле должно содержать правильный номер телефона\",\r\n equal: \"Значения должны быть равны\",\r\n notEqual: \"Пожалуйста выберите другое значение.\",\r\n unique: \"Значение должно быть уникальным.\"\r\n });\r\n var ValidatedViewModel = (function (_super) {\r\n __extends(ValidatedViewModel, _super);\r\n function ValidatedViewModel(options) {\r\n _super.call(this, options);\r\n this.processing = ko.observable(false);\r\n }\r\n ValidatedViewModel.prototype.initValidation = function () {\r\n this.validation = ko.validatedObservable(this);\r\n };\r\n ValidatedViewModel.prototype.submit = function (formElement, extendedData) {\r\n var _this = this;\r\n if (this.validation !== undefined && !this.validation.isValid()) {\r\n this.validation.errors.showAllMessages();\r\n return;\r\n }\r\n ;\r\n if (this.processing())\r\n return;\r\n this.beforeSubmit(formElement, extendedData, function () {\r\n return ajaxUtils_1.AjaxUtils.submit(formElement, extendedData)\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n _this.errorMessages(result.messages);\r\n if (result.data && result.data.stackTrace !== undefined) {\r\n console.error(result.data.stackTrace);\r\n }\r\n _this.onSubmitFail(result, formElement);\r\n }\r\n else {\r\n if (result.messages && result.messages.length > 0) {\r\n toastr.success(result.messages[0]);\r\n }\r\n windowUtils_1.default.setDirty(false);\r\n _this.onSubmitSucess(result, formElement);\r\n }\r\n })\r\n .fail(function () {\r\n toastr.error(\"Произошла ошибка. Пожалуйста, повторите операцию еще раз или сообщите об этом в службу поддержки.\");\r\n })\r\n .always(function () {\r\n setTimeout(function () {\r\n _this.processing(false);\r\n }, 0);\r\n });\r\n });\r\n };\r\n ValidatedViewModel.prototype.beforeSubmit = function (formElement, extendedData, callback) {\r\n this.processing(true);\r\n this.errorMessages([]);\r\n callback();\r\n };\r\n ValidatedViewModel.prototype.onSubmitSucess = function (result, formElement) {\r\n // override this\r\n };\r\n ValidatedViewModel.prototype.onSubmitFail = function (result, formElement) {\r\n // override this\r\n };\r\n return ValidatedViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ValidatedViewModel;\r\n});\r\n//# sourceMappingURL=validatedViewModel.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"js.cookie\", \"./base/baseViewModel\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var Cookies = require(\"js.cookie\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.moreFilters = ko.observable(this.options.showMoreFilters);\r\n this.isLoading = ko.observable(false);\r\n this.genres = ko.observableArray();\r\n this.exceptGenreIds = ko.observableArray();\r\n this.form = ko.observable();\r\n this.state = ko.observable();\r\n this.series = ko.observable();\r\n this.download = ko.observable();\r\n this.lastUpdate = ko.observable();\r\n this.published = ko.observable();\r\n this.format = ko.observable();\r\n this.duration = ko.observable();\r\n this.length = ko.observable();\r\n this.viewMode = ko.observable();\r\n this.hideFinished = ko.observable(false);\r\n this.favoriteFilter = ko.observable();\r\n this.seriesOrder = ko.observable();\r\n this.rp = ko.observable();\r\n this.toggleMoreFilters = function () {\r\n _this.moreFilters(!_this.moreFilters());\r\n if (_this.moreFilters()) {\r\n $(\"#moreFilters\").addClass(\"in\");\r\n }\r\n else {\r\n $(\"#moreFilters\").removeClass(\"in\");\r\n }\r\n };\r\n this.switchView = function (mode) {\r\n _this.viewMode(mode);\r\n };\r\n var initialized = false;\r\n this.viewMode(options.viewMode);\r\n var defaultViewMode = Cookies.get(\"at.workView\") || \"list\";\r\n ko.computed(function () {\r\n var genres = _this.genres(), exceptGenreIds = _this.exceptGenreIds(), form = _this.form(), state = _this.state(), series = _this.series(), seriesOrder = _this.seriesOrder(), favoriteFilter = _this.favoriteFilter(), dnl = _this.download(), upd = _this.lastUpdate(), pub = _this.published(), format = _this.format(), duration = _this.duration(), length = _this.length(), view = _this.viewMode(), fnd = _this.hideFinished(), rp = _this.rp();\r\n if (!initialized) {\r\n return;\r\n }\r\n if (series === \"out\" && seriesOrder != \"any\") {\r\n _this.seriesOrder(\"any\");\r\n return;\r\n }\r\n var params = {};\r\n if (view !== defaultViewMode) {\r\n params.view = view;\r\n defaultViewMode = view;\r\n // Сохраняем страницу только при смене вида отображения книг\r\n if (options.page && options.page > 1) {\r\n params.page = options.page;\r\n }\r\n }\r\n else {\r\n options.page = 1;\r\n }\r\n if (options.sorting !== \"random\") {\r\n params.sorting = options.sorting;\r\n }\r\n if (form !== \"any\") {\r\n params.form = form;\r\n }\r\n if (state !== \"any\") {\r\n params.state = state;\r\n }\r\n if (series !== \"any\") {\r\n params.series = series;\r\n }\r\n if (dnl !== \"any\") {\r\n params.dnl = dnl;\r\n }\r\n if (upd !== \"-1\") {\r\n params.upd = upd;\r\n }\r\n if (pub !== \"-1\") {\r\n params.pub = pub;\r\n }\r\n if (format !== \"any\") {\r\n params.format = format;\r\n }\r\n if (duration !== \"any\") {\r\n params.duration = duration;\r\n }\r\n if (length !== \"any\") {\r\n params.length = length;\r\n }\r\n if (favoriteFilter !== \"any\") {\r\n params.favoriteFilter = favoriteFilter;\r\n }\r\n if (seriesOrder !== \"any\") {\r\n params.seriesOrder = seriesOrder;\r\n }\r\n if (rp != \"today\") {\r\n params.rp = rp;\r\n }\r\n if (exceptGenreIds) {\r\n params.eg = exceptGenreIds.join(\"-\");\r\n }\r\n else {\r\n params.eg = \"\";\r\n }\r\n params.fnd = fnd;\r\n var genreCodes;\r\n if (genres && genres.length > 0) {\r\n genreCodes = genres.join(\"&\");\r\n }\r\n else {\r\n genreCodes = \"all\";\r\n }\r\n var url = app.rootUrl + (\"promo/black-friday/\" + genreCodes + \"?\" + $.param(params));\r\n $.pjax({ url: url, container: \"#search-results\", fragment: \"#search-results\" });\r\n });\r\n setTimeout(function () {\r\n initialized = true;\r\n }, 200);\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n dateTimeUtils_1.default.displayTime();\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=blackFriday.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./collectionView\", \"../utils/richContentUtils\", \"../utils/commentUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var collectionView_1 = require(\"./collectionView\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var commentUtils_1 = require(\"../utils/commentUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.commentSubscription = ko.observable();\r\n commentUtils_1.default.init(options.lastViewTime);\r\n richContentUtils_1.default.processHtml(\".comments\");\r\n }\r\n return ViewModel;\r\n }(collectionView_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=collectionComments.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\", \"../utils/imageUtils\", \"../components/modalDialog\", \"../utils/windowUtils\", \"../utils/stringUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var imageUtils_1 = require(\"../utils/imageUtils\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var windowUtils_1 = require(\"../utils/windowUtils\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.titleMaxLength = 100;\r\n this.descriptionMaxLength = 2000;\r\n this.uploadErrorMessages = ko.observableArray();\r\n this.title = ko.observable().extend({\r\n required: true,\r\n maxLength: this.titleMaxLength\r\n });\r\n this.titleHint = ko.pureComputed(function () {\r\n var title = _this.title() || \"\";\r\n return title.length + \"/\" + _this.titleMaxLength;\r\n });\r\n this.description = ko.observable().extend({\r\n required: {\r\n params: true,\r\n message: \"Необходимо заполнить это поле.\"\r\n }\r\n });\r\n this.descriptionHint = ko.pureComputed(function () {\r\n var description = _this.description() || \"\";\r\n return description.length + \"/\" + _this.descriptionMaxLength;\r\n });\r\n this.tags = ko.observableArray(this.options.tags || []).extend({\r\n maxLength: { params: 9, message: \"Нужно указать не более 9-ти тэгов\" }\r\n });\r\n this.tagsSelect2Settings = {\r\n placeholder: 'До 9 тэгов через запятую...',\r\n tags: true, ajax: {\r\n url: window[\"app\"].rootUrl + \"collection/searchTags\",\r\n dataType: \"json\",\r\n tokenSeparators: [\",\"],\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n q: params.term,\r\n page: params.page\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.title,\r\n text: x.title,\r\n count: x.count\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n },\r\n tokenSeparators: [','],\r\n maximumSelectionLength: 9,\r\n language: {\r\n maximumSelected: function () { return 'Вы можете выбрать не более 9 тэгов.'; }\r\n },\r\n escapeMarkup: function (markup) { return markup; },\r\n templateResult: function (item) {\r\n if (item.loading) {\r\n return item.text;\r\n }\r\n item.count = item.count || 0;\r\n var markup = \"
\\\r\n
\" + item.text + \"
\\\r\n
\" + item.count + \"
\\\r\n
\";\r\n return markup;\r\n }\r\n };\r\n this.privacyCommentsId = ko.observable();\r\n this.privacyCommentsOptions = [\r\n { id: 1, title: \"Все\" },\r\n { id: 2, title: \"Только друзья\" },\r\n { id: 0, title: \"Никто\" }\r\n ];\r\n this.coverUrl = ko.observable();\r\n this.id = options.id;\r\n this.privacyCommentsId(options.privacyCommentsId);\r\n this.titleInit = options.titleInit;\r\n this.descriptionInit = options.descriptionInit;\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n ko.computed(function () {\r\n var title = _this.title() || \"\";\r\n var description = _this.description() || \"\";\r\n if (stringUtils_1.default.compareWithoutLineBreaks(description, _this.descriptionInit)\r\n || stringUtils_1.default.compareWithoutLineBreaks(title, _this.titleInit)) {\r\n windowUtils_1.default.setDirty();\r\n }\r\n else {\r\n windowUtils_1.default.setDirty(false);\r\n }\r\n });\r\n }\r\n ViewModel.prototype.selectImage = function () {\r\n var $input = this.modal.getModal().find(\"input[type='file']\");\r\n $input.click();\r\n };\r\n ViewModel.prototype.showUploadCoverModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Загрузка изображения\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"uploadCover\",\r\n onShow: function ($modal) {\r\n _this.uploadErrorMessages([]);\r\n var $dropZone = $modal.find((\".drop-zone\"));\r\n imageUtils_1.default.createDropZone($dropZone, function (files) {\r\n _this.processFiles(files);\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.removeCover = function () {\r\n URL.revokeObjectURL(this.coverUrl());\r\n this.coverUrl(null);\r\n };\r\n ViewModel.prototype.onSelectImage = function (data, event) {\r\n this.uploadErrorMessages([]);\r\n var $input = $(event.target), files = event.target.files;\r\n this.processFiles(files);\r\n $input.val(\"\");\r\n };\r\n ViewModel.prototype.processFiles = function (files) {\r\n var _this = this;\r\n if (files && files.length) {\r\n var file = files[0];\r\n if (file.size > 500 * 1024) {\r\n this.uploadErrorMessages([\"Слишком большой размер файла. Пожалуйста, выберите файл размером не более 500 кб.\"]);\r\n return;\r\n }\r\n if (!/^image\\/\\w+$/.test(file.type)) {\r\n this.uploadErrorMessages([\"Данный формат файла не поддерживается. Пожалуйста, выберите изображение.\"]);\r\n return;\r\n }\r\n var blobUrl = URL.createObjectURL(file);\r\n imageUtils_1.default.getImageSize(blobUrl).done(function (imageSize) {\r\n if (imageSize.width !== 1140 || imageSize.height !== 380) {\r\n _this.uploadErrorMessages([\"Неправильный размер изображения.\"]);\r\n return;\r\n }\r\n _this.coverUrl(blobUrl);\r\n _this.coverUrlFile = file;\r\n _this.modal.hide();\r\n });\r\n }\r\n };\r\n ViewModel.prototype.beforeSubmit = function (formElement, extendedData, callback) {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.processing(true);\r\n if (this.coverUrlFile) {\r\n var formData = new FormData();\r\n formData.append(\"file\", this.coverUrlFile);\r\n ajaxUtils_1.AjaxUtils.uploadFile(\"file/uploadCollectionCoverImage\", formData)\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n _this.errorMessages(result.messages);\r\n }\r\n else {\r\n _this.coverUrl(result.data.url);\r\n setTimeout(callback, 50);\r\n }\r\n }).fail(function () {\r\n _this.errorMessages([\"Произошла ошибка во время загрузки изображения. Попробуйте еще раз через некоторое время.\"]);\r\n _this.processing(false);\r\n });\r\n }\r\n else {\r\n callback();\r\n }\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n if (result.data && result.data.redirectUrl) {\r\n this.redirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n this.reloadPage();\r\n }\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=collectionEdit.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"../utils/ajaxUtils\", \"../utils/socialUtils\", \"./commentsView\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var socialUtils_1 = require(\"../utils/socialUtils\");\r\n var commentsView_1 = require(\"./commentsView\");\r\n var Clipboard = require(\"clipboard\");\r\n var CollectionViewModelBase = (function (_super) {\r\n __extends(CollectionViewModelBase, _super);\r\n function CollectionViewModelBase(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.collectionId = this.options.collectionId;\r\n this.isATRecommended = this.options.isATRecommended;\r\n this.processing = ko.observable(false);\r\n this.isLoading = ko.observable(false);\r\n this.exceptMyLibrary = ko.observable(this.options.eml);\r\n var initialized = false;\r\n socialUtils_1.default.init();\r\n var clipboard = new Clipboard(\"button[data-clipboard]\", {\r\n text: function (el) { return $(el).attr(\"data-clipboard\"); }\r\n });\r\n clipboard.off(\"sucess\");\r\n clipboard.on(\"success\", function (e) {\r\n var $el = $(e.trigger);\r\n $el.attr(\"data-hint-prev\", $el.attr(\"data-hint\"))\r\n .attr(\"data-hint\", \"Ссылка скопирована\")\r\n .addClass(\"hint-always\");\r\n setTimeout(function () {\r\n $el.attr(\"data-hint\", $el.attr(\"data-hint-prev\")).removeClass(\"hint-always\");\r\n }, 3000);\r\n });\r\n clipboard.on(\"error\", function (e) {\r\n var $el = $(e.trigger);\r\n var url = location.origin + $el.attr(\"data-clipboard\");\r\n prompt(\"Чтобы скопировать ссылку на комментарий, нажмите Ctrl+C и потом Enter.\", url);\r\n });\r\n $(\".fox-welcome-1\").on(\"click\", function () {\r\n $(\".fox-welcome-1\").addClass(\"out\");\r\n $(\".fox-welcome-2\").addClass(\"in\");\r\n $(\".fox-welcome-wrapper\").css({ \"padding-top\": 270 });\r\n $(\"#foxAuth\").fadeIn();\r\n });\r\n setTimeout(function () {\r\n $(\".fox-welcome-wrapper\").fadeIn();\r\n }, 200);\r\n this.loadComments(null, null, false);\r\n ko.computed(function () {\r\n var exceptMyLibrary = _this.exceptMyLibrary(), sorting = options.sorting, rp = options.rp;\r\n if (!initialized) {\r\n return;\r\n }\r\n var params = {};\r\n if (sorting !== \"default\") {\r\n params.sorting = sorting;\r\n }\r\n if (rp != \"today\") {\r\n params.rp = rp;\r\n }\r\n if (exceptMyLibrary) {\r\n params.eml = exceptMyLibrary;\r\n }\r\n var url = app.rootUrl + (\"collection/\" + _this.collectionId + \"?\" + $.param(params));\r\n $.pjax({ url: url, container: \"#search-results\", fragment: \"#search-results\" });\r\n });\r\n setTimeout(function () {\r\n initialized = true;\r\n }, 200);\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n });\r\n }\r\n CollectionViewModelBase.prototype.updateATRecState = function () {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"collection/updateATRecomendation\", {\r\n id: this.collectionId,\r\n isATRecommended: !this.isATRecommended\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n });\r\n };\r\n return CollectionViewModelBase;\r\n }(commentsView_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = CollectionViewModelBase;\r\n});\r\n//# sourceMappingURL=collectionView.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"lodash\", \"toastr\", \"../utils/ajaxUtils\", \"./base/baseViewModel\", \"../utils/stringUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n var UserVote = (function () {\r\n function UserVote(options, groupCount, group, viewModel) {\r\n var _this = this;\r\n this.coAuthorUrl = null;\r\n this.vote = ko.observable();\r\n this.voteOptions = ko.observableArray();\r\n this.workId = options.workId;\r\n this.title = options.title;\r\n this.authorId = options.authorId;\r\n this.authorFIO = options.authorFIO;\r\n this.authorUserName = options.authorUserName;\r\n this.coAuthorId = options.coAuthorId;\r\n this.coAuthorFIO = options.coAuthorFIO;\r\n this.coAuthorUserName = options.coAuthorUserName;\r\n this.coAuthorConfirmed = options.coAuthorConfirmed;\r\n var rootUrl = window[\"app\"].rootUrl;\r\n this.workUrl = rootUrl + \"work/\" + this.workId;\r\n this.readUrl = rootUrl + \"reader/\" + this.workId;\r\n this.authorUrl = rootUrl + \"u/\" + this.authorUserName;\r\n if (this.coAuthorId && this.coAuthorConfirmed) {\r\n this.coAuthorUrl = rootUrl + \"u/\" + this.coAuthorUserName;\r\n }\r\n this.vote(options.vote);\r\n this.groupCount = groupCount;\r\n this.group = group;\r\n this.viewModel = viewModel;\r\n setTimeout(function () {\r\n _this.vote.subscribe(function (newValue) {\r\n ajaxUtils_1.AjaxUtils.post(\"contest/\" + viewModel.contestId + \"/selfJuryVote\", {\r\n contestId: viewModel.contestId,\r\n groupId: _this.group.id,\r\n workId: _this.workId,\r\n vote: newValue\r\n })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n UserVote.prototype.init = function () {\r\n var _this = this;\r\n if (this.group.allMarksUnique) {\r\n _.each(this.group.works, function (w) {\r\n if (w === _this)\r\n return;\r\n w.vote.subscribe(function () {\r\n _this.recalculateOptions();\r\n });\r\n });\r\n this.recalculateOptions();\r\n }\r\n else {\r\n this.voteOptions(this.group.availableMarks);\r\n }\r\n };\r\n UserVote.prototype.recalculateOptions = function () {\r\n var _this = this;\r\n var selectedOptions = _.map(this.group.works, function (w) {\r\n return w.vote();\r\n });\r\n var result = _.filter(this.group.availableMarks, function (v) {\r\n if (v === _this.vote())\r\n return true;\r\n return _.indexOf(selectedOptions, v) === -1;\r\n });\r\n this.voteOptions(result);\r\n };\r\n return UserVote;\r\n }());\r\n var Group = (function () {\r\n function Group(options, viewModel) {\r\n var _this = this;\r\n this.works = [];\r\n this.worksToJuryCount = ko.observable();\r\n this.worksToJuryText = ko.observable();\r\n this.id = options.id;\r\n this.title = options.title;\r\n this.comment = options.comment;\r\n this.number = options.number;\r\n this.votingIsClosed = options.votingIsClosed;\r\n this.marks = options.marks;\r\n this.availableMarks = options.availableMarks;\r\n this.allMarksUnique = options.allMarksUnique;\r\n this.works = _.map(options.works, function (x) { return new UserVote(x, options.works.length, _this, viewModel); });\r\n this.viewModel = viewModel;\r\n _.each(this.works, function (w) {\r\n w.init();\r\n w.vote.subscribe(function () {\r\n _this.updateWorksToJuryText();\r\n });\r\n });\r\n this.updateWorksToJuryText();\r\n }\r\n Group.prototype.updateWorksToJuryText = function () {\r\n var selectedOptions = _.filter(this.works, function (w) {\r\n return w.vote() !== null && w.vote() !== undefined;\r\n });\r\n var count = this.works.length - selectedOptions.length;\r\n this.worksToJuryCount(count);\r\n this.worksToJuryText(count + \" \" + stringUtils_1.default.pluralize(count, [\"рассказ\", \"рассказа\", \"рассказов\"]));\r\n };\r\n return Group;\r\n }());\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.groups = [];\r\n this.contestId = options.contestId;\r\n this.groups = _.map(options.groups, function (x) { return new Group(x, _this); });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=contestAssessment.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./base/validatedViewModel\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.title = ko.observable().extend({\r\n required: true\r\n });\r\n this.marks = ko.observable().extend({\r\n required: true,\r\n pattern: {\r\n message: \"Введите диапазон оценок (1-10) или перечислите их через запятую (1,2,4,6)\",\r\n params: \"^([0-9]+(-[0-9]+)?)(,([0-9]+(-[0-9]+)?))*$\"\r\n }\r\n });\r\n this.marksAlgoritm = ko.observable();\r\n this.marksAlgoritmOptions = [\r\n { id: 1, title: \"Среднее арифметическое\" },\r\n { id: 2, title: \"Сумма\" }\r\n ];\r\n this.comment = ko.observable();\r\n this.id = options.id;\r\n this.marksAlgoritm = options.marksAlgoritm;\r\n }\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n if (result.isSuccessful && result.data && result.data.redirectUrl) {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n this.reloadPage();\r\n }\r\n };\r\n ViewModel.prototype.showDeleteModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление группы\",\r\n message: \"Вы точно хотите удалить эту группу?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"contest/group/delete\", {\r\n id: _this.id,\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.forceRedirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n _this.modal.hide();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=contestGroupEdit.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"./base/baseViewModel\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.contestId = options.contestId;\r\n }\r\n ViewModel.prototype.approve = function () {\r\n this.updateComplaints(\"approved\");\r\n };\r\n ViewModel.prototype.reject = function () {\r\n this.updateComplaints(\"rejected\");\r\n };\r\n ViewModel.prototype.updateComplaints = function (newStatus) {\r\n var grid = $(\"#grid\").data(\"kendoGrid\");\r\n var rows = grid.select();\r\n var requestData = {\r\n itemIds: [],\r\n status: newStatus\r\n };\r\n rows.each(function (index, row) {\r\n var selectedItem = grid.dataItem(row);\r\n requestData.itemIds.push(selectedItem.Id);\r\n });\r\n return ajaxUtils_1.AjaxUtils.post(\"contest/\" + this.contestId + \"/updateStatus\", requestData)\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n grid.dataSource.read();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=contestModerate.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n }\r\n ViewModel.prototype.beforeSubmit = function (formElement, extendedData, callback) {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.showModal({\r\n title: \"\\u041F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\",\r\n type: 1,\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0441\\u043D\\u044F\\u0442\\u044C \\u0438\\u043B\\u043B\\u044E\\u0441\\u0442\\u0440\\u0430\\u0446\\u0438\\u044E \\u0441 \\u043A\\u043E\\u043D\\u043A\\u0443\\u0440\\u0441\\u0430?\",\r\n deleteBtnText: \"Снять\",\r\n onSubmit: function () {\r\n _this.processing(true);\r\n _this.modal.hide();\r\n return callback();\r\n }\r\n });\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.reloadPage();\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=contestMyArts.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n }\r\n ViewModel.prototype.beforeSubmit = function (formElement, extendedData, callback) {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.showModal({\r\n title: \"\\u041F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\",\r\n type: 1,\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0441\\u043D\\u044F\\u0442\\u044C \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0441 \\u043A\\u043E\\u043D\\u043A\\u0443\\u0440\\u0441\\u0430?\",\r\n deleteBtnText: \"Снять\",\r\n onSubmit: function () {\r\n _this.processing(true);\r\n _this.modal.hide();\r\n return callback();\r\n }\r\n });\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n if (result.data.redirectUrl) {\r\n this.redirectToPage(result.data.redirectUrl);\r\n }\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=contestMyWork.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"toastr\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var toastr = require(\"toastr\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.handleSaveChanges = function (e) {\r\n setTimeout(function () {\r\n $(\"#selfJuryGroups\").data(\"kendoGrid\").dataSource.read();\r\n }, 200);\r\n };\r\n this.handleGridError = function (e) {\r\n if (e.errors) {\r\n var message = \"Ошибки:\\n\";\r\n $.each(e.errors, function (key, value) {\r\n if ('errors' in value) {\r\n $.each(value.errors, function () {\r\n message += this + \"
\";\r\n });\r\n }\r\n });\r\n toastr.error(message);\r\n }\r\n };\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=contestSelfJuryPreparation.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"toastr\", \"./base/validatedViewModel\", \"../utils/ajaxUtils\", \"../components/modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var toastr = require(\"toastr\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.title = ko.observable().extend({\r\n required: true\r\n });\r\n this.sponsor = ko.observable();\r\n this.sponsorOptions = [\r\n { id: 1, title: \"Author.Today\" },\r\n { id: 2, title: \"Сообщество\" }\r\n ];\r\n this.contestType = ko.observable();\r\n this.contestTypeOptions = [\r\n { id: 1, title: \"Конкурс рассказов с самосудом\" },\r\n { id: 2, title: \"Конкурс рассказов анонимный\" },\r\n { id: 3, title: \"Конкурс романов и рецензий\" },\r\n { id: 4, title: \"Конкурс иллюстраций\" },\r\n { id: 5, title: \"Нестардартный конкурс\" },\r\n { id: 5, title: \"Нестардартный конкурс\" }\r\n ];\r\n this.stageId = ko.observable();\r\n this.awardId = ko.observable();\r\n this.selectedAward = ko.pureComputed(function () {\r\n var id = _this.awardId();\r\n return _.find(_this.allAwards, function (x) {\r\n return x.id === id;\r\n });\r\n });\r\n this.subTitle = ko.observable();\r\n this.previewText = ko.observable().extend({\r\n required: true\r\n });\r\n this.bottomTitle = ko.observable();\r\n this.showClock = ko.observable();\r\n this.nextStageDate = ko.observable().extend({\r\n required: {\r\n message: \"Нужно указать время начала следующего этапа\",\r\n onlyIf: function () {\r\n return _this.showClock();\r\n }\r\n }\r\n });\r\n this.stageOptions = [\r\n { id: 0, title: \"Черновик (не виден в общем списке)\" },\r\n { id: 1, title: \"Ожидание старта\" },\r\n { id: 2, title: \"Прием работ\" },\r\n { id: 3, title: \"Подготовка к самосуду\" },\r\n { id: 4, title: \"Самосуд\" },\r\n { id: 5, title: \"Подготовка к работе жюри\" },\r\n { id: 6, title: \"Работа жюри\" },\r\n { id: 7, title: \"Конкурс окончен\" }\r\n ];\r\n this.customApplyFormText = ko.observable();\r\n this.description = ko.observable();\r\n this.results = ko.observable();\r\n this.selfJuryGroupCount = ko.observable();\r\n this.id = options.id;\r\n this.sponsor(options.sponsor);\r\n this.contestType(options.contestType);\r\n this.stageId(options.stageId);\r\n this.allAwards = options.allAwards;\r\n this.awardId(options.awardId);\r\n setTimeout(function () {\r\n _this.initValidation();\r\n _this.stageId.subscribe(function (stageId) {\r\n switch (stageId) {\r\n case 1:\r\n _this.subTitle(\"До начала конкурса осталось\");\r\n break;\r\n case 2:\r\n _this.subTitle(\"Идет прием работ. Осталось:\");\r\n break;\r\n case 3:\r\n case 5:\r\n _this.subTitle(\"Идет подготовка к следующему этапу...\\r\\nЭто может занять некоторое время.\\r\\nСпасибо за ожидание.\");\r\n _this.showClock(false);\r\n break;\r\n case 4:\r\n _this.subTitle(\"Начался этап «Самосуд».\\r\\nДо завершения осталось:\");\r\n break;\r\n case 6:\r\n _this.subTitle(\"Работает жюри.\\r\\nДо завершения конкурса осталось:\");\r\n break;\r\n case 7:\r\n _this.subTitle(\"Конкурс завершен.\\r\\nВ конкурсе приняло участие N рассказов\");\r\n _this.showClock(false);\r\n break;\r\n }\r\n });\r\n }, 0);\r\n this.errorMessages.subscribe(function (newValue) {\r\n if (newValue && newValue.length) {\r\n $(\"html, body\").stop().animate({ scrollTop: 0 }, \"fast\");\r\n }\r\n });\r\n }\r\n ViewModel.prototype.confirmMassAward = function () {\r\n var _this = this;\r\n var award = this.selectedAward();\r\n if (!award) {\r\n alert(\"Пожалуйста, выберите награду.\");\r\n return;\r\n }\r\n this.showModal({\r\n title: \"Массовое вручение наград\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0432\\u0441\\u0435\\u043C \\u0432\\u044B\\u0434\\u0430\\u0442\\u044C \\u043D\\u0430\\u0433\\u0440\\u0430\\u0434\\u0443 \\\"\" + award.title + \"\\\" ?\",\r\n type: modalDialog_1.ModalType.Confirm,\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"contest/massAward\", {\r\n id: _this.id,\r\n awardId: award.id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"Награда была успешно выдана\");\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n if (result.isSuccessful && result.data && result.data.redirectUrl) {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n this.reloadPage();\r\n }\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=contestSettings.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"moment\", \"numeral\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n var numeral = require(\"numeral\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.workId = ko.observable();\r\n this.value = ko.observable();\r\n this.price = ko.pureComputed(function () {\r\n var value = _this.value();\r\n if (!value)\r\n return \"\";\r\n var workId = parseInt(_this.workId());\r\n var selectedWork = _.find(_this.works, function (w) { return w.id === workId; });\r\n return numeral(selectedWork.price).format(\"0,0.00 $\");\r\n });\r\n this.priceWithDiscount = ko.pureComputed(function () {\r\n var value = _this.value();\r\n if (!value)\r\n return \"\";\r\n var workId = parseInt(_this.workId());\r\n var selectedWork = _.find(_this.works, function (w) { return w.id === workId; });\r\n return numeral(selectedWork.price - selectedWork.price * value / 100).format(\"0,0.00 $\");\r\n });\r\n this.startDate = ko.observable();\r\n this.dayCount = ko.observable();\r\n this.endDate = ko.pureComputed(function () {\r\n var startDate = _this.startDate(), dayCount = _this.dayCount();\r\n return moment(startDate).add(dayCount, \"d\");\r\n });\r\n this.repeatable = ko.observable();\r\n this.repeatableOptions = [\r\n { id: 0, title: \"Нет\" },\r\n { id: 1, title: \"Каждые 2 недели\" },\r\n { id: 2, title: \"Каждый месяц\" }\r\n ];\r\n this.id = options.id;\r\n this.auId = options.auId;\r\n this.works = options.works;\r\n this.workId(options.workId);\r\n this.repeatable(options.repeatable);\r\n this.startDate(options.startDate);\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 100);\r\n this.errorMessages.subscribe(function (newValue) {\r\n if (newValue && newValue.length) {\r\n $(\"html, body\").stop().animate({ scrollTop: 0 }, \"fast\");\r\n }\r\n });\r\n }\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n };\r\n ViewModel.prototype.showDeleteModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление скидки\",\r\n message: \"Вы точно хотите удалить эту скидку?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"discount/delete\", {\r\n id: _this.id,\r\n auId: _this.auId\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.forceRedirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n _this.modal.hide();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=discountEdit.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"../utils/ajaxUtils\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.selectedItems = ko.observableArray();\r\n this.processing = ko.observable(false);\r\n this.handleCheckboxes();\r\n $(document).on(\"pjax:complete\", function () { return _this.handleCheckboxes(); });\r\n }\r\n ViewModel.prototype.markAsRead = function () {\r\n var _this = this;\r\n var ids = this.selectedItems();\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"comment/markAsRead\", { ids: ids })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.reloadPage(\".panel-body\");\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n ViewModel.prototype.unsubscribe = function () {\r\n var _this = this;\r\n var ids = this.selectedItems();\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"comment/unsubscribeMany\", { ids: ids })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.reloadPage(\".panel-body\");\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n ViewModel.prototype.handleCheckboxes = function () {\r\n var _this = this;\r\n $(\".table th .checkbox input\").on(\"click\", function (event) {\r\n var isChecked = $(\".table th .checkbox input\").prop(\"checked\");\r\n $(\".table td .checkbox input\").each(function (i, el) {\r\n $(el).prop(\"checked\", isChecked);\r\n $(el).trigger(\"change\");\r\n });\r\n });\r\n $(\".table td .checkbox input\").on(\"change\", function (e) {\r\n var id = $(e.target).attr(\"id\");\r\n if ($(e.target).prop(\"checked\")) {\r\n _this.selectedItems.push(id);\r\n }\r\n else {\r\n _this.selectedItems.remove(id);\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=feedUnreadComments.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var Clipboard = require(\"clipboard\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.clipboard = null;\r\n if (this.clipboard) {\r\n this.clipboard.destroy();\r\n }\r\n this.clipboard = new Clipboard(\"#promocode\", {\r\n text: function (el) { return $(el).attr(\"data-clipboard\"); }\r\n });\r\n this.clipboard.off(\"sucess\");\r\n this.clipboard.on(\"success\", function (e) {\r\n var $el = $(e.trigger);\r\n $el.attr(\"data-hint-prev\", $el.attr(\"data-hint\"))\r\n .attr(\"data-hint\", \"Промокод скопирован\")\r\n .addClass(\"hint-always\");\r\n setTimeout(function () {\r\n $el.attr(\"data-hint\", $el.attr(\"data-hint-prev\")).removeClass(\"hint-always\");\r\n }, 3000);\r\n });\r\n this.clipboard.on(\"error\", function (e) {\r\n var $el = $(e.trigger);\r\n var url = location.origin + $el.attr(\"data-clipboard\");\r\n prompt(\"Чтобы скопировать промокод, нажмите Ctrl+C и потом Enter.\", url);\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=forumIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"./base/baseViewModel\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.updateState = function (newState) {\r\n var grid = $(\"#grid\").data(\"kendoGrid\");\r\n var rows = grid.select();\r\n var requestData = {\r\n ids: [],\r\n state: newState\r\n };\r\n rows.each(function (index, row) {\r\n var selectedItem = grid.dataItem(row);\r\n requestData.ids.push(selectedItem.Id);\r\n });\r\n return ajaxUtils_1.AjaxUtils.post(\"forum/update-application-state\", requestData)\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n grid.dataSource.read();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n });\r\n };\r\n this.id = options.id;\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=forumModerate.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"numeral\", \"../../app/components/modalDialog\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var numeral = require(\"numeral\");\r\n var modalDialog_1 = require(\"../../app/components/modalDialog\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.numeral = numeral;\r\n this.selectedOrder = ko.observable();\r\n this.formatState = function (state) {\r\n switch (state) {\r\n case 1:\r\n case \"New\":\r\n return \" Ожидает оплаты\";\r\n case 2:\r\n case \"Paid\":\r\n return \" Оплачен \";\r\n case 3:\r\n case \"Failed\":\r\n return \" Ошибка \";\r\n case 4:\r\n case \"Blocked\":\r\n return \" Доступ заблокирован \";\r\n case 11:\r\n case \"Pending\":\r\n return \" Pending\";\r\n case \"Captured\":\r\n case 12:\r\n return \" Captured \";\r\n case 13:\r\n case \"Canceled\":\r\n return \" Отменён \";\r\n default:\r\n return \"Неизвестно\";\r\n }\r\n };\r\n $(\"#grid\").on(\"click\", \".btn-edit-order\", function (e) {\r\n if (_this.grid === undefined) {\r\n _this.grid = $(\"#grid\").data(\"kendoGrid\");\r\n }\r\n var dataItem = _this.grid.dataItem($(e.currentTarget).parents(\"tr\")[0]);\r\n _this.selectedOrder(dataItem);\r\n _this.showModal({\r\n title: \"Заказ #\" + dataItem.Id,\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"editOrderModal\",\r\n viewModel: _this,\r\n maxWidth: \"650px\",\r\n minWidth: \"650px\"\r\n });\r\n });\r\n }\r\n ViewModel.prototype.onSubmitSucess = function () {\r\n this.modal.hide();\r\n if (this.grid === undefined) {\r\n this.grid = $(\"#grid\").data(\"kendoGrid\");\r\n }\r\n this.grid.dataSource.read();\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=forumOrders.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./base/baseViewModel\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.processing = ko.observable(true);\r\n this.offerAccept = ko.observable(false);\r\n this.createOrder = function () {\r\n ajaxUtils_1.AjaxUtils.get(\"forum/create-ticket-order\", { applicationId: _this.options.applicationId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n toastr.error(result.messages[0]);\r\n return;\r\n }\r\n _this.forceRedirectToPage(result.data.paymentUrl);\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=forumTicket.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"../utils/localStorageUtils\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var localStorageUtils_1 = require(\"../utils/localStorageUtils\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.workPreferencesPreset = ko.observable(\"Default\");\r\n this.workPreferencesModalState = ko.observable(\"selectPreset\");\r\n this.ignoredGenreIds = ko.observableArray();\r\n this.hideDislike = ko.observable(false);\r\n this.hideFinished = ko.observable(false);\r\n this.initWorkPreferencesPreset = function () {\r\n _this.ignoredGenreIds.subscribe(function (values) {\r\n _this.ignoredGenreIds.subscribe(function (values) {\r\n _.forOwn(_this.genres, function (subGenres, genre) {\r\n if (values.indexOf(genre) !== -1 && _.intersection(values, subGenres).length > 0) {\r\n _this.ignoredGenreIds.removeAll(subGenres);\r\n }\r\n });\r\n });\r\n });\r\n };\r\n this.genres = {\r\n \"1\": [\"76\"],\r\n \"2\": [\"38\", \"71\", \"77\", \"64\", \"39\", \"41\", \"78\", \"74\", \"40\", \"44\", \"73\", \"43\", \"42\"],\r\n \"3\": [\"28\", \"29\", \"30\", \"31\", \"34\", \"33\", \"36\", \"32\", \"63\", \"35\", \"37\"],\r\n \"4\": [\"50\", \"52\", \"51\"],\r\n \"6\": [\"46\", \"45\", \"67\"],\r\n \"7\": [\"53\", \"57\", \"54\", \"55\", \"56\", \"68\"],\r\n \"8\": [\"70\"],\r\n \"19\": [\"61\", \"58\", \"14\", \"59\", \"62\", \"60\"],\r\n \"21\": [\"66\", \"48\", \"47\", \"72\"]\r\n };\r\n this.selectWorkPreferencesPreset = function () {\r\n var preset = _this.workPreferencesPreset();\r\n if (preset === \"Custom\") {\r\n _this.workPreferencesModalState(\"editCustomPreset\");\r\n setTimeout(function () {\r\n $(\".genre-item-btn\").on(\"click\", function (e) {\r\n var $btn = $(e.currentTarget);\r\n if ($btn.hasClass(\"active\")) {\r\n $btn.removeClass(\"active\");\r\n $btn.siblings(\".collapse\").removeClass(\"in\");\r\n }\r\n else {\r\n $btn.addClass(\"active\");\r\n $btn.siblings(\".collapse\").addClass(\"in\");\r\n }\r\n });\r\n }, 200);\r\n }\r\n };\r\n this.backToSelectPreset = function () {\r\n _this.workPreferencesModalState(\"selectPreset\");\r\n };\r\n this.saveWorkPreferences = function () {\r\n var preset = _this.workPreferencesPreset();\r\n if (preset === \"Custom\" && _this.ignoredGenreIds().length === 0) {\r\n _this.errorMessages.push(\"Выберите хотя бы один жанр или вернитесь назад.\");\r\n return;\r\n }\r\n _this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"account/workPreferences\", {\r\n preset: _this.workPreferencesPreset(),\r\n ignoredGenreIds: _this.ignoredGenreIds(),\r\n hideDislike: _this.hideDislike() !== false,\r\n hideFinished: _this.hideFinished() !== false\r\n })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n _this.errorMessages(result.messages);\r\n if (result.data && result.data.stackTrace !== undefined) {\r\n console.error(result.data.stackTrace);\r\n }\r\n return;\r\n }\r\n _this.workPreferencesModalState(\"saved\");\r\n setTimeout(function () {\r\n _this.fullReloadPage();\r\n }, 1500);\r\n })\r\n .always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n this.clearIgnoredGenres = function () {\r\n _this.ignoredGenreIds([]);\r\n };\r\n try {\r\n var recentlyViewedWorkIds = localStorageUtils_1.default.get(localStorageUtils_1.default.RecentlyViewedKey);\r\n var $recentlyViewedPanel = $(\"#recentlyViewedPanel\");\r\n if (!recentlyViewedWorkIds || recentlyViewedWorkIds.length === 0) {\r\n $recentlyViewedPanel.hide();\r\n }\r\n ajaxUtils_1.AjaxUtils.get(\"work/getByIds\", { workIds: recentlyViewedWorkIds, format: options.format })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n $recentlyViewedPanel.hide();\r\n return;\r\n }\r\n $(\"#recentlyViewed\").addClass(\"slick-container\");\r\n $(\"#recentlyViewed\").html(result.data.html);\r\n _this.initWorksCarousel(\"#recentlyViewed\");\r\n }).fail(function () {\r\n $recentlyViewedPanel.hide();\r\n });\r\n }\r\n catch (ex) {\r\n console.error(ex);\r\n }\r\n this.initWorksCarousel(\"#hotWorks\");\r\n this.initWorksCarousel(\"#recentUpdWorks\");\r\n this.initWorksCarousel(\"#mostPopularWorks\");\r\n this.initWorksCarousel(\"#bestsellerWorks\");\r\n this.initWorksCarousel(\"#addedToLibraryWorks\");\r\n this.initWorksCarousel(\"#recentLikedWorks\");\r\n this.initWorksCarousel(\"#recentPubWorks\");\r\n $(\"#atRecs\").slick({\r\n touchMove: false,\r\n fade: true\r\n });\r\n setTimeout(function () {\r\n _this.initWorkPreferencesPreset();\r\n }, 200);\r\n }\r\n ViewModel.prototype.initWorksCarousel = function (id) {\r\n var $carousel = $(id);\r\n $carousel.slick({\r\n slidesToShow: 6,\r\n slidesToScroll: 6,\r\n adaptiveHeight: true,\r\n touchMove: false,\r\n responsive: [\r\n {\r\n breakpoint: 1200,\r\n settings: {\r\n slidesToShow: 5,\r\n slidesToScroll: 5\r\n }\r\n },\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 3,\r\n slidesToScroll: 3\r\n }\r\n }, {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 4,\r\n slidesToScroll: 4\r\n }\r\n }\r\n ]\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=homeIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"../utils/localStorageUtils\", \"./base/baseViewModel\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var localStorageUtils_1 = require(\"../utils/localStorageUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(true);\r\n this.widgetHtml = ko.observable();\r\n var recentlyViewedWorkIds = localStorageUtils_1.default.get(localStorageUtils_1.default.RecentlyViewedKey);\r\n var $recentlyViewedPanel = $(\"#recentlyViewedPanel\");\r\n var showCarousel = recentlyViewedWorkIds && recentlyViewedWorkIds.length > 0;\r\n ajaxUtils_1.AjaxUtils.get(\"work/getByIds\", { workIds: recentlyViewedWorkIds })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n $recentlyViewedPanel.hide();\r\n return;\r\n }\r\n if (showCarousel) {\r\n $(\"#recentlyViewed\").addClass(\"slick-container\");\r\n }\r\n $(\"#recentlyViewed\").html(result.data.html);\r\n if (showCarousel) {\r\n _this.initWorksCarousel(\"#recentlyViewed\");\r\n }\r\n }).fail(function () {\r\n $recentlyViewedPanel.hide();\r\n });\r\n }\r\n ViewModel.prototype.initWorksCarousel = function (id) {\r\n var $carousel = $(id);\r\n $carousel.slick({\r\n slidesToShow: 6,\r\n slidesToScroll: 6,\r\n adaptiveHeight: true,\r\n touchMove: false,\r\n responsive: [\r\n {\r\n breakpoint: 1200,\r\n settings: {\r\n slidesToShow: 5,\r\n slidesToScroll: 5\r\n }\r\n },\r\n {\r\n breakpoint: 992,\r\n settings: {\r\n slidesToShow: 3,\r\n slidesToScroll: 3\r\n }\r\n }, {\r\n breakpoint: 768,\r\n settings: {\r\n slidesToShow: 4,\r\n slidesToScroll: 4\r\n }\r\n }\r\n ]\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=homeLibrary.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"moment\", \"numeral\", \"../utils/ajaxUtils\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var numeral = require(\"numeral\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.groupBy = ko.observable();\r\n this.itemTitle = ko.pureComputed(function () {\r\n var groupBy = _this.groupBy();\r\n if (groupBy === \"work\") {\r\n return \"Произведения\";\r\n }\r\n else if (groupBy === \"series\") {\r\n return \"Циклы\";\r\n }\r\n else if (groupBy === \"format\") {\r\n return \"Формат\";\r\n }\r\n return \"\";\r\n });\r\n this.items = ko.pureComputed(function () {\r\n var groupBy = _this.groupBy();\r\n var items = [];\r\n if (groupBy === \"work\") {\r\n items = _this.works.slice();\r\n items.unshift({ id: \"null\", title: \"Все\" });\r\n }\r\n else if (groupBy === \"series\") {\r\n items = _this.series.slice();\r\n items.unshift({ id: \"null\", title: \"Все\" }, { id: \"0\", title: \"Без цикла\" });\r\n }\r\n else if (groupBy === \"format\") {\r\n items = _this.workFormat.slice();\r\n items.unshift({ id: \"null\", title: \"Все\" });\r\n }\r\n return items;\r\n });\r\n this.itemId = ko.observable();\r\n this.numeral = numeral;\r\n this.dateRangePickerOptions = {\r\n ranges: {\r\n 'За неделю': [moment().startOf(\"day\").add(-6, \"days\"), moment().endOf(\"day\")],\r\n 'За месяц': [moment().startOf(\"day\").add(-30, \"days\"), moment().endOf(\"day\")],\r\n 'За прошлый месяц': [moment().startOf(\"day\").add(-30, \"days\").add(-1, \"months\"), moment().startOf(\"day\").add(-31, \"days\")],\r\n 'За 3 месяца': [moment().startOf(\"day\").add(-30, \"days\").add(-2, \"months\"), moment().endOf(\"day\")],\r\n 'За год': [moment().startOf(\"day\").add(-12, \"months\"), moment().endOf(\"day\")]\r\n }\r\n };\r\n this.startDate = ko.observable();\r\n this.endDate = ko.observable();\r\n this.isLoading = ko.observable(true);\r\n this.workCountByPeriod = ko.observable(0);\r\n this.rewardCountByPeriod = ko.observable(0);\r\n this.incomeByPeriod = ko.observable(0);\r\n this.totalWorkCount = ko.observable(0);\r\n this.totalRewardCount = ko.observable(0);\r\n this.totalIncomeByWork = ko.observable(0);\r\n this.totalIncome = ko.observable(0);\r\n this.currentBalance = ko.observable(0);\r\n this.getFilterData = function () {\r\n return _this.filterData();\r\n };\r\n this.auId = options.auId;\r\n this.works = options.works;\r\n this.series = options.series;\r\n this.workFormat = options.workFormat;\r\n this.startDate(options.startDate ? moment(options.startDate) : moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate(options.endDate ? moment(options.endDate) : moment().endOf(\"day\"));\r\n this.filterData = ko.computed(function () {\r\n var filterData = {\r\n groupBy: _this.groupBy(),\r\n startDate: _this.startDate().toISOString(),\r\n endDate: _this.endDate().toISOString(),\r\n itemId: _this.itemId(),\r\n auId: _this.auId\r\n };\r\n return filterData;\r\n }).extend({\r\n rateLimit: {\r\n timeout: 300,\r\n method: \"notifyWhenChangesStop\"\r\n }\r\n });\r\n var isInitialized = false;\r\n setTimeout(function () {\r\n ko.computed(function () {\r\n var data = _this.filterData();\r\n if (!isInitialized)\r\n return;\r\n _this.isLoading(true);\r\n _this.loadDynamicChart();\r\n var grid = $(\"#grid\").data(\"kendoGrid\");\r\n if (grid) {\r\n grid.dataSource.read(data);\r\n }\r\n try {\r\n if (!data.itemId || data.itemId === \"null\") {\r\n delete data.itemId;\r\n }\r\n if (!data.auId || data.auId === \"null\") {\r\n delete data.auId;\r\n }\r\n history.replaceState(null, null, \"dashboard?\" + $.param(data));\r\n }\r\n catch (e) {\r\n }\r\n });\r\n });\r\n this.filterData.subscribe(function () {\r\n isInitialized = true;\r\n });\r\n }\r\n ViewModel.prototype.loadDynamicChart = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.get(\"merchant/workOrdersReport\", this.filterData())\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n var reportData = result.data;\r\n var daysInPerios = Math.floor((_this.endDate() - _this.startDate()) / (1000 * 60 * 60 * 24));\r\n var minPeriod = \"DD\";\r\n var categoryBalloonDateFormat = \"MMMM DD, YYYY\";\r\n if (daysInPerios > 40) {\r\n minPeriod = \"MM\";\r\n categoryBalloonDateFormat = \"MMMM, YYYY\";\r\n }\r\n _this.dynamicChart = AmCharts.makeChart(\"chartdiv\", {\r\n language: \"ru\",\r\n type: \"serial\",\r\n theme: \"light\",\r\n synchronizeGrid: true,\r\n thousandsSeparator: \" \",\r\n valueAxes: [\r\n {\r\n id: \"v1\",\r\n position: \"left\",\r\n title: \"Доход, ₽\",\r\n stackType: \"regular\",\r\n },\r\n {\r\n id: \"v2\",\r\n axisAlpha: 0,\r\n gridAlpha: 0,\r\n position: \"right\",\r\n integersOnly: true,\r\n title: \"Количество\"\r\n }\r\n ],\r\n graphs: [\r\n {\r\n balloonFunction: function (item) {\r\n var x = item.dataContext;\r\n return \"\" +\r\n (\"\") +\r\n (\"\") +\r\n (\"\") +\r\n \"
\\u041A\\u043D\\u0438\\u0433\\u0438: \" + numeral(x.workIncome).format(\"0,0.[00]\") + \" \\u20BD (\" + numeral(x.workCount).format(\"0,0\") + \" \\u0448\\u0442.)
\\u041D\\u0430\\u0433\\u0440\\u0430\\u0434\\u044B: \" + numeral(x.rewardIncome).format(\"0, 0.[00]\") + \" \\u20BD (\" + numeral(x.rewardCount).format(\"0,0\") + \" \\u0448\\u0442.)
\\u0412\\u0441\\u0435\\u0433\\u043E: \" + numeral(x.rewardIncome + x.workIncome).format(\"0, 0.[00]\") + \" \\u20BD
\";\r\n },\r\n fillAlphas: 0.7,\r\n useLineColorForBulletBorder: true,\r\n hideBulletsCount: 30,\r\n connect: true,\r\n legendValueText: \"[[value]] ₽\",\r\n title: \"За книги\",\r\n type: \"column\",\r\n valueField: \"workIncome\",\r\n valueAxis: \"v1\",\r\n showBalloon: true\r\n },\r\n {\r\n balloonText: \"За награды: [[value]] ₽\",\r\n fillAlphas: 0.7,\r\n useLineColorForBulletBorder: true,\r\n hideBulletsCount: 30,\r\n connect: true,\r\n legendValueText: \"[[value]] ₽\",\r\n title: \"За награды\",\r\n type: \"column\",\r\n valueField: \"rewardIncome\",\r\n valueAxis: \"v1\",\r\n lineColor: \"#84b761\",\r\n showBalloon: false\r\n }, {\r\n balloonText: \"Купили книг: [[value]]\",\r\n type: \"smoothedLine\",\r\n bullet: \"round\",\r\n bulletBorderAlpha: 1,\r\n useLineColorForBulletBorder: true,\r\n bulletColor: \"#FFFFFF\",\r\n hideBulletsCount: 30,\r\n legendValueText: \"[[value]]\",\r\n title: \"Купили книг\",\r\n fillAlphas: 0,\r\n valueField: \"workCount\",\r\n valueAxis: \"v2\",\r\n lineColor: \"#fdd400\",\r\n showBalloon: false\r\n }, {\r\n balloonText: \"Купили наград: [[value]]\",\r\n type: \"smoothedLine\",\r\n bullet: \"round\",\r\n bulletBorderAlpha: 1,\r\n useLineColorForBulletBorder: true,\r\n bulletColor: \"#FFFFFF\",\r\n hideBulletsCount: 30,\r\n legendValueText: \"[[value]]\",\r\n title: \"Подарили наград\",\r\n fillAlphas: 0,\r\n valueField: \"rewardCount\",\r\n valueAxis: \"v2\",\r\n lineColor: \"#FF6600\",\r\n showBalloon: false\r\n }\r\n ],\r\n chartCursor: {\r\n categoryBalloonDateFormat: categoryBalloonDateFormat,\r\n cursorAlpha: 0.1,\r\n cursorColor: \"#000000\",\r\n fullWidth: true,\r\n zoomable: false\r\n },\r\n dataDateFormat: \"DD.MM.YYYY\",\r\n categoryField: \"processedTime\",\r\n categoryAxis: {\r\n parseDates: true,\r\n dashLength: 1,\r\n minPeriod: minPeriod\r\n },\r\n legend: {\r\n equalWidths: true,\r\n useGraphSettings: true,\r\n align: \"center\"\r\n },\r\n dataProvider: reportData.dynamicChartData,\r\n pathToImages: window[\"app\"].rootUrl + \"dist/vendor/amcharts/images/\",\r\n \"export\": {\r\n enabled: false\r\n }\r\n });\r\n // Костыль против глюка SVG в Хроме\r\n function endsWith(str, suffix) {\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n }\r\n var badPart = \"M0,0 L0,0\";\r\n setTimeout(function () {\r\n $(\"svg path\").each(function (i, el) {\r\n var dAttr = $(el).attr(\"d\");\r\n if (endsWith(dAttr, badPart)) {\r\n $(el).attr(\"d\", dAttr.substring(0, dAttr.length - badPart.length));\r\n }\r\n });\r\n }, 50);\r\n _this.workCountByPeriod(reportData.workCountByPeriod);\r\n _this.rewardCountByPeriod(reportData.rewardCountByPeriod);\r\n _this.incomeByPeriod(reportData.incomeByPeriod);\r\n _this.totalWorkCount(reportData.totalWorkCount);\r\n _this.totalRewardCount(reportData.totalRewardCount);\r\n _this.totalIncomeByWork(reportData.totalIncomeByWork);\r\n _this.totalIncome(reportData.totalIncome);\r\n _this.currentBalance(reportData.currentBalance);\r\n _this.isLoading(false);\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=merchantDashboard.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"../utils/dateTimeUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.initGrid = function (e) {\r\n var grid = $(\"#grid\").data(\"kendoGrid\");\r\n var items = e.sender.items();\r\n $(items).each(function (i, el) {\r\n var $el = $(el);\r\n var dataItem = grid.dataItem(el);\r\n if (dataItem.IsActive) {\r\n $el.addClass(\"active-discount\");\r\n }\r\n else if (dataItem.IsPast) {\r\n $el.addClass(\"past-discount\");\r\n }\r\n });\r\n //items.\r\n //items.each(function (index) {\r\n // var dataItem = grid.dataItem(this);\r\n // if (dataItem.age > 32) {\r\n // this.className += \" customClass1\";\r\n // }\r\n // else {\r\n // this.className += \" customClass2\";\r\n // }\r\n //})\r\n dateTimeUtils_1.default.displayTime();\r\n };\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=merchantDiscounts.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"numeral\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var numeral = require(\"numeral\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.numeral = numeral;\r\n this.isLoading = ko.observable(true);\r\n this.auId = options.auId;\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=merchantReports.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\", \"../components/modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.rewards = ko.observable();\r\n this.sales = ko.observable();\r\n this.subscription = ko.observable();\r\n this.comment = ko.observable();\r\n }\r\n ViewModel.prototype.openModal = function () {\r\n this.showModal({\r\n title: \"Получение коммерческого статуса\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"sendRequestModal\",\r\n minWidth: \"400px\",\r\n maxWidth: \"400px\",\r\n viewModel: this\r\n });\r\n };\r\n ViewModel.prototype.submit = function () {\r\n var _this = this;\r\n if (this.validation !== undefined && !this.validation.isValid()) {\r\n this.validation.errors.showAllMessages();\r\n return;\r\n }\r\n ;\r\n if (this.processing())\r\n return;\r\n this.processing(true);\r\n this.errorMessages([]);\r\n var data = {\r\n rewards: this.rewards(),\r\n sales: this.sales(),\r\n subscription: this.subscription(),\r\n comment: this.comment()\r\n };\r\n ajaxUtils_1.AjaxUtils.post(\"merchant/sendRequest\", data)\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.showModal({\r\n title: \"Заявка успешно отправлена\",\r\n type: modalDialog_1.ModalType.Success,\r\n message: \"Спасибо! Мы свяжемся с вами в самое ближайшее время.\",\r\n maxWidth: \"435px\"\r\n });\r\n $(\"#submitFormBtn\").hide();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=merchantStep1.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"moment\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.name = ko.observable().extend({\r\n required: true,\r\n maxLength: 50\r\n });\r\n this.surname = ko.observable().extend({\r\n required: true,\r\n maxLength: 50\r\n });\r\n this.patronymic = ko.observable().extend({ maxLength: 50 });\r\n this.passportType = ko.observable();\r\n this.passportTypeOptions = ko.observable();\r\n /** Для граждан РФ */\r\n this.russianPassportTypeOptions = [\r\n { id: 1, title: \"Физическое лицо\" },\r\n { id: 2, title: \"Индивидуальный предприниматель\" },\r\n { id: 3, title: \"Самозанятый\" }\r\n ];\r\n /** Для иностранцев */\r\n this.foreignPassportTypeOptions = [\r\n { id: 1, title: \"Иностранный гражданин (физическое лицо)\" },\r\n { id: 2, title: \"Индивидуальный предприниматель РФ\" },\r\n { id: 3, title: \"Самозанятый РФ\" }\r\n ];\r\n this.sex = ko.observable().extend({\r\n validation: {\r\n validator: function (val) {\r\n return val !== -1;\r\n },\r\n message: \"Нужно указать пол\"\r\n }\r\n });\r\n this.sexOptions = [{ id: -1, title: \"не выбран\" }, { id: 1, title: \"женский\" }, { id: 2, title: \"мужской\" }];\r\n this.citizenship = ko.observable().extend({\r\n required: true\r\n });\r\n this.bankCountry = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return true;\r\n }\r\n }\r\n });\r\n this.passportBirthDate = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.passportType() === 1 || _this.passportType() === 3;\r\n }\r\n },\r\n validation: {\r\n validator: function (val) {\r\n if (_this.passportType() === 2) {\r\n return true;\r\n }\r\n var years = moment().diff(val, 'years');\r\n return years >= 18;\r\n },\r\n message: \"Допускаются только совершеннолетние\"\r\n }\r\n });\r\n this.passportSeries = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return (_this.passportType() === 1 || _this.passportType() === 3) && _this.isRussia();\r\n }\r\n },\r\n maxLength: 4,\r\n minLength: 4\r\n });\r\n this.passportNumber = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return (_this.passportType() === 1 || _this.passportType() === 3) && _this.isRussia();\r\n }\r\n },\r\n maxLength: 6,\r\n minLength: 6\r\n });\r\n this.passportIssuedDate = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return (_this.passportType() === 1 || _this.passportType() === 3) && _this.isRussia();\r\n }\r\n }\r\n });\r\n this.passportByWhomIssued = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return (_this.passportType() === 1 || _this.passportType() === 3) && _this.isRussia();\r\n }\r\n }\r\n });\r\n this.passportDetails = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return (_this.passportType() === 1 || _this.passportType() === 3) && !_this.isRussia();\r\n }\r\n }\r\n });\r\n this.registrationAddress = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.passportType() === 1;\r\n }\r\n }\r\n });\r\n this.INN = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.passportType() === 2 || _this.passportType() === 3;\r\n }\r\n },\r\n minLength: 12,\r\n maxLength: 12\r\n });\r\n this.OGRNIP = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.passportType() === 2;\r\n }\r\n },\r\n minLength: 15,\r\n maxLength: 15\r\n });\r\n this.OGRNIPIssueDate = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.passportType() === 2;\r\n }\r\n }\r\n });\r\n this.OGRNIPIssuedBy = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.passportType() === 2;\r\n }\r\n }\r\n });\r\n this.mailingAddress = ko.observable().extend({ required: true });\r\n this.BIK = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.strictBankRequisites() && !_this.showYandexMoneyOnly();\r\n }\r\n },\r\n minLength: 9,\r\n maxLength: 9\r\n });\r\n this.accNumber = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.strictBankRequisites() && !_this.showYandexMoneyOnly();\r\n }\r\n },\r\n minLength: 20,\r\n maxLength: 20\r\n });\r\n this.bankRequisites = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.passportType() === 1 && !_this.yandexMoneyAccountId() && !_this.isRussianBank();\r\n }\r\n }\r\n });\r\n this.strictBankRequisites = ko.observable();\r\n this.yandexMoneyAccountId = ko.observable().extend({\r\n number: true,\r\n required: {\r\n onlyIf: function () {\r\n return _this.showYandexMoneyOnly();\r\n }\r\n }\r\n });\r\n this.offerAgree = ko.observable().extend({ required: true });\r\n this.isRussia = ko.pureComputed(function () {\r\n var country = _this.countries.find(function (p) { return p.id == _this.citizenship(); });\r\n return country && country.isRussia;\r\n });\r\n this.isRussianBank = ko.pureComputed(function () {\r\n var country = _this.countries.find(function (p) { return p.id == _this.bankCountry(); });\r\n return country && country.isRussia;\r\n });\r\n this.showYandexMoneyOnly = ko.pureComputed(function () {\r\n return (_this.passportType() === 1 || _this.passportType() === 3) && _this.isRussianBank() && _this.yandexMoneyOnly();\r\n });\r\n this.FIOPayee = ko.observable();\r\n /** ИП или самозанятый */\r\n this.isSelfOccupiedOrSoleProprietor = ko.observable(false);\r\n this.yandexMoneyOnly = ko.observable();\r\n this.allowEdit = options.allowEdit;\r\n if (this.allowEdit && (options.contractStatus === 2 || options.contractStatus === 3 || options.contractStatus === 4 || options.contractStatus === 5)) {\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n this.passportType.subscribe(function (value) {\r\n if (value == 2 || value == 3) {\r\n var russiaId = _this.countries.find(function (p) { return p.isRussia; }).id;\r\n _this.bankCountry(russiaId);\r\n _this.isSelfOccupiedOrSoleProprietor(true);\r\n }\r\n else {\r\n _this.isSelfOccupiedOrSoleProprietor(false);\r\n }\r\n });\r\n this.citizenship.subscribe(function (value) {\r\n var isRussia = _this.checkIsRussia(value);\r\n if (isRussia) {\r\n _this.passportTypeOptions(_this.russianPassportTypeOptions);\r\n }\r\n else {\r\n _this.passportTypeOptions(_this.foreignPassportTypeOptions);\r\n }\r\n });\r\n this.passportTypeOptions(this.foreignPassportTypeOptions);\r\n this.citizenship(options.citizenship);\r\n this.sex(options.sex);\r\n this.contractStatus = options.contractStatus;\r\n this.bankRequisites(options.bankRequisites);\r\n this.BIK(options.bik);\r\n this.accNumber(options.accNumber);\r\n this.countries = options.countries;\r\n if (options.passportBirthDate) {\r\n this.passportBirthDate(moment(options.passportBirthDate).toDate());\r\n }\r\n this.passportSeries(options.passportSeries);\r\n this.passportNumber(options.passportNumber);\r\n this.passportByWhomIssued(options.passportByWhomIssued);\r\n if (options.passportIssuedDate) {\r\n this.passportIssuedDate(moment(options.passportIssuedDate).toDate());\r\n }\r\n if (options.ogrnipIssueDate) {\r\n this.OGRNIPIssueDate(moment(options.ogrnipIssueDate).toDate());\r\n }\r\n this.strictBankRequisites(false);\r\n this.bankCountry(options.bankCountry);\r\n this.bankCountry.subscribe(function (value) {\r\n var country = _this.countries.find(function (p) { return p.id == value; });\r\n _this.strictBankRequisites(country && country.isRussia);\r\n });\r\n this.FIOPayee(options.FIOPayee);\r\n this.yandexMoneyOnly(options.yandexMoneyOnly);\r\n this.errorMessages.subscribe(function (messages) {\r\n messages.forEach(function (value) {\r\n alert(value);\r\n });\r\n });\r\n setTimeout(function () {\r\n _this.sex.isModified(false);\r\n if (options.contractStatus === 3 || options.contractStatus === 4 || options.contractStatus === 5) {\r\n _this.initValidation();\r\n }\r\n _this.passportType(options.passportType);\r\n }, 0);\r\n }\r\n ViewModel.prototype.checkIsRussia = function (value) {\r\n var country = this.countries.find(function (p) { return p.id == value; });\r\n return country && country.isRussia;\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n if (result.data && result.data.redirectUrl) {\r\n this.redirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n this.reloadPage();\r\n }\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=merchantStep3.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(false);\r\n var endpoint = window[\"app\"].rootUrl + \"file/uploadContractScanCopy\";\r\n $(document).ready(function () {\r\n var uploader = new qq.FineUploader({\r\n //debug: true,\r\n multiple: false,\r\n element: document.getElementById(\"fine-uploader\"),\r\n request: {\r\n endpoint: endpoint,\r\n customHeaders: ajaxUtils_1.AjaxUtils.getHeaders()\r\n },\r\n thumbnails: {\r\n placeholders: {\r\n notAvailablePath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/not_available-generic.png\",\r\n waitingPath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/waiting-generic.png\"\r\n }\r\n },\r\n messages: {\r\n unsupportedBrowser: \"Ваш браузер не поддерживает загрузку файлов.\",\r\n sizeError: \"{file} слишком большой, максимальный размер файла — {sizeLimit}.\",\r\n typeError: \"{file} имеет недопустимый формат. Пожалуйста, выберите файл с расширением .jpg, .jpeg, .png, .pdf.\"\r\n },\r\n text: {\r\n failUpload: \"Не удалось загрузить файл\"\r\n },\r\n validation: {\r\n allowedExtensions: [\"jpg\", \"jpeg\", \"png\", 'pdf', \"webp\"],\r\n sizeLimit: 5 * 1024 * 1024\r\n },\r\n callbacks: {\r\n onSubmit: function () {\r\n return !_this.isLoading();\r\n },\r\n onSubmitted: function () {\r\n _this.isLoading(true);\r\n },\r\n onCancel: function () {\r\n _this.isLoading(false);\r\n },\r\n onError: function () {\r\n _this.isLoading(false);\r\n },\r\n onComplete: function (id, name, response) {\r\n _this.isLoading(false);\r\n if (!response.success) {\r\n alert(response.error);\r\n return;\r\n }\r\n toastr.success(\"Изображение успешно загружено и отправлено на проверку.\");\r\n _this.reloadPage();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=merchantStep4.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\", \"../components/modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(false);\r\n this.inn = ko.observable();\r\n this.selfOccupiedSent = ko.observable(false);\r\n this.selfOccupiedSent(options.selfOccupiedSent);\r\n $(document).ready(function () {\r\n _this.createUploader();\r\n });\r\n }\r\n ViewModel.prototype.createUploader = function () {\r\n var _this = this;\r\n var uploaderSelfOccupiedElement = document.getElementById(\"fine-uploader-self-occupied\");\r\n if (uploaderSelfOccupiedElement) {\r\n var endpointSelfOccupied = window[\"app\"].rootUrl + \"file/UploadSelfOccupiedScanCopy\";\r\n var uploaderSelfOccupied = new qq.FineUploader({\r\n multiple: false,\r\n element: uploaderSelfOccupiedElement,\r\n request: {\r\n endpoint: endpointSelfOccupied,\r\n customHeaders: ajaxUtils_1.AjaxUtils.getHeaders()\r\n },\r\n thumbnails: {\r\n placeholders: {\r\n notAvailablePath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/not_available-generic.png\",\r\n waitingPath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/waiting-generic.png\"\r\n }\r\n },\r\n messages: {\r\n unsupportedBrowser: \"Ваш браузер не поддерживает загрузку файлов.\",\r\n sizeError: \"{file} слишком большой, максимальный размер файла — 5MB.\",\r\n typeError: \"{file} имеет недопустимый формат. Пожалуйста, выберите файл с расширением .jpg, .jpeg, .png, .pdf.\"\r\n },\r\n text: {\r\n failUpload: \"Не удалось загрузить файл\"\r\n },\r\n validation: {\r\n allowedExtensions: [\"jpg\", \"jpeg\", \"png\", \"pdf\", \"webp\"],\r\n sizeLimit: 5 * 1024 * 1024\r\n },\r\n callbacks: {\r\n onSubmit: function () {\r\n return !_this.isLoading();\r\n },\r\n onSubmitted: function () {\r\n _this.isLoading(true);\r\n },\r\n onCancel: function () {\r\n _this.isLoading(false);\r\n },\r\n onError: function () {\r\n _this.isLoading(false);\r\n },\r\n onComplete: function (id, name, response) {\r\n _this.isLoading(false);\r\n if (!response.success) {\r\n alert(response.error);\r\n return;\r\n }\r\n toastr.success(\"Изображение успешно загружено и отправлено на проверку.\");\r\n _this.reloadPage();\r\n }\r\n }\r\n });\r\n }\r\n var uploaderAudioElement = document.getElementById(\"fine-uploader-audio\");\r\n if (uploaderAudioElement) {\r\n var endpointAudio = window[\"app\"].rootUrl + \"file/uploadAudioContract\";\r\n var uploaderAudio = new qq.FineUploader({\r\n multiple: false,\r\n element: uploaderAudioElement,\r\n request: {\r\n endpoint: endpointAudio,\r\n customHeaders: ajaxUtils_1.AjaxUtils.getHeaders()\r\n },\r\n thumbnails: {\r\n placeholders: {\r\n notAvailablePath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/not_available-generic.png\",\r\n waitingPath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/waiting-generic.png\"\r\n }\r\n },\r\n messages: {\r\n unsupportedBrowser: \"Ваш браузер не поддерживает загрузку файлов.\",\r\n sizeError: \"{file} слишком большой, максимальный размер файла — 5MB.\",\r\n typeError: \"{file} имеет недопустимый формат. Пожалуйста, выберите файл с расширением .jpg, .jpeg, .png, .pdf.\"\r\n },\r\n text: {\r\n failUpload: \"Не удалось загрузить файл\"\r\n },\r\n validation: {\r\n allowedExtensions: [\"jpg\", \"jpeg\", \"png\", \"pdf\", \"webp\"],\r\n sizeLimit: 5 * 1024 * 1024\r\n },\r\n callbacks: {\r\n onSubmit: function () {\r\n return !_this.isLoading();\r\n },\r\n onSubmitted: function () {\r\n _this.isLoading(true);\r\n },\r\n onCancel: function () {\r\n _this.isLoading(false);\r\n },\r\n onError: function () {\r\n _this.isLoading(false);\r\n },\r\n onComplete: function (id, name, response) {\r\n _this.isLoading(false);\r\n if (!response.success) {\r\n alert(response.error);\r\n return;\r\n }\r\n toastr.success(\"Изображение успешно загружено и отправлено на проверку.\");\r\n _this.reloadPage();\r\n }\r\n }\r\n });\r\n }\r\n };\r\n ViewModel.prototype.enableRewards = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.post(\"merchant/enableRewards\", {})\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.showModal({\r\n title: \"Награды включены\",\r\n type: modalDialog_1.ModalType.Success,\r\n message: \"Отлично! Теперь читатели смогут награждать ваши книги.\",\r\n maxWidth: \"435px\"\r\n });\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n ViewModel.prototype.applyForAudiobooks = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.post(\"merchant/applyForAudiobooks\", {})\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.showModal({\r\n title: \"Заявка отправлена\",\r\n type: modalDialog_1.ModalType.Success,\r\n message: \"Ваша заявка отправлена на рассмотрение! Ожидайте ответа.\",\r\n maxWidth: \"435px\"\r\n });\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n ViewModel.prototype.showSelfOccupiedModal = function () {\r\n this.showModal({\r\n title: \"Заявка на получение переводов как самозанятому\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"selfOccupiedModal\",\r\n viewModel: this,\r\n maxWidth: \"650px\",\r\n minWidth: \"650px\"\r\n });\r\n };\r\n ViewModel.prototype.submitSelfOccupied = function () {\r\n var _this = this;\r\n if (!this.inn() || this.inn().length != 12) {\r\n alert(\"В ИНН должно быть указано 12 цифр\");\r\n return;\r\n }\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"merchant/sendSelfOccupied\", { inn: this.inn() })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n location.href = location.href;\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n ViewModel.prototype.hideSelfOccupied = function () {\r\n this.modal.hide();\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=merchantStep5.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(false);\r\n this.searchQuery = ko.observable(this.options.query);\r\n this.searchQueryHasFocus = ko.observable(false);\r\n this.submitQuery = this.options.query;\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n });\r\n $(document).on(\"submit.search\", \"form[data-pjax]\", function (event) {\r\n if (_this.submitQuery !== _this.searchQuery()) {\r\n _this.submitQuery = _this.searchQuery();\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n }\r\n return false;\r\n });\r\n }\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n if (this.searchQuery().length === 0) {\r\n $(\".search-form\").removeClass(\"open\");\r\n return;\r\n }\r\n this.searchQuery(\"\");\r\n setTimeout(function () {\r\n $(\".search-form\").submit();\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=peopleIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"moment\", \"nprogress\", \"crosstab\", \"../utils/ajaxUtils\", \"./base/baseViewModel\", \"../utils/richContentUtils\", \"../utils/stringUtils\", \"../utils/webSocketUtils\", \"../components/modalDialog\", \"../utils/imageZoomUtils\", \"nanoScroller\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n var nprogress = require(\"nprogress\");\r\n var crosstab = require(\"crosstab\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n var webSocketUtils_1 = require(\"../utils/webSocketUtils\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var imageZoomUtils_1 = require(\"../utils/imageZoomUtils\");\r\n require(\"nanoScroller\");\r\n var director = require(\"director\");\r\n var imagesLoaded = require(\"imagesloaded\");\r\n var PrivacyPrivateMessage;\r\n (function (PrivacyPrivateMessage) {\r\n PrivacyPrivateMessage[PrivacyPrivateMessage[\"None\"] = 0] = \"None\";\r\n PrivacyPrivateMessage[PrivacyPrivateMessage[\"All\"] = 1] = \"All\";\r\n PrivacyPrivateMessage[PrivacyPrivateMessage[\"OnlyFriends\"] = 2] = \"OnlyFriends\";\r\n })(PrivacyPrivateMessage || (PrivacyPrivateMessage = {}));\r\n var BaseChat = (function () {\r\n function BaseChat(data, viewModel) {\r\n var _this = this;\r\n this.lastActivity = ko.observable().extend({ notify: \"always\" });\r\n this.lastMessageId = ko.observable();\r\n this.lastMessageText = ko.observable();\r\n this.lastMessageUserId = ko.observable();\r\n this.lastMessageSentTime = ko.observable();\r\n this.unreadCount = ko.observable();\r\n this.sent = ko.pureComputed(function () {\r\n var currentUserId = _this.viewModel.currentUserId;\r\n return _this.lastMessageUserId() === currentUserId;\r\n });\r\n this.isActive = ko.pureComputed(function () {\r\n var currentChat = _this.viewModel.currentChat();\r\n if (currentChat) {\r\n return _this.id === currentChat.id;\r\n }\r\n return false;\r\n });\r\n this.id = data.id;\r\n this.title = data.title;\r\n this.isGroup = data.isGroup;\r\n this.avatarUrl = data.avatarUrl;\r\n this.lastActivity(moment(data.lastActivity));\r\n this.lastMessageId(data.lastMessageId);\r\n this.lastMessageText(data.lastMessageText);\r\n this.lastMessageUserId(data.lastMessageUserId);\r\n this.lastMessageSentTime(data.lastMessageSentTime);\r\n this.unreadCount(data.unreadCount);\r\n this.viewModel = viewModel;\r\n }\r\n return BaseChat;\r\n }());\r\n var PrivateChat = (function (_super) {\r\n __extends(PrivateChat, _super);\r\n function PrivateChat(data, viewModel) {\r\n var _this = this;\r\n _super.call(this, data, viewModel);\r\n this.unavailableMessage = ko.observable();\r\n this.isCurrentUserUnavailable = false;\r\n this.isInvisibleSubscriber = false;\r\n this.ignored = ko.observable();\r\n this.online = ko.pureComputed(function () {\r\n var lastActivity = _this.lastActivity();\r\n return moment.utc().add(-2, \"minutes\").isBefore(lastActivity);\r\n });\r\n this.allowSendPM = ko.pureComputed(function () {\r\n return !_this.ignoredByUser\r\n && !_this.ignored()\r\n && (_this.privacySendPM === PrivacyPrivateMessage.All || (_this.privacySendPM === PrivacyPrivateMessage.OnlyFriends && _this.isFriend))\r\n && !_this.isCurrentUserUnavailable;\r\n });\r\n this.showFeedBackForm = function () {\r\n window[\"AppComponents\"].FeedbackForm.show(_this.userId, \"User\", _this.profileUrl);\r\n };\r\n this.userId = data.userId;\r\n this.privacySendPM = PrivacyPrivateMessage[data.privacyPrivateMessage];\r\n this.unavailableMessage(data.unavailableMessage);\r\n this.subscriptionInfo = data.subscriptionInfo;\r\n this.isFriend = data.subscriptionInfoWithoutInvisible\r\n && data.subscriptionInfoWithoutInvisible.targetUserSubscription\r\n && data.subscriptionInfoWithoutInvisible.targetUserSubscription.isMutual;\r\n this.isCurrentUserUnavailable = viewModel.isCurrentUserUnavailable;\r\n this.subscriptionInfoWithoutInvisible = data.subscriptionInfoWithoutInvisible;\r\n this.profileUrl = data.profileUrl;\r\n this.ignored(data.ignored);\r\n this.ignoredByUser = data.ignoredByUser;\r\n this.lastActivity(moment(data.lastActivity));\r\n this.isVerified = data.isVerified;\r\n setInterval(function () {\r\n _this.lastActivity(_this.lastActivity());\r\n }, 15000);\r\n this.allowSendPM.subscribe(function () {\r\n setTimeout(function () {\r\n viewModel.resizeControls(true);\r\n }, 100);\r\n });\r\n }\r\n PrivateChat.prototype.lastActivityFromNow = function () {\r\n var lastActivity = this.lastActivity();\r\n return lastActivity.fromNow();\r\n };\r\n return PrivateChat;\r\n }(BaseChat));\r\n var GroupChat = (function (_super) {\r\n __extends(GroupChat, _super);\r\n function GroupChat(data, viewModel) {\r\n _super.call(this, data, viewModel);\r\n this.allowSendPM = ko.pureComputed(function () {\r\n return true;\r\n });\r\n }\r\n return GroupChat;\r\n }(BaseChat));\r\n var PMContact = (function () {\r\n function PMContact(data, viewModel) {\r\n var _this = this;\r\n this.isActive = ko.pureComputed(function () {\r\n var currentChat = _this.viewModel.currentChat();\r\n if (currentChat && !currentChat.isGroup) {\r\n return _this.userId === currentChat[\"userId\"];\r\n }\r\n return false;\r\n });\r\n this.userId = data.userId;\r\n this.fio = data.fio;\r\n this.userName = \"@\" + data.userName;\r\n this.avatarUrl = data.avatarUrl;\r\n this.isVerified = data.isVerified;\r\n this.viewModel = viewModel;\r\n }\r\n return PMContact;\r\n }());\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.currentUserId = window[\"app\"].userId;\r\n this.moreData = true;\r\n this.page = 1;\r\n this.recentChatsPage = 1;\r\n this.recentChats = ko.observableArray();\r\n this.orderedRecentChats = ko.pureComputed(function () {\r\n return _.sortBy(_this.recentChats(), function (x) {\r\n return moment(x.lastMessageSentTime()).toDate();\r\n }).reverse();\r\n });\r\n this.moreChats = ko.observable(true);\r\n this.searchResults = ko.observableArray();\r\n this.isCurrentUserUnavailable = false;\r\n this.currentChat = ko.observable(null);\r\n this.isLoading = ko.observable(false);\r\n this.messages = ko.observableArray();\r\n this.redactorInitialized = ko.observable(false);\r\n this.isConnected = ko.observable(false);\r\n this.messageText = ko.observable(\"\").extend({\r\n max: {\r\n params: 20000,\r\n message: \"Длина поля должна быть не больше {0} символов.\"\r\n }\r\n });\r\n this.selectedMessages = ko.observableArray();\r\n this.froalaOptions = {\r\n heightMin: 75,\r\n heightMax: 150,\r\n charCounterMax: 20000,\r\n placeholder: \"Текст сообщения\",\r\n pastePlain: true,\r\n toolbarBottom: true,\r\n imageDefaultDisplay: \"block\",\r\n imageEditButtons: [\"imageReplace\", \"imageAlign\", \"imageDisplay\",\r\n \"imageAlt\", \"imageSize\", \"imageRemove\"],\r\n imageDefaultAlign: \"left\",\r\n toolbarButtons: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"emoticons\", \"insertLink\", \"insertImage\", \"fullscreen\"\r\n ],\r\n toolbarButtonsMD: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\",\r\n \"quote\", \"emoticons\", \"insertLink\", \"insertImage\", \"fullscreen\"\r\n ],\r\n toolbarButtonsSM: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\", \"quote\", \"insertLink\", \"insertImage\", \"fullscreen\", \"|\", \"undo\", \"redo\"\r\n ],\r\n toolbarButtonsXS: [\r\n \"bold\", \"|\", \"quote\", \"insertLink\", \"insertImage\", \"fullscreen\", \"|\", \"undo\", \"redo\"\r\n ]\r\n };\r\n this.sendBtnDisable = ko.computed(function () {\r\n var text = _this.messageText();\r\n if ($.fn.froalaEditor === undefined) {\r\n return false;\r\n }\r\n ;\r\n var charCount = $(\".send-message-form textarea\").froalaEditor(\"charCounter.count\");\r\n return charCount === 0 || charCount.length === 0 || !_this.isConnected();\r\n });\r\n this.processing = ko.observable(false);\r\n this.searchQuery = ko.observable(\"\");\r\n this.searchQueryWithRateLimit = ko.computed(function () {\r\n var query = _this.searchQuery();\r\n if (query.length > 0) {\r\n ajaxUtils_1.AjaxUtils.get(\"pm/searchContacts\", { query: query })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n var contacts = _.map(result.data, function (i) {\r\n return new PMContact(i, _this);\r\n });\r\n _this.searchResults(contacts);\r\n setTimeout(function () {\r\n $(\"#search-results\").nanoScroller();\r\n }, 0);\r\n });\r\n }\r\n }).extend({\r\n rateLimit: {\r\n timeout: 1500,\r\n method: \"notifyAtFixedRate\"\r\n }\r\n });\r\n this.deleteMessages = function () {\r\n if (_this.isLoading())\r\n return;\r\n var messages = _this.selectedMessages();\r\n var ids = _.map(messages, function (x) { return x.id; });\r\n _this.showModal({\r\n title: \"Требуется подтверждение\",\r\n message: \"\\u0412\\u044B \\u0443\\u0432\\u0435\\u0440\\u0435\\u043D\\u044B, \\u0447\\u0442\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u0435(-\\u044F)?\",\r\n type: modalDialog_1.ModalType.Confirm,\r\n onSubmit: function () {\r\n _this.isLoading(true);\r\n ajaxUtils_1.AjaxUtils.post(\"pm/deleteMessages\", { ids: ids })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _.each(messages, function (x) {\r\n x.state(\"DeletedByUser\");\r\n x.allowEdit(false);\r\n });\r\n _this.selectedMessages([]);\r\n _this.modal.hide();\r\n }).always(function () {\r\n _this.isLoading(false);\r\n });\r\n }\r\n });\r\n };\r\n this.selectChat = function (chat) {\r\n _this.currentChat(chat);\r\n _this.messages([]);\r\n _this.selectedMessages([]);\r\n _this.page = 1;\r\n _this.loadMessages(true);\r\n chat.unreadCount(0);\r\n };\r\n this.selectContact = function (contact) {\r\n var chat = _.find(_this.recentChats(), function (c) {\r\n return !c.isGroup && c.userId === contact.userId;\r\n });\r\n var refreshMessages = function () {\r\n _this.messages([]);\r\n _this.page = 1;\r\n _this.loadMessages(true);\r\n };\r\n if (chat) {\r\n _this.currentChat(chat);\r\n chat.unreadCount(0);\r\n refreshMessages();\r\n }\r\n else {\r\n ajaxUtils_1.AjaxUtils.get(\"pm/privateChat\", { userId: contact.userId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n var chat = new PrivateChat(result.data, _this);\r\n _this.recentChats.push(chat);\r\n _this.currentChat(chat);\r\n refreshMessages();\r\n });\r\n }\r\n };\r\n this.sendMessage = function () {\r\n var messageText = _this.messageText();\r\n if (messageText === null || messageText === undefined || messageText.length === 0) {\r\n return;\r\n }\r\n if (_this.processing()) {\r\n return;\r\n }\r\n var chat = _this.currentChat();\r\n if (!chat)\r\n return;\r\n _this.processing(true);\r\n var messageData = {\r\n chatId: chat.id,\r\n text: messageText\r\n };\r\n var editingMessage = _this.editingMessage();\r\n if (editingMessage) {\r\n messageData.id = editingMessage.id;\r\n }\r\n ajaxUtils_1.AjaxUtils.post(\"pm/sendMessage\", messageData).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n //if (editingMessage && chat.lastMessageId ==) {\r\n // chat.lastMessageText(StringUtils.clearFromTags(messageText));\r\n //}\r\n _this.messageText(\"\");\r\n _this.editingMessage(null);\r\n _this.selectedMessages([]);\r\n }).always(function () {\r\n setTimeout(function () {\r\n _this.processing(false);\r\n }, 100);\r\n });\r\n };\r\n this.selectMessage = function (message, event) {\r\n if ($(event.target).is(\"a\"))\r\n return true;\r\n if (_this.editingMessage())\r\n return true;\r\n if (!message.allowEdit())\r\n return true;\r\n var alreadySelected = _this.selectedMessages().indexOf(message) !== -1;\r\n if (alreadySelected) {\r\n _this.selectedMessages.remove(message);\r\n }\r\n else {\r\n _this.selectedMessages.push(message);\r\n }\r\n };\r\n this.clearSelection = function () {\r\n _this.selectedMessages([]);\r\n };\r\n this.showTextForm = ko.pureComputed(function () {\r\n var chat = _this.currentChat();\r\n var editingMessage = _this.editingMessage();\r\n var messages = _this.selectedMessages();\r\n if (!chat || !chat.allowSendPM() || (chat.unavailableMessage()))\r\n return false;\r\n if (editingMessage)\r\n return true;\r\n return messages.length === 0;\r\n });\r\n this.editMessage = function () {\r\n var selectedMessages = _this.selectedMessages();\r\n if (selectedMessages.length !== 1)\r\n return;\r\n var messageText = _this.messageText();\r\n if (messageText && messageText.trim().length > 0) {\r\n _this.showModal({\r\n title: \"Требуется подтверждение\",\r\n message: \"\\u0423 \\u0432\\u0430\\u0441 \\u0435\\u0441\\u0442\\u044C \\u043D\\u0435\\u043E\\u0442\\u043F\\u0440\\u0430\\u0432\\u043B\\u0435\\u043D\\u043D\\u043E\\u0435 \\u0441\\u043E\\u043E\\u0431\\u0449\\u0435\\u043D\\u0438\\u0435, \\u043A\\u043E\\u0442\\u043E\\u0440\\u043E\\u0435 \\u0431\\u0443\\u0434\\u0435\\u0442 \\u0443\\u0442\\u0435\\u0440\\u044F\\u043D\\u043E. \\u041F\\u0440\\u043E\\u0434\\u043E\\u043B\\u0436\\u0438\\u0442\\u044C?\",\r\n type: modalDialog_1.ModalType.Confirm,\r\n onSubmit: function () {\r\n _this.startEditingMessage();\r\n _this.modal.hide();\r\n }\r\n });\r\n }\r\n else {\r\n _this.startEditingMessage();\r\n }\r\n };\r\n this.editingMessage = ko.observable();\r\n this.cancelEditingMessage = function () {\r\n _this.editingMessage(null);\r\n _this.messageText(\"\");\r\n _this.selectedMessages([]);\r\n };\r\n this.userAvatarUrl = options.userAvatarUrl;\r\n this.isCurrentUserUnavailable = options.isCurrentUserUnavailable;\r\n this.loadRecentChats();\r\n $(function () {\r\n _this.$pmMessages = $(\".pm-messages\");\r\n _this.$pmMessages.nanoScroller();\r\n var formHeigth = $(\".send-message-form\").height();\r\n _this.messageText.subscribe(function () {\r\n var newHeight = $(\".send-message-form\").height();\r\n if (newHeight === formHeigth)\r\n return;\r\n setTimeout(function () { return _this.resizeControls(); }, 100);\r\n });\r\n $(window).on(\"resize\", function () {\r\n _this.resizeControls();\r\n });\r\n _this.$pmMessages.on(\"update\", function (event, values) {\r\n if (_this.moreData && values.position === 0 && !_this.isLoading()) {\r\n _this.loadMessages(\"more\");\r\n }\r\n });\r\n });\r\n }\r\n ViewModel.prototype.resizeControls = function (withoutScroll) {\r\n if (withoutScroll === void 0) { withoutScroll = false; }\r\n this.$pmMessages = $(\".pm-messages\");\r\n if (!this.$pmMessages[0])\r\n return;\r\n var formHeight = $(\"#footer\").height();\r\n var newHeight = $(\".dialog\").height() - 75 - formHeight;\r\n this.$pmMessages.css(\"height\", newHeight);\r\n this.$pmMessages.nanoScroller();\r\n //this.$pmMessages.nanoScroller({ scroll: \"bottom\" });\r\n };\r\n ViewModel.prototype.initRouting = function () {\r\n var _this = this;\r\n var routes = {\r\n \":id\": function (id) {\r\n if (_this.currentId == id) {\r\n return;\r\n }\r\n _this.currentId = id;\r\n if (typeof id === \"string\" && id.indexOf(\"g\") === 0) {\r\n }\r\n else {\r\n var userId = parseInt(id);\r\n _this.currentChat(null);\r\n // Проверяем список чатов\r\n var chat = _.find(_this.recentChats(), function (c) {\r\n return !c.isGroup && c.userId === userId;\r\n });\r\n if (chat) {\r\n _this.selectChat(chat);\r\n return;\r\n }\r\n // Если не нашли ничего\r\n ajaxUtils_1.AjaxUtils.get(\"pm/privateChat\", { userId: userId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n var chat = new PrivateChat(result.data, _this);\r\n _this.recentChats.push(chat);\r\n _this.selectChat(chat);\r\n });\r\n }\r\n }\r\n };\r\n this.router = director.Router(routes);\r\n this.router.init();\r\n };\r\n ViewModel.prototype.onIsOnline = function (userId) {\r\n _.each(this.recentChats(), function (c) {\r\n if (!c.isGroup && c.userId === userId) {\r\n c.lastActivity(moment.utc());\r\n }\r\n });\r\n };\r\n ;\r\n ViewModel.prototype.onNewMessage = function (message) {\r\n var _this = this;\r\n var currentChat = this.currentChat();\r\n var chat = _.find(this.recentChats(), function (c) {\r\n return c.id === message.chatId;\r\n });\r\n if (chat) {\r\n chat.lastMessageId(message.id);\r\n chat.lastMessageUserId(message.userId);\r\n chat.lastMessageText(stringUtils_1.default.clearFromTags(message.text));\r\n chat.lastMessageSentTime(moment(message.sentTime).toDate());\r\n }\r\n // Добавляем сообщение в текущий диалог, и помечаем как прочитанное\r\n if (currentChat && chat && currentChat.id === chat.id) {\r\n if (message.userId === this.currentUserId) {\r\n message.allowEdit = true;\r\n }\r\n this.messages.push(this.toMessage(message));\r\n setTimeout(function () {\r\n _this.$pmMessages.nanoScroller();\r\n _this.$pmMessages.nanoScroller({ scroll: \"bottom\" });\r\n var messages = _this.$pmMessages.find(\".message\");\r\n imageZoomUtils_1.default.init(messages[messages.length - 1]);\r\n }, 50);\r\n if (message.userId !== this.currentUserId) {\r\n ajaxUtils_1.AjaxUtils.post(\"pm/markAsRead\", { id: chat.id });\r\n }\r\n return;\r\n }\r\n this.reloadNotificationCount();\r\n if (chat) {\r\n if (message.userId !== this.currentUserId) {\r\n chat.unreadCount(chat.unreadCount() + 1);\r\n chat.lastActivity(new Date());\r\n }\r\n }\r\n else {\r\n if (!message.isGroupChat) {\r\n // Если не нашли ничего\r\n ajaxUtils_1.AjaxUtils.get(\"pm/privateChat\", { userId: message.userId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n var chat = new PrivateChat(result.data, _this);\r\n _this.recentChats.push(chat);\r\n });\r\n }\r\n else {\r\n }\r\n }\r\n };\r\n ViewModel.prototype.messageUpdate = function (message) {\r\n var currentChat = this.currentChat();\r\n var chat = _.find(this.recentChats(), function (c) {\r\n return c.id === message.chatId;\r\n });\r\n if (currentChat && chat && currentChat.id === chat.id) {\r\n var messageToUpdate = _.find(this.messages(), function (x) { return x.id === message.id; });\r\n if (messageToUpdate) {\r\n messageToUpdate.text(message.text);\r\n messageToUpdate.lastModificationTime(message.lastModificationTime);\r\n setTimeout(function () {\r\n var messages = $(\".message\");\r\n imageZoomUtils_1.default.init(messages[messages.length - 1]);\r\n }, 50);\r\n }\r\n }\r\n };\r\n ViewModel.prototype.loadRecentChats = function () {\r\n var _this = this;\r\n if (!this.moreChats()) {\r\n return;\r\n }\r\n ajaxUtils_1.AjaxUtils.get(\"pm/recentChats\", { page: this.recentChatsPage })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n var chats = _.map(result.data.chats, function (i) {\r\n return i.isGroup ? new GroupChat(i, _this) : new PrivateChat(i, _this);\r\n });\r\n ko.utils.arrayPushAll(_this.recentChats, chats);\r\n setTimeout(function () {\r\n $(\".contact-list\").nanoScroller();\r\n }, 0);\r\n _this.moreChats(result.data.more);\r\n _this.recentChatsPage++;\r\n if (!_this.isConnected()) {\r\n var hub = $.connection[\"notificationHub\"];\r\n hub.client.chatNewMessage = function (message) {\r\n _this.onNewMessage(message);\r\n var pmTabId = webSocketUtils_1.default.getPMTabId();\r\n if (webSocketUtils_1.default.html5NotificationPermision === \"granted\"\r\n && (app.activePage == null || app.activePage.indexOf(\"/pm\") === -1)\r\n && message.userId !== app.userId) {\r\n var notification = new Notification(\"Личное сообщение от \" + message.userFIO, {\r\n body: stringUtils_1.default.clearFromTags(ko.unwrap(message.text)).replace(//gi, \" \"),\r\n dir: \"auto\",\r\n tag: \"PMMessage\",\r\n icon: app.rootUrl + \"dist/images/logo.png\"\r\n });\r\n var url = app.rootUrl + \"pm#\" + message.userId;\r\n if (pmTabId !== null) {\r\n notification.onclick = function () {\r\n crosstab.broadcast(\"focusPage\", { url: url }, pmTabId);\r\n notification.close();\r\n };\r\n }\r\n else {\r\n notification.onclick = function () {\r\n window.open(url);\r\n notification.close();\r\n };\r\n }\r\n }\r\n };\r\n hub.client.chatMessageUpdate = function (message) {\r\n _this.messageUpdate(message);\r\n };\r\n hub.client.isOnline = function (message) {\r\n _this.onIsOnline(message);\r\n };\r\n $.connection.hub.start({ transport: [\"webSockets\", \"longPolling\"] })\r\n .done(function () {\r\n _this.isConnected(true);\r\n console.log(\"Connected, transport: \" + $.connection.hub.transport.name + \", connection ID: \" + hub.connection.id);\r\n });\r\n $.connection.hub.disconnected(function () {\r\n _this.isConnected(false);\r\n console.log(\"Disconnected.\");\r\n setTimeout(function () {\r\n $.connection.hub.start({ transport: [\"webSockets\", \"longPolling\"] })\r\n .done(function () {\r\n _this.isConnected(true);\r\n console.log(\"Connected, transport: \" + $.connection.hub.transport\r\n .name + \", connection ID: \" + hub.connection.id);\r\n });\r\n }, 3000);\r\n });\r\n _this.initRouting();\r\n }\r\n });\r\n };\r\n ViewModel.prototype.loadMessages = function (scrollDown) {\r\n var _this = this;\r\n if (this.currentAjaxRequest) {\r\n this.currentAjaxRequest.abort();\r\n }\r\n var chat = this.currentChat();\r\n if (!chat)\r\n return;\r\n this.isLoading(scrollDown);\r\n nprogress.start();\r\n var $lastMessage = $(\".message\").get(0);\r\n this.currentAjaxRequest = ajaxUtils_1.AjaxUtils.get(\"pm/messages\", {\r\n id: chat.id,\r\n page: this.page\r\n })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.reloadNotificationCount();\r\n _this.moreData = result.data.more;\r\n _this.page++;\r\n var messages = _.map(result.data.messages, function (i) { return _this.toMessage(i); });\r\n _.each(messages, function (m) {\r\n _this.messages.unshift(m);\r\n });\r\n setTimeout(function () {\r\n _this.$pmMessages = $(\".pm-messages\");\r\n _this.$pmMessages.nanoScroller();\r\n if (scrollDown !== \"more\") {\r\n _this.$pmMessages[\"imagesLoaded\"]()\r\n .always(function () {\r\n setTimeout(function () {\r\n _this.$pmMessages.nanoScroller({ alwaysVisible: true });\r\n _this.$pmMessages.nanoScroller({ scroll: \"bottom\" });\r\n }, 100);\r\n });\r\n _this.$pmMessages.nanoScroller({ scroll: \"bottom\" });\r\n }\r\n else {\r\n _this.$pmMessages.nanoScroller({ scrollTo: $lastMessage });\r\n }\r\n _this.isLoading(false);\r\n nprogress.done();\r\n imageZoomUtils_1.default.init(_this.$pmMessages);\r\n }, 0);\r\n });\r\n };\r\n ViewModel.prototype.reloadNotificationCount = function () {\r\n var component = window[\"AppComponents\"].Notifications;\r\n if (component) {\r\n component.reload();\r\n }\r\n };\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n this.searchQuery(\"\");\r\n };\r\n ViewModel.prototype.startEditingMessage = function () {\r\n var _this = this;\r\n var message = this.selectedMessages()[0];\r\n var originalText = richContentUtils_1.default.replaceEmoji(message.text());\r\n this.editingMessage(message);\r\n setTimeout(function () {\r\n _this.messageText(originalText);\r\n $(\".send-message-form textarea\").froalaEditor(\"events.focus\");\r\n });\r\n };\r\n ViewModel.prototype.toMessage = function (data) {\r\n data.isMy = data.userId === this.currentUserId;\r\n data.text = ko.observable(data.text);\r\n if (data.state === 1) {\r\n data.state = \"Default\";\r\n }\r\n data.state = ko.observable(data.state);\r\n data.allowEdit = ko.observable(data.allowEdit);\r\n data.lastModificationTime = ko.observable(data.lastModificationTime);\r\n return data;\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=pmIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"moment\", \"jquery.countdown\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\", \"../utils/windowUtils\", \"../utils/stringUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n require(\"jquery.countdown\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var windowUtils_1 = require(\"../utils/windowUtils\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.titleMaxLength = 100;\r\n this.categoryId = ko.observable().extend({\r\n required: true\r\n });\r\n this.title = ko.observable().extend({\r\n required: true,\r\n maxLength: this.titleMaxLength\r\n });\r\n this.titleHint = ko.pureComputed(function () {\r\n var title = _this.title() || \"\";\r\n var characters = title.length;\r\n return characters + \"/\" + _this.titleMaxLength;\r\n });\r\n this.text = ko.observable().extend({\r\n required: true\r\n });\r\n this.tags = ko.observableArray(this.options.tags || []).extend({\r\n maxLength: { params: 5, message: \"До 5-ти тэгов через запятую, разрешены пробелы\" }\r\n });\r\n this.tagsSelect2Settings = {\r\n placeholder: 'До 5 тэгов через запятую...',\r\n tags: true, ajax: {\r\n url: window[\"app\"].rootUrl + \"post/searchTags\",\r\n dataType: \"json\",\r\n tokenSeparators: [\",\"],\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n q: params.term,\r\n page: params.page\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.title,\r\n text: x.title,\r\n count: x.count\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n },\r\n tokenSeparators: [','],\r\n maximumSelectionLength: 5,\r\n language: {\r\n maximumSelected: function () { return 'Вы можете выбрать не более 5 тэгов.'; }\r\n },\r\n escapeMarkup: function (markup) { return markup; },\r\n templateResult: function (item) {\r\n if (item.loading) {\r\n return item.text;\r\n }\r\n item.count = item.count || 0;\r\n var markup = \"
\\\r\n
\" + item.text + \"
\\\r\n
\" + item.count + \"
\\\r\n
\";\r\n return markup;\r\n }\r\n };\r\n this.privacyDisplayId = ko.observable();\r\n this.privacyDisplayOptions = [\r\n { id: 1, title: \"Все (пост виден в общей ленте)\" },\r\n { id: 2, title: \"Друзья и подписчики\" },\r\n { id: 3, title: \"Только друзья\" }\r\n ];\r\n this.privacyCommentsId = ko.observable();\r\n this.privacyCommentsOptions = ko.observableArray();\r\n this.postEditorsEnabled = ko.observable(this.options.postEditorIds && this.options.postEditorIds.length > 0);\r\n this.postEditorIds = ko.observableArray(this.options.postEditorIds || []);\r\n this.postEditors = ko.observableArray(this.options.postEditors);\r\n this.postEditorIdsSelect2Settings = {\r\n placeholder: \"Выберите от одного до трех редакторов\",\r\n minimumResultsForSearch: 5,\r\n maximumSelectionLength: 3,\r\n language: {\r\n maximumSelected: function () { return \"Вы можете выбрать не более трех редакторов.\"; }\r\n },\r\n ajax: {\r\n url: window[\"app\"].rootUrl + \"account/searchUser\",\r\n dataType: \"json\",\r\n tokenSeparators: [\",\"],\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n userId: _this.options.authorId,\r\n q: params.term,\r\n page: params.page\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.userId,\r\n text: x.fio + \" @\" + x.userName\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n }\r\n };\r\n this.id = options.id;\r\n this.titleInit = options.titleInit;\r\n this.postEditorsEnabled(options.postEditorsEnabled);\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 100);\r\n ko.computed(function () {\r\n var title = _this.title() || \"\";\r\n if (stringUtils_1.default.compareWithoutLineBreaks(title, _this.titleInit)) {\r\n windowUtils_1.default.setDirty();\r\n }\r\n else {\r\n windowUtils_1.default.setDirty(false);\r\n }\r\n });\r\n this.postEditorsEnabled.subscribe(function (value) {\r\n $(\"#postEditorsEnabledInfo\").collapse(value ? \"show\" : \"hide\");\r\n });\r\n if (options.nextGlobalFlowPostTime) {\r\n $(\"#globalFlowPostCountDown\")[\"countdown\"](moment(options.nextGlobalFlowPostTime).toDate(), function (event) {\r\n $(this).html(event.strftime(\"%H:%M:%S\"));\r\n });\r\n }\r\n this.errorMessages.subscribe(function (newValue) {\r\n if (newValue && newValue.length) {\r\n $(\"html, body\").stop().animate({ scrollTop: 0 }, \"fast\");\r\n }\r\n });\r\n this.privacyDisplayId.subscribe(function (id) {\r\n if (id === 1) {\r\n _this.privacyCommentsOptions([\r\n { id: 1, title: \"Все\" },\r\n { id: 2, title: \"Только друзья\" },\r\n { id: 0, title: \"Никто\" }\r\n ]);\r\n if (_this.privacyCommentsId() === 2) {\r\n _this.privacyCommentsId(1);\r\n }\r\n }\r\n else if (id === 2) {\r\n _this.privacyCommentsOptions([\r\n { id: 1, title: \"Друзья и подписчики\" },\r\n { id: 2, title: \"Только друзья\" },\r\n { id: 0, title: \"Никто\" }\r\n ]);\r\n if (_this.privacyCommentsId() === 2) {\r\n _this.privacyCommentsId(1);\r\n }\r\n }\r\n else {\r\n _this.privacyCommentsOptions([\r\n { id: 2, title: \"Только друзья\" },\r\n { id: 0, title: \"Никто\" }\r\n ]);\r\n }\r\n });\r\n this.privacyDisplayId(options.privacyDisplayId);\r\n setTimeout(function () {\r\n _this.privacyCommentsId(options.privacyCommentsId);\r\n });\r\n }\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n };\r\n ViewModel.prototype.showDeletePostModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление поста\",\r\n message: \"Вы точно хотите удалить этот пост?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"post/delete\", {\r\n id: _this.id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.forceRedirectToPage(result.data.redirectUrl);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=postEdit.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"../utils/ajaxUtils\", \"./commentsView\", \"../utils/socialUtils\", \"../utils/richContentUtils\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var commentsView_1 = require(\"./commentsView\");\r\n var socialUtils_1 = require(\"../utils/socialUtils\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n socialUtils_1.default.init();\r\n richContentUtils_1.default.processHtml(\".full-post\");\r\n this.initVotesInfo();\r\n this.loadComments(null, null, false);\r\n }\r\n ViewModel.prototype.initVotesInfo = function () {\r\n var _this = this;\r\n var el = $(\"#postVotes\");\r\n el.find(\".dropdown-toggle\").on(\"click\", function (e) {\r\n var container = $(e.target).parent();\r\n var spinner = container.find(\".widget-spinner\");\r\n if (spinner.length == 0) {\r\n return;\r\n }\r\n spinner.show();\r\n ajaxUtils_1.AjaxUtils.get(\"post/votes\", { postId: _this.options.postId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n container.find(\".dropdown-menu\").html(result.data.html);\r\n dateTimeUtils_1.default.displayTime(container);\r\n })\r\n .always(function () {\r\n spinner.hide();\r\n });\r\n });\r\n };\r\n return ViewModel;\r\n }(commentsView_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=postView.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"moment\", \"./base/baseViewModel\", \"../utils/richContentUtils\", \"../utils/postUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var postUtils_1 = require(\"../utils/postUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.startDate = ko.observable(moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate = ko.observable(moment().endOf(\"day\"));\r\n this.searchQuery = ko.observable(this.options.query);\r\n this.searchQueryHasFocus = ko.observable(false);\r\n this.submitQuery = this.options.query;\r\n this.dateRangePickerOptions = {\r\n ranges: {\r\n 'За сегодня': [moment().startOf(\"day\"), moment().endOf(\"day\")],\r\n 'За неделю': [moment().startOf(\"day\").add(-6, \"days\"), moment().endOf(\"day\")],\r\n 'За месяц': [moment().startOf(\"day\").add(-30, \"days\"), moment().endOf(\"day\")]\r\n }\r\n };\r\n this.isLoading = ko.observable(true);\r\n this.filterData = ko.computed(function () {\r\n var filterData = {\r\n from: moment(_this.startDate()).format(\"YYYY-MM-DD\"),\r\n to: moment(_this.endDate()).format(\"YYYY-MM-DD\")\r\n };\r\n return filterData;\r\n });\r\n if (options.startDate && options.endDate) {\r\n this.startDate(moment(options.startDate).local().startOf(\"day\"));\r\n this.endDate(moment(options.endDate).local().endOf(\"day\"));\r\n }\r\n richContentUtils_1.default.processHtml(\".posts\");\r\n setTimeout(function () {\r\n _this.filterData.subscribe(function (data) {\r\n var filterData = $.param(data);\r\n var url = window.location.pathname + \"?\" + filterData;\r\n _this.redirectToPage(url);\r\n });\r\n }, 100);\r\n $(document).on(\"submit.search\", \"form[data-pjax]\", function (event) {\r\n if (_this.submitQuery !== _this.searchQuery()) {\r\n _this.submitQuery = _this.searchQuery();\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n }\r\n return false;\r\n });\r\n postUtils_1.default.startViewStatsCollector();\r\n richContentUtils_1.default.processHtml(\"#search-results\");\r\n }\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n if (this.searchQuery().length === 0) {\r\n $(\".search-form\").removeClass(\"open\");\r\n return;\r\n }\r\n this.searchQuery(\"\");\r\n setTimeout(function () {\r\n $(\".search-form\").submit();\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=postsIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=postsSettings.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/validatedViewModel\", \"../utils/richContentUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n richContentUtils_1.default.processHtml(\".award-description\");\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileAwards.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"./base/baseViewModel\", \"../utils/richContentUtils\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.searchQuery = ko.observable(this.options.query);\r\n this.searchQueryHasFocus = ko.observable(false);\r\n this.submitQuery = this.options.query || \"\";\r\n this.isClearBtn = false;\r\n this.showDeleted = ko.observable();\r\n $(document).on(\"submit.search\", \"form[data-pjax]\", function (event) {\r\n if (!_this.isClearBtn || _this.submitQuery !== _this.searchQuery()) {\r\n _this.submitQuery = _this.searchQuery();\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n }\r\n _this.isClearBtn = false;\r\n return false;\r\n });\r\n richContentUtils_1.default.processHtml(\"#search-results\");\r\n setTimeout(function () {\r\n _this.showDeleted.subscribe(function () {\r\n $(\".search-form\").submit();\r\n });\r\n }, 200);\r\n this.showDeleted(this.options.showDeleted);\r\n $('#search-results').on('pjax:success', function () {\r\n dateTimeUtils_1.default.displayTime($(\"#search-results\"));\r\n });\r\n }\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n var _this = this;\r\n if (this.searchQuery().length === 0) {\r\n $(\".search-form\").removeClass(\"open\");\r\n return;\r\n }\r\n this.searchQuery(\"\");\r\n setTimeout(function () {\r\n _this.isClearBtn = true;\r\n $(\".search-form\").submit();\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileBaseEditPage.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/validatedViewModel\", \"../utils/commentUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var commentUtils_1 = require(\"../utils/commentUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n commentUtils_1.default.init(null);\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileComments.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"drop\", \"./base/validatedViewModel\", \"../utils/ajaxUtils\", \"../utils/richContentUtils\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var Drop = require(\"drop\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.searchQuery = ko.observable(this.options.query);\r\n this.searchQueryHasFocus = ko.observable(false);\r\n this.submitQuery = ko.observable(\"\");\r\n this.isClearBtn = false;\r\n this.isEnableSortingToggled = false;\r\n this.showDeleted = ko.observable();\r\n this.enableSorting = ko.observable();\r\n this.currentSortIndex = ko.observable();\r\n this.newSortIndex = ko.observable();\r\n this.moveToIndex = function (currentIndex, newIndex) {\r\n if (_this.processing())\r\n return;\r\n if (isNaN(Number(newIndex)) || newIndex < 0 || isNaN(Number(currentIndex)) || currentIndex < 0) {\r\n alert('Значение должно быть числом');\r\n return;\r\n }\r\n if (newIndex == currentIndex) {\r\n _this.closeAllDrop();\r\n return;\r\n }\r\n _this.reoderWorks(newIndex, currentIndex);\r\n };\r\n this.moveTo = function () {\r\n if (_this.processing())\r\n return;\r\n var newIndex = _this.newSortIndex() - 1, currentIndex = _this.currentSortIndex();\r\n if (isNaN(Number(newIndex)) || newIndex < 0 || isNaN(Number(currentIndex)) || currentIndex < 0) {\r\n alert('Значение должно быть числом');\r\n return;\r\n }\r\n if (newIndex == currentIndex) {\r\n _this.closeAllDrop();\r\n return;\r\n }\r\n _this.reoderWorks(newIndex, currentIndex);\r\n };\r\n this.moveUp = function (index) {\r\n if (_this.processing())\r\n return;\r\n index = ko.unwrap(index);\r\n var newIndex = index;\r\n if (index === 0) {\r\n newIndex = _this.options.totalCount - 1;\r\n }\r\n else {\r\n newIndex--;\r\n }\r\n _this.reoderWorks(newIndex, index);\r\n };\r\n this.moveDown = function (index) {\r\n if (_this.processing())\r\n return;\r\n index = ko.unwrap(index);\r\n var newIndex = index;\r\n if (index === _this.options.totalCount - 1) {\r\n newIndex = 0;\r\n }\r\n else {\r\n newIndex++;\r\n }\r\n _this.reoderWorks(newIndex, index);\r\n };\r\n this.currentPage = options.currentPage;\r\n $(document).off(\"submit\", \"form[data-pjax]\");\r\n $(document).on(\"submit.search\", \"form[data-pjax]\", function (event) {\r\n if (!_this.isClearBtn || _this.submitQuery() !== _this.searchQuery()) {\r\n _this.submitQuery(_this.searchQuery());\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n }\r\n _this.isClearBtn = false;\r\n return false;\r\n });\r\n richContentUtils_1.default.processHtml(\"#search-results\");\r\n setTimeout(function () {\r\n _this.showDeleted.subscribe(function () {\r\n $(\".search-form\").submit();\r\n });\r\n _this.enableSorting.subscribe(function () {\r\n _this.isEnableSortingToggled = true;\r\n $(\".search-form\").submit();\r\n });\r\n }, 200);\r\n this.showDeleted(this.options.showDeleted);\r\n this.enableSorting(this.options.enableSorting);\r\n this.initChangeOrderDrodown();\r\n var self = this;\r\n $('#search-results').on('pjax:success', function () {\r\n self.initChangeOrderDrodown();\r\n dateTimeUtils_1.default.displayTime($(\"#search-results\"));\r\n });\r\n $('#search-results').on('pjax:beforeSend', function (event, xhr, options) {\r\n if (self.isEnableSortingToggled) {\r\n options.url += \"&page=\" + _this.currentPage;\r\n self.isEnableSortingToggled = false;\r\n }\r\n });\r\n }\r\n ViewModel.prototype.initChangeOrderDrodown = function () {\r\n var _this = this;\r\n var changeOrderDrodown = document.getElementById(\"work-order-dropdown\").innerHTML;\r\n $(\".art-wrapper\").each(function (i, el) {\r\n var $el = $(el), $changeOrderBtn = $el.find(\".change-order-btn\");\r\n if (!$changeOrderBtn.length) {\r\n return;\r\n }\r\n var drop = new Drop({\r\n target: $changeOrderBtn[0],\r\n content: function () {\r\n var $content = $(\"
\").html(changeOrderDrodown);\r\n ko.applyBindingsToDescendants(_this, $content[0]);\r\n return $content[0];\r\n },\r\n /*openOn: \"hover\",*/\r\n hoverCloseDelay: 150,\r\n constrainToScrollParent: true,\r\n tetherOptions: {\r\n attachment: \"top center\",\r\n targetAttachment: \"bottom center\",\r\n constraints: [\r\n {\r\n to: \"window\",\r\n attachment: \"together\",\r\n pin: true\r\n }\r\n ]\r\n }\r\n });\r\n drop.on(\"open\", function () {\r\n var order = JSON.parse($el.attr(\"data-order\"));\r\n _this.currentSortIndex(order);\r\n _this.newSortIndex(order + 1);\r\n $el.addClass('hover');\r\n drop.position();\r\n });\r\n drop.on(\"close\", function () {\r\n $el.removeClass('hover');\r\n });\r\n $changeOrderBtn.data(\"drop\", drop);\r\n });\r\n };\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n var _this = this;\r\n if (this.searchQuery().length === 0) {\r\n $(\".search-form\").removeClass(\"open\");\r\n return;\r\n }\r\n this.searchQuery(\"\");\r\n setTimeout(function () {\r\n _this.isClearBtn = true;\r\n $(\".search-form\").submit();\r\n });\r\n };\r\n ViewModel.prototype.reoderWorks = function (newIndex, oldIndex) {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"art/reoder\", {\r\n profileId: this.options.profileId,\r\n newIndex: newIndex,\r\n oldIndex: oldIndex\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.closeAllDrop();\r\n toastr.success(result.messages[0]);\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n ViewModel.prototype.closeAllDrop = function () {\r\n var drop = $(\".drop-enabled\").data(\"drop\");\r\n if (drop) {\r\n drop.close();\r\n }\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileEditArts.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.enableSorting = ko.observable();\r\n this.moveUp = function (index) {\r\n if (_this.processing())\r\n return;\r\n index = ko.unwrap(index);\r\n var newIndex = index;\r\n if (index === 0) {\r\n newIndex = _this.options.totalCount - 1;\r\n }\r\n else {\r\n newIndex--;\r\n }\r\n _this.reoderWorks(newIndex, index);\r\n };\r\n this.moveDown = function (index) {\r\n if (_this.processing())\r\n return;\r\n index = ko.unwrap(index);\r\n var newIndex = index;\r\n if (index === _this.totalCount - 1) {\r\n newIndex = 0;\r\n }\r\n else {\r\n newIndex++;\r\n }\r\n _this.reoderWorks(newIndex, index);\r\n };\r\n this.totalCount = options.totalCount;\r\n this.profileId = options.profileId;\r\n $(document).off(\"submit\", \"form[data-pjax]\");\r\n $(document).on(\"submit.search\", \"form[data-pjax]\", function (event) {\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n return false;\r\n });\r\n setTimeout(function () {\r\n _this.enableSorting.subscribe(function () {\r\n $(\".search-form\").submit();\r\n });\r\n }, 200);\r\n this.enableSorting(options.enableSorting);\r\n }\r\n ViewModel.prototype.showDeleteSeriesModal = function (id, title) {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление цикла произведений\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0446\\u0438\\u043A\\u043B \\u00AB\" + title + \"\\u00BB?\",\r\n minWidth: \"300px\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"work/series/delete\", {\r\n id: id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n _this.modal.hide();\r\n $(\"#series_\" + id).fadeOut(\"normal\", function () {\r\n $(this).remove();\r\n });\r\n _this.reloadPage();\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.reoderWorks = function (newIndex, oldIndex) {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/series/reoder\", {\r\n profileId: this.profileId,\r\n newIndex: newIndex,\r\n oldIndex: oldIndex\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileEditWorkSeries.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"drop\", \"./base/validatedViewModel\", \"../utils/ajaxUtils\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var Drop = require(\"drop\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.searchQuery = ko.observable(this.options.query);\r\n this.searchQueryHasFocus = ko.observable(false);\r\n this.submitQuery = ko.observable(\"\");\r\n this.isClearBtn = false;\r\n this.isEnableSortingToggled = false;\r\n this.currentSortIndex = ko.observable();\r\n this.newSortIndex = ko.observable();\r\n this.showDeleted = ko.observable();\r\n this.enableSorting = ko.observable();\r\n this.moveToIndex = function (currentIndex, newIndex) {\r\n if (_this.processing())\r\n return;\r\n if (isNaN(Number(newIndex)) || newIndex < 0 || isNaN(Number(currentIndex)) || currentIndex < 0) {\r\n alert('Значение должно быть числом');\r\n return;\r\n }\r\n if (newIndex == currentIndex) {\r\n _this.closeAllDrop();\r\n return;\r\n }\r\n ;\r\n _this.reoderWorks(newIndex, currentIndex);\r\n };\r\n this.moveTo = function () {\r\n if (_this.processing())\r\n return;\r\n var newIndex = _this.newSortIndex() - 1, currentIndex = _this.currentSortIndex();\r\n if (isNaN(Number(newIndex)) || newIndex < 0 || isNaN(Number(currentIndex)) || currentIndex < 0) {\r\n alert('Значение должно быть числом');\r\n return;\r\n }\r\n if (newIndex == currentIndex) {\r\n _this.closeAllDrop();\r\n return;\r\n }\r\n _this.reoderWorks(newIndex, currentIndex);\r\n };\r\n this.moveUp = function (index) {\r\n if (_this.processing())\r\n return;\r\n index = ko.unwrap(index);\r\n var newIndex = index;\r\n if (index === 0) {\r\n newIndex = _this.options.totalCount - 1;\r\n }\r\n else {\r\n newIndex--;\r\n }\r\n _this.reoderWorks(newIndex, index);\r\n };\r\n this.moveDown = function (index) {\r\n if (_this.processing())\r\n return;\r\n index = ko.unwrap(index);\r\n var newIndex = index;\r\n if (index === _this.totalCount - 1) {\r\n newIndex = 0;\r\n }\r\n else if (index === _this.pageSize - 1) {\r\n if (_this.totalCount > _this.pageSize) {\r\n newIndex++;\r\n }\r\n else {\r\n newIndex = 0;\r\n }\r\n }\r\n else {\r\n newIndex++;\r\n }\r\n _this.reoderWorks(newIndex, index);\r\n };\r\n this.totalCount = options.totalCount;\r\n this.pageSize = options.pageSize;\r\n this.profileId = options.profileId;\r\n this.currentPage = options.currentPage;\r\n $(document).off(\"submit\", \"form[data-pjax]\");\r\n $(document).on(\"submit.search\", \"form[data-pjax]\", function (event) {\r\n if (!_this.isClearBtn || _this.submitQuery() !== _this.searchQuery()) {\r\n _this.submitQuery(_this.searchQuery());\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n }\r\n _this.isClearBtn = false;\r\n return false;\r\n });\r\n setTimeout(function () {\r\n _this.showDeleted.subscribe(function () {\r\n $(\".search-form\").submit();\r\n });\r\n _this.enableSorting.subscribe(function () {\r\n _this.isEnableSortingToggled = true;\r\n $(\".search-form\").submit();\r\n });\r\n }, 200);\r\n this.showDeleted(this.options.showDeleted);\r\n this.enableSorting(this.options.enableSorting);\r\n this.initChangeOrderDrodown();\r\n var self = this;\r\n $('#search-results').on('pjax:success', function () {\r\n self.initChangeOrderDrodown();\r\n dateTimeUtils_1.default.displayTime($(\"#search-results\"));\r\n });\r\n $('#search-results').on('pjax:beforeSend', function (event, xhr, options) {\r\n if (self.isEnableSortingToggled) {\r\n options.url += \"&page=\" + _this.currentPage;\r\n self.isEnableSortingToggled = false;\r\n }\r\n });\r\n }\r\n ViewModel.prototype.reoderWorks = function (newIndex, oldIndex) {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/reoder\", {\r\n profileId: this.profileId,\r\n newIndex: newIndex,\r\n oldIndex: oldIndex\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n _this.closeAllDrop();\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n ViewModel.prototype.initChangeOrderDrodown = function () {\r\n var _this = this;\r\n var changeOrderDrodown = document.getElementById(\"work-order-dropdown\").innerHTML;\r\n $(\".book-row\").each(function (i, el) {\r\n var $el = $(el), $changeOrderBtn = $el.find(\".change-order-btn\");\r\n if (!$changeOrderBtn.length) {\r\n return;\r\n }\r\n var drop = new Drop({\r\n target: $changeOrderBtn[0],\r\n content: function () {\r\n var $content = $(\"
\").html(changeOrderDrodown);\r\n ko.applyBindingsToDescendants(_this, $content[0]);\r\n return $content[0];\r\n },\r\n /*openOn: \"hover\",*/\r\n hoverCloseDelay: 150,\r\n constrainToScrollParent: true,\r\n tetherOptions: {\r\n attachment: \"top center\",\r\n targetAttachment: \"bottom center\",\r\n constraints: [\r\n {\r\n to: \"window\",\r\n attachment: \"together\",\r\n pin: true\r\n }\r\n ]\r\n }\r\n });\r\n drop.on(\"open\", function () {\r\n var order = JSON.parse($el.attr(\"data-order\"));\r\n _this.currentSortIndex(order);\r\n _this.newSortIndex(order + 1);\r\n drop.position();\r\n });\r\n $changeOrderBtn.data(\"drop\", drop);\r\n });\r\n };\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n var _this = this;\r\n if (this.searchQuery().length === 0) {\r\n $(\".search-form\").removeClass(\"open\");\r\n return;\r\n }\r\n this.searchQuery(\"\");\r\n setTimeout(function () {\r\n _this.isClearBtn = true;\r\n $(\".search-form\").submit();\r\n });\r\n };\r\n ViewModel.prototype.showWorkLink = function (link) {\r\n prompt(\"Для того чтобы скопировать ссылку нажмите Ctrl+C, а потом Enter.\", link);\r\n };\r\n ViewModel.prototype.closeAllDrop = function () {\r\n var drop = $(\".drop-enabled\").data(\"drop\");\r\n if (drop) {\r\n drop.close();\r\n }\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileEditWorks.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"../utils/richContentUtils\", \"./commentsView\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var scriptjs = require(\"scriptjs\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var commentsView_1 = require(\"./commentsView\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n richContentUtils_1.default.processHtml(\".about-me\");\r\n scriptjs([(app.rootUrl + \"distCommon/vendor/slick/1.6.0/slick.min.js\")], function () {\r\n _this.initWorksCarousel(\"#works\");\r\n });\r\n this.loadComments(null, null, false);\r\n }\r\n ViewModel.prototype.initWorksCarousel = function (id) {\r\n var $carousel = $(id);\r\n $carousel.slick({\r\n slidesToShow: 4,\r\n slidesToScroll: 4,\r\n adaptiveHeight: true,\r\n touchMove: false,\r\n responsive: [\r\n {\r\n breakpoint: 1200,\r\n settings: {\r\n slidesToShow: 3,\r\n slidesToScroll: 3\r\n }\r\n }\r\n ]\r\n });\r\n $(id).css(\"height\", \"auto\");\r\n };\r\n return ViewModel;\r\n }(commentsView_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"toastr\", \"drop\", \"../utils/ajaxUtils\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var toastr = require(\"toastr\");\r\n var Drop = require(\"drop\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.showFilters = ko.observable(this.options.showFilters);\r\n this.readingCount = ko.observable();\r\n this.savedCount = ko.observable();\r\n this.finishedCount = ko.observable();\r\n this.likedCount = ko.observable();\r\n this.marksCount = ko.observable();\r\n this.purchasedCount = ko.observable();\r\n this.dislikedCount = ko.observable();\r\n this.allCount = ko.observable();\r\n this.genre = ko.observable();\r\n this.state = ko.observable();\r\n this.form = ko.observable();\r\n this.format = ko.observable();\r\n this.isDefaultFilter = ko.observable(true);\r\n this.isLoading = ko.observable(false);\r\n this.toggleShowFilters = function () {\r\n _this.showFilters(!_this.showFilters());\r\n if (_this.showFilters()) {\r\n $(\"#showFilters\").addClass(\"in\");\r\n }\r\n else {\r\n $(\"#showFilters\").removeClass(\"in\");\r\n }\r\n };\r\n this.tabs = {\r\n reading: {\r\n title: \"Читаю / слушаю\",\r\n icon: \"icon-2-library-reading\"\r\n },\r\n saved: {\r\n title: \"Отложено на потом\",\r\n icon: \"icon-2-clock\"\r\n },\r\n finished: {\r\n title: \"Прочитано\",\r\n icon: \"icon-2-library-finished\"\r\n },\r\n disliked: {\r\n title: \"Не нравится\",\r\n icon: \"icon-eye-slash\"\r\n },\r\n none: {\r\n icon: \"icon-ellipsis\"\r\n }\r\n };\r\n this.selectedWork = ko.observable();\r\n this.updateWorkState = function (newState) {\r\n if (_this.isLoading())\r\n return;\r\n _this.isLoading(true);\r\n var work = _this.selectedWork();\r\n var $el = $(\"#work-\" + work.id), $btn = $el.find(\"[data-library-state]\");\r\n $btn.attr(\"disabled\", \"disabled\").addClass(\"is-loading\");\r\n ajaxUtils_1.AjaxUtils.post(\"work/updateLibrary\", {\r\n ids: [work.id],\r\n state: newState\r\n }).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n if (work.state !== newState) {\r\n if (newState !== \"none\") {\r\n var newStateObs = newState.toLowerCase() + \"Count\";\r\n _this[newStateObs](_this[newStateObs]() + 1);\r\n toastr.success(\"\\u0412\\u044B \\u043F\\u0435\\u0440\\u0435\\u043C\\u0435\\u0441\\u0442\\u0438\\u043B\\u0438 \\u043A\\u043D\\u0438\\u0433\\u0443 \\u0432 \\u0441\\u043F\\u0438\\u0441\\u043E\\u043A \\u00AB\" + _this.tabs[newState].title + \"\\u00BB\");\r\n $btn.parent().attr(\"data-hint\", _this.tabs[newState].title);\r\n }\r\n else {\r\n toastr.success(\"Вы удалили книгу из библиотеки\");\r\n $btn.parent().attr(\"data-hint\", \"\");\r\n }\r\n if (work.state !== \"none\") {\r\n var oldStateObs = work.state + \"Count\";\r\n _this[oldStateObs](_this[oldStateObs]() - 1);\r\n }\r\n }\r\n $btn.find(\"i\").removeClass(_this.tabs[work.state].icon)\r\n .addClass(_this.tabs[newState].icon);\r\n work.state = newState;\r\n $el.attr(\"data-work\", ko.toJSON(work));\r\n $btn.data(\"drop\").close();\r\n })\r\n .always(function () {\r\n $btn.removeAttr(\"disabled\").removeClass(\"is-loading\");\r\n _this.isLoading(false);\r\n });\r\n };\r\n this.toggleMark = function (mark) {\r\n if (_this.isLoading())\r\n return;\r\n _this.isLoading(true);\r\n var work = _this.selectedWork();\r\n var $el = $(\"#work-\" + work.id), $btn = $el.find(\"[data-library-marks]\");\r\n $btn.attr(\"disabled\", \"disabled\")\r\n .addClass(\"is-loading\")\r\n .html(\"\");\r\n var isActive = work.marks.indexOf(mark) === -1;\r\n ajaxUtils_1.AjaxUtils.post(\"work/mark\", {\r\n workId: work.id,\r\n isActive: isActive,\r\n mark: mark\r\n }).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n if (result.data.marks && result.data.marks.length) {\r\n var activeMark = _.find(_this.options.allMarks, function (m) { return m.enumValue === result.data.marks[0]; });\r\n var imgUrl = (app.rootUrl || \"/\") + \"distCommon/emoji/\" + activeMark.code + \".svg\";\r\n var code = \"&#x\" + activeMark.code;\r\n $btn.html(\"\\\"\"\");\r\n $btn.parent().attr(\"data-hint\", activeMark.title);\r\n }\r\n else {\r\n $btn.html(\"\");\r\n $btn.parent().attr(\"data-hint\", \"Реакции\");\r\n }\r\n if (work.marks().length > 0 && result.data.marks.length === 0) {\r\n _this.marksCount(_this.marksCount() - 1);\r\n }\r\n else if (work.marks().length === 0 && result.data.marks.length > 0) {\r\n _this.marksCount(_this.marksCount() + 1);\r\n }\r\n work.marks(result.data.marks);\r\n $el.attr(\"data-work\", ko.toJSON(work));\r\n }).always(function () {\r\n $btn.removeAttr(\"disabled\")\r\n .removeClass(\"is-loading\");\r\n _this.isLoading(false);\r\n });\r\n };\r\n this.toggleLike = function () {\r\n if (_this.isLoading())\r\n return;\r\n _this.isLoading(true);\r\n var work = _this.selectedWork();\r\n var $el = $(\"#work-\" + work.id), $btn = $el.find(\"[data-library-state]\");\r\n $btn.attr(\"disabled\", \"disabled\").addClass(\"is-loading\");\r\n var isLiked = !work.isLiked;\r\n ajaxUtils_1.AjaxUtils.post(\"work/like\", {\r\n targetId: work.id,\r\n isLiked: isLiked\r\n }).done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n if (isLiked) {\r\n toastr.success(\"Вы вернули отметку «Нравится»\");\r\n }\r\n else {\r\n toastr.success(\"Вы убрали отметку «Нравится»\");\r\n }\r\n work.isLiked = isLiked;\r\n $el.attr(\"data-work\", ko.toJSON(work));\r\n _this.selectedWork(work);\r\n _this.likedCount(_this.likedCount() + (isLiked ? 1 : -1));\r\n }).always(function () {\r\n $btn.removeAttr(\"disabled\")\r\n .removeClass(\"is-loading\");\r\n _this.isLoading(false);\r\n });\r\n };\r\n var initialized = false;\r\n this.userId = options.userId;\r\n this.activeTab = options.activeTab;\r\n this.readingCount(options.readingCount);\r\n this.savedCount(options.savedCount);\r\n this.finishedCount(options.finishedCount);\r\n this.dislikedCount(options.dislikedCount);\r\n this.likedCount(options.likedCount);\r\n this.purchasedCount(options.purchasedCount);\r\n this.marksCount(options.marksCount);\r\n this.allCount(options.allCount);\r\n this.defaultFilter = options.defaultFilter;\r\n ko.computed(function () {\r\n var genre = _this.genre(), state = _this.state(), form = _this.form(), format = _this.format(), activeTab = _this.activeTab;\r\n _this.isDefaultFilter(_this.defaultFilter.state == state\r\n && _this.defaultFilter.form == form\r\n && _this.defaultFilter.format == format\r\n && (!genre || genre.length == 0));\r\n if (!initialized) {\r\n return;\r\n }\r\n var params = {};\r\n if (genre) {\r\n params.genre = genre;\r\n }\r\n if (state) {\r\n params.state = state;\r\n }\r\n if (form) {\r\n params.form = form;\r\n }\r\n if (format) {\r\n params.format = format;\r\n }\r\n if (_this.options.selectedMark !== 0) {\r\n params.mark = _this.options.selectedMark;\r\n }\r\n var url = app.rootUrl + (\"u/\" + options.userName + \"/library/\" + activeTab + \"?\" + $.param(params));\r\n $.pjax({ url: url, container: \"#search-results\", fragment: \"#search-results\" }).done(function () {\r\n _this.initLibraryDropdowns();\r\n });\r\n });\r\n setTimeout(function () {\r\n initialized = true;\r\n }, 200);\r\n this.initLibraryDropdowns();\r\n }\r\n ViewModel.prototype.initLibraryDropdowns = function () {\r\n var _this = this;\r\n if (!this.options.currentUser)\r\n return;\r\n var stateTemplateMarkup = document.getElementById(\"library-state-dropdown\").innerHTML;\r\n var marksTemplateMarkup = document.getElementById(\"library-marks-dropdown\").innerHTML;\r\n $(\".bookcard\").each(function (i, el) {\r\n var $el = $(el), $stateBtn = $el.find(\"[data-library-state]\"), $marksBtn = $el.find(\"[data-library-marks]\");\r\n _this.initDropdown($el, $stateBtn, stateTemplateMarkup);\r\n _this.initDropdown($el, $marksBtn, marksTemplateMarkup, function ($content) {\r\n $content.find(\".work-mark-button img\")\r\n .on(\"mouseover\", function (e) {\r\n var $img = $(e.target);\r\n $img.attr(\"src\", $img.attr(\"data-animated-src\"));\r\n })\r\n .on(\"mouseout\", function (e) {\r\n var $img = $(e.target);\r\n $img.attr(\"src\", $img.attr(\"data-src\"));\r\n });\r\n });\r\n });\r\n };\r\n ViewModel.prototype.initDropdown = function ($el, $btn, template, postProcessFunc) {\r\n var _this = this;\r\n if (postProcessFunc === void 0) { postProcessFunc = null; }\r\n if (!$btn.length) {\r\n return;\r\n }\r\n var drop = new Drop({\r\n target: $btn[0],\r\n content: function () {\r\n var $content = $(\"
\").html(template);\r\n ko.applyBindingsToDescendants(_this, $content[0]);\r\n if (postProcessFunc) {\r\n setTimeout(function () {\r\n postProcessFunc($content);\r\n }, 100);\r\n }\r\n return $content[0];\r\n },\r\n /*openOn: \"hover\",*/\r\n hoverCloseDelay: 150,\r\n constrainToScrollParent: true,\r\n tetherOptions: {\r\n attachment: \"top center\",\r\n targetAttachment: \"bottom center\",\r\n constraints: [\r\n {\r\n to: \"window\",\r\n attachment: \"together\",\r\n pin: true\r\n }\r\n ]\r\n }\r\n });\r\n $btn.addClass(\"btn-tether-drop\");\r\n drop.on(\"open\", function () {\r\n var work = JSON.parse($el.attr(\"data-work\"));\r\n work.marks = ko.observableArray(work.marks || []);\r\n _this.selectedWork(work);\r\n drop.position();\r\n $btn.addClass(\"open\");\r\n });\r\n drop.on(\"close\", function () {\r\n $btn.removeClass(\"open\");\r\n });\r\n $btn.data(\"drop\", drop);\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileLibrary.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"js.cookie\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var Cookies = require(\"js.cookie\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(false);\r\n this.viewMode = ko.observable();\r\n this.switchView = function (mode) {\r\n _this.viewMode(mode);\r\n };\r\n var initialized = false;\r\n this.viewMode(options.viewMode);\r\n var defaultViewMode = Cookies.get(\"at.workView\") || \"list\";\r\n ko.computed(function () {\r\n var view = _this.viewMode();\r\n if (!initialized) {\r\n return;\r\n }\r\n var params = {};\r\n var formUrlPart = \"\";\r\n if (view !== defaultViewMode) {\r\n params.view = view;\r\n defaultViewMode = view;\r\n // Сохраняем страницу только при смене вида отображения книг\r\n if (options.page && options.page > 1) {\r\n params.page = options.page;\r\n }\r\n }\r\n else {\r\n options.page = 1;\r\n }\r\n if (options.form !== \"any\") {\r\n formUrlPart = options.form;\r\n }\r\n if (options.sorting !== \"popular\") {\r\n params.sorting = options.sorting;\r\n }\r\n var url = app.rootUrl + (\"u/\" + options.username + \"/works?\" + $.param(params));\r\n $.pjax({ url: url, container: \"#profile-work-search-results\", fragment: \"#profile-work-search-results\" });\r\n });\r\n setTimeout(function () {\r\n initialized = true;\r\n }, 200);\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=profileWorks.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.email = ko.observable().extend({\r\n required: true,\r\n email: true\r\n });\r\n this.stage = ko.observable(\"welcome\");\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n ViewModel.prototype.onSubmitSucess = function (result, formElement) {\r\n if (this.stage() === \"welcome\") {\r\n this.stage(\"promt\");\r\n }\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n ;\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=promoMigration.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"./base/validatedViewModel\", \"../utils/socialUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var socialUtils_1 = require(\"../utils/socialUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.result = {\r\n \"1\": 0,\r\n \"2\": 0,\r\n \"3\": 0,\r\n \"4\": 0,\r\n \"5\": 0,\r\n \"6\": 0,\r\n \"7\": 0,\r\n \"8\": 0,\r\n \"9\": 0,\r\n \"10\": 0,\r\n \"11\": 0\r\n };\r\n this.questionIndex = ko.observable(1);\r\n this.quizResult = ko.observable();\r\n this.questions = [\r\n {\r\n title: \"Как ты относишься к работе в команде?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Вместе всегда веселей!\", s: [2, 8, 9] },\r\n { text: \"Предпочитаю роль лидера.\", s: [3] },\r\n { text: \"Присоединюсь, если мне это будет выгодно.\", s: [7] },\r\n { text: \"Никак. Я как кот, гуляю сам по себе.\", s: [1, 4, 5, 6, 10, 11] }]\r\n },\r\n {\r\n title: \"Какое из этих блюд тебе ближе остальных?\",\r\n hasImage: true,\r\n answers: [\r\n { text: \"Борщ\", img: \"food/borscht.jpg\", s: [3] },\r\n { text: \"Гамбургер\", img: \"food/hamburger.jpg\", s: [2, 5, 6, 7] },\r\n { text: \"Омар\", img: \"food/lobster.jpg\", s: [1, 10] },\r\n { text: \"Пельмешки\", img: \"food/pelmeni.jpg\", s: [4, 8, 9, 11] },\r\n { text: \"Пирожки\", img: \"food/pies.jpg\", s: [3] },\r\n { text: \"Мидии\", img: \"food/mussels.jpg\", s: [1, 10] },\r\n { text: \"Пицца\", img: \"food/pizza.jpg\", s: [2, 5, 6, 7] },\r\n { text: \"Шаве́рма\", img: \"food/shawarma.jpg\", s: [4, 8, 9, 11] }]\r\n },\r\n {\r\n title: \"Каковы твои сильные черты?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Честь и достоинство для меня не пустые слова. Я всегда за справедливость.\", s: [2, 9] },\r\n { text: \"Я иду к своей цели несмотря ни на что и обязательно добьюсь результата.\", s: [1, 3, 6, 7] },\r\n { text: \"У меня хорошо работает голова. Обычно планирую свои действия заранее.\", s: [5, 8, 10] },\r\n { text: \"Я смелый и независимый.\", s: [4, 11] }]\r\n },\r\n {\r\n title: \"Так, хорошо. А теперь скажи, что тебе в себе не нравится?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Вспыльчивость. Иногда так сложно не поддаться эмоциям!\", s: [1, 3, 11] },\r\n { text: \"Порой я бываю черезчур мягким и нерешительным.\", s: [2, 5, 6] },\r\n { text: \"Склонность к авантюрам. Вечно ищу приключения себе на ... голову.\", s: [4, 8, 9] },\r\n { text: \"У меня нет времени на самокопание.\", s: [7, 10] }]\r\n },\r\n {\r\n title: \"Какое твое любимое оружие?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Холодное — мечи, кинжалы, ножи.\", s: [3, 4, 6, 7, 11] },\r\n { text: \"Огнестрел — винтовки и пистолеты.\", s: [5] },\r\n { text: \"Магия.\", s: [2, 8, 9, 10] },\r\n { text: \"Я не нуждаюсь в оружии.\", s: [1] }]\r\n },\r\n {\r\n title: \"Тебе выпал шанс расправиться с врагом, как поступишь?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Попытаюсь понять и простить.\", s: [3, 6] },\r\n { text: \"Глупых врагов у меня нет, а два умных человека всегда смогут договориться.\", s: [2, 5, 9] },\r\n { text: \"Неважно, как я его убью, главное, чтобы меня при этом никто не заподозрил.\", s: [7, 8] },\r\n { text: \"Отрублю ему хвост по самую голову... раза три, для верности.\", s: [1, 4, 10, 11] }]\r\n },\r\n {\r\n title: \"На дороге лежит битком набитый деньгами кошелек, что выберешь?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Пусть и дальше себе лежит — пройду мимо.\", s: [1, 2, 5, 7, 9] },\r\n { text: \"Нужно попытаться найти владельца, конечно.\", s: [3, 10] },\r\n { text: \"Заберу себе, деньги лишними не бывают.\", s: [4, 6, 8, 11] }]\r\n },\r\n {\r\n title: \"Неожиданно рядом с тобой начинается потасовка: семеро против пятерых, твои действия?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Помогу тем, кто в меньшинстве.\", s: [2, 3, 6, 9] },\r\n { text: \"Зависит от настроения: могу присоединиться, а могу и мимо пройти.\", s: [1, 4, 8] },\r\n { text: \"Пройду мимо, мне не нужны лишние проблемы.\", s: [10, 11] },\r\n { text: \"Устрою тотализатор и заработаю на ставках!\", s: [] }]\r\n },\r\n {\r\n title: \"Друг вероломно предал тебя, как поступишь?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Вычеркну из списка друзей и забуду о его существовании.\", s: [1, 2, 5, 8] },\r\n { text: \"Попытаюсь понять причину предательства. Просто так друзья не продают.\", s: [3, 6, 10] },\r\n { text: \"Буду долго переживать страдать. Как он мог так поступить... :(\", s: [] },\r\n { text: \"Отомщу так, чтобы надолго запомнил.\", s: [4, 11] }]\r\n },\r\n {\r\n title: \"Как ты обычно одеваешься?\",\r\n hasImage: false,\r\n answers: [\r\n { text: \"Необычно, ярко, вызывающе.\", s: [1, 4, 10] },\r\n { text: \"Что первым найду, то и надену.\", s: [2, 11] },\r\n { text: \"Люблю удобную и практичную одежду.\", s: [3, 5, 6, 8] },\r\n { text: \"Максимально неброско, мне незачем привлекать внимание.\", s: [9] }]\r\n },\r\n {\r\n title: \"Ну и последний вопрос. Представь, что выдался свободный денек. Какие планы?\",\r\n hasImage: false,\r\n answers: [\r\n {\r\n text: \"Соберу вещи, разыщу пару друзей, и вместе мы отправимся куда-нибудь \" +\r\n \"прочь из города. Пикник — что может быть лучше?\", s: [1]\r\n },\r\n { text: \"Самое время заняться собой. Пределов совершенству быть не может!\", s: [2, 5, 7, 8, 11] },\r\n {\r\n text: \"Камин, плед и бокал чего-нибудь согревающего. Можно, наконец, спокойно собраться \" +\r\n \"с мыслями и проанализировать текущую ситуацию.\", s: [3, 6, 10]\r\n },\r\n { text: \"Отдохну, высплюсь как следует, поиграю в компьютерные игры или схожу в гости к знакомым.\", s: [4, 9] }]\r\n }];\r\n this.repeat = function () {\r\n var owl = $(\"#quiz-carousel\").data(\"owlCarousel\");\r\n owl.goTo(0);\r\n _this.questionIndex(1);\r\n _this.result = {\r\n \"1\": 0,\r\n \"2\": 0,\r\n \"3\": 0,\r\n \"4\": 0,\r\n \"5\": 0,\r\n \"6\": 0,\r\n \"7\": 0,\r\n \"8\": 0,\r\n \"9\": 0,\r\n \"10\": 0,\r\n \"11\": 0\r\n };\r\n };\r\n this.answerClick = function (answer) {\r\n _.each(answer.s, function (id) {\r\n _this.result[id]++;\r\n });\r\n if (_this.questionIndex() === _this.questions.length) {\r\n var results = _.map(_this.result, function (x) { return x; });\r\n var max = _.max(results);\r\n var indexes = [];\r\n _.each(results, function (c, i) {\r\n if (c === max) {\r\n indexes.push(i + 1);\r\n }\r\n });\r\n _.shuffle(indexes);\r\n _this.calculateResult(indexes[0]);\r\n }\r\n else {\r\n setTimeout(function () { _this.questionIndex(_this.questionIndex() + 1); }, 200);\r\n }\r\n _this.nextSlide();\r\n };\r\n this.calculateResult(11);\r\n setTimeout(function () {\r\n var $carousel = $(\"#quiz-carousel\");\r\n $carousel[\"owlCarousel\"]({\r\n items: 1,\r\n itemsDesktopSmall: [979, 1],\r\n itemsTablet: [768, 1],\r\n itemsMobile: [479, 1],\r\n rewindNav: false,\r\n addClassActive: true,\r\n transitionStyle: \"goDown\",\r\n pagination: false,\r\n mouseDrag: false,\r\n touchDrag: false\r\n });\r\n }, 100);\r\n }\r\n ViewModel.prototype.nextSlide = function () {\r\n var owl = $(\"#quiz-carousel\").data(\"owlCarousel\");\r\n owl.next();\r\n };\r\n ViewModel.prototype.calculateResult = function (index) {\r\n switch (index) {\r\n case 1:\r\n this.quizResult({\r\n title: \"Ты — фройляйн Рита\",\r\n description: \"Сильный человек, несогласный жить по чужим правилам. Несколько эгоцентричный, \" +\r\n \"за стараниями произвести нужный эффект не всегда задумывается, \" +\r\n \"кому и зачем это нужно. Но искренний и готовый до конца отстаивать свою собственную правду.\",\r\n img: \"frojljajnRita.png\",\r\n workId: 167\r\n });\r\n break;\r\n case 2:\r\n this.quizResult({\r\n title: \"Ты — Лин\",\r\n description: \"Чуждая этому миру, но готовая признать его родным. Дружба для тебя ценнее всего, ты стремишься \" +\r\n \"к знаниям и веришь в людей. Твоя цель – остаться собой, несмотря ни на что. \" +\r\n \"Тебя гложут сомнения, однако ты не пройдешь мимо несправедливости. \" +\r\n \"Вероломство, алчность, тщеславие – даже враги согласятся, что это – не о тебе.\",\r\n img: \"Lin.png\",\r\n workId: 121\r\n });\r\n break;\r\n case 3:\r\n this.quizResult({\r\n title: \"Ты — Родомир\",\r\n description: \"Честь и достоинство для тебя не просто слова. Ты никогда не пройдешь мимо несправедливости и\" +\r\n \" всегда защитишь слабого. Семья для тебя самое важное в жизни. Если кому-то хватит \" +\r\n \"глупости ей угрожать, он будет беспощадно уничтожен без права на капитуляцию. \" +\r\n \"Так что лучше сто раз подумать, прежде чем называться твоим врагом.\",\r\n img: \"Rodomir.png\",\r\n workId: 155\r\n });\r\n break;\r\n case 4:\r\n this.quizResult({\r\n title: \"Ты — Виктор Франкенштейн\",\r\n description: \"Падший Синигами и любимец Безумия. Неординарное поведение и безудержное любопытство ведут \" +\r\n \"тебя в неизвестность, а ты и рад этому. Хоть твоё психологическое состояние постоянно страдает от \" +\r\n \"внутренних противоречий, голоса в голове и извечной мании преследования, это не ослабляет ни \" +\r\n \"твоей жажды приключений, ни радости от изучения нового мира и раскрытия тайн, что хранятся в нём.\",\r\n img: \"ViktorFrankenshtejn.png\",\r\n workId: 144\r\n });\r\n break;\r\n case 5:\r\n this.quizResult({\r\n title: \"Ты — Сергей Романов\",\r\n description: \"Внешне — обычный человек. Но никто, кроме самых близких, не знает, насколько \" +\r\n \"в тебе сильна тяга к исследованию мира, к новым горизонтам, к самопознанию. Однако ты не ветреная \" +\r\n \"личность, у тебя всегда есть запасной план, надёжная опора, место, куда можно вернуться, где можно \" +\r\n \"спрятаться. Ты — призма из чистейшего оптического стекла, в которой окружающая действительность распадается \" +\r\n \"на яркие цвета, интересные подробности и новые детали. Именно благодаря этим, довольно простым человеческим качествам, \" +\r\n \"у тебя есть шанс стать избранным, прикоснуться к древней тайне, найти то, что ты так давно искал.\",\r\n img: \"SergejRomanov.png\",\r\n workId: 387\r\n });\r\n break;\r\n case 6:\r\n this.quizResult({\r\n title: \"Ты — Ингер Готтшальк\",\r\n description: \"Одинокий волк, выискивающий овец заблудших. Праздные компании и увеселения – не для тебя. \" +\r\n \"Твоя жизнь подчинена великой цели, и в ее достижении ты привык полагаться на свои силы. Ты не жесток – ты справедлив. \" +\r\n \"И, что бы о тебе ни говорили, в твоей груди бьется самое большое и самое доброе сердце.\",\r\n img: \"IngerGottshalk.png\",\r\n workId: 456\r\n });\r\n break;\r\n case 7:\r\n this.quizResult({\r\n title: \"Ты — Лилиит\",\r\n description: \"Ты хочешь, чтобы окружающие тебя люди всегда были рядом и поддерживали, но \" +\r\n \"частенько получаешь нож в спину. Ты стремишься стать сильнее, чтобы защитить друзей и прожить в большом и страшном мире. \" +\r\n \"Твой меч - твое оружие и твой заработок. А какой охотник не может хорошо продать свой товар? Ты всегда в прибыли.\",\r\n img: \"Liliit.png\",\r\n workId: 507\r\n });\r\n break;\r\n case 8:\r\n this.quizResult({\r\n title: \"Ты — Тенки Ли\",\r\n description: \" Ты знаешь жизнь со всех её сторон и не упустишь шанса вскочить удаче на загривок. \" +\r\n \"Природное обаяние не оставляет тебя без внимания девушек, а простой открытый характер - без дружбы мужчин. \" +\r\n \"Ты - королевский маг, тёмный, черпаешь силу в глубине своей души и в поступках руководствуешься только личными соображениями.\",\r\n img: \"TenkiLi.png\",\r\n workId: 506\r\n });\r\n break;\r\n case 9:\r\n this.quizResult({\r\n title: \"Ты — Рена\",\r\n description: \"Молодая ведьма, призвание которой – помогать людям. Немного самоуверенная, \" +\r\n \"довольно безрассудная, готовая сорваться с места в любой момент \" +\r\n \"и броситься к цели. Тебя трудно переубедить и сбить с пути. \" +\r\n \"Твоя опора – семья. Любовь? Однажды ты поверишь в нее и жизнь станет ярче.\",\r\n img: \"Rena.png\",\r\n workId: 508\r\n });\r\n break;\r\n case 10:\r\n this.quizResult({\r\n title: \"Ты — Харэ\",\r\n description: \"Ты коварный Волшебник Измерения, который исполняя людские желания прокладывает \" +\r\n \"путь к пробуждению тьмы и хаоса. Твоя магия времени и измерений пронизывает все миры. \" +\r\n \"Ты не остановишься ни перед чем, чтобы добиться цели, принеся в жертву своей цели множество жизней.\",\r\n img: \"Harje.png\",\r\n workId: 463\r\n });\r\n break;\r\n case 11:\r\n this.quizResult({\r\n title: \"Ты — Дио\",\r\n description: \"Одинокий и беспощадный. Ты привык верить только себе и полагаешься лишь на собственные силы. \" +\r\n \"Воля - твое второе имя, и ради победы ты будешь драться до последнего. \" +\r\n \"Но никогда не пойдешь на подлость - ты выше этого.\",\r\n img: \"Dio.png\",\r\n workId: 25\r\n });\r\n break;\r\n }\r\n setTimeout(function () {\r\n socialUtils_1.default.init();\r\n }, 200);\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=quiz1.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"./base/validatedViewModel\", \"../utils/socialUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var socialUtils_1 = require(\"../utils/socialUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.result = {\r\n \"1\": 0,\r\n \"2\": 0,\r\n \"3\": 0,\r\n \"4\": 0,\r\n \"5\": 0,\r\n \"6\": 0,\r\n \"7\": 0,\r\n \"8\": 0,\r\n \"9\": 0,\r\n \"10\": 0,\r\n \"11\": 0\r\n };\r\n this.questionIndex = ko.observable(1);\r\n this.quizResult = ko.observable();\r\n this.questions = [\r\n {\r\n title: \"В новом мире ты человек?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Да\", s: [1, 6, 7, 8, 9, 10, 11] },\r\n { id: 2, text: \"Поначалу был им\", s: [5, 4, 2] },\r\n { id: 3, text: \"В реале человек, в виртуале - нет\", s: [] },\r\n { id: 4, text: \"Затрудняюсь ответить\", s: [] },\r\n { id: 5, text: \"Для некоторых я перестал им быть\", s: [3] },\r\n { id: 6, text: \"Пф… почему Я, высшее существо, должен опускаться до какого-то там человека?\", s: [] },\r\n { id: 7, text: \"Нечто иное, странное\", s: [] }]\r\n }, {\r\n title: \"Какой тип боя ты предпочитаешь?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Только мечи! Только хардкор!\", s: [10, 4, 1] },\r\n { id: 2, text: \"Наконечник стрелы - это последнее, что ты увидишь\", s: [] },\r\n { id: 3, text: \"Я тихонько подойду сзади и нарисую тебе кровавую улыбку\", s: [] },\r\n { id: 4, text: \"Как тебе мой метеоритный дождь?\", s: [5, 6] },\r\n { id: 5, text: \"У меня есть способности за гранью человеческих, но это точно не магия\", s: [7, 8, 9, 3, 4, 1] },\r\n { id: 6, text: \"Мои способности рождены технологиями, а не магией, но я способен надрать задницу любому Гендальфу\", s: [] },\r\n { id: 7, text: \"Я не уверен, что это можно назвать магией\", s: [2, 11] }]\r\n }, {\r\n title: \"Твой мир - реален, или виртуален?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Реален\", s: [1, 3, 4, 6, 7, 9] },\r\n { id: 2, text: \"Виртуален\", s: [5] },\r\n { id: 3, text: \"Мой мир уже давно не игра!\", s: [] },\r\n { id: 4, text: \"Я живу в двух мирах сразу\", s: [10] },\r\n { id: 5, text: \"Мой то реален, но большую часть жизни я зависаю в виртуальности\", s: [] },\r\n { id: 6, text: \"Реальность и виртуальность давно перемешались\", s: [] },\r\n { id: 7, text: \"Виртуальность - это единственная реальность мира\", s: [11] },\r\n { id: 8, text: \"Я не уверен до конца, реален ли мой мир\", s: [8, 2] }]\r\n }, {\r\n title: \"Ты герой, злодей, или нечто иное?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Я совершенно точно герой: ни дня без подвига\", s: [6, 7] },\r\n { id: 2, text: \"Я самый настоящий злодей\", s: [] },\r\n { id: 3, text: \"Я скорее эгоист, чем злодей\", s: [] },\r\n { id: 4, text: \"Я пофигист - делайте что хотите, я тут веселюсь!\", s: [2] },\r\n { id: 5, text: \"Не лезу в герои, но делаю то, что считаю правильным\", s: [1, 3, 4, 5, 8, 9, 10] },\r\n { id: 6, text: \"Я делец. Добро, зло - лишь бы приносило полновесную прибыль\", s: [] },\r\n { id: 7, text: \"Я творец и художник. И добро, и зло - лишь краски многогранного мира\", s: [] },\r\n { id: 8, text: \"Что если зло, а что есть добро? Давайте обсудим?\", s: [11] }]\r\n }, {\r\n title: \"В чём твоя цель в этом мире?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Выжить!\", s: [] },\r\n { id: 2, text: \"Золото! Нужно больше золота!\", s: [] },\r\n { id: 3, text: \"Мировое господство, конечно же!\", s: [] },\r\n { id: 4, text: \"Мир во всём мире, добро и радужные пони\", s: [1, 3, 7] },\r\n { id: 5, text: \"Я убиваю чудовищ...\", s: [2, 6, 10] },\r\n { id: 6, text: \"Мне бы выжить, а там разберусь\", s: [4, 5, 8, 9, 11] }]\r\n }, {\r\n title: \"Вы одиночка, или всегда в кругу друзей?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Одинокий волк\", s: [2, 5, 9] },\r\n { id: 2, text: \"Есть парочка верных друзей\", s: [1, 3, 4, 6, 7, 11] },\r\n { id: 3, text: \"У меня друг, но такой, что перевернёт ради меня мир\", s: [] },\r\n { id: 4, text: \"Бегаю с кланом\", s: [8, 10] },\r\n { id: 5, text: \"Путешествую в компании недругов. Вот такой я оригинал\", s: [] },\r\n { id: 6, text: \"Я скорее в компании питомцев, рабов и призванных существ\", s: [] }]\r\n }, {\r\n title: \"Вы везунчик, или всего добиваетесь трудом?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Мне благоволят боги. И богини. Особенно богини\", s: [] },\r\n { id: 2, text: \"Моя прописка по паспорту - остров невезения. Всего добиваюсь сам\", s: [1, 6] },\r\n { id: 3, text: \"Отхватил как-то могущественный артефакт. (Не рояль!!!) Или пару. Или тройку. Кто считает? А так все сам\", s: [2, 5] },\r\n { id: 4, text: \"Случайно не прозевал счастье и сумел многого добиться\", s: [7, 8] },\r\n { id: 5, text: \"Мне почему-то всегда все помогают\", s: [3] },\r\n { id: 6, text: \"Везение уже то, что я хотя бы жив!\", s: [4, 9, 10] }]\r\n }, {\r\n title: \"Что ты думаешь о любви?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Именно ради нее, если понадобится, я уничтожу этот мир!\", s: [] },\r\n { id: 2, text: \"Да-а-а... Каждый день. Три раза минимум! Со всем, что движется\", s: [] },\r\n { id: 3, text: \"Тянки лесом!\", s: [11] },\r\n { id: 4, text: \"Всё ещё в поисках...\", s: [] },\r\n { id: 5, text: \"Любовь - обман для легковерных идиотов. Секс правит миром. Даёшь гарем на четыреста мест!\", s: [] },\r\n { id: 6, text: \"Моя любовь стоит рядом и подаёт патроны\", s: [1, 4, 5, 10] },\r\n { id: 7, text: \"Любовь - это здорово, но стоит ли слишком много говорить о ней вслух?\", s: [2, 3, 6, 7, 8, 9] }]\r\n }, {\r\n title: \"Ты можешь менять форму?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Конечно!\", s: [2, 3, 5, 6] },\r\n { id: 2, text: \"Нет\", s: [1, 7, 8, 9, 10, 11] },\r\n { id: 3, text: \"Даже несколько!\", s: [4] },\r\n { id: 4, text: \"Пока только учусь\", s: [] },\r\n { id: 5, text: \"Когда я пьян, я кунг-фу Панда!\", s: [] }]\r\n }, {\r\n title: \"Внезапно у вас появляется способность становится невидимым. Чем займемся?\",\r\n hasImage: false,\r\n answers: [\r\n { id: 1, text: \"Наведаюсь в ближайший банк и разбогатею\", s: [] },\r\n { id: 2, text: \"Теперь можно подглядывать за девушками в душе!\", s: [] },\r\n { id: 3, text: \"Я буду применять свою новую способность только во благо\", s: [1, 3, 11] },\r\n { id: 4, text: \"Невидимость? А можно все посмотреть?\", s: [5, 10] },\r\n { id: 5, text: \"В смысле появляется? А когда её успели отнять?\", s: [2, 4, 6, 7, 8, 9] }]\r\n }];\r\n this.repeat = function () {\r\n var owl = $(\"#quiz-carousel\").data(\"owlCarousel\");\r\n owl.goTo(0);\r\n _this.questionIndex(1);\r\n _this.result = {\r\n \"1\": 0,\r\n \"2\": 0,\r\n \"3\": 0,\r\n \"4\": 0,\r\n \"5\": 0,\r\n \"6\": 0,\r\n \"7\": 0,\r\n \"8\": 0,\r\n \"9\": 0,\r\n \"10\": 0,\r\n \"11\": 0\r\n };\r\n };\r\n this.answerClick = function (answer) {\r\n _.each(answer.s, function (id) {\r\n _this.result[id]++;\r\n });\r\n if (_this.questionIndex() === _this.questions.length) {\r\n var results = _.map(_this.result, function (x) { return x; });\r\n var max = _.max(results);\r\n var indexes = [];\r\n _.each(results, function (c, i) {\r\n if (c === max) {\r\n indexes.push(i + 1);\r\n }\r\n });\r\n _.shuffle(indexes);\r\n _this.calculateResult(indexes[0]);\r\n }\r\n else {\r\n setTimeout(function () { _this.questionIndex(_this.questionIndex() + 1); }, 200);\r\n }\r\n _this.nextSlide();\r\n };\r\n this.calculateResult(11);\r\n setTimeout(function () {\r\n var $carousel = $(\"#quiz-carousel\");\r\n $carousel[\"owlCarousel\"]({\r\n items: 1,\r\n itemsDesktopSmall: [979, 1],\r\n itemsTablet: [768, 1],\r\n itemsMobile: [479, 1],\r\n rewindNav: false,\r\n addClassActive: true,\r\n transitionStyle: \"goDown\",\r\n pagination: false,\r\n mouseDrag: false,\r\n touchDrag: false\r\n });\r\n }, 100);\r\n }\r\n ViewModel.prototype.nextSlide = function () {\r\n var owl = $(\"#quiz-carousel\").data(\"owlCarousel\");\r\n owl.next();\r\n };\r\n ViewModel.prototype.calculateResult = function (index) {\r\n switch (index) {\r\n case 1:\r\n this.quizResult({\r\n title: \"Ты — Окава Кеншин\",\r\n description: \"Меня зовут - Окава Кеншин и не говорите потом, что не расслышали\",\r\n img: \"okava_kenshin.jpg\",\r\n vkImg: \"okava_kenshin2.jpg\",\r\n workId: 8595\r\n });\r\n break;\r\n case 2:\r\n this.quizResult({\r\n title: \"Ты — Варг\",\r\n description: \"Пиво было, но крафтовое, а я к такому всегда относился с подозрением\",\r\n img: \"varg.jpg\",\r\n vkImg: \"varg2.jpg\",\r\n workId: 13288\r\n });\r\n break;\r\n case 3:\r\n this.quizResult({\r\n title: \"Ты — Рэми\",\r\n description: \"И не надо на меня так смотреть, не надо жалеть, жалость убивает.\",\r\n img: \"remi.jpg\",\r\n vkImg: \"remi2.jpg\",\r\n workId: 7003\r\n });\r\n break;\r\n case 4:\r\n this.quizResult({\r\n title: \"Ты — Саргон\",\r\n description: \"Ты чертовски ошибся с выбором противника. Ибо я - не человек. Я - Силпат.\",\r\n img: \"sargon.jpg\",\r\n vkImg: \"sargon2.jpg\",\r\n workId: 12790\r\n });\r\n break;\r\n case 5:\r\n this.quizResult({\r\n title: \"Ты — Махан\",\r\n description: \"Щаз все брошу и думать буду\",\r\n img: \"mahan.jpg\",\r\n vkImg: \"mahan2.jpg\",\r\n workId: 15254\r\n });\r\n break;\r\n case 6:\r\n this.quizResult({\r\n title: \"Ты — Лумумба\",\r\n description: \"Вдруг бывает только взрыв, когда о растяжку запнешься.\",\r\n img: \"lumumba.jpg\",\r\n vkImg: \"lumumba2.jpg\",\r\n workId: 15032\r\n });\r\n break;\r\n case 7:\r\n this.quizResult({\r\n title: \"Ты — Фил Панфилов\",\r\n description: \"Больше огня под ногами твоих врагов, испытуемый!\",\r\n img: \"fil.jpg\",\r\n vkImg: \"fil2.jpg\",\r\n workId: 8553\r\n });\r\n break;\r\n case 8:\r\n this.quizResult({\r\n title: \"Ты — Док\",\r\n description: \"Но… после смерти можно жить в покое, жить дальше после смерти, в своих детях.\",\r\n img: \"dok.jpg\",\r\n vkImg: \"dok2.jpg\",\r\n workId: 13544\r\n });\r\n break;\r\n case 9:\r\n this.quizResult({\r\n title: \"Ты — Найкрас\",\r\n description: \"Да прибудет пемброк!\",\r\n img: \"naikras.jpg\",\r\n vkImg: \"naikras2.jpg\",\r\n workId: 10561\r\n });\r\n break;\r\n case 10:\r\n this.quizResult({\r\n title: \"Ты — Зловреда\",\r\n description: \"У вас есть целая жизнь, чтобы работать, а дети будут маленькими всего один раз\",\r\n img: \"zlovreda.jpg\",\r\n vkImg: \"zlovreda2.jpg\",\r\n workId: 13680\r\n });\r\n break;\r\n case 11:\r\n this.quizResult({\r\n title: \"Ты — Норман\",\r\n description: \"Живи, демоны тебя раздери! У меня ещё никто не умирал!\",\r\n img: \"norman.jpg\",\r\n vkImg: \"norman2.jpg\",\r\n workId: 15125\r\n });\r\n break;\r\n }\r\n setTimeout(function () {\r\n socialUtils_1.default.init();\r\n }, 200);\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=quiz2.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel() {\r\n _super.apply(this, arguments);\r\n this.code = ko.observable();\r\n }\r\n /** Отключает 2FA */\r\n ViewModel.prototype.removeGA = function () {\r\n var _this = this;\r\n this.removeError();\r\n if (!this.code()) {\r\n this.showError(\"Введите код подтверждения двухфакторной аутентификации!\");\r\n return;\r\n }\r\n ajaxUtils_1.AjaxUtils.get(\"account/removeTotp\", { code: this.code })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n if (result.data) {\r\n location.href = \"/account/security\";\r\n }\r\n else {\r\n _this.showError(\"Указанный код неверен!\");\r\n }\r\n });\r\n };\r\n ViewModel.prototype.showError = function (message) {\r\n $(\"#form-group-code\").addClass(\"has-error\");\r\n $(\"#form-group-code .error\").html(message);\r\n };\r\n ViewModel.prototype.removeError = function () {\r\n $(\"#form-group-code\").removeClass(\"has-error\");\r\n $(\"#form-group-code .error\").html(\"\");\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=removeTotp.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"moment\", \"numeral\", \"../utils/ajaxUtils\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n var numeral = require(\"numeral\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isInitialized = false;\r\n this.groupBy = ko.observable();\r\n this.itemTitle = ko.pureComputed(function () {\r\n var groupBy = _this.groupBy();\r\n if (groupBy === \"work\") {\r\n return \"Произведения\";\r\n }\r\n else if (groupBy === \"series\") {\r\n return \"Циклы\";\r\n }\r\n else if (groupBy === \"format\") {\r\n return \"Формат\";\r\n }\r\n return \"\";\r\n });\r\n this.items = ko.pureComputed(function () {\r\n var groupBy = _this.groupBy();\r\n var items;\r\n if (groupBy === \"work\") {\r\n items = _this.works.slice();\r\n items.unshift({ id: \"null\", title: \"Все\" });\r\n }\r\n else if (groupBy === \"series\") {\r\n items = _this.series.slice();\r\n items.unshift({ id: \"null\", title: \"Все\" }, { id: \"0\", title: \"Без цикла\" });\r\n }\r\n else if (groupBy === \"format\") {\r\n items = _this.workFormat.slice();\r\n items.unshift({ id: \"null\", title: \"Все\" });\r\n }\r\n return items;\r\n });\r\n this.itemId = ko.observable();\r\n this.numeral = numeral;\r\n this.startDate = ko.observable();\r\n this.endDate = ko.observable();\r\n this.isLoading = ko.observable(true);\r\n this.showFullStats = ko.observable();\r\n this.totalViewCount = ko.observable(0);\r\n this.uniqueViewCount = ko.observable(0);\r\n this.commentCount = ko.observable(0);\r\n this.likeCount = ko.observable(0);\r\n this.libraryCount = ko.observable(0);\r\n this.dateRangePickerOptions = {\r\n ranges: {\r\n 'За неделю': [moment().startOf(\"day\").add(-6, \"days\"), moment().endOf(\"day\")],\r\n 'За месяц': [moment().startOf(\"day\").add(-30, \"days\"), moment().endOf(\"day\")],\r\n 'За прошлый месяц': [moment().startOf(\"day\").add(-30, \"days\").add(-1, \"months\"), moment().startOf(\"day\").add(-31, \"days\")],\r\n 'За 3 месяца': [moment().startOf(\"day\").add(-30, \"days\").add(-2, \"months\"), moment().endOf(\"day\")],\r\n 'За год': [moment().startOf(\"day\").add(-12, \"months\"), moment().endOf(\"day\")]\r\n }\r\n };\r\n this.showFullStats(options.showFullStats);\r\n this.auId = options.auId;\r\n this.works = options.works;\r\n this.series = options.series;\r\n this.workFormat = options.workFormat;\r\n this.itemId(options.itemId);\r\n this.startDate(options.startDate ? moment(options.startDate) : moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate(options.endDate ? moment(options.endDate) : moment().endOf(\"day\"));\r\n setTimeout(function () { return _this.initComputed(); }, 100);\r\n this.isInitialized = true;\r\n }\r\n ViewModel.prototype.initComputed = function () {\r\n var _this = this;\r\n this.filterData = ko.computed(function () {\r\n var filterData = {\r\n startDate: _this.startDate().toISOString(),\r\n endDate: _this.endDate().toISOString(),\r\n groupBy: _this.groupBy(),\r\n itemId: _this.itemId(),\r\n auId: _this.auId\r\n };\r\n return filterData;\r\n });\r\n ko.computed(function () {\r\n _this.isLoading(true);\r\n var data = _this.filterData();\r\n if (_this.isInitialized) {\r\n if (_this.showFullStats()) {\r\n _this.loadDynamicChart();\r\n }\r\n else {\r\n _this.isLoading(false);\r\n }\r\n }\r\n try {\r\n if (!data.workId || data.workId === \"null\") {\r\n delete data.workId;\r\n }\r\n if (!data.auId || data.auId === \"null\") {\r\n delete data.auId;\r\n }\r\n history.replaceState(null, null, \"user-activity?\" + $.param(data));\r\n }\r\n catch (e) {\r\n }\r\n });\r\n };\r\n ViewModel.prototype.loadDynamicChart = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.get(\"report/user-activity-data\", this.filterData())\r\n .done(function (result) {\r\n var daysInPerios = Math.floor((_this.endDate() - _this.startDate()) / (1000 * 60 * 60 * 24));\r\n var minPeriod = \"DD\";\r\n var categoryBalloonDateFormat = \"MMMM DD, YYYY\";\r\n if (daysInPerios > 40) {\r\n minPeriod = \"MM\";\r\n categoryBalloonDateFormat = \"MMMM, YYYY\";\r\n }\r\n _this.totalViewCount(_.sumBy(result.data, \"totalViewCount\"));\r\n _this.uniqueViewCount(_.sumBy(result.data, \"uniqueViewCount\"));\r\n _this.commentCount(_.sumBy(result.data, \"commentCount\"));\r\n _this.likeCount(_.sumBy(result.data, \"likeCount\"));\r\n _this.libraryCount(_.sumBy(result.data, \"libraryCount\"));\r\n var viewCountChart = AmCharts.makeChart(\"viewCountChart\", {\r\n language: \"ru\",\r\n type: \"serial\",\r\n theme: \"light\",\r\n valueAxes: [\r\n {\r\n id: \"countAxis\",\r\n axisAlpha: 0,\r\n position: \"left\",\r\n integersOnly: true,\r\n title: \"Количество\"\r\n }, {\r\n title: \"Время чтения, часы\",\r\n id: \"durationAxis\",\r\n axisAlpha: 0,\r\n gridAlpha: 0,\r\n position: \"right\"\r\n }\r\n ],\r\n graphs: [\r\n {\r\n balloonText: \"Просмотров: [[value]]\",\r\n fillAlphas: 0.7,\r\n legendValueText: \"[[value]]\",\r\n title: \"Просмотров\",\r\n type: \"column\",\r\n valueField: \"totalViewCount\",\r\n valueAxis: \"countAxis\"\r\n }, {\r\n balloonText: \"Читателей: [[value]]\",\r\n type: \"column\",\r\n clustered: false,\r\n fillAlphas: 0.5,\r\n columnWidth: 0.5,\r\n legendValueText: \"[[value]]\",\r\n title: \"Читателей\",\r\n valueField: \"uniqueViewCount\",\r\n valueAxis: \"countAxis\",\r\n lineColor: \"#0D52D1\",\r\n showBalloon: false\r\n }, {\r\n balloonText: \"Время чтения: [[value]]\",\r\n type: \"smoothedLine\",\r\n bullet: \"round\",\r\n bulletBorderAlpha: 1,\r\n useLineColorForBulletBorder: true,\r\n bulletColor: \"#FFFFFF\",\r\n hideBulletsCount: 30,\r\n legendValueText: \"[[value]] ч.\",\r\n title: \"Время чтения\",\r\n fillAlphas: 0,\r\n valueField: \"spentTime\",\r\n lineColor: \"#FF9E01\",\r\n valueAxis: \"durationAxis\"\r\n }\r\n ],\r\n chartCursor: {\r\n categoryBalloonDateFormat: categoryBalloonDateFormat,\r\n cursorAlpha: 0.1,\r\n cursorColor: \"#000000\",\r\n fullWidth: true,\r\n valueBalloonsEnabled: false,\r\n zoomable: false\r\n },\r\n dataDateFormat: \"DD.MM.YYYY\",\r\n categoryField: \"date\",\r\n categoryAxis: {\r\n parseDates: true,\r\n dashLength: 1,\r\n minorGridEnabled: true,\r\n minPeriod: minPeriod\r\n },\r\n legend: {\r\n equalWidths: false,\r\n useGraphSettings: true,\r\n align: \"center\"\r\n },\r\n dataProvider: result.data,\r\n pathToImages: window[\"app\"].rootUrl + \"dist/vendor/amcharts/images/\"\r\n });\r\n var secondChart = AmCharts.makeChart(\"secondChart\", {\r\n language: \"ru\",\r\n type: \"serial\",\r\n theme: \"light\",\r\n autoMargins: false,\r\n marginLeft: 80,\r\n marginRight: 75,\r\n valueAxes: [\r\n {\r\n id: \"сount\",\r\n axisAlpha: 0,\r\n position: \"left\",\r\n integersOnly: true\r\n }\r\n ],\r\n graphs: [\r\n {\r\n balloonText: \"Библиотек: [[value]]\",\r\n type: \"smoothedLine\",\r\n bullet: \"round\",\r\n bulletBorderAlpha: 1,\r\n useLineColorForBulletBorder: true,\r\n bulletColor: \"#FFFFFF\",\r\n hideBulletsCount: 30,\r\n legendValueText: \"[[value]]\",\r\n title: \"Добавлений в библиотеку\",\r\n fillAlphas: 0,\r\n valueField: \"libraryCount\",\r\n valueAxis: \"сount\",\r\n lineColor: \"#37bc9b\"\r\n },\r\n {\r\n balloonText: \"Комментариев: [[value]]\",\r\n type: \"smoothedLine\",\r\n bullet: \"round\",\r\n bulletBorderAlpha: 1,\r\n useLineColorForBulletBorder: true,\r\n bulletColor: \"#FFFFFF\",\r\n hideBulletsCount: 30,\r\n legendValueText: \"[[value]]\",\r\n title: \"Количество комментариев\",\r\n fillAlphas: 0,\r\n valueField: \"commentCount\",\r\n valueAxis: \"сount\",\r\n lineColor: \"#7266ba\"\r\n }, {\r\n balloonText: \"Количество лайков: [[value]]\",\r\n type: \"smoothedLine\",\r\n bullet: \"square\",\r\n bulletBorderAlpha: 1,\r\n useLineColorForBulletBorder: true,\r\n bulletColor: \"#FFFFFF\",\r\n hideBulletsCount: 30,\r\n legendValueText: \"[[value]]\",\r\n title: \"Количество лайков\",\r\n fillAlphas: 0,\r\n valueField: \"likeCount\",\r\n valueAxis: \"сount\",\r\n lineColor: \"#84b761\"\r\n }\r\n ],\r\n chartCursor: {\r\n categoryBalloonDateFormat: categoryBalloonDateFormat,\r\n cursorAlpha: 0.1,\r\n cursorColor: \"#000000\",\r\n fullWidth: true,\r\n valueBalloonsEnabled: false,\r\n zoomable: false\r\n },\r\n dataDateFormat: \"DD.MM.YYYY\",\r\n categoryField: \"date\",\r\n categoryAxis: {\r\n parseDates: true,\r\n dashLength: 1,\r\n minorGridEnabled: true,\r\n minPeriod: minPeriod\r\n },\r\n legend: {\r\n equalWidths: false,\r\n useGraphSettings: true,\r\n align: \"center\"\r\n },\r\n dataProvider: result.data,\r\n pathToImages: window[\"app\"].rootUrl + \"dist/vendor/amcharts/images/\"\r\n });\r\n // Костыль против глюка SVG в Хроме\r\n function endsWith(str, suffix) {\r\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\r\n }\r\n var badPart = \"M0,0 L0,0\";\r\n setTimeout(function () {\r\n $(\"svg path\").each(function (i, el) {\r\n var dAttr = $(el).attr(\"d\");\r\n if (endsWith(dAttr, badPart)) {\r\n $(el).attr(\"d\", dAttr.substring(0, dAttr.length - badPart.length));\r\n }\r\n });\r\n }, 50);\r\n _this.isLoading(false);\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=reportUserActivity.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"moment\", \"numeral\", \"../utils/ajaxUtils\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n var numeral = require(\"numeral\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isInitialized = false;\r\n this.workId = ko.observable();\r\n this.valueType = ko.observable();\r\n this.selectedWorkTitle = ko.observable(\"\");\r\n this.startDate = ko.observable();\r\n this.endDate = ko.observable();\r\n this.isLoading = ko.observable(true);\r\n this.noData = ko.observable(false);\r\n this.totalViewCount = ko.observable(0);\r\n this.initComputed = function () {\r\n _this.workId(_this.options.workId);\r\n _this.valueType(_this.options.valueType);\r\n _this.filterData = ko.computed(function () {\r\n var filterData = {\r\n startDate: _this.startDate().toISOString(),\r\n endDate: _this.endDate().toISOString(),\r\n workId: _this.workId(),\r\n valueType: _this.valueType,\r\n auId: _this.auId\r\n };\r\n return filterData;\r\n }).extend({ rateLimit: { timeout: 50, method: \"notifyWhenChangesStop\" } });\r\n ko.computed(function () {\r\n _this.isLoading(true);\r\n var data = _this.filterData();\r\n console.log(data);\r\n if (_this.isInitialized && data.workId) {\r\n _this.refreshGrid();\r\n }\r\n var selectedWork = _.find(_this.allWorks, function (w) { return w.id == data.workId; });\r\n _this.selectedWorkTitle(selectedWork ? selectedWork.title : \"\");\r\n try {\r\n if (!data.workId || data.workId === \"null\") {\r\n delete data.workId;\r\n }\r\n if (!data.auId || data.auId === \"null\") {\r\n delete data.auId;\r\n }\r\n history.replaceState(null, null, \"stats?\" + $.param(data));\r\n }\r\n catch (e) {\r\n }\r\n });\r\n };\r\n this.auId = options.auId;\r\n this.allWorks = options.allWorks;\r\n this.startDate(options.startDate ? moment(options.startDate) : moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate(options.endDate ? moment(options.endDate) : moment().endOf(\"day\"));\r\n setTimeout(function () { return _this.initComputed(); }, 100);\r\n this.isInitialized = true;\r\n window[\"numeral\"] = numeral;\r\n }\r\n ViewModel.prototype.refreshGrid = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.get(\"report/work/stats/data\", this.filterData())\r\n .done(function (result) {\r\n _this.noData(false);\r\n var columnNames = [];\r\n var period = result.data.period;\r\n var valueType = _this.valueType();\r\n var rows = _.map(result.data.stats, function (x) {\r\n Array.prototype.push.apply(columnNames, _.keys(x.data));\r\n return _.extend({\r\n id: x.id,\r\n title: x.title,\r\n }, x.data);\r\n });\r\n if (columnNames.length === 0) {\r\n _this.noData(true);\r\n _this.isLoading(false);\r\n return;\r\n }\r\n columnNames = _.uniq(columnNames);\r\n columnNames.sort().reverse();\r\n var columns = [\r\n {\r\n field: \"title\",\r\n title: \"Часть\",\r\n width: 200,\r\n locked: true,\r\n }\r\n ];\r\n var momentFormat = period === \"month\" ? \"MMM YYYY\" : \"DD.MM\";\r\n var colWidth = period === \"month\" ? 95 : 70;\r\n var colFormat = \"0,0\";\r\n if (valueType !== \"hit\") {\r\n colWidth = 100;\r\n colFormat = \"00:00:00\";\r\n }\r\n _.each(columnNames, function (c) {\r\n var title = moment(c.replace(\"c\", \"\"), \"YYYYMMDD\").format(momentFormat);\r\n var colParams = {\r\n field: c,\r\n title: title,\r\n width: colWidth,\r\n template: \"# if(data.\" + c + \") { # #= numeral(\" + c + \").format('\" + colFormat + \"') # # } #\"\r\n };\r\n columns.push(colParams);\r\n });\r\n var grid = $(\"#grid\").data(\"kendoGrid\");\r\n if (grid) {\r\n grid.destroy();\r\n }\r\n $(\"#grid\").empty();\r\n $(\"#grid\").kendoGrid({\r\n dataSource: {\r\n data: rows\r\n },\r\n height: 550,\r\n scrollable: true,\r\n sortable: true,\r\n pageable: false,\r\n columns: columns\r\n });\r\n _this.isLoading(false);\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=reportWorkStats.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.titleMaxLength = 100;\r\n this.categoryId = ko.observable();\r\n this.text = ko.observable().extend({\r\n required: true\r\n });\r\n this.tags = ko.observableArray(this.options.tags || []).extend({\r\n maxLength: { params: 5, message: \"Нужно указать не более 5-ти тэгов\" }\r\n });\r\n this.tagsSelect2Settings = {\r\n placeholder: 'До 5 тэгов через запятую...',\r\n tags: true, ajax: {\r\n url: window[\"app\"].rootUrl + \"post/searchTags\",\r\n dataType: \"json\",\r\n tokenSeparators: [\",\"],\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n q: params.term,\r\n page: params.page\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.title,\r\n text: x.title,\r\n count: x.count\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n },\r\n tokenSeparators: [','],\r\n maximumSelectionLength: 5,\r\n language: {\r\n maximumSelected: function () { return 'Вы можете выбрать не более 5 тэгов.'; }\r\n },\r\n escapeMarkup: function (markup) { return markup; },\r\n templateResult: function (item) {\r\n if (item.loading) {\r\n return item.text;\r\n }\r\n item.count = item.count || 0;\r\n var markup = \"
\\\r\n
\" + item.text + \"
\\\r\n
\" + item.count + \"
\\\r\n
\";\r\n return markup;\r\n }\r\n };\r\n this.id = options.id;\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 100);\r\n this.errorMessages.subscribe(function (newValue) {\r\n if (newValue && newValue.length) {\r\n $(\"html, body\").stop().animate({ scrollTop: 0 }, \"fast\");\r\n }\r\n });\r\n }\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n };\r\n ViewModel.prototype.showDeletePostModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление рецензии\",\r\n message: \"Вы точно хотите удалить эту рецензию?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"review/delete\", {\r\n id: _this.id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.forceRedirectToPage(result.data.redirectUrl);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=reviewEdit.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"moment\", \"./base/baseViewModel\", \"../utils/richContentUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.startDate = ko.observable(moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate = ko.observable(moment().endOf(\"day\"));\r\n this.searchQuery = ko.observable(this.options.query);\r\n this.searchQueryHasFocus = ko.observable(false);\r\n this.submitQuery = \"\";\r\n this.dateRangePickerOptions = {\r\n ranges: {\r\n 'За сегодня': [moment().startOf(\"day\"), moment().endOf(\"day\")],\r\n 'За неделю': [moment().startOf(\"day\").add(-6, \"days\"), moment().endOf(\"day\")],\r\n 'За месяц': [moment().startOf(\"day\").add(-30, \"days\"), moment().endOf(\"day\")]\r\n }\r\n };\r\n this.isLoading = ko.observable(true);\r\n this.filterData = ko.computed(function () {\r\n var filterData = {\r\n from: moment(_this.startDate()).format(\"YYYY-MM-DD\"),\r\n to: moment(_this.endDate()).format(\"YYYY-MM-DD\")\r\n };\r\n return filterData;\r\n });\r\n if (options.startDate && options.endDate) {\r\n this.startDate(moment(options.startDate).local().startOf(\"day\"));\r\n this.endDate(moment(options.endDate).local().endOf(\"day\"));\r\n }\r\n richContentUtils_1.default.processHtml(\".posts\");\r\n setTimeout(function () {\r\n _this.filterData.subscribe(function (data) {\r\n var filterData = $.param(data);\r\n var url = window.location.pathname + \"?\" + filterData;\r\n _this.redirectToPage(url);\r\n });\r\n }, 100);\r\n $(document).on(\"submit.search\", \"form[data-pjax]\", function (event) {\r\n if (_this.submitQuery !== _this.searchQuery()) {\r\n _this.submitQuery = _this.searchQuery();\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n }\r\n return false;\r\n });\r\n richContentUtils_1.default.processHtml(\"#search-results\");\r\n }\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n if (this.searchQuery().length === 0) {\r\n $(\".search-form\").removeClass(\"open\");\r\n return;\r\n }\r\n this.searchQuery(\"\");\r\n setTimeout(function () {\r\n $(\".search-form\").submit();\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=reviewIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"./base/baseViewModel\", \"../utils/richContentUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.searchQuery = ko.observable(this.options.query);\r\n this.searchQueryHasFocus = ko.observable(false);\r\n this.submitQuery = \"\";\r\n this.isClearBtn = false;\r\n this.showDeleted = ko.observable(false);\r\n $(document).on(\"submit.search\", \"form[data-pjax]\", function (event) {\r\n if (!_this.isClearBtn || _this.submitQuery !== _this.searchQuery()) {\r\n _this.submitQuery = _this.searchQuery();\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n }\r\n _this.isClearBtn = false;\r\n return false;\r\n });\r\n richContentUtils_1.default.processHtml(\"#search-results\");\r\n setTimeout(function () {\r\n _this.showDeleted.subscribe(function () {\r\n $(\".search-form\").submit();\r\n });\r\n }, 200);\r\n }\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n var _this = this;\r\n if (this.searchQuery().length === 0) {\r\n $(\".search-form\").removeClass(\"open\");\r\n return;\r\n }\r\n this.searchQuery(\"\");\r\n setTimeout(function () {\r\n _this.isClearBtn = true;\r\n $(\".search-form\").submit();\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=reviewManage.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"./base/validatedViewModel\", \"../utils/richContentUtils\", \"../utils/commentUtils\", \"../utils/socialUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n var commentUtils_1 = require(\"../utils/commentUtils\");\r\n var socialUtils_1 = require(\"../utils/socialUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n this.commentSubscription = ko.observable();\r\n socialUtils_1.default.init();\r\n commentUtils_1.default.init(options.lastViewTime);\r\n richContentUtils_1.default.processHtml(\".full-post, .comments\");\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=reviewView.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"moment\", \"./base/baseViewModel\", \"../utils/dateTimeUtils\", \"../plugins/stickySidebar\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var moment = require(\"moment\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var stickySidebar_1 = require(\"../plugins/stickySidebar\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(false);\r\n this.searchQuery = ko.observable(this.options.query);\r\n this.tags = ko.observableArray(this.options.tags || []);\r\n this.postSortOrder = ko.observable();\r\n this.workTagsSelect2Settings = this.getSelect2Options(\"work/searchTags\");\r\n this.postTagsSelect2Settings = this.getSelect2Options(\"post/searchTags\");\r\n this.collectionTagsSelect2Settings = this.getSelect2Options(\"collection/searchTags\");\r\n this.artTagsSelect2Settings = this.getSelect2Options(\"art/searchTags\");\r\n this.startDate = ko.observable(moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate = ko.observable(moment().endOf(\"day\"));\r\n this.startDateAsString = ko.pureComputed(function () {\r\n return moment(_this.startDate()).format(\"YYYY-MM-DD\");\r\n });\r\n this.endDateAsString = ko.pureComputed(function () {\r\n return moment(_this.endDate()).format(\"YYYY-MM-DD\");\r\n });\r\n this.dateRangePickerOptions = {\r\n ranges: {\r\n 'За сегодня': [moment().startOf(\"day\"), moment().endOf(\"day\")],\r\n 'За неделю': [moment().startOf(\"day\").add(-6, \"days\"), moment().endOf(\"day\")],\r\n 'За месяц': [moment().startOf(\"day\").add(-30, \"days\"), moment().endOf(\"day\")]\r\n }\r\n };\r\n this.submitQuery = this.options.query;\r\n this.isClearBtn = false;\r\n if (options.startDate && options.endDate) {\r\n this.startDate(moment(options.startDate).local().startOf(\"day\"));\r\n this.endDate(moment(options.endDate).local().endOf(\"day\"));\r\n }\r\n $(document).off(\"submit\", \"form[data-pjax]\");\r\n $(document).on(\"submit\", \"form[data-pjax]\", function (event) {\r\n if (!_this.isClearBtn || _this.submitQuery !== _this.searchQuery()) {\r\n _this.submitQuery = _this.searchQuery();\r\n $.pjax.submit(event, \"#search-results\", { fragment: \"#search-results\" });\r\n }\r\n _this.isClearBtn = false;\r\n return false;\r\n });\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n dateTimeUtils_1.default.displayTime($(\"#search-results\"));\r\n });\r\n $(document).ready(function () {\r\n stickySidebar_1.default.init($(\"#sticky\"));\r\n });\r\n }\r\n ViewModel.prototype.getSelect2Options = function (url) {\r\n return {\r\n placeholder: \"До 5 тэгов через запятую...\",\r\n ajax: {\r\n url: window[\"app\"].rootUrl + url,\r\n dataType: \"json\",\r\n tokenSeparators: [\",\"],\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n q: params.term,\r\n page: params.page\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.title,\r\n text: x.title,\r\n count: x.count\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n },\r\n tokenSeparators: [\",\"],\r\n maximumSelectionLength: 5,\r\n language: {\r\n maximumSelected: function () { return \"Вы можете выбрать не более 5 тэгов.\"; }\r\n },\r\n escapeMarkup: function (markup) { return markup; },\r\n templateResult: function (item) {\r\n if (item.loading) {\r\n return item.text;\r\n }\r\n var markup = \"
\\\r\n
\" + item.text + \"
\\\r\n
\" + item.count + \"
\\\r\n
\";\r\n return markup;\r\n }\r\n };\r\n };\r\n ViewModel.prototype.dispose = function () {\r\n $(document).off(\"submit\", \"form[data-pjax]\");\r\n };\r\n ViewModel.prototype.categoryClick = function (url) {\r\n $.pjax({ container: \"#pjax-container\", url: url + \"&q=\" + this.searchQuery() });\r\n };\r\n ViewModel.prototype.clearSearchQuery = function () {\r\n var _this = this;\r\n this.searchQuery(\"\");\r\n setTimeout(function () {\r\n _this.isClearBtn = true;\r\n $(\"#search-query-form\").submit();\r\n });\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=searchIndex.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=simpleViewModel.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel() {\r\n _super.apply(this, arguments);\r\n this.code = ko.observable();\r\n }\r\n /** Подключает TOTP */\r\n ViewModel.prototype.addTotp = function () {\r\n var _this = this;\r\n this.removeError();\r\n if (!this.code()) {\r\n this.showError(\"Введите код подтверждения двухфакторной аутентификации!\");\r\n return;\r\n }\r\n ajaxUtils_1.AjaxUtils.get(\"account/addTotp\", { code: this.code })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n if (result.data) {\r\n location.href = \"/account/security\";\r\n }\r\n else {\r\n _this.showError(\"Указанный код неверен!\");\r\n }\r\n });\r\n };\r\n ViewModel.prototype.copySecretKey = function () {\r\n var text = $('#secretKey').val();\r\n var input = document.createElement('input');\r\n input.setAttribute('value', text.toString());\r\n document.body.appendChild(input);\r\n input.select();\r\n var result = document.execCommand('copy');\r\n document.body.removeChild(input);\r\n if (result) {\r\n this.showModal({\r\n title: \"\\u0418\\u043D\\u0444\\u043E\\u0440\\u043C\\u0430\\u0446\\u0438\\u044F\",\r\n type: 3,\r\n message: \"Секретный ключ скопирован в буфер обмена\"\r\n });\r\n }\r\n };\r\n ViewModel.prototype.showError = function (message) {\r\n $(\"#form-group-code\").addClass(\"has-error\");\r\n $(\"#form-group-code .error\").html(message);\r\n };\r\n ViewModel.prototype.removeError = function () {\r\n $(\"#form-group-code\").removeClass(\"has-error\");\r\n $(\"#form-group-code .error\").html(\"\");\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=totp.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"moment\", \"../utils/ajaxUtils\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.ranges = {\r\n 'За неделю': [moment().startOf(\"day\").add(-6, \"days\"), moment().endOf(\"day\")],\r\n 'За месяц': [moment().startOf(\"day\").add(-30, \"days\"), moment().endOf(\"day\")]\r\n };\r\n this.dateRangePickerOptions = {\r\n minDate: moment().startOf(\"day\").add(-30, \"days\"),\r\n maxDate: moment()\r\n };\r\n this.startDate = ko.observable();\r\n this.endDate = ko.observable();\r\n this.isLoading = ko.observable(true);\r\n this.getFilterData = function () {\r\n return _this.filterData();\r\n };\r\n this.type = options.type;\r\n this.auId = options.auId;\r\n this.routeName = options.routeName;\r\n this.chartTitle = options.chartTitle;\r\n this.startDate(options.startDate ? moment(options.startDate) : moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate(options.endDate ? moment(options.endDate) : moment().endOf(\"day\"));\r\n this.filterData = ko.computed(function () {\r\n var filterData = {\r\n startDate: _this.toDateFormat(_this.startDate()),\r\n endDate: _this.toDateFormat(_this.endDate()),\r\n auId: _this.auId,\r\n type: _this.type\r\n };\r\n return filterData;\r\n }).extend({\r\n rateLimit: {\r\n timeout: 300,\r\n method: \"notifyWhenChangesStop\"\r\n }\r\n });\r\n var isInitialized = false;\r\n setTimeout(function () {\r\n ko.computed(function () {\r\n var data = _this.filterData();\r\n if (!isInitialized)\r\n return;\r\n _this.isLoading(true);\r\n _this.loadDynamicChart();\r\n var grid = $(\"#grid\").data(\"kendoGrid\");\r\n if (grid) {\r\n grid.dataSource.read(data);\r\n }\r\n try {\r\n if (!data.auId || data.auId === \"null\") {\r\n delete data.auId;\r\n }\r\n history.replaceState(null, null, _this.routeName + \"?\" + $.param(data));\r\n }\r\n catch (e) {\r\n }\r\n });\r\n });\r\n this.filterData.subscribe(function () {\r\n isInitialized = true;\r\n });\r\n }\r\n ViewModel.prototype.loadDynamicChart = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.get(\"report/merged-by-day\", this.filterData())\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n AmCharts.makeChart(\"chartdiv\", {\r\n language: \"ru\",\r\n type: \"serial\",\r\n theme: \"light\",\r\n synchronizeGrid: true,\r\n thousandsSeparator: \" \",\r\n \"categoryField\": \"date\",\r\n \"categoryAxis\": {\r\n gridPosition: \"start\",\r\n parseDates: true,\r\n dashLength: 1,\r\n minPeriod: \"DD\"\r\n },\r\n \"graphs\": [\r\n {\r\n \"title\": _this.chartTitle,\r\n \"valueField\": \"value\",\r\n \"lineColor\": \"#8ac858\",\r\n \"negativeLineColor\": \"#a94442\",\r\n \"fillAlphas\": 0.4,\r\n \"type\": \"smoothedLine\"\r\n }\r\n ],\r\n \"valueAxes\": [\r\n {\r\n \"title\": _this.chartTitle\r\n }\r\n ],\r\n \"legend\": {\r\n \"useGraphSettings\": true\r\n },\r\n \"dataProvider\": result.data,\r\n chartCursor: {\r\n cursorAlpha: 0.1,\r\n cursorColor: \"#000000\",\r\n fullWidth: true,\r\n zoomable: false\r\n },\r\n dataDateFormat: \"DD.MM.YYYY\"\r\n });\r\n _this.isLoading(false);\r\n });\r\n };\r\n ViewModel.prototype.toDateFormat = function (date) {\r\n return date.toISOString();\r\n };\r\n ViewModel.prototype.toNumberFormat = function (value) {\r\n return (Math.round(value * 100) / 100).toLocaleString('ru');\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=userRatingReport.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"knockout\", \"toastr\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var AccountWalletViewModel = (function (_super) {\r\n __extends(AccountWalletViewModel, _super);\r\n function AccountWalletViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.saveCard = ko.observable(false);\r\n this.savedCardId = ko.observable(-1);\r\n this.profileId = ko.observable(-1);\r\n this.giftsEnabled = ko.observable(false);\r\n this.saveCard(options.saveCard);\r\n this.giftsEnabled(options.giftsEnabled);\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n }\r\n AccountWalletViewModel.prototype.onSubmitSucess = function (result) {\r\n this.reloadPage();\r\n };\r\n AccountWalletViewModel.prototype.onSubmitFail = function (result) {\r\n if (result.messages && result.messages.length > 0)\r\n toastr.error(result.messages[0]);\r\n };\r\n AccountWalletViewModel.prototype.deleteSavedCard = function (all) {\r\n var _this = this;\r\n var confirmMessage = all ? \"Вы уверены, что хотите отвязать все карты?\" : \"Вы уверены, что хотите отвязать карту?\";\r\n if (!confirm(confirmMessage))\r\n return;\r\n var id = this.savedCardId();\r\n var auId = this.profileId();\r\n ajaxUtils_1.AjaxUtils.post(\"merchant/deleteSavedCard\", {\r\n id: id,\r\n auId: auId,\r\n all: all\r\n })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success('Карта успешно отвязана!');\r\n _this.reloadPage();\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n });\r\n };\r\n return AccountWalletViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = AccountWalletViewModel;\r\n});\r\n//# sourceMappingURL=walletSettings.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"js.cookie\", \"./base/baseViewModel\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var Cookies = require(\"js.cookie\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.moreFilters = ko.observable(this.options.showMoreFilters);\r\n this.isLoading = ko.observable(false);\r\n this.genres = ko.observableArray();\r\n this.exceptGenreIds = ko.observableArray();\r\n this.form = ko.observable();\r\n this.state = ko.observable();\r\n this.series = ko.observable();\r\n this.download = ko.observable();\r\n this.lastUpdate = ko.observable();\r\n this.published = ko.observable();\r\n this.format = ko.observable();\r\n this.duration = ko.observable();\r\n this.length = ko.observable();\r\n this.viewMode = ko.observable();\r\n this.hideFinished = ko.observable(false);\r\n this.seriesOrder = ko.observable();\r\n this.rp = ko.observable();\r\n this.toggleMoreFilters = function () {\r\n _this.moreFilters(!_this.moreFilters());\r\n if (_this.moreFilters()) {\r\n $(\"#moreFilters\").addClass(\"in\");\r\n }\r\n else {\r\n $(\"#moreFilters\").removeClass(\"in\");\r\n }\r\n };\r\n this.switchView = function (mode) {\r\n _this.viewMode(mode);\r\n };\r\n var initialized = false;\r\n this.viewMode(options.viewMode);\r\n var defaultViewMode = Cookies.get(\"at.workView\") || \"list\";\r\n ko.computed(function () {\r\n var genres = _this.genres(), exceptGenreIds = _this.exceptGenreIds(), form = _this.form(), state = _this.state(), series = _this.series(), seriesOrder = _this.seriesOrder(), dnl = _this.download(), upd = _this.lastUpdate(), pub = _this.published(), format = _this.format(), duration = _this.duration(), length = _this.length(), view = _this.viewMode(), fnd = _this.hideFinished();\r\n if (!initialized) {\r\n return;\r\n }\r\n if (series === \"out\" && seriesOrder != \"any\") {\r\n _this.seriesOrder(\"any\");\r\n return;\r\n }\r\n var params = {};\r\n if (view !== defaultViewMode) {\r\n params.view = view;\r\n defaultViewMode = view;\r\n // Сохраняем страницу только при смене вида отображения книг\r\n if (options.page && options.page > 1) {\r\n params.page = options.page;\r\n }\r\n }\r\n else {\r\n options.page = 1;\r\n }\r\n if (options.sorting !== \"popular\") {\r\n params.sorting = options.sorting;\r\n }\r\n else if (options.rp !== \"today\") {\r\n params.rp = options.rp;\r\n }\r\n if (form !== \"any\") {\r\n params.form = form;\r\n }\r\n if (state !== \"any\") {\r\n params.state = state;\r\n }\r\n if (series !== \"any\") {\r\n params.series = series;\r\n }\r\n if (dnl !== \"any\") {\r\n params.dnl = dnl;\r\n }\r\n if (upd !== \"-1\") {\r\n params.upd = upd;\r\n }\r\n if (pub !== \"-1\") {\r\n params.pub = pub;\r\n }\r\n if (format !== \"any\") {\r\n params.format = format;\r\n }\r\n if (duration !== \"any\" && format == \"audiobook\") {\r\n params.duration = duration;\r\n }\r\n if (length !== \"any\" && format == \"ebook\") {\r\n params.length = length;\r\n }\r\n if (seriesOrder !== \"any\") {\r\n params.seriesOrder = seriesOrder;\r\n }\r\n if (exceptGenreIds) {\r\n params.eg = exceptGenreIds.join(\"-\");\r\n }\r\n else {\r\n params.eg = \"\";\r\n }\r\n params.fnd = fnd;\r\n var genreCodes;\r\n if (genres && genres.length > 0) {\r\n genreCodes = genres.join(\"&\");\r\n }\r\n else {\r\n genreCodes = \"all\";\r\n }\r\n var url = app.rootUrl + (\"work/discounts/\" + genreCodes + \"?\" + $.param(params));\r\n $.pjax({ url: url, container: \"#search-results\", fragment: \"#search-results\" });\r\n });\r\n setTimeout(function () {\r\n initialized = true;\r\n }, 200);\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n dateTimeUtils_1.default.displayTime();\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workDiscounts.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"toastr\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\", \"../utils/imageUtils\", \"../components/modalDialog\", \"../utils/windowUtils\", \"../utils/stringUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n // @ts-ignore\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n // @ts-ignore\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var imageUtils_1 = require(\"../utils/imageUtils\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var windowUtils_1 = require(\"../utils/windowUtils\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.titleMaxLength = 150;\r\n this.annotationMaxLength = 1000;\r\n this.authorNotesMaxLength = 1000;\r\n this.unsupportedCoverType = [\"image/gif\", \"image/tiff\"];\r\n this.isDirty = false;\r\n this.uploadErrorMessages = ko.observableArray();\r\n this.title = ko.observable().extend({\r\n required: true,\r\n maxLength: this.titleMaxLength\r\n });\r\n this.titleHint = ko.pureComputed(function () {\r\n var title = _this.title() || \"\";\r\n return title.length + \"/\" + _this.titleMaxLength;\r\n });\r\n this.coAuthorId = ko.observable();\r\n this.secondCoAuthorId = ko.observable().extend({\r\n validation: {\r\n validator: function (val) {\r\n return val === undefined || val === null || _this.coAuthorId() !== val;\r\n },\r\n message: \"Первый и второй соавторы не могут совпадать.\"\r\n }\r\n });\r\n this.reciter = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.format() === \"Audiobook\";\r\n }\r\n },\r\n maxLength: this.titleMaxLength\r\n });\r\n this.linkedWorkId = ko.observable();\r\n this.workIdSearchSelect2Settings = {\r\n minimumResultsForSearch: 3,\r\n placeholder: \"Не выбрано\",\r\n allowClear: true,\r\n ajax: {\r\n url: window[\"app\"].rootUrl + \"work/searchLinkedWorks\",\r\n dataType: \"json\",\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n q: params.term,\r\n format: \"EBook\",\r\n page: params.page\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.id,\r\n text: x.title,\r\n coverUrl: x.coverUrl\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n },\r\n escapeMarkup: function (markup) { return markup; },\r\n templateResult: function (item) {\r\n if (item.loading) {\r\n return item.text;\r\n }\r\n var markup = \"
\" + (item.coverUrl ? \"\" : \"\") + \"\" + item.text + \"
\";\r\n return markup;\r\n }\r\n };\r\n this.originalAuthor = ko.observable().extend({\r\n required: {\r\n onlyIf: function () {\r\n return _this.workForm() === \"Translation\";\r\n }\r\n },\r\n maxLength: this.titleMaxLength\r\n });\r\n this.translator = ko.observable().extend({\r\n maxLength: this.titleMaxLength\r\n });\r\n this.coAuthorIdSelect2Settings = {\r\n placeholder: 'Нет соавтора',\r\n minimumInputLength: 3,\r\n minimumResultsForSearch: -1,\r\n allowClear: true,\r\n ajax: {\r\n url: window[\"app\"].rootUrl + \"account/searchUser\",\r\n dataType: \"json\",\r\n tokenSeparators: [\",\"],\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n userId: _this.options.authorId,\r\n q: params.term,\r\n page: params.page\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.userId,\r\n text: x.fio + \" @\" + x.userName\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n }\r\n };\r\n this.originalAuthorSelect2Settings = {\r\n placeholder: \"Автор оригинала (просмотр статистики)\",\r\n minimumResultsForSearch: 5,\r\n allowClear: true,\r\n ajax: {\r\n url: window[\"app\"].rootUrl + \"account/searchUser\",\r\n dataType: \"json\",\r\n tokenSeparators: [\",\"],\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n userId: _this.options.authorId,\r\n q: params.term,\r\n page: params.page,\r\n onlyFriends: false\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.userId,\r\n text: x.fio + \" @\" + x.userName\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n }\r\n };\r\n this.annotation = ko.observable().extend({\r\n maxLength: this.annotationMaxLength\r\n });\r\n this.annotationHint = ko.pureComputed(function () {\r\n var annotation = _this.annotation() || \"\";\r\n return annotation.length + \"/\" + _this.annotationMaxLength;\r\n });\r\n this.authorNotes = ko.observable().extend({\r\n maxLength: this.authorNotesMaxLength\r\n });\r\n this.authorNotesHint = ko.pureComputed(function () {\r\n var authorNotes = _this.authorNotes() || \"\";\r\n return authorNotes.length + \"/\" + _this.authorNotesMaxLength;\r\n });\r\n this.coverUrl = ko.observable();\r\n this.coverHeight = ko.observable();\r\n this.coverWidth = ko.observable();\r\n this.format = ko.observable();\r\n this.workForm = ko.observable();\r\n this.genreId = ko.observable().extend({\r\n validation: {\r\n validator: function (val) {\r\n return val !== \"null\";\r\n },\r\n message: \"Пожалуйста, укажите жанр произведения\"\r\n }\r\n });\r\n this.firstSubGenreId = ko.observable();\r\n this.secondSubGenreId = ko.observable();\r\n this.tags = ko.observableArray(this.options.tags || []).extend({\r\n maxLength: { params: 12, message: \"Нужно указать не более 12-ти тэгов\" }\r\n });\r\n this.tagsSelect2Settings = {\r\n placeholder: 'До 12 тэгов через запятую, разрешены пробелы',\r\n tags: true,\r\n ajax: {\r\n url: window[\"app\"].rootUrl + \"work/searchTags\",\r\n dataType: \"json\",\r\n tokenSeparators: [\",\"],\r\n delay: 300,\r\n data: function (params) {\r\n return {\r\n q: params.term,\r\n page: params.page\r\n };\r\n },\r\n processResults: function (result, params) {\r\n if (result.isSuccessful) {\r\n var data = result.data;\r\n data.results = _.map(data.results, function (x) {\r\n return {\r\n id: x.title,\r\n text: x.title,\r\n count: x.count || 0\r\n };\r\n });\r\n return data;\r\n }\r\n return {\r\n results: []\r\n };\r\n }\r\n },\r\n tokenSeparators: [','],\r\n maximumSelectionLength: 12,\r\n language: {\r\n maximumSelected: function () { return 'Вы можете выбрать не более 12-ти тэгов.'; }\r\n },\r\n escapeMarkup: function (markup) { return markup; },\r\n templateResult: function (item) {\r\n if (item.loading) {\r\n return item.text;\r\n }\r\n item.count = item.count || 0;\r\n return \"
\\\r\n
\" + item.text + \"
\\\r\n
\" + item.count + \"
\\\r\n
\";\r\n }\r\n };\r\n this.adultOnly = ko.observable();\r\n this.adultOnlyEnabled = ko.observable(true);\r\n this.privacyDisplayId = ko.observable();\r\n this.privacyDisplayOptions = [\r\n { id: 1, title: \"Все\" },\r\n { id: 2, title: \"Только друзья\" }\r\n ];\r\n this.privacyDownloadsId = ko.observable();\r\n this.privacyDownloadsOptions = [\r\n { id: 1, title: \"Все\" },\r\n { id: 2, title: \"Мои подписчики и друзья\" },\r\n { id: 3, title: \"Только друзья\" },\r\n { id: 0, title: \"Никто\" }\r\n ];\r\n this.privacyCommentsId = ko.observable();\r\n this.privacyCommentsOptions = [\r\n { id: 1, title: \"Все\" },\r\n { id: 2, title: \"Только друзья\" },\r\n { id: 0, title: \"Никто\" }\r\n ];\r\n this.shadowBanPenalty = ko.observable();\r\n this.isShadowBan = ko.observable(false);\r\n this.format(options.format);\r\n this.workForm(options.workForm);\r\n this.titleInit = options.titleInit;\r\n this.annotationInit = options.annotationInit || \"\";\r\n this.authorNotesInit = options.authorNotesInit || \"\";\r\n this.workForm.subscribe(function (form) {\r\n if (form === \"Poetry\") {\r\n setTimeout(function () {\r\n _this.genreId(\"13\");\r\n }, 0);\r\n }\r\n });\r\n this.adultGenreIds = options.adultGenreIds;\r\n ko.computed(function () {\r\n var genreId = _this.genreId();\r\n var subGenreId = _this.firstSubGenreId();\r\n var secondSubGenreId = _this.secondSubGenreId();\r\n var isAdultOnly = genreId && _this.adultGenreIds.includes(parseInt(genreId.toString()))\r\n || subGenreId && _this.adultGenreIds.includes(parseInt(subGenreId.toString()))\r\n || secondSubGenreId && _this.adultGenreIds.includes(parseInt(secondSubGenreId.toString()));\r\n if (isAdultOnly) {\r\n _this.adultOnly(true);\r\n }\r\n setTimeout(function () {\r\n _this.adultOnlyEnabled(!isAdultOnly);\r\n }, 50);\r\n });\r\n ko.computed(function () {\r\n var description = _this.title() || \"\";\r\n var annotation = _this.annotation() || \"\";\r\n var authorNotes = _this.authorNotes() || \"\";\r\n var isDirty = stringUtils_1.default.compareWithoutLineBreaks(description, _this.titleInit)\r\n || stringUtils_1.default.compareWithoutLineBreaks(annotation, _this.annotationInit)\r\n || stringUtils_1.default.compareWithoutLineBreaks(authorNotes, _this.authorNotesInit);\r\n _this.isDirty = isDirty;\r\n windowUtils_1.default.setDirty(isDirty);\r\n });\r\n this.privacyDisplayId(options.privacyDisplayId);\r\n this.privacyDownloadsId(options.privacyDownloadsId);\r\n this.privacyCommentsId(options.privacyCommentsId);\r\n setTimeout(function () {\r\n if (options.genreId) {\r\n _this.genreId(options.genreId);\r\n }\r\n _this.genreId.isModified(false);\r\n _this.initValidation();\r\n }, 0);\r\n this.errorMessages.subscribe(function (newValue) {\r\n if (newValue && newValue.length) {\r\n $(\"html, body\").stop().animate({ scrollTop: 0 }, \"fast\");\r\n }\r\n });\r\n }\r\n ViewModel.prototype.showUploadCoverModal = function (CoverChangeDisabled) {\r\n var _this = this;\r\n if (CoverChangeDisabled === void 0) { CoverChangeDisabled = false; }\r\n if (CoverChangeDisabled) {\r\n this.showModal({\r\n title: \"\\u0418\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435 \\u043E\\u0431\\u043B\\u043E\\u0436\\u043A\\u0438 \\u043D\\u0435\\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u043D\\u043E\",\r\n type: modalDialog_1.ModalType.Alert,\r\n message: \"\\u0410\\u0434\\u043C\\u0438\\u043D\\u0438\\u0441\\u0442\\u0440\\u0430\\u0442\\u043E\\u0440 \\u0437\\u0430\\u0431\\u043B\\u043E\\u043A\\u0438\\u0440\\u043E\\u0432\\u0430\\u043B \\u0441\\u043C\\u0435\\u043D\\u0443 \\u043E\\u0431\\u043B\\u043E\\u0436\\u043A\\u0438 \\u0434\\u043B\\u044F \\u044D\\u0442\\u043E\\u0433\\u043E \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F.\"\r\n });\r\n }\r\n else {\r\n this.showModal({\r\n title: \"Загрузка изображения\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"uploadCover\",\r\n onShow: function ($modal) {\r\n _this.uploadErrorMessages([]);\r\n var $dropZone = $modal.find((\".drop-zone\"));\r\n imageUtils_1.default.createDropZone($dropZone, function (files) {\r\n _this.processFiles(files);\r\n });\r\n }\r\n });\r\n }\r\n };\r\n ViewModel.prototype.selectImage = function () {\r\n var $input = this.modal.getModal().find(\"input[type='file']\");\r\n $input.click();\r\n };\r\n ViewModel.prototype.onSelectImage = function (data, event) {\r\n this.uploadErrorMessages([]);\r\n var $input = $(event.target), files = event.target.files;\r\n this.processFiles(files);\r\n $input.val(\"\");\r\n };\r\n ViewModel.prototype.processFiles = function (files) {\r\n var _this = this;\r\n if (files && files.length) {\r\n var file_1 = files[0];\r\n var errorMessages = [];\r\n if (file_1.size > 15 * 1024 * 1024) {\r\n errorMessages.push(\"Слишком большой размер файла. Пожалуйста, выберите файл размером не более 15 мб.\");\r\n }\r\n if (!/^image\\/\\w+$/.test(file_1.type) || this.unsupportedCoverType.indexOf(file_1.type) > -1) {\r\n errorMessages.push(\"Данный формат файла не поддерживается. Пожалуйста, выберите изображение.\");\r\n }\r\n if (errorMessages.length) {\r\n this.uploadErrorMessages(errorMessages);\r\n return;\r\n }\r\n var blobUrl_1 = URL.createObjectURL(file_1);\r\n imageUtils_1.default.getImageSize(blobUrl_1).done(function (imageSize) {\r\n if (imageSize.width < 200 || imageSize.height < 285) {\r\n _this.uploadErrorMessages([\"Слишком маленький размер изображения.\"]);\r\n return;\r\n }\r\n _this.coverUrl(blobUrl_1);\r\n _this.coverUrlFile = file_1;\r\n _this.modal.hide();\r\n });\r\n }\r\n };\r\n ViewModel.prototype.removeCover = function () {\r\n URL.revokeObjectURL(this.coverUrl());\r\n this.coverUrl(null);\r\n this.coverUrlFile = null;\r\n };\r\n ViewModel.prototype.beforeSubmit = function (formElement, extendedData, callback) {\r\n var _this = this;\r\n this.errorMessages([]);\r\n this.processing(true);\r\n if (this.coverUrlFile) {\r\n var formData = new FormData();\r\n formData.append(\"file\", this.coverUrlFile);\r\n ajaxUtils_1.AjaxUtils.uploadFile(\"file/uploadCoverImage\", formData)\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n _this.errorMessages(result.messages);\r\n }\r\n else {\r\n _this.coverUrl(result.data.url);\r\n _this.coverHeight(result.data.height);\r\n _this.coverWidth(result.data.width);\r\n setTimeout(callback, 50);\r\n }\r\n }).fail(function () {\r\n _this.errorMessages([\"Произошла ошибка во время выполнения запроса. Попробуйте еще раз через некоторое время.\"]);\r\n _this.processing(false);\r\n });\r\n }\r\n else {\r\n callback();\r\n }\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n if (result.data && result.data.redirectUrl) {\r\n this.redirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n this.reloadPage();\r\n }\r\n };\r\n ViewModel.prototype.deleteCoAuthor = function (coAuthorId) {\r\n var _this = this;\r\n if (this.processing())\r\n return;\r\n if (this.validation !== undefined && !this.validation.isValid()) {\r\n this.validation.errors.showAllMessages();\r\n return;\r\n }\r\n this.showModal({\r\n title: \"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u043E\\u0430\\u0432\\u0442\\u043E\\u0440\\u0430\",\r\n type: 1,\r\n okBtnText: \"Продолжить\",\r\n maxWidth: \"500px\",\r\n message: \"\\u0412\\u044B \\u0443\\u0432\\u0435\\u0440\\u0435\\u043D\\u044B \\u0447\\u0442\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0441\\u043E\\u0430\\u0432\\u0442\\u043E\\u0440\\u0430?\" + (this.isDirty ? \"
Несохраненные изменения будут утеряны.\" : \"\"),\r\n onSubmit: function () {\r\n _this.processing(true);\r\n windowUtils_1.default.setDirty(false);\r\n ajaxUtils_1.AjaxUtils.post(\"work/deleteCoAuthor\", {\r\n id: _this.options.id,\r\n coAuthorId: coAuthorId\r\n })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n toastr.error(result.messages[0]);\r\n }\r\n else {\r\n if (result.messages && result.messages.length > 0) {\r\n toastr.success(result.messages[0]);\r\n }\r\n _this.onSubmitSucess(result);\r\n }\r\n })\r\n .always(function () {\r\n setTimeout(function () {\r\n _this.processing(false);\r\n }, 0);\r\n });\r\n _this.modal.hide();\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workEdit.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"moment\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.titleMaxLength = 200;\r\n this.title = ko.observable().extend({\r\n required: true,\r\n maxLength: this.titleMaxLength\r\n });\r\n this.titleHint = ko.pureComputed(function () {\r\n var title = _this.title() || \"\";\r\n var characters = title.length;\r\n return characters + \"/\" + _this.titleMaxLength;\r\n });\r\n this.text = ko.observable();\r\n this.autoPublish = ko.observable();\r\n this.autoPublishTime = ko.observable();\r\n this.autoPublishTimeValue = ko.computed(function () {\r\n return moment(_this.autoPublishTime()).toISOString();\r\n });\r\n this.timePickerIncrement = 15;\r\n this.dateRangePickerOptions = {\r\n timePicker: true,\r\n timePickerIncrement: this.timePickerIncrement,\r\n timePicker24Hour: true,\r\n drops: \"up\",\r\n minDate: this.getMinDate(),\r\n locale: { format: \"DD MMMM YYYY в HH:mm\" }\r\n };\r\n this.saveBtnText = ko.pureComputed(function () {\r\n var autoPublish = _this.autoPublish();\r\n return autoPublish ? \"Запланировать публикацию\" : \"Опубликовать\";\r\n });\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n var froalaOptions = {\r\n heightMin: 400,\r\n heightMax: 500,\r\n charCounterMax: 200000,\r\n imageEditButtons: [\"imageReplace\", \"imageAlign\", \"imageDisplay\", \"imageAlt\", \"|\", \"imageRemove\"],\r\n paragraphStyles: {\r\n 'fr-indent': \"С красной строкой\"\r\n },\r\n htmlAllowedTags: [\r\n \"b\", \"blockquote\", \"br\",\r\n \"cite\", \"del\", \"div\", \"em\", \"hr\", \"i\", \"img\", \"li\",\r\n \"ol\", \"p\", \"pre\", \"small\", \"span\", \"strike\",\r\n \"strong\", \"sub\", \"sup\", \"table\", \"dd\", \"u\", \"ul\", \"sup\", \"sub\"\r\n ],\r\n toolbarButtons: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\", \"typograf\",\r\n \"align\", \"color\", \"quote\", \"insertImage\", \"|\", \"clearFormatting\", \"fullscreen\", \"html\", \"|\", \"undo\",\r\n \"redo\"\r\n ],\r\n toolbarButtonsMD: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\", \"typograf\",\r\n \"align\", \"color\", \"quote\", \"insertImage\", \"|\", \"clearFormatting\", \"fullscreen\", \"html\", \"|\", \"undo\",\r\n \"redo\"\r\n ],\r\n toolbarButtonsSM: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\", \"typograf\",\r\n \"align\", \"color\", \"quote\", \"insertImage\", \"|\", \"clearFormatting\", \"fullscreen\", \"html\", \"|\", \"undo\",\r\n \"redo\"\r\n ],\r\n toolbarButtonsXS: [\r\n \"bold\", \"italic\", \"underline\", \"strikeThrough\", \"|\", \"typograf\",\r\n \"align\", \"color\", \"quote\", \"insertImage\", \"|\", \"clearFormatting\", \"fullscreen\", \"html\", \"|\", \"undo\",\r\n \"redo\"\r\n ],\r\n dirtyWhenUpdate: true\r\n };\r\n if (options.redLine === false) {\r\n froalaOptions.toolbarButtons.splice(5, 0, \"paragraphStyle\");\r\n froalaOptions.toolbarButtonsMD.splice(5, 0, \"paragraphStyle\");\r\n froalaOptions.toolbarButtonsSM.splice(5, 0, \"paragraphStyle\");\r\n }\r\n if (options.autoPublishTime) {\r\n this.autoPublishTime(moment(options.autoPublishTime).toDate());\r\n this.autoPublish(true);\r\n }\r\n else {\r\n this.autoPublishTime(this.getMinDate());\r\n }\r\n this.froalaOptions = froalaOptions;\r\n this.errorMessages.subscribe(function (newValue) {\r\n if (newValue && newValue.length) {\r\n $(\"html, body\").stop().animate({ scrollTop: 0 }, \"fast\");\r\n }\r\n });\r\n }\r\n ViewModel.prototype.getMinDate = function () {\r\n var now = moment();\r\n var minutes = this.timePickerIncrement - now.minutes() % this.timePickerIncrement;\r\n return now.add(\"m\", minutes).set(\"s\", 0).toDate();\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.redirectToPage(result.data.redirectUrl);\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workEditChapter.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"sortable\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var Sortable = require(\"sortable\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.workId = this.options.workId;\r\n this.allowDelete = this.options.allowDelete;\r\n this.enableSorting = ko.observable();\r\n this.processingChapter = ko.observable(false);\r\n var ul = $(\".sortable\")[0];\r\n if (ul) {\r\n var sortable = new Sortable(ul, {\r\n animation: 150,\r\n handle: \".sortable-handle\",\r\n filter: \".btn\",\r\n onFilter: function (evt) {\r\n var item = evt.item, $ctrl = $(evt.target);\r\n $ctrl.trigger(evt);\r\n },\r\n onEnd: function (e) {\r\n ajaxUtils_1.AjaxUtils.post(\"work/reorderChapter\", {\r\n workId: _this.workId,\r\n oldIndex: e.oldIndex,\r\n newIndex: e.newIndex\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"Порядок частей был изменен.\");\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n ViewModel.prototype.updateState = function (state) {\r\n var _this = this;\r\n var message = \"Потдвердите изменение статуса\";\r\n switch (state) {\r\n case \"InProgress\":\r\n if (this.options.finished) {\r\n message = \"Вы точно хотите отменить статус \\\"завершено\\\" у произведения?\";\r\n }\r\n else {\r\n message = \"Важно! Если вы не собираетесь выкладывать книгу на Author.Today целиком, не меняйте данный статус. \" +\r\n \"В случае поступления жалобы от читателя на неверный статус ваш аккаунт может быть заблокирован.\";\r\n }\r\n break;\r\n case \"Finished\":\r\n message = \"Присваивая статус \\\"завершено\\\" вы подтверждаете, что весь текст произведения \" +\r\n \"опубликован на сайте и целиком доступен читателю.\" +\r\n \" В противном случае выберите статус ознакомительного фрагмента.
\" +\r\n \"В случае поступления жалобы от читателя на неверный статус ваш аккаунт может быть заблокирован.\";\r\n break;\r\n case \"PromoFragment\":\r\n message = \"Выберите этот статус, если не собираетесь выкладывать книгу на Author.Today целиком.\";\r\n break;\r\n }\r\n this.showModal({\r\n title: \"\\u0418\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0442\\u0430\\u0442\\u0443\\u0441\\u0430\",\r\n type: 2,\r\n okBtnText: \"Продолжить\",\r\n maxWidth: \"500px\",\r\n message: message,\r\n onSubmit: function () {\r\n _this.processing(true);\r\n return ajaxUtils_1.AjaxUtils.post(\"work/updateState\", {\r\n id: _this.workId,\r\n state: state\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.modal.hide();\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.publish = function () {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/publish\", {\r\n id: this.workId\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n });\r\n };\r\n ViewModel.prototype.updateChapterState = function (chapterId, isDraft, autoPublishTime) {\r\n var _this = this;\r\n var updateState = function () {\r\n _this.processingChapter(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/updateChapterState\", {\r\n workId: _this.workId,\r\n chapterId: chapterId,\r\n isDraft: isDraft\r\n }).done(function (result) {\r\n _this.processingChapter(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n });\r\n };\r\n if (autoPublishTime) {\r\n this.showModal({\r\n title: \"\\u041F\\u0443\\u0431\\u043B\\u0438\\u043A\\u0430\\u0446\\u0438\\u044F \\u0447\\u0430\\u0441\\u0442\\u0438 \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F\",\r\n type: 2,\r\n okBtnText: \"Продолжить\",\r\n maxWidth: \"500px\",\r\n message: \"Вы уверены что хотите опубликовать главу прямо сейчас?\",\r\n onSubmit: function () {\r\n updateState();\r\n _this.modal.hide();\r\n }\r\n });\r\n }\r\n else {\r\n updateState();\r\n }\r\n };\r\n ViewModel.prototype.refreshWorkFiles = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.post(\"work/refreshWorkFiles\", {\r\n workId: this.workId\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n });\r\n };\r\n ViewModel.prototype.showMoveToDraftModal = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"\\u041F\\u043E\\u0434\\u0442\\u0432\\u0435\\u0440\\u0436\\u0434\\u0435\\u043D\\u0438\\u0435\",\r\n type: 2,\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0431\\u0440\\u0430\\u0442\\u044C \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u0432 \\u0447\\u0435\\u0440\\u043D\\u043E\\u0432\\u0438\\u043A?\",\r\n onSubmit: function () {\r\n _this.processing(true);\r\n return ajaxUtils_1.AjaxUtils.post(\"work/moveToDraft\", {\r\n id: _this.workId\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.showDeleteChapterModal = function (id, title) {\r\n var _this = this;\r\n this.showModal({\r\n title: \"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0447\\u0430\\u0441\\u0442\\u0438\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u00AB\" + title + \"\\u00BB?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"work/deleteChapter\", {\r\n id: id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n var $el = $(\"#chapter_\" + id);\r\n $el.hide({\r\n done: function () {\r\n $el.fadeOut();\r\n }\r\n });\r\n toastr.success(\"\\u00AB\" + title + \"\\u00BB \\u0431\\u044B\\u043B\\u0430 \\u0443\\u0441\\u043F\\u0435\\u0448\\u043D\\u043E \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0430.\");\r\n if (result.data && result.data.withReloadPage) {\r\n _this.reloadPage();\r\n }\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.showDeleteWorkModal = function () {\r\n var _this = this;\r\n if (!this.allowDelete) {\r\n this.showModal({\r\n title: \"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u043D\\u0435\\u0432\\u043E\\u0437\\u043C\\u043E\\u0436\\u043D\\u043E\",\r\n type: 5,\r\n maxWidth: \"500px\",\r\n message: \"Вы не можете удалить произведение, т.к. доступ к нему оплатил как минимум один человек.
\" +\r\n \"Чтобы скрыть его из общего доступа, уберите в черновики.\"\r\n });\r\n return;\r\n }\r\n this.showModal({\r\n title: \"Удаление произведения\",\r\n message: \"Вы точно хотите удалить произведение?\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"work/delete\", {\r\n id: _this.workId\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.redirectToPage(result.data.redirectUrl);\r\n }\r\n else {\r\n _this.modal.hide();\r\n _this.showModal({\r\n title: \"Удаление произведения\",\r\n message: result.messages[0],\r\n type: 5\r\n });\r\n }\r\n });\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workEditContent.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"../utils/ajaxUtils\", \"../utils/stringUtils\", \"./base/validatedViewModel\", \"../components/modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(false);\r\n this.price = ko.observable().extend({\r\n min: {\r\n params: 49,\r\n message: \"Минимальная цена - 49 ₽\"\r\n },\r\n max: {\r\n params: 500,\r\n message: \"Максимальная цена - 500 ₽\"\r\n }\r\n });\r\n this.commission = ko.observable();\r\n this.totalChapterCount = this.options.totalChapterCount;\r\n this.exclusiveScanCopies = ko.observableArray([]);\r\n this.sendExclusiveRequest = function () {\r\n ajaxUtils_1.AjaxUtils.post(\"work/\" + _this.options.workId + \"/exclusive-request\", {})\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.showModal({\r\n title: \"Заявка успешно отправлена\",\r\n type: modalDialog_1.ModalType.Success,\r\n message: \"Ваша заявка будет рассмотрена в ближайшее время. Иногда это может занимать 2-3 рабочих дня.\",\r\n maxWidth: \"435px\"\r\n });\r\n $(\"#sendExclusiveRequestBtn\").hide();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n this.removeScanCopy = function (data) {\r\n _this.showModal({\r\n title: \"Удаление изображения\",\r\n message: \"Вы уверены, что хотите изображение?\",\r\n maxWidth: \"400px\",\r\n type: modalDialog_1.ModalType.ConfirmDelete,\r\n okBtnText: \"Удалить\",\r\n onSubmit: function () {\r\n _this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/delete-exclusive-agreement-scan\", { scanCopyId: data.id })\r\n .done(function (result) {\r\n _this.modal.hide();\r\n _this.exclusiveScanCopies.remove(data);\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n });\r\n };\r\n this.sendExclusiveAgreement = function () {\r\n _this.showModal({\r\n title: \"Отправка скан-копии\",\r\n message: \"Проверьте, пожалуйста, что вы загрузили скан-копии или фото обеих страниц доп. соглашения и, если всё в порядке, нажмите \\\"Отправить\\\"\",\r\n maxWidth: \"400px\",\r\n type: modalDialog_1.ModalType.Confirm,\r\n okBtnText: \"Отправить\",\r\n onSubmit: function () {\r\n ajaxUtils_1.AjaxUtils.post(\"work/send-exclusive-agreement\", { id: _this.options.workId })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.showModal({\r\n title: \"Заявка успешно отправлена\",\r\n type: modalDialog_1.ModalType.Success,\r\n message: \"Спасибо! Коммерческий отдел уже получил уведомление и в ближайшее время обработает заявку.
\" +\r\n \"Если вы загрузили не тот файл - его можно загрузить ещё раз.\",\r\n maxWidth: \"435px\",\r\n onHide: function () {\r\n _this.fullReloadPage();\r\n }\r\n });\r\n $(\"#sendExclusiveAgreementBtn\").hide();\r\n }\r\n else {\r\n _this.errorMessages(result.messages);\r\n }\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n }\r\n });\r\n };\r\n this.updateCommission = function () {\r\n _this.showModal({\r\n title: \"Комиссия\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0438\\u0437\\u043C\\u0435\\u043D\\u0438\\u0442\\u044C \\u043A\\u043E\\u043C\\u0438\\u0441\\u0441\\u0438\\u044E \\u043D\\u0430 \" + _this.commission() + \"%?\",\r\n maxWidth: \"400px\",\r\n type: modalDialog_1.ModalType.Confirm,\r\n onSubmit: function () {\r\n ajaxUtils_1.AjaxUtils.post(\"work/updateCommission\", {\r\n id: _this.options.workId,\r\n commission: _this.commission()\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n _this.modal.hide();\r\n });\r\n }\r\n });\r\n };\r\n this.finished = options.finished === true;\r\n this.freeChapterCount = ko.observable()\r\n .extend({\r\n number: true,\r\n min: {\r\n params: 1,\r\n onlyIf: function () { return _this.price() > 0; }\r\n },\r\n max: {\r\n message: options.totalChapterCount === 0\r\n ? \"Необходимо опубликовать хотя бы одну часть.\"\r\n : \"\\u0412 \\u0432\\u0430\\u0448\\u0435\\u043C \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0438 \\u0432\\u0441\\u0435\\u0433\\u043E \" + options.totalChapterCount + \" \\n \" + stringUtils_1.default.pluralize(options.totalChapterCount, [\"опубликованная часть\", \"опубликованные части\", \"опубликованных частей\"]) + \".\",\r\n params: options.totalChapterCount,\r\n onlyIf: function () { return _this.price() > 0; }\r\n }\r\n });\r\n setTimeout(function () {\r\n _this.initValidation();\r\n _this.price.isModified(false);\r\n }, 0);\r\n this.errorMessages.subscribe(function (errors) {\r\n if (_this.modal && _this.modal.errorMessages) {\r\n _this.modal.errorMessages(errors);\r\n }\r\n });\r\n this.exclusiveScanCopies(options.exclusiveScanCopies || []);\r\n var endpoint = window[\"app\"].rootUrl + \"work/\" + this.options.workId + \"/upload-exclusive-agreement\";\r\n $(function () {\r\n if (!window[\"qq\"])\r\n return;\r\n var uploader = new qq.FineUploader({\r\n multiple: false,\r\n element: document.getElementById(\"fine-uploader\"),\r\n request: {\r\n endpoint: endpoint,\r\n customHeaders: ajaxUtils_1.AjaxUtils.getHeaders()\r\n },\r\n thumbnails: {\r\n placeholders: {\r\n notAvailablePath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/not_available-generic.png\",\r\n waitingPath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/waiting-generic.png\"\r\n }\r\n },\r\n messages: {\r\n unsupportedBrowser: \"Ваш браузер не поддерживает загрузку файлов.\",\r\n sizeError: \"{file} слишком большой, максимальный размер файла — {sizeLimit}.\",\r\n typeError: \"{file} имеет недопустимый формат. Пожалуйста, выберите файл с расширением jpg, jpeg, png или pdf.\"\r\n },\r\n text: {\r\n failUpload: \"Не удалось загрузить файл\"\r\n },\r\n validation: {\r\n allowedExtensions: [\"jpg\", \"jpeg\", \"png\", \"pdf\", \"webp\"],\r\n sizeLimit: 5 * 1024 * 1024\r\n },\r\n callbacks: {\r\n onSubmit: function () {\r\n return !_this.isLoading();\r\n },\r\n onSubmitted: function () {\r\n _this.isLoading(true);\r\n },\r\n onCancel: function () {\r\n _this.isLoading(false);\r\n },\r\n onError: function () {\r\n _this.isLoading(false);\r\n },\r\n onComplete: function (id, name, response) {\r\n _this.isLoading(false);\r\n if (!response.success) {\r\n alert(response.error);\r\n return;\r\n }\r\n _this.exclusiveScanCopies.push(response.data);\r\n }\r\n }\r\n });\r\n });\r\n }\r\n ViewModel.prototype.stopSales = function () {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Остановка продаж\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u043E\\u0441\\u0442\\u0430\\u043D\\u043E\\u0432\\u0438\\u0442\\u044C \\u043F\\u0440\\u043E\\u0434\\u0430\\u0436\\u0443 \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u044F \\u0438 \\u043E\\u043F\\u0443\\u0431\\u043B\\u0438\\u043A\\u043E\\u0432\\u0430\\u0442\\u044C \\u0435\\u0433\\u043E \\u0432 \\u0441\\u0432\\u043E\\u0431\\u043E\\u0434\\u043D\\u043E\\u043C \\u0434\\u043E\\u0441\\u0442\\u0443\\u043F\\u0435?\",\r\n maxWidth: \"400px\",\r\n type: modalDialog_1.ModalType.ConfirmDelete,\r\n deleteBtnText: \"Остановить продажу\",\r\n onSubmit: function () {\r\n _this.submit(document.getElementById(\"editSales\"), { Price: 0 });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.startSales = function () {\r\n var _this = this;\r\n var message = \"Важно: стоимость произведения можно менять не чаще 1 раза в месяц\";\r\n if (!(this.finished)) {\r\n message += \"
Пожалуйста, обратите внимание, что книгу нужно завершить за 6 месяцев с момента старта подписки.\";\r\n }\r\n this.showModal({\r\n title: \"Начало продаж\",\r\n message: message,\r\n maxWidth: \"400px\",\r\n type: modalDialog_1.ModalType.Confirm,\r\n okBtnText: \"Начать продажи\",\r\n onSubmit: function () {\r\n _this.submit(document.getElementById(\"editSales\"));\r\n }\r\n });\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.fullReloadPage();\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workEditSales.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"js.cookie\", \"./base/baseViewModel\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var Cookies = require(\"js.cookie\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.moreFilters = ko.observable(this.options.showMoreFilters);\r\n this.isLoading = ko.observable(false);\r\n this.genres = ko.observableArray();\r\n this.exceptGenreIds = ko.observableArray();\r\n this.form = ko.observable();\r\n this.state = ko.observable();\r\n this.series = ko.observable();\r\n this.access = ko.observable();\r\n this.download = ko.observable();\r\n this.lastUpdate = ko.observable();\r\n this.published = ko.observable();\r\n this.format = ko.observable();\r\n this.duration = ko.observable();\r\n this.length = ko.observable();\r\n this.contestId = ko.observable();\r\n this.viewMode = ko.observable();\r\n this.hideFinished = ko.observable(false);\r\n this.seriesOrder = ko.observable();\r\n this.rp = ko.observable();\r\n this.toggleMoreFilters = function () {\r\n _this.moreFilters(!_this.moreFilters());\r\n if (_this.moreFilters()) {\r\n $(\"#moreFilters\").addClass(\"in\");\r\n }\r\n else {\r\n $(\"#moreFilters\").removeClass(\"in\");\r\n }\r\n };\r\n this.switchView = function (mode) {\r\n _this.viewMode(mode);\r\n };\r\n var initialized = false;\r\n this.viewMode(options.viewMode);\r\n var defaultViewMode = Cookies.get(\"at.workView\") || \"list\";\r\n ko.computed(function () {\r\n var genres = _this.genres(), exceptGenreIds = _this.exceptGenreIds(), form = _this.form(), state = _this.state(), series = _this.series(), seriesOrder = _this.seriesOrder(), access = _this.access(), dnl = _this.download(), upd = _this.lastUpdate(), pub = _this.published(), format = _this.format(), duration = _this.duration(), length = _this.length(), cntst = _this.contestId(), view = _this.viewMode(), fnd = _this.hideFinished();\r\n if (!initialized) {\r\n return;\r\n }\r\n if (series === \"out\" && seriesOrder != \"any\") {\r\n _this.seriesOrder(\"any\");\r\n return;\r\n }\r\n var params = {};\r\n var formatUrlPart = \"\";\r\n var formUrlPart = \"\";\r\n if (view !== defaultViewMode) {\r\n params.view = view;\r\n defaultViewMode = view;\r\n // Сохраняем страницу только при смене вида отображения книг\r\n if (options.page && options.page > 1) {\r\n params.page = options.page;\r\n }\r\n }\r\n else {\r\n options.page = 1;\r\n }\r\n if (format !== \"any\" || form !== \"any\") {\r\n formatUrlPart = \"/\" + format;\r\n }\r\n if (form !== \"any\") {\r\n formUrlPart = \"/\" + form;\r\n }\r\n if (options.sorting !== \"popular\") {\r\n params.sorting = options.sorting;\r\n }\r\n else if (options.rp !== \"today\") {\r\n params.rp = options.rp;\r\n }\r\n if (state !== \"any\") {\r\n params.state = state;\r\n }\r\n if (series !== \"any\") {\r\n params.series = series;\r\n }\r\n if (access !== \"any\") {\r\n params.access = access;\r\n }\r\n if (dnl !== \"any\") {\r\n params.dnl = dnl;\r\n }\r\n if (upd !== \"-1\") {\r\n params.upd = upd;\r\n }\r\n if (pub !== \"-1\") {\r\n params.pub = pub;\r\n }\r\n if (duration !== \"any\" && format === \"audiobook\") {\r\n params.duration = duration;\r\n }\r\n if (length !== \"any\" && format === \"ebook\") {\r\n params.length = length;\r\n }\r\n if (seriesOrder !== \"any\") {\r\n params.seriesOrder = seriesOrder;\r\n }\r\n if (exceptGenreIds) {\r\n params.eg = exceptGenreIds.join(\"-\");\r\n }\r\n else {\r\n params.eg = \"\";\r\n }\r\n if (cntst) {\r\n params.cntst = cntst;\r\n }\r\n params.fnd = fnd;\r\n var genreCodes;\r\n if (genres && genres.length > 0) {\r\n genreCodes = genres.join(\"&\");\r\n }\r\n else {\r\n genreCodes = \"all\";\r\n }\r\n var url = app.rootUrl + (\"work/genre/\" + genreCodes + formatUrlPart + formUrlPart + \"?\" + $.param(params));\r\n $.pjax({ url: url, container: \"#search-results\", fragment: \"#search-results\" });\r\n });\r\n setTimeout(function () {\r\n initialized = true;\r\n }, 200);\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n dateTimeUtils_1.default.displayTime();\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workGenre.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/validatedViewModel\", \"../utils/giftCodeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var giftCodeUtils_1 = require(\"../utils/giftCodeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n _super.call(this, options);\r\n giftCodeUtils_1.default.init();\r\n }\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workGift.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"numeral\", \"./base/baseViewModel\", \"../utils/ajaxUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var numeral = require(\"numeral\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var Masonry = require(\"masonry-layout\");\r\n var imagesLoaded = require(\"imagesloaded\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(false);\r\n this.copyDownloaded = ko.observable();\r\n this.numeral = numeral;\r\n this.initUploader = function (endpoint) {\r\n var uploader = new qq.FineUploader({\r\n //debug: true,\r\n multiple: false,\r\n element: document.getElementById(\"fine-uploader\"),\r\n request: {\r\n endpoint: endpoint,\r\n customHeaders: ajaxUtils_1.AjaxUtils.getHeaders(),\r\n params: {\r\n form: _this.options.workForm\r\n }\r\n },\r\n thumbnails: {\r\n placeholders: {\r\n notAvailablePath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/not_available-generic.png\",\r\n waitingPath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/waiting-generic.png\"\r\n }\r\n },\r\n messages: {\r\n unsupportedBrowser: \"Ваш браузер не поддерживает загрузку файлов.\",\r\n sizeError: \"{file} слишком большой, максимальный размер файла — {sizeLimit}.\",\r\n typeError: \"{file} имеет недопустимый формат. Пожалуйста, выберите файл с расширением .fb2 или .zip.\"\r\n },\r\n text: {\r\n failUpload: \"Не удалось загрузить файл\"\r\n },\r\n validation: {\r\n allowedExtensions: [\"fb2\", \"zip\"],\r\n sizeLimit: _this.options.maxWorkFileUploadSize\r\n },\r\n callbacks: {\r\n onSubmit: function () {\r\n return !_this.isLoading();\r\n },\r\n onSubmitted: function () {\r\n _this.isLoading(true);\r\n },\r\n onCancel: function () {\r\n _this.isLoading(false);\r\n },\r\n onError: function () {\r\n _this.isLoading(false);\r\n },\r\n onComplete: function (id, name, response) {\r\n _this.isLoading(false);\r\n if (!response.success) {\r\n alert(response.error);\r\n return;\r\n }\r\n _this.redirectToPage(response.data.redirectUrl);\r\n }\r\n }\r\n });\r\n };\r\n var endpoint = window[\"app\"].rootUrl + \"work/processFb2\";\r\n if (options.id) {\r\n endpoint = endpoint + \"?\" + $.param({ id: options.id });\r\n var subscription = this.copyDownloaded.subscribe(function (val) {\r\n if (val) {\r\n setTimeout(function () {\r\n _this.initUploader(endpoint);\r\n }, 50);\r\n subscription.dispose();\r\n }\r\n });\r\n return;\r\n }\r\n $(document).ready(function () {\r\n _this.initUploader(endpoint);\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workImport.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"js.cookie\", \"./base/baseViewModel\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var Cookies = require(\"js.cookie\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.moreFilters = ko.observable(this.options.showMoreFilters);\r\n this.isLoading = ko.observable(false);\r\n this.genres = ko.observableArray();\r\n this.exceptGenreIds = ko.observableArray();\r\n this.form = ko.observable();\r\n this.state = ko.observable();\r\n this.series = ko.observable();\r\n this.access = ko.observable();\r\n this.download = ko.observable();\r\n this.lastUpdate = ko.observable();\r\n this.published = ko.observable();\r\n this.format = ko.observable();\r\n this.duration = ko.observable();\r\n this.length = ko.observable();\r\n this.viewMode = ko.observable();\r\n this.contestId = ko.observable();\r\n this.hideFinished = ko.observable(false);\r\n this.seriesOrder = ko.observable();\r\n this.rp = ko.observable();\r\n this.toggleMoreFilters = function () {\r\n _this.moreFilters(!_this.moreFilters());\r\n if (_this.moreFilters()) {\r\n $(\"#moreFilters\").addClass(\"in\");\r\n }\r\n else {\r\n $(\"#moreFilters\").removeClass(\"in\");\r\n }\r\n };\r\n this.switchView = function (mode) {\r\n _this.viewMode(mode);\r\n };\r\n var initialized = false;\r\n this.viewMode(options.viewMode);\r\n var defaultViewMode = Cookies.get(\"at.workView\") || \"list\";\r\n ko.computed(function () {\r\n var genres = _this.genres(), exceptGenreIds = _this.exceptGenreIds(), form = _this.form(), state = _this.state(), series = _this.series(), seriesOrder = _this.seriesOrder(), access = _this.access(), dnl = _this.download(), upd = _this.lastUpdate(), pub = _this.published(), format = _this.format(), duration = _this.duration(), length = _this.length(), cntst = _this.contestId(), view = _this.viewMode(), fnd = _this.hideFinished();\r\n if (!initialized) {\r\n return;\r\n }\r\n if (series === \"out\" && seriesOrder != \"any\") {\r\n _this.seriesOrder(\"any\");\r\n return;\r\n }\r\n var params = {};\r\n if (view !== defaultViewMode) {\r\n params.view = view;\r\n defaultViewMode = view;\r\n // Сохраняем страницу только при смене вида отображения книг\r\n if (options.page && options.page > 1) {\r\n params.page = options.page;\r\n }\r\n }\r\n else {\r\n options.page = 1;\r\n }\r\n if (options.sorting !== \"popular\") {\r\n params.sorting = options.sorting;\r\n }\r\n else if (options.rp !== \"today\") {\r\n params.rp = options.rp;\r\n }\r\n if (format !== \"any\") {\r\n params.format = format;\r\n }\r\n if (form !== \"any\") {\r\n params.form = form;\r\n }\r\n if (state !== \"any\") {\r\n params.state = state;\r\n }\r\n if (series !== \"any\") {\r\n params.series = series;\r\n }\r\n if (access !== \"any\") {\r\n params.access = access;\r\n }\r\n if (dnl !== \"any\") {\r\n params.dnl = dnl;\r\n }\r\n if (upd !== \"-1\") {\r\n params.upd = upd;\r\n }\r\n if (pub !== \"-1\") {\r\n params.pub = pub;\r\n }\r\n if (duration !== \"any\" && format == \"audiobook\") {\r\n params.duration = duration;\r\n }\r\n if (length !== \"any\" && format == \"ebook\") {\r\n params.length = length;\r\n }\r\n if (seriesOrder !== \"any\") {\r\n params.seriesOrder = seriesOrder;\r\n }\r\n if (exceptGenreIds) {\r\n params.eg = exceptGenreIds.join(\"-\");\r\n }\r\n else {\r\n params.eg = \"\";\r\n }\r\n if (cntst) {\r\n params.cntst = cntst;\r\n }\r\n params.fnd = fnd;\r\n var genreCodes;\r\n if (genres && genres.length > 0) {\r\n genreCodes = genres.join(\"&\");\r\n }\r\n else {\r\n genreCodes = \"all\";\r\n }\r\n var url = app.rootUrl + (\"work/recommended/\" + genreCodes + \"?\" + $.param(params));\r\n $.pjax({ url: url, container: \"#search-results\", fragment: \"#search-results\" });\r\n });\r\n setTimeout(function () {\r\n initialized = true;\r\n }, 200);\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n dateTimeUtils_1.default.displayTime();\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workRecommended.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.forms = ko.observableArray([\r\n {\r\n id: \"story\",\r\n name: \"Рассказ\",\r\n description: \"Малая форма произведения.
Состоит из одной части.\"\r\n },\r\n {\r\n id: \"tale\",\r\n name: \"Повесть\",\r\n description: \"Средняя форма произведения.
Состоит из нескольких частей.\"\r\n },\r\n {\r\n id: \"novel\",\r\n name: \"Роман\",\r\n description: \"Большая форма произведения.
Состоит из нескольких частей.\"\r\n },\r\n {\r\n id: \"storyBook\",\r\n name: \"Сборник рассказов\",\r\n description: \"Состоит из нескольких рассказов.
Пожалуйста, придерживайтесь правила одна часть - один рассказ.\"\r\n },\r\n {\r\n id: \"poetry\",\r\n name: \"Сборник поэзии\",\r\n description: \"Состоит из нескольких стихотворений или других произведений в жанре поэзия.\"\r\n }]);\r\n this.selectedFormat = ko.observable(null);\r\n this.selectedForm = ko.observable(null);\r\n this.formData = ko.pureComputed(function () {\r\n var data = {\r\n form: _this.selectedForm\r\n };\r\n var format = _this.selectedFormat();\r\n if (_this.options.isAdminOrAudioPublisher) {\r\n data.format = format;\r\n }\r\n return data;\r\n });\r\n this.toggleForm = function (form) {\r\n if (_this.selectedForm() === null || _this.selectedForm() !== form.id) {\r\n _this.selectedForm(form.id);\r\n }\r\n else {\r\n _this.selectedForm(null);\r\n }\r\n };\r\n if (options.isAdminOrTranslator) {\r\n this.forms.push({\r\n id: \"translation\",\r\n name: \"Перевод\",\r\n description: \"Перевод книги с иностранного языка на русский.\"\r\n });\r\n }\r\n }\r\n ViewModel.prototype.nextBtnClick = function () {\r\n var formId = this.selectedForm();\r\n if (!formId)\r\n return;\r\n var url = window[\"app\"].rootUrl + \"work/create?\" + $.param(this.formData());\r\n this.redirectToPage(url);\r\n };\r\n ViewModel.prototype.importBtnClick = function () {\r\n if (!this.selectedForm() || (this.selectedFormat() && this.selectedFormat() !== \"ebook\"))\r\n return;\r\n var url = window[\"app\"].rootUrl + \"work/import?\" + $.param(this.formData());\r\n this.redirectToPage(url);\r\n };\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workSelectForm.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"toastr\", \"sortable\", \"../utils/ajaxUtils\", \"./base/validatedViewModel\", \"../utils/windowUtils\", \"../utils/stringUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var toastr = require(\"toastr\");\r\n var Sortable = require(\"sortable\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var windowUtils_1 = require(\"../utils/windowUtils\");\r\n var stringUtils_1 = require(\"../utils/stringUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.titleMaxLength = 50;\r\n this.textMaxLength = 1000;\r\n this.recommendationMaxLength = 200;\r\n this.seriesId = this.options.seriesId;\r\n this.enableSorting = ko.observable();\r\n this.title = ko.observable().extend({\r\n required: true,\r\n maxLength: this.titleMaxLength\r\n });\r\n this.titleHint = ko.pureComputed(function () {\r\n var title = _this.title() || \"\";\r\n var characters = title.length;\r\n return characters + \"/\" + _this.titleMaxLength;\r\n });\r\n this.description = ko.observable().extend({\r\n maxLength: {\r\n params: this.textMaxLength,\r\n message: \"Длина поля должна быть не больше {0} символов.\"\r\n }\r\n });\r\n this.descriptionHint = ko.pureComputed(function () {\r\n var description = _this.description() || \"\";\r\n return description.length + \"/\" + _this.textMaxLength;\r\n });\r\n this.recommendation = ko.observable().extend({\r\n maxLength: {\r\n params: this.recommendationMaxLength,\r\n message: \"Длина поля должна быть не больше {0} символов.\"\r\n }\r\n });\r\n this.recommendationHint = ko.pureComputed(function () {\r\n var recommendation = _this.recommendation() || \"\";\r\n return recommendation.length + \"/\" + _this.recommendationMaxLength;\r\n });\r\n this.titleInit = options.titleInit || \"\";\r\n this.descriptionInit = options.descriptionInit || \"\";\r\n this.recommendationInit = options.recommendationInit || \"\";\r\n setTimeout(function () {\r\n _this.initValidation();\r\n }, 0);\r\n ko.computed(function () {\r\n var description = _this.description() || \"\";\r\n var recommendation = _this.recommendation() || \"\";\r\n var title = _this.title() || \"\";\r\n if (stringUtils_1.default.compareWithoutLineBreaks(description, _this.descriptionInit)\r\n || stringUtils_1.default.compareWithoutLineBreaks(recommendation, _this.recommendationInit)\r\n || stringUtils_1.default.compareWithoutLineBreaks(title, _this.titleInit)) {\r\n windowUtils_1.default.setDirty();\r\n }\r\n else {\r\n windowUtils_1.default.setDirty(false);\r\n }\r\n });\r\n var ul = $(\".sortable\")[0];\r\n if (ul) {\r\n var sortable = new Sortable(ul, {\r\n animation: 150,\r\n filter: \".btn\",\r\n handle: \".sortable-handle\",\r\n onEnd: function (e) {\r\n ajaxUtils_1.AjaxUtils.post(\"work/series/reorderWork\", {\r\n seriesId: _this.seriesId,\r\n oldIndex: e.oldIndex,\r\n newIndex: e.newIndex\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"Порядок произведений был изменен.\");\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n }\r\n ViewModel.prototype.showDeleteWorkModal = function (id, title) {\r\n var _this = this;\r\n this.showModal({\r\n title: \"Удаление произведение из цикла\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u043F\\u0440\\u043E\\u0438\\u0437\\u0432\\u0435\\u0434\\u0435\\u043D\\u0438\\u0435 \\u00AB\" + title + \"\\u00BB \\u0438\\u0437 \\u0446\\u0438\\u043A\\u043B\\u0430?\",\r\n minWidth: \"300px\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"work/removeFromSeries\", {\r\n id: id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(result.messages[0]);\r\n _this.modal.hide();\r\n $(\"#work_\" + id).fadeOut(\"normal\", function () {\r\n $(this).remove();\r\n });\r\n }\r\n else {\r\n _this.modal.errorMessages(result.messages);\r\n }\r\n });\r\n }\r\n });\r\n };\r\n ViewModel.prototype.onSubmitSucess = function (result) {\r\n this.forceRedirectToPage(result.data.redirectUrl);\r\n };\r\n return ViewModel;\r\n }(validatedViewModel_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workSeriesEdit.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"./base/baseViewModel\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel() {\r\n _super.call(this);\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workSeriesView.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"js.cookie\", \"./base/baseViewModel\", \"../utils/dateTimeUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var Cookies = require(\"js.cookie\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.moreFilters = ko.observable(this.options.showMoreFilters);\r\n this.isLoading = ko.observable(false);\r\n this.form = ko.observable();\r\n this.exceptGenreIds = ko.observableArray();\r\n this.state = ko.observable();\r\n this.series = ko.observable();\r\n this.access = ko.observable();\r\n this.download = ko.observable();\r\n this.lastUpdate = ko.observable();\r\n this.published = ko.observable();\r\n this.format = ko.observable();\r\n this.duration = ko.observable();\r\n this.length = ko.observable();\r\n this.contestId = ko.observable();\r\n this.viewMode = ko.observable();\r\n this.hideFinished = ko.observable(false);\r\n this.seriesOrder = ko.observable();\r\n this.rp = ko.observable();\r\n this.toggleMoreFilters = function () {\r\n _this.moreFilters(!_this.moreFilters());\r\n if (_this.moreFilters()) {\r\n $(\"#moreFilters\").addClass(\"in\");\r\n }\r\n else {\r\n $(\"#moreFilters\").removeClass(\"in\");\r\n }\r\n };\r\n this.switchView = function (mode) {\r\n _this.viewMode(mode);\r\n };\r\n var initialized = false;\r\n this.viewMode(options.viewMode);\r\n var defaultViewMode = Cookies.get(\"at.workView\") || \"list\";\r\n ko.computed(function () {\r\n var form = _this.form(), exceptGenreIds = _this.exceptGenreIds(), state = _this.state(), series = _this.series(), seriesOrder = _this.seriesOrder(), access = _this.access(), dnl = _this.download(), upd = _this.lastUpdate(), pub = _this.published(), format = _this.format(), duration = _this.duration(), length = _this.length(), cntst = _this.contestId(), view = _this.viewMode(), fnd = _this.hideFinished();\r\n if (!initialized) {\r\n return;\r\n }\r\n if (series === \"out\" && seriesOrder != \"any\") {\r\n _this.seriesOrder(\"any\");\r\n return;\r\n }\r\n var params = {};\r\n if (view !== defaultViewMode) {\r\n params.view = view;\r\n defaultViewMode = view;\r\n // Сохраняем страницу только при смене вида отображения книг\r\n if (options.page && options.page > 1) {\r\n params.page = options.page;\r\n }\r\n }\r\n else {\r\n options.page = 1;\r\n }\r\n if (format !== \"any\") {\r\n params.format = format;\r\n }\r\n if (form !== \"any\") {\r\n params.form = form;\r\n }\r\n if (options.sorting !== \"popular\") {\r\n params.sorting = options.sorting;\r\n }\r\n else if (options.rp !== \"today\") {\r\n params.rp = options.rp;\r\n }\r\n if (state !== \"any\") {\r\n params.state = state;\r\n }\r\n if (series !== \"any\") {\r\n params.series = series;\r\n }\r\n if (access !== \"any\") {\r\n params.access = access;\r\n }\r\n if (dnl !== \"any\") {\r\n params.dnl = dnl;\r\n }\r\n if (upd !== \"-1\") {\r\n params.upd = upd;\r\n }\r\n if (pub !== \"-1\") {\r\n params.pub = pub;\r\n }\r\n if (duration !== \"any\" && format === \"audiobook\") {\r\n params.duration = duration;\r\n }\r\n if (length !== \"any\" && format === \"ebook\") {\r\n params.length = length;\r\n }\r\n if (seriesOrder !== \"any\") {\r\n params.seriesOrder = seriesOrder;\r\n }\r\n if (exceptGenreIds) {\r\n params.eg = exceptGenreIds.join(\"-\");\r\n }\r\n else {\r\n params.eg = \"\";\r\n }\r\n if (cntst) {\r\n params.cntst = cntst;\r\n }\r\n params.fnd = fnd;\r\n var url = app.rootUrl + (\"work/tag/\" + options.tag + \"?\" + $.param(params));\r\n $.pjax({ url: url, container: \"#search-results\", fragment: \"#search-results\" });\r\n });\r\n setTimeout(function () {\r\n initialized = true;\r\n }, 200);\r\n $(document)\r\n .on(\"pjax:send\", function () {\r\n _this.isLoading(true);\r\n })\r\n .on(\"pjax:complete\", function () {\r\n _this.isLoading(false);\r\n dateTimeUtils_1.default.displayTime();\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workTag.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"lodash\", \"toastr\", \"numeral\", \"./base/baseViewModel\", \"./base/validatedViewModel\", \"../utils/ajaxUtils\", \"../components/modalDialog\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var _ = require(\"lodash\");\r\n var toastr = require(\"toastr\");\r\n var numeral = require(\"numeral\");\r\n var baseViewModel_1 = require(\"./base/baseViewModel\");\r\n var validatedViewModel_1 = require(\"./base/validatedViewModel\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var modalDialog_1 = require(\"../components/modalDialog\");\r\n var Masonry = require(\"masonry-layout\");\r\n var imagesLoaded = require(\"imagesloaded\");\r\n var WorkGallery = (function (_super) {\r\n __extends(WorkGallery, _super);\r\n function WorkGallery(options) {\r\n _super.call(this, options);\r\n this.caption = ko.observable().extend({\r\n maxLength: 200\r\n });\r\n this.processing = ko.observable(false);\r\n this.id = options.id;\r\n this.workId = options.workId;\r\n this.caption(options.caption);\r\n this.originalCaption = options.caption;\r\n this.uploadTime = options.uploadTime;\r\n this.url = options.filePath;\r\n this.initValidation();\r\n }\r\n WorkGallery.prototype.startEditing = function () {\r\n this.originalCaption = this.caption();\r\n this.showModal({\r\n title: \"Комментарий к иллюстрации\",\r\n type: modalDialog_1.ModalType.Custom,\r\n templateId: \"workGalleryCaptionModal\",\r\n minWidth: \"400px\",\r\n maxWidth: \"500px\",\r\n viewModel: this\r\n });\r\n };\r\n WorkGallery.prototype.cancelEditing = function () {\r\n this.caption(this.originalCaption);\r\n this.modal.hide();\r\n };\r\n WorkGallery.prototype.submit = function () {\r\n var _this = this;\r\n if (this.validation !== undefined && !this.validation.isValid()) {\r\n this.validation.errors.showAllMessages();\r\n return;\r\n }\r\n ;\r\n if (this.processing())\r\n return;\r\n this.processing(true);\r\n this.errorMessages([]);\r\n ajaxUtils_1.AjaxUtils.post(\"file/updateWorkGallery\", {\r\n id: this.id,\r\n caption: this.caption()\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"\\u041E\\u043F\\u0438\\u0441\\u0430\\u043D\\u0438\\u0435 \\u0431\\u044B\\u043B\\u043E \\u0438\\u0437\\u043C\\u0435\\u043D\\u0435\\u043D\\u043E.\");\r\n _this.caption(result.data.caption);\r\n _this.originalCaption = _this.caption();\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n _this.processing(false);\r\n _this.modal.hide();\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n return WorkGallery;\r\n }(validatedViewModel_1.default));\r\n var WorkUpload = (function () {\r\n function WorkUpload(options) {\r\n this.title = ko.observable();\r\n this.isEditing = ko.observable(false);\r\n this.processing = ko.observable(false);\r\n this.id = options.id;\r\n this.workId = options.workId;\r\n this.title(options.title);\r\n this.originalTitle = options.title;\r\n this.extension = options.extension;\r\n this.size = options.size;\r\n this.uploadTime = options.uploadTime;\r\n this.downloadCount = options.downloadCount;\r\n this.url = options.url;\r\n }\r\n WorkUpload.prototype.startEditing = function () {\r\n this.originalTitle = this.title();\r\n this.isEditing(true);\r\n };\r\n WorkUpload.prototype.cancelEditing = function () {\r\n this.title(this.originalTitle);\r\n this.isEditing(false);\r\n };\r\n WorkUpload.prototype.save = function () {\r\n var _this = this;\r\n this.processing(true);\r\n return ajaxUtils_1.AjaxUtils.post(\"file/renameWorkFile\", {\r\n id: this.id,\r\n title: this.title()\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n toastr.success(\"\\u0424\\u0430\\u0439\\u043B \\u0431\\u044B\\u043B \\u043F\\u0435\\u0440\\u0435\\u0438\\u043C\\u0435\\u043D\\u043E\\u0432\\u0430\\u043D. \\u041D\\u043E\\u0432\\u043E\\u0435 \\u043D\\u0430\\u0437\\u0432\\u0430\\u043D\\u0438\\u0435: \\u00AB\" + result.data.title + \"\\u00BB\");\r\n _this.title(result.data.title);\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n _this.isEditing(false);\r\n }).always(function () {\r\n _this.processing(false);\r\n });\r\n };\r\n return WorkUpload;\r\n }());\r\n var BooktrailerVideoUrl = (function () {\r\n function BooktrailerVideoUrl(options, viewModel) {\r\n var _this = this;\r\n this.workId = ko.observable();\r\n this.savedUrl = ko.observable(\"\");\r\n this.url = ko.observable(\"\");\r\n this.editing = ko.computed(function () {\r\n return _this.savedUrl() !== _this.url();\r\n });\r\n this.url(options.booktrailerVideoUrl);\r\n this.savedUrl(this.url());\r\n this.workId(options.workId);\r\n this.viewModel = viewModel;\r\n }\r\n BooktrailerVideoUrl.prototype.save = function () {\r\n var _this = this;\r\n return ajaxUtils_1.AjaxUtils.post(\"work/saveBooktrailerVideoUrl\", {\r\n id: this.workId(),\r\n url: this.url()\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.savedUrl(_this.url());\r\n toastr.success(result.messages[0]);\r\n }\r\n else {\r\n toastr.error(result.messages[0]);\r\n }\r\n });\r\n };\r\n BooktrailerVideoUrl.prototype.cancel = function () {\r\n this.url(this.savedUrl());\r\n };\r\n BooktrailerVideoUrl.prototype.clear = function () {\r\n var _this = this;\r\n this.viewModel.showModal({\r\n title: \"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0441\\u0441\\u044B\\u043B\\u043A\\u0438 \\u043D\\u0430 \\u0432\\u0438\\u0434\\u0435\\u043E\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0441\\u0441\\u044B\\u043B\\u043A\\u0443 \\u043D\\u0430 \\u0432\\u0438\\u0434\\u0435\\u043E?\",\r\n maxWidth: \"400px\",\r\n onSubmit: function () {\r\n _this.url(\"\");\r\n return _this.save();\r\n }\r\n });\r\n };\r\n return BooktrailerVideoUrl;\r\n }());\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.isLoading = ko.observable(false);\r\n this.files = ko.observableArray([]);\r\n this.audioFiles = ko.observableArray([]);\r\n this.galleryImages = ko.observableArray([]);\r\n this.booktrailerVideoUrl = ko.observable();\r\n this.numeral = numeral;\r\n this.deleteFile = function (file) {\r\n var fileName = file.title() + \".\" + file.extension;\r\n _this.showModal({\r\n title: \"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0444\\u0430\\u0439\\u043B\\u0430\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0444\\u0430\\u0439\\u043B \\u00AB\" + fileName + \"\\u00BB?\",\r\n maxWidth: \"400px\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"file/deleteWorkUpload\", {\r\n id: file.id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n var $el = $(\"#\" + file.id);\r\n $el.hide({\r\n done: function () {\r\n $el.fadeOut();\r\n _this.files.remove(file);\r\n _this.audioFiles.remove(file);\r\n }\r\n });\r\n toastr.success(\"\\u0424\\u0430\\u0439\\u043B \\u00AB\" + fileName + \"\\u00BB \\u0431\\u044B\\u043B \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D.\");\r\n }\r\n });\r\n }\r\n });\r\n };\r\n this.deleteGalleryImage = function (file) {\r\n _this.showModal({\r\n title: \"\\u0423\\u0434\\u0430\\u043B\\u0435\\u043D\\u0438\\u0435 \\u0438\\u043B\\u043B\\u044E\\u0441\\u0442\\u0440\\u0430\\u0446\\u0438\\u0438\",\r\n message: \"\\u0412\\u044B \\u0442\\u043E\\u0447\\u043D\\u043E \\u0445\\u043E\\u0442\\u0438\\u0442\\u0435 \\u0443\\u0434\\u0430\\u043B\\u0438\\u0442\\u044C \\u0438\\u043B\\u043B\\u044E\\u0441\\u0442\\u0440\\u0430\\u0446\\u0438\\u044E?\",\r\n maxWidth: \"400px\",\r\n onSubmit: function () {\r\n return ajaxUtils_1.AjaxUtils.post(\"file/deleteWorkGallery\", {\r\n id: file.id\r\n }).done(function (result) {\r\n if (result.isSuccessful) {\r\n _this.galleryImages.remove(file);\r\n setTimeout(function () {\r\n Masonry.data(\"#masonry\").layout();\r\n }, 100);\r\n toastr.success(\"\\u0418\\u043B\\u043B\\u044E\\u0441\\u0442\\u0440\\u0430\\u0446\\u0438\\u044F \\u0431\\u044B\\u043B\\u0430 \\u0443\\u0434\\u0430\\u043B\\u0435\\u043D\\u0430.\");\r\n }\r\n });\r\n }\r\n });\r\n };\r\n this.files(_.map(_.filter(options.uploads, function (f) { return !f.isAudio && !f.isGallery; }), function (x) { return new WorkUpload(x); }));\r\n this.audioFiles(_.map(_.filter(options.uploads, function (f) { return f.isAudio; }), function (x) { return new WorkUpload(x); }));\r\n this.galleryImages(_.map(options.galleryImages, function (x) { return new WorkGallery(x); }));\r\n this.booktrailerVideoUrl(new BooktrailerVideoUrl(options, this));\r\n var endpoint = window[\"app\"].rootUrl + \"file/uploadWorkFiles\";\r\n $(document).ready(function () {\r\n var masonry = new Masonry(\"#masonry\", {\r\n itemSelector: \".item\",\r\n gutter: 10,\r\n columnWidth: 250\r\n });\r\n $(\"#masonry .item\")[\"imagesLoaded\"]().progress(function () {\r\n masonry.layout();\r\n });\r\n $(window).on(\"resize\", function () {\r\n setTimeout(function () { return masonry.layout(); }, 200);\r\n });\r\n var uploader = new qq.FineUploader({\r\n //debug: true,\r\n element: document.getElementById(\"fine-uploader\"),\r\n request: {\r\n endpoint: endpoint,\r\n params: {\r\n id: options.workId\r\n }\r\n },\r\n thumbnails: {\r\n placeholders: {\r\n notAvailablePath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/not_available-generic.png\",\r\n waitingPath: window[\"app\"].rootUrl +\r\n \"dist/vendor/fine-uploader/placeholders/waiting-generic.png\"\r\n }\r\n },\r\n messages: {\r\n unsupportedBrowser: \"Ваш браузер не поддерживает загрузку файлов.\",\r\n sizeError: \"\\u0424\\u0430\\u0439\\u043B \\u00AB{file}\\u00BB \\u0441\\u043B\\u0438\\u0448\\u043A\\u043E\\u043C \\u0431\\u043E\\u043B\\u044C\\u0448\\u043E\\u0439, \\u043C\\u0430\\u043A\\u0441\\u0438\\u043C\\u0430\\u043B\\u044C\\u043D\\u044B\\u0439 \\u0440\\u0430\\u0437\\u043C\\u0435\\u0440 \\u0444\\u0430\\u0439\\u043B\\u0430 \\u2014 \" + options.maxWorkFileUploadSize / (1024 * 1024) + \"\\u041C\\u0411.\",\r\n typeError: \"Файл «{file}» имеет недопустимый формат. Разрешены следующие форматы: {extensions}.\",\r\n tooManyItemsError: \"\\u0412\\u044B \\u043C\\u043E\\u0436\\u0435\\u0442\\u0435 \\u0437\\u0430\\u0433\\u0440\\u0443\\u0437\\u0438\\u0442\\u044C \\u043D\\u0435 \\u0431\\u043E\\u043B\\u0435\\u0435 \" + options.maxWorkFileUploads + \" \\u0444\\u0430\\u0439\\u043B\\u043E\\u0432.\"\r\n },\r\n text: {\r\n failUpload: \"Не удалось загрузить файл\",\r\n waitingForResponse: \"Обработка...\"\r\n },\r\n validation: {\r\n allowedExtensions: [\"jpg\", \"jpeg\", \"png\", \"webp\"],\r\n sizeLimit: options.maxWorkFileUploadSize,\r\n itemLimit: options.maxWorkFileUploads - _this.files().length + _this.audioFiles().length\r\n },\r\n callbacks: {\r\n onComplete: function (id, name, response) {\r\n if (!response.success) {\r\n alert(response.error);\r\n return;\r\n }\r\n $(\"[qq-file-id=\" + id + \"]\").remove();\r\n if (response.data.width && response.data.height) {\r\n _this.galleryImages.push(new WorkGallery(response.data));\r\n setTimeout(function () {\r\n masonry.appended($(\".item\").last());\r\n setTimeout(function () {\r\n masonry.layout();\r\n }, 500);\r\n });\r\n }\r\n else if (response.data.isAudio) {\r\n _this.audioFiles.push(new WorkUpload(response.data));\r\n }\r\n else {\r\n _this.files.push(new WorkUpload(response.data));\r\n }\r\n }\r\n }\r\n });\r\n ko.computed(function () {\r\n var itemLimit = options.maxWorkFileUploads - _this.files().length + _this.audioFiles().length + _this.galleryImages.length;\r\n if (itemLimit === 0) {\r\n itemLimit = -1;\r\n }\r\n uploader.setItemLimit(itemLimit);\r\n });\r\n });\r\n }\r\n return ViewModel;\r\n }(baseViewModel_1.BaseViewModel));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workUploads.js.map","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\n(function (factory) {\r\n if (typeof module === 'object' && typeof module.exports === 'object') {\r\n var v = factory(require, exports); if (v !== undefined) module.exports = v;\r\n }\r\n else if (typeof define === 'function' && define.amd) {\r\n define([\"require\", \"exports\", \"jquery\", \"knockout\", \"moment\", \"numeral\", \"../utils/ajaxUtils\", \"../utils/dateTimeUtils\", \"../utils/socialUtils\", \"../utils/localStorageUtils\", \"../utils/imageZoomUtils\", \"./commentsView\", \"../utils/richContentUtils\"], factory);\r\n }\r\n})(function (require, exports) {\r\n \"use strict\";\r\n var $ = require(\"jquery\");\r\n var ko = require(\"knockout\");\r\n var moment = require(\"moment\");\r\n var numeral = require(\"numeral\");\r\n var ajaxUtils_1 = require(\"../utils/ajaxUtils\");\r\n var dateTimeUtils_1 = require(\"../utils/dateTimeUtils\");\r\n var socialUtils_1 = require(\"../utils/socialUtils\");\r\n var scriptjs = require(\"scriptjs\");\r\n var localStorageUtils_1 = require(\"../utils/localStorageUtils\");\r\n var imageZoomUtils_1 = require(\"../utils/imageZoomUtils\");\r\n var commentsView_1 = require(\"./commentsView\");\r\n var richContentUtils_1 = require(\"../utils/richContentUtils\");\r\n //declare var PhotoSwipe;\r\n //declare var PhotoSwipeUI_Default;\r\n var Masonry = require(\"masonry-layout\");\r\n var imagesLoaded = require(\"imagesloaded\");\r\n //var Clipboard = require(\"clipboard\");\r\n var ViewModel = (function (_super) {\r\n __extends(ViewModel, _super);\r\n //private clipboard = null;\r\n function ViewModel(options) {\r\n var _this = this;\r\n _super.call(this, options);\r\n this.numeral = numeral;\r\n //photoSwipe = null;\r\n this.processing = ko.observable(false);\r\n this.workId = this.options.workId;\r\n this.isATRecommended = this.options.isATRecommended;\r\n this.startDate = ko.observable(moment().startOf(\"day\").add(-6, \"days\"));\r\n this.endDate = ko.observable(moment().endOf(\"day\"));\r\n this.isLoading = ko.observable(true);\r\n this.statsViewCount = ko.observable(0);\r\n this.statsCommentCount = ko.observable(0);\r\n this.statsLikeCount = ko.observable(0);\r\n this.statsFilterData = ko.computed(function () {\r\n var filterData = {\r\n startDate: _this.startDate().toISOString(),\r\n endDate: _this.endDate().toISOString(),\r\n itemId: _this.workId,\r\n groupBy: \"work\"\r\n };\r\n return filterData;\r\n });\r\n this.booktrailerVideoUrl = ko.observable();\r\n this.showFullStats = ko.observable();\r\n this.statsInit = false;\r\n this.workStatLoaded = ko.observable(false);\r\n this.totalCount = ko.observable(0);\r\n this.readingCount = ko.observable(0);\r\n this.savedCount = ko.observable(0);\r\n this.finishedCount = ko.observable(0);\r\n this.dislikedCount = ko.observable(0);\r\n this.timelineLoaded = ko.observable(false);\r\n this.timelineHtml = ko.observable();\r\n socialUtils_1.default.init();\r\n richContentUtils_1.default.processHtml(\".annotation\");\r\n localStorageUtils_1.default.addToList(localStorageUtils_1.default.RecentlyViewedKey, this.workId);\r\n this.booktrailerVideoUrl(options.booktrailerVideoUrl);\r\n this.showFullStats(options.showFullStats);\r\n this.loadComments(null, null, false);\r\n }\r\n ViewModel.prototype.showMaterialsTab = function () {\r\n $(\"#href-tab-maretials\").tab(\"show\");\r\n setTimeout(function () {\r\n var $audio = $(\"audio\");\r\n if ($audio.length > 0) {\r\n $audio[\"mediaelementplayer\"]({\r\n audioWidth: \"100%\",\r\n features: [\"playpause\", \"progress\", \"current\", \"duration\", \"tracks\", \"volume\"]\r\n });\r\n }\r\n if (!$(\"#masonry\")[0])\r\n return;\r\n var masonry = new Masonry(\"#masonry\", {\r\n itemSelector: \"figure\",\r\n gutter: 10,\r\n columnWidth: \".grid-sizer\",\r\n percentPosition: true\r\n });\r\n $(\"#masonry figure\")[\"imagesLoaded\"]()\r\n .progress(function () {\r\n masonry.layout();\r\n });\r\n $(window)\r\n .on(\"resize\", function () {\r\n setTimeout(function () { return masonry.layout(); }, 200);\r\n });\r\n imageZoomUtils_1.default.initWorkMaterials();\r\n }, 200);\r\n };\r\n /** Загружает информацию для вкладки \"Статистика\" */\r\n ViewModel.prototype.showStatsTab = function () {\r\n var _this = this;\r\n $(\"#href-tab-stats\").tab(\"show\");\r\n if (this.statsInit)\r\n return;\r\n ajaxUtils_1.AjaxUtils.get(\"work/work-stats\", { workId: this.workId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.totalCount(result.data.totalCount);\r\n _this.readingCount(result.data.readingCount);\r\n _this.savedCount(result.data.savedCount);\r\n _this.finishedCount(result.data.finishedCount);\r\n _this.dislikedCount(result.data.dislikedCount);\r\n })\r\n .always(function () {\r\n _this.workStatLoaded(true);\r\n });\r\n if (this.showFullStats()) {\r\n scriptjs([ajaxUtils_1.AjaxUtils.getFullUrl(\"dist/js/amcharts?v=140717\")], function () {\r\n ko.computed(function () {\r\n _this.isLoading(true);\r\n _this.statsFilterData();\r\n _this.loadDynamicChart();\r\n });\r\n _this.statsInit = true;\r\n });\r\n }\r\n else {\r\n this.statsInit = true;\r\n }\r\n };\r\n ViewModel.prototype.showTimelineTab = function () {\r\n var _this = this;\r\n $(\"#href-tab-timeline\").tab(\"show\");\r\n if (this.timelineLoaded())\r\n return;\r\n ajaxUtils_1.AjaxUtils.get(\"work/timeline\", { id: this.workId })\r\n .done(function (result) {\r\n if (!result.isSuccessful) {\r\n alert(result.messages[0]);\r\n return;\r\n }\r\n _this.timelineHtml(result.data.html);\r\n setTimeout(function () {\r\n var $timeline = $(\"#tab-timeline\").find(\".widget-content\");\r\n $timeline.addClass(\"in\");\r\n dateTimeUtils_1.default.displayTime($timeline);\r\n }, 0);\r\n })\r\n .always(function () {\r\n _this.timelineLoaded(true);\r\n });\r\n };\r\n ViewModel.prototype.loadDynamicChart = function () {\r\n var _this = this;\r\n ajaxUtils_1.AjaxUtils.get(\"report/user-activity-data\", this.statsFilterData())\r\n .done(function (result) {\r\n var daysInPerios = Math.floor((_this.endDate() - _this.startDate()) / (1000 * 60 * 60 * 24));\r\n var minPeriod = \"DD\";\r\n var categoryBalloonDateFormat = \"MMMM DD, YYYY\";\r\n if (daysInPerios > 40) {\r\n minPeriod = \"MM\";\r\n categoryBalloonDateFormat = \"MMMM, YYYY\";\r\n }\r\n _this.dynamicChart = AmCharts.makeChart(\"statsChartdiv\", {\r\n language: \"ru\",\r\n type: \"serial\",\r\n theme: \"light\",\r\n valueAxes: [\r\n {\r\n id: \"countAxis\",\r\n axisAlpha: 0,\r\n position: \"left\",\r\n integersOnly: true,\r\n title: \"Количество просмотров\"\r\n }, {\r\n title: \"Время чтения, часы\",\r\n id: \"durationAxis\",\r\n axisAlpha: 0,\r\n gridAlpha: 0,\r\n position: \"right\"\r\n }\r\n ],\r\n graphs: [\r\n {\r\n balloonText: \"Просмотров: [[value]]\",\r\n fillAlphas: 0.7,\r\n legendValueText: \"[[value]]\",\r\n type: \"column\",\r\n valueField: \"totalViewCount\",\r\n valueAxis: \"countAxis\"\r\n }, {\r\n balloonText: \"Время чтения: [[value]]\",\r\n type: \"smoothedLine\",\r\n bullet: \"round\",\r\n bulletBorderAlpha: 1,\r\n useLineColorForBulletBorder: true,\r\n bulletColor: \"#FFFFFF\",\r\n hideBulletsCount: 30,\r\n legendValueText: \"[[value]] ч.\",\r\n fillAlphas: 0,\r\n valueField: \"spentTime\",\r\n valueAxis: \"durationAxis\"\r\n }\r\n ],\r\n chartCursor: {\r\n categoryBalloonDateFormat: categoryBalloonDateFormat,\r\n cursorAlpha: 0.1,\r\n cursorColor: \"#000000\",\r\n fullWidth: true,\r\n valueBalloonsEnabled: false,\r\n zoomable: false\r\n },\r\n dataDateFormat: \"DD.MM.YYYY\",\r\n categoryField: \"date\",\r\n categoryAxis: {\r\n parseDates: true,\r\n dashLength: 1,\r\n minorGridEnabled: true,\r\n minPeriod: minPeriod\r\n },\r\n legend: {\r\n equalWidths: false,\r\n useGraphSettings: true,\r\n align: \"center\"\r\n },\r\n dataProvider: result.data,\r\n pathToImages: window[\"app\"].rootUrl + \"dist/vendor/amcharts/images/\"\r\n });\r\n _this.isLoading(false);\r\n });\r\n };\r\n ViewModel.prototype.download = function (fileId) {\r\n var $button = $(\"#file_\" + fileId);\r\n $button.attr(\"disabled\", \"disabled\").addClass(\"is-loading\");\r\n $.get(window[\"app\"].rootUrl + \"file/downloadWorkFile\", { id: fileId })\r\n .done(function (result) {\r\n if (result.isSuccessful) {\r\n var hiddenIFrameId = \"hiddenDownloader\";\r\n var iframe = document.getElementById(hiddenIFrameId);\r\n if (iframe === null) {\r\n iframe = document.createElement(\"iframe\");\r\n iframe.id = hiddenIFrameId;\r\n iframe.style.display = \"none\";\r\n document.body.appendChild(iframe);\r\n }\r\n iframe[\"src\"] = result.data;\r\n }\r\n })\r\n .always(function () {\r\n $button.removeAttr(\"disabled\").removeClass(\"is-loading\");\r\n });\r\n };\r\n ViewModel.prototype.updateLastTextLength = function () {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/updateLastTextLength\", {\r\n id: this.workId\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n });\r\n };\r\n ViewModel.prototype.updateBookSize = function () {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/updateBookSize\", {\r\n workId: this.workId\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n });\r\n };\r\n ViewModel.prototype.updateATRecState = function () {\r\n var _this = this;\r\n this.processing(true);\r\n ajaxUtils_1.AjaxUtils.post(\"work/updateATRecomendation\", {\r\n id: this.workId,\r\n isATRecommended: !this.isATRecommended\r\n }).done(function (result) {\r\n _this.processing(false);\r\n if (result.isSuccessful) {\r\n _this.reloadPage();\r\n }\r\n else {\r\n alert(result.messages[0]);\r\n }\r\n });\r\n };\r\n return ViewModel;\r\n }(commentsView_1.default));\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n exports.default = ViewModel;\r\n});\r\n//# sourceMappingURL=workView.js.map","/*!\n * Cropper v2.3.4\n * https://github.com/fengyuanchen/cropper\n *\n * Copyright (c) 2014-2016 Fengyuan Chen and contributors\n * Released under the MIT license\n *\n * Date: 2016-09-03T05:50:45.412Z\n */\n\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as anonymous module.\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\n // Node / CommonJS\n factory(require('jquery'));\r\n } else {\n // Browser globals.\n factory(jQuery);\r\n }\r\n})(function ($) {\r\n\n 'use strict';\n\n // Globals\n var $window = $(window);\n var $document = $(document);\n var location = window.location;\n var navigator = window.navigator;\n var ArrayBuffer = window.ArrayBuffer;\n var Uint8Array = window.Uint8Array;\n var DataView = window.DataView;\n var btoa = window.btoa;\n\n // Constants\n var NAMESPACE = 'cropper';\n\n // Classes\n var CLASS_MODAL = 'cropper-modal';\n var CLASS_HIDE = 'cropper-hide';\n var CLASS_HIDDEN = 'cropper-hidden';\n var CLASS_INVISIBLE = 'cropper-invisible';\n var CLASS_MOVE = 'cropper-move';\n var CLASS_CROP = 'cropper-crop';\n var CLASS_DISABLED = 'cropper-disabled';\n var CLASS_BG = 'cropper-bg';\n\n // Events\n var EVENT_MOUSE_DOWN = 'mousedown touchstart pointerdown MSPointerDown';\n var EVENT_MOUSE_MOVE = 'mousemove touchmove pointermove MSPointerMove';\n var EVENT_MOUSE_UP = 'mouseup touchend touchcancel pointerup pointercancel MSPointerUp MSPointerCancel';\n var EVENT_WHEEL = 'wheel mousewheel DOMMouseScroll';\n var EVENT_DBLCLICK = 'dblclick';\n var EVENT_LOAD = 'load.' + NAMESPACE;\n var EVENT_ERROR = 'error.' + NAMESPACE;\n var EVENT_RESIZE = 'resize.' + NAMESPACE; // Bind to window with namespace\n var EVENT_BUILD = 'build.' + NAMESPACE;\n var EVENT_BUILT = 'built.' + NAMESPACE;\n var EVENT_CROP_START = 'cropstart.' + NAMESPACE;\n var EVENT_CROP_MOVE = 'cropmove.' + NAMESPACE;\n var EVENT_CROP_END = 'cropend.' + NAMESPACE;\n var EVENT_CROP = 'crop.' + NAMESPACE;\n var EVENT_ZOOM = 'zoom.' + NAMESPACE;\n\n // RegExps\n var REGEXP_ACTIONS = /^(e|w|s|n|se|sw|ne|nw|all|crop|move|zoom)$/;\n var REGEXP_DATA_URL = /^data:/;\n var REGEXP_DATA_URL_HEAD = /^data:([^;]+);base64,/;\n var REGEXP_DATA_URL_JPEG = /^data:image\\/jpeg.*;base64,/;\n\n // Data keys\n var DATA_PREVIEW = 'preview';\n var DATA_ACTION = 'action';\n\n // Actions\n var ACTION_EAST = 'e';\n var ACTION_WEST = 'w';\n var ACTION_SOUTH = 's';\n var ACTION_NORTH = 'n';\n var ACTION_SOUTH_EAST = 'se';\n var ACTION_SOUTH_WEST = 'sw';\n var ACTION_NORTH_EAST = 'ne';\n var ACTION_NORTH_WEST = 'nw';\n var ACTION_ALL = 'all';\n var ACTION_CROP = 'crop';\n var ACTION_MOVE = 'move';\n var ACTION_ZOOM = 'zoom';\n var ACTION_NONE = 'none';\n\n // Supports\n var SUPPORT_CANVAS = $.isFunction($('')[0].getContext);\n var IS_SAFARI_OR_UIWEBVIEW = navigator && /(Macintosh|iPhone|iPod|iPad).*AppleWebKit/i.test(navigator.userAgent);\n\n // Maths\n var num = Number;\n var min = Math.min;\n var max = Math.max;\n var abs = Math.abs;\n var sin = Math.sin;\n var cos = Math.cos;\n var sqrt = Math.sqrt;\n var round = Math.round;\n var floor = Math.floor;\n\n // Utilities\n var fromCharCode = String.fromCharCode;\n\n function isNumber(n) {\r\n return typeof n === 'number' && !isNaN(n);\r\n }\n\n function isUndefined(n) {\r\n return typeof n === 'undefined';\r\n }\n\n function toArray(obj, offset) {\r\n var args = [];\n\n // This is necessary for IE8\n if (isNumber(offset)) {\r\n args.push(offset);\r\n }\n\n return args.slice.apply(obj, args);\r\n }\n\n // Custom proxy to avoid jQuery's guid\n function proxy(fn, context) {\r\n var args = toArray(arguments, 2);\n\n return function () {\r\n return fn.apply(context, args.concat(toArray(arguments)));\r\n };\r\n }\n\n function isCrossOriginURL(url) {\r\n var parts = url.match(/^(https?:)\\/\\/([^\\:\\/\\?#]+):?(\\d*)/i);\n\n return parts && (\n parts[1] !== location.protocol ||\n parts[2] !== location.hostname ||\n parts[3] !== location.port\n );\r\n }\n\n function addTimestamp(url) {\r\n var timestamp = 'timestamp=' + (new Date()).getTime();\n\n return (url + (url.indexOf('?') === -1 ? '?' : '&') + timestamp);\r\n }\n\n function getCrossOrigin(crossOrigin) {\r\n return crossOrigin ? ' crossOrigin=\"' + crossOrigin + '\"' : '';\r\n }\n\n function getImageSize(image, callback) {\r\n var newImage;\n\n // Modern browsers (ignore Safari, #120 & #509)\n if (image.naturalWidth && !IS_SAFARI_OR_UIWEBVIEW) {\r\n return callback(image.naturalWidth, image.naturalHeight);\r\n }\n\n // IE8: Don't use `new Image()` here (#319)\n newImage = document.createElement('img');\n\n newImage.onload = function () {\r\n callback(this.width, this.height);\r\n };\n\n newImage.src = image.src;\r\n }\n\n function getTransform(options) {\r\n var transforms = [];\n var rotate = options.rotate;\n var scaleX = options.scaleX;\n var scaleY = options.scaleY;\n\n // Rotate should come first before scale to match orientation transform\n if (isNumber(rotate) && rotate !== 0) {\r\n transforms.push('rotate(' + rotate + 'deg)');\r\n }\n\n if (isNumber(scaleX) && scaleX !== 1) {\r\n transforms.push('scaleX(' + scaleX + ')');\r\n }\n\n if (isNumber(scaleY) && scaleY !== 1) {\r\n transforms.push('scaleY(' + scaleY + ')');\r\n }\n\n return transforms.length ? transforms.join(' ') : 'none';\r\n }\n\n function getRotatedSizes(data, isReversed) {\r\n var deg = abs(data.degree) % 180;\n var arc = (deg > 90 ? (180 - deg) : deg) * Math.PI / 180;\n var sinArc = sin(arc);\n var cosArc = cos(arc);\n var width = data.width;\n var height = data.height;\n var aspectRatio = data.aspectRatio;\n var newWidth;\n var newHeight;\n\n if (!isReversed) {\r\n newWidth = width * cosArc + height * sinArc;\n newHeight = width * sinArc + height * cosArc;\r\n } else {\r\n newWidth = width / (cosArc + sinArc / aspectRatio);\n newHeight = newWidth / aspectRatio;\r\n }\n\n return {\r\n width: newWidth,\n height: newHeight\r\n };\r\n }\n\n function getSourceCanvas(image, data) {\r\n var canvas = $('')[0];\n var context = canvas.getContext('2d');\n var dstX = 0;\n var dstY = 0;\n var dstWidth = data.naturalWidth;\n var dstHeight = data.naturalHeight;\n var rotate = data.rotate;\n var scaleX = data.scaleX;\n var scaleY = data.scaleY;\n var scalable = isNumber(scaleX) && isNumber(scaleY) && (scaleX !== 1 || scaleY !== 1);\n var rotatable = isNumber(rotate) && rotate !== 0;\n var advanced = rotatable || scalable;\n var canvasWidth = dstWidth * abs(scaleX || 1);\n var canvasHeight = dstHeight * abs(scaleY || 1);\n var translateX;\n var translateY;\n var rotated;\n\n if (scalable) {\r\n translateX = canvasWidth / 2;\n translateY = canvasHeight / 2;\r\n }\n\n if (rotatable) {\r\n rotated = getRotatedSizes({\r\n width: canvasWidth,\n height: canvasHeight,\n degree: rotate\r\n });\n\n canvasWidth = rotated.width;\n canvasHeight = rotated.height;\n translateX = canvasWidth / 2;\n translateY = canvasHeight / 2;\r\n }\n\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n\n if (advanced) {\r\n dstX = -dstWidth / 2;\n dstY = -dstHeight / 2;\n\n context.save();\n context.translate(translateX, translateY);\r\n }\n\n // Rotate should come first before scale as in the \"getTransform\" function\n if (rotatable) {\r\n context.rotate(rotate * Math.PI / 180);\r\n }\n\n if (scalable) {\r\n context.scale(scaleX, scaleY);\r\n }\n\n context.drawImage(image, floor(dstX), floor(dstY), floor(dstWidth), floor(dstHeight));\n\n if (advanced) {\r\n context.restore();\r\n }\n\n return canvas;\r\n }\n\n function getTouchesCenter(touches) {\r\n var length = touches.length;\n var pageX = 0;\n var pageY = 0;\n\n if (length) {\r\n $.each(touches, function (i, touch) {\r\n pageX += touch.pageX;\n pageY += touch.pageY;\r\n });\n\n pageX /= length;\n pageY /= length;\r\n }\n\n return {\r\n pageX: pageX,\n pageY: pageY\r\n };\r\n }\n\n function getStringFromCharCode(dataView, start, length) {\r\n var str = '';\n var i;\n\n for (i = start, length += start; i < length; i++) {\r\n str += fromCharCode(dataView.getUint8(i));\r\n }\n\n return str;\r\n }\n\n function getOrientation(arrayBuffer) {\r\n var dataView = new DataView(arrayBuffer);\n var length = dataView.byteLength;\n var orientation;\n var exifIDCode;\n var tiffOffset;\n var firstIFDOffset;\n var littleEndian;\n var endianness;\n var app1Start;\n var ifdStart;\n var offset;\n var i;\n\n // Only handle JPEG image (start by 0xFFD8)\n if (dataView.getUint8(0) === 0xFF && dataView.getUint8(1) === 0xD8) {\r\n offset = 2;\n\n while (offset < length) {\r\n if (dataView.getUint8(offset) === 0xFF && dataView.getUint8(offset + 1) === 0xE1) {\r\n app1Start = offset;\n break;\r\n }\n\n offset++;\r\n }\r\n }\n\n if (app1Start) {\r\n exifIDCode = app1Start + 4;\n tiffOffset = app1Start + 10;\n\n if (getStringFromCharCode(dataView, exifIDCode, 4) === 'Exif') {\r\n endianness = dataView.getUint16(tiffOffset);\n littleEndian = endianness === 0x4949;\n\n if (littleEndian || endianness === 0x4D4D /* bigEndian */) {\r\n if (dataView.getUint16(tiffOffset + 2, littleEndian) === 0x002A) {\r\n firstIFDOffset = dataView.getUint32(tiffOffset + 4, littleEndian);\n\n if (firstIFDOffset >= 0x00000008) {\r\n ifdStart = tiffOffset + firstIFDOffset;\r\n }\r\n }\r\n }\r\n }\r\n }\n\n if (ifdStart) {\r\n length = dataView.getUint16(ifdStart, littleEndian);\n\n for (i = 0; i < length; i++) {\r\n offset = ifdStart + i * 12 + 2;\n\n if (dataView.getUint16(offset, littleEndian) === 0x0112 /* Orientation */) {\n\n // 8 is the offset of the current tag's value\n offset += 8;\n\n // Get the original orientation value\n orientation = dataView.getUint16(offset, littleEndian);\n\n // Override the orientation with its default value for Safari (#120)\n if (IS_SAFARI_OR_UIWEBVIEW) {\r\n dataView.setUint16(offset, 1, littleEndian);\r\n }\n\n break;\r\n }\r\n }\r\n }\n\n return orientation;\r\n }\n\n function dataURLToArrayBuffer(dataURL) {\r\n var base64 = dataURL.replace(REGEXP_DATA_URL_HEAD, '');\n var binary = atob(base64);\n var length = binary.length;\n var arrayBuffer = new ArrayBuffer(length);\n var dataView = new Uint8Array(arrayBuffer);\n var i;\n\n for (i = 0; i < length; i++) {\r\n dataView[i] = binary.charCodeAt(i);\r\n }\n\n return arrayBuffer;\r\n }\n\n // Only available for JPEG image\n function arrayBufferToDataURL(arrayBuffer) {\r\n var dataView = new Uint8Array(arrayBuffer);\n var length = dataView.length;\n var base64 = '';\n var i;\n\n for (i = 0; i < length; i++) {\r\n base64 += fromCharCode(dataView[i]);\r\n }\n\n return 'data:image/jpeg;base64,' + btoa(base64);\r\n }\n\n function Cropper(element, options) {\r\n this.$element = $(element);\n this.options = $.extend({}, Cropper.DEFAULTS, $.isPlainObject(options) && options);\n this.isLoaded = false;\n this.isBuilt = false;\n this.isCompleted = false;\n this.isRotated = false;\n this.isCropped = false;\n this.isDisabled = false;\n this.isReplaced = false;\n this.isLimited = false;\n this.wheeling = false;\n this.isImg = false;\n this.originalUrl = '';\n this.canvas = null;\n this.cropBox = null;\n this.init();\r\n }\n\n Cropper.prototype = {\r\n constructor: Cropper,\n\n init: function () {\r\n var $this = this.$element;\n var url;\n\n if ($this.is('img')) {\r\n this.isImg = true;\n\n // Should use `$.fn.attr` here. e.g.: \"img/picture.jpg\"\n this.originalUrl = url = $this.attr('src');\n\n // Stop when it's a blank image\n if (!url) {\r\n return;\r\n }\n\n // Should use `$.fn.prop` here. e.g.: \"http://example.com/img/picture.jpg\"\n url = $this.prop('src');\r\n } else if ($this.is('canvas') && SUPPORT_CANVAS) {\r\n url = $this[0].toDataURL();\r\n }\n\n this.load(url);\r\n },\n\n // A shortcut for triggering custom events\n trigger: function (type, data) {\r\n var e = $.Event(type, data);\n\n this.$element.trigger(e);\n\n return e;\r\n },\n\n load: function (url) {\r\n var options = this.options;\n var $this = this.$element;\n var read;\n var xhr;\n\n if (!url) {\r\n return;\r\n }\n\n // Trigger build event first\n $this.one(EVENT_BUILD, options.build);\n\n if (this.trigger(EVENT_BUILD).isDefaultPrevented()) {\r\n return;\r\n }\n\n this.url = url;\n this.image = {};\n\n if (!options.checkOrientation || !ArrayBuffer) {\r\n return this.clone();\r\n }\n\n read = $.proxy(this.read, this);\n\n // XMLHttpRequest disallows to open a Data URL in some browsers like IE11 and Safari\n if (REGEXP_DATA_URL.test(url)) {\r\n return REGEXP_DATA_URL_JPEG.test(url) ?\n read(dataURLToArrayBuffer(url)) :\n this.clone();\r\n }\n\n xhr = new XMLHttpRequest();\n\n xhr.onerror = xhr.onabort = $.proxy(function () {\r\n this.clone();\r\n }, this);\n\n xhr.onload = function () {\r\n read(this.response);\r\n };\n\n if (options.checkCrossOrigin && isCrossOriginURL(url) && $this.prop('crossOrigin')) {\r\n url = addTimestamp(url);\r\n }\n\n xhr.open('get', url);\n xhr.responseType = 'arraybuffer';\n xhr.send();\r\n },\n\n read: function (arrayBuffer) {\r\n var options = this.options;\n var orientation = getOrientation(arrayBuffer);\n var image = this.image;\n var rotate = 0;\n var scaleX = 1;\n var scaleY = 1;\n\n if (orientation > 1) {\r\n this.url = arrayBufferToDataURL(arrayBuffer);\n\n switch (orientation) {\n\n // flip horizontal\n case 2:\n scaleX = -1;\n break;\n\n // rotate left 180�\n case 3:\n rotate = -180;\n break;\n\n // flip vertical\n case 4:\n scaleY = -1;\n break;\n\n // flip vertical + rotate right 90�\n case 5:\n rotate = 90;\n scaleY = -1;\n break;\n\n // rotate right 90�\n case 6:\n rotate = 90;\n break;\n\n // flip horizontal + rotate right 90�\n case 7:\n rotate = 90;\n scaleX = -1;\n break;\n\n // rotate left 90�\n case 8:\n rotate = -90;\n break;\r\n }\r\n }\n\n if (options.rotatable) {\r\n image.rotate = rotate;\r\n }\n\n if (options.scalable) {\r\n image.scaleX = scaleX;\n image.scaleY = scaleY;\r\n }\n\n this.clone();\r\n },\n\n clone: function () {\r\n var options = this.options;\n var $this = this.$element;\n var url = this.url;\n var crossOrigin = '';\n var crossOriginUrl;\n var $clone;\n\n if (options.checkCrossOrigin && isCrossOriginURL(url)) {\r\n crossOrigin = $this.prop('crossOrigin');\n\n if (crossOrigin) {\r\n crossOriginUrl = url;\r\n } else {\r\n crossOrigin = 'anonymous';\n\n // Bust cache (#148) when there is not a \"crossOrigin\" property\n crossOriginUrl = addTimestamp(url);\r\n }\r\n }\n\n this.crossOrigin = crossOrigin;\n this.crossOriginUrl = crossOriginUrl;\n this.$clone = $clone = $('');\n\n if (this.isImg) {\r\n if ($this[0].complete) {\r\n this.start();\r\n } else {\r\n $this.one(EVENT_LOAD, $.proxy(this.start, this));\r\n }\r\n } else {\r\n $clone.\n one(EVENT_LOAD, $.proxy(this.start, this)).\n one(EVENT_ERROR, $.proxy(this.stop, this)).\n addClass(CLASS_HIDE).\n insertAfter($this);\r\n }\r\n },\n\n start: function () {\r\n var $image = this.$element;\n var $clone = this.$clone;\n\n if (!this.isImg) {\r\n $clone.off(EVENT_ERROR, this.stop);\n $image = $clone;\r\n }\n\n getImageSize($image[0], $.proxy(function (naturalWidth, naturalHeight) {\r\n $.extend(this.image, {\r\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n aspectRatio: naturalWidth / naturalHeight\r\n });\n\n this.isLoaded = true;\n this.build();\r\n }, this));\r\n },\n\n stop: function () {\r\n this.$clone.remove();\n this.$clone = null;\r\n },\n\n build: function () {\r\n var options = this.options;\n var $this = this.$element;\n var $clone = this.$clone;\n var $cropper;\n var $cropBox;\n var $face;\n\n if (!this.isLoaded) {\r\n return;\r\n }\n\n // Unbuild first when replace\n if (this.isBuilt) {\r\n this.unbuild();\r\n }\n\n // Create cropper elements\n this.$container = $this.parent();\n this.$cropper = $cropper = $(Cropper.TEMPLATE);\n this.$canvas = $cropper.find('.cropper-canvas').append($clone);\n this.$dragBox = $cropper.find('.cropper-drag-box');\n this.$cropBox = $cropBox = $cropper.find('.cropper-crop-box');\n this.$viewBox = $cropper.find('.cropper-view-box');\n this.$face = $face = $cropBox.find('.cropper-face');\n\n // Hide the original image\n $this.addClass(CLASS_HIDDEN).after($cropper);\n\n // Show the clone image if is hidden\n if (!this.isImg) {\r\n $clone.removeClass(CLASS_HIDE);\r\n }\n\n this.initPreview();\n this.bind();\n\n options.aspectRatio = max(0, options.aspectRatio) || NaN;\n options.viewMode = max(0, min(3, round(options.viewMode))) || 0;\n\n if (options.autoCrop) {\r\n this.isCropped = true;\n\n if (options.modal) {\r\n this.$dragBox.addClass(CLASS_MODAL);\r\n }\r\n } else {\r\n $cropBox.addClass(CLASS_HIDDEN);\r\n }\n\n if (!options.guides) {\r\n $cropBox.find('.cropper-dashed').addClass(CLASS_HIDDEN);\r\n }\n\n if (!options.center) {\r\n $cropBox.find('.cropper-center').addClass(CLASS_HIDDEN);\r\n }\n\n if (options.cropBoxMovable) {\r\n $face.addClass(CLASS_MOVE).data(DATA_ACTION, ACTION_ALL);\r\n }\n\n if (!options.highlight) {\r\n $face.addClass(CLASS_INVISIBLE);\r\n }\n\n if (options.background) {\r\n $cropper.addClass(CLASS_BG);\r\n }\n\n if (!options.cropBoxResizable) {\r\n $cropBox.find('.cropper-line, .cropper-point').addClass(CLASS_HIDDEN);\r\n }\n\n this.setDragMode(options.dragMode);\n this.render();\n this.isBuilt = true;\n this.setData(options.data);\n $this.one(EVENT_BUILT, options.built);\n\n // Trigger the built event asynchronously to keep `data('cropper')` is defined\n this.completing = setTimeout($.proxy(function () {\r\n this.trigger(EVENT_BUILT);\n this.trigger(EVENT_CROP, this.getData());\n this.isCompleted = true;\r\n }, this), 0);\r\n },\n\n unbuild: function () {\r\n if (!this.isBuilt) {\r\n return;\r\n }\n\n if (!this.isCompleted) {\r\n clearTimeout(this.completing);\r\n }\n\n this.isBuilt = false;\n this.isCompleted = false;\n this.initialImage = null;\n\n // Clear `initialCanvas` is necessary when replace\n this.initialCanvas = null;\n this.initialCropBox = null;\n this.container = null;\n this.canvas = null;\n\n // Clear `cropBox` is necessary when replace\n this.cropBox = null;\n this.unbind();\n\n this.resetPreview();\n this.$preview = null;\n\n this.$viewBox = null;\n this.$cropBox = null;\n this.$dragBox = null;\n this.$canvas = null;\n this.$container = null;\n\n this.$cropper.remove();\n this.$cropper = null;\r\n },\n\n render: function () {\r\n this.initContainer();\n this.initCanvas();\n this.initCropBox();\n\n this.renderCanvas();\n\n if (this.isCropped) {\r\n this.renderCropBox();\r\n }\r\n },\n\n initContainer: function () {\r\n var options = this.options;\n var $this = this.$element;\n var $container = this.$container;\n var $cropper = this.$cropper;\n\n $cropper.addClass(CLASS_HIDDEN);\n $this.removeClass(CLASS_HIDDEN);\n\n $cropper.css((this.container = {\r\n width: max($container.width(), num(options.minContainerWidth) || 200),\n height: max($container.height(), num(options.minContainerHeight) || 100)\r\n }));\n\n $this.addClass(CLASS_HIDDEN);\n $cropper.removeClass(CLASS_HIDDEN);\r\n },\n\n // Canvas (image wrapper)\n initCanvas: function () {\r\n var viewMode = this.options.viewMode;\n var container = this.container;\n var containerWidth = container.width;\n var containerHeight = container.height;\n var image = this.image;\n var imageNaturalWidth = image.naturalWidth;\n var imageNaturalHeight = image.naturalHeight;\n var is90Degree = abs(image.rotate) === 90;\n var naturalWidth = is90Degree ? imageNaturalHeight : imageNaturalWidth;\n var naturalHeight = is90Degree ? imageNaturalWidth : imageNaturalHeight;\n var aspectRatio = naturalWidth / naturalHeight;\n var canvasWidth = containerWidth;\n var canvasHeight = containerHeight;\n var canvas;\n\n if (containerHeight * aspectRatio > containerWidth) {\r\n if (viewMode === 3) {\r\n canvasWidth = containerHeight * aspectRatio;\r\n } else {\r\n canvasHeight = containerWidth / aspectRatio;\r\n }\r\n } else {\r\n if (viewMode === 3) {\r\n canvasHeight = containerWidth / aspectRatio;\r\n } else {\r\n canvasWidth = containerHeight * aspectRatio;\r\n }\r\n }\n\n canvas = {\r\n naturalWidth: naturalWidth,\n naturalHeight: naturalHeight,\n aspectRatio: aspectRatio,\n width: canvasWidth,\n height: canvasHeight\r\n };\n\n canvas.oldLeft = canvas.left = (containerWidth - canvasWidth) / 2;\n canvas.oldTop = canvas.top = (containerHeight - canvasHeight) / 2;\n\n this.canvas = canvas;\n this.isLimited = (viewMode === 1 || viewMode === 2);\n this.limitCanvas(true, true);\n this.initialImage = $.extend({}, image);\n this.initialCanvas = $.extend({}, canvas);\r\n },\n\n limitCanvas: function (isSizeLimited, isPositionLimited) {\r\n var options = this.options;\n var viewMode = options.viewMode;\n var container = this.container;\n var containerWidth = container.width;\n var containerHeight = container.height;\n var canvas = this.canvas;\n var aspectRatio = canvas.aspectRatio;\n var cropBox = this.cropBox;\n var isCropped = this.isCropped && cropBox;\n var minCanvasWidth;\n var minCanvasHeight;\n var newCanvasLeft;\n var newCanvasTop;\n\n if (isSizeLimited) {\r\n minCanvasWidth = num(options.minCanvasWidth) || 0;\n minCanvasHeight = num(options.minCanvasHeight) || 0;\n\n if (viewMode) {\r\n if (viewMode > 1) {\r\n minCanvasWidth = max(minCanvasWidth, containerWidth);\n minCanvasHeight = max(minCanvasHeight, containerHeight);\n\n if (viewMode === 3) {\r\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\r\n minCanvasWidth = minCanvasHeight * aspectRatio;\r\n } else {\r\n minCanvasHeight = minCanvasWidth / aspectRatio;\r\n }\r\n }\r\n } else {\r\n if (minCanvasWidth) {\r\n minCanvasWidth = max(minCanvasWidth, isCropped ? cropBox.width : 0);\r\n } else if (minCanvasHeight) {\r\n minCanvasHeight = max(minCanvasHeight, isCropped ? cropBox.height : 0);\r\n } else if (isCropped) {\r\n minCanvasWidth = cropBox.width;\n minCanvasHeight = cropBox.height;\n\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\r\n minCanvasWidth = minCanvasHeight * aspectRatio;\r\n } else {\r\n minCanvasHeight = minCanvasWidth / aspectRatio;\r\n }\r\n }\r\n }\r\n }\n\n if (minCanvasWidth && minCanvasHeight) {\r\n if (minCanvasHeight * aspectRatio > minCanvasWidth) {\r\n minCanvasHeight = minCanvasWidth / aspectRatio;\r\n } else {\r\n minCanvasWidth = minCanvasHeight * aspectRatio;\r\n }\r\n } else if (minCanvasWidth) {\r\n minCanvasHeight = minCanvasWidth / aspectRatio;\r\n } else if (minCanvasHeight) {\r\n minCanvasWidth = minCanvasHeight * aspectRatio;\r\n }\n\n canvas.minWidth = minCanvasWidth;\n canvas.minHeight = minCanvasHeight;\n canvas.maxWidth = Infinity;\n canvas.maxHeight = Infinity;\r\n }\n\n if (isPositionLimited) {\r\n if (viewMode) {\r\n newCanvasLeft = containerWidth - canvas.width;\n newCanvasTop = containerHeight - canvas.height;\n\n canvas.minLeft = min(0, newCanvasLeft);\n canvas.minTop = min(0, newCanvasTop);\n canvas.maxLeft = max(0, newCanvasLeft);\n canvas.maxTop = max(0, newCanvasTop);\n\n if (isCropped && this.isLimited) {\r\n canvas.minLeft = min(\n cropBox.left,\n cropBox.left + cropBox.width - canvas.width\n );\n canvas.minTop = min(\n cropBox.top,\n cropBox.top + cropBox.height - canvas.height\n );\n canvas.maxLeft = cropBox.left;\n canvas.maxTop = cropBox.top;\n\n if (viewMode === 2) {\r\n if (canvas.width >= containerWidth) {\r\n canvas.minLeft = min(0, newCanvasLeft);\n canvas.maxLeft = max(0, newCanvasLeft);\r\n }\n\n if (canvas.height >= containerHeight) {\r\n canvas.minTop = min(0, newCanvasTop);\n canvas.maxTop = max(0, newCanvasTop);\r\n }\r\n }\r\n }\r\n } else {\r\n canvas.minLeft = -canvas.width;\n canvas.minTop = -canvas.height;\n canvas.maxLeft = containerWidth;\n canvas.maxTop = containerHeight;\r\n }\r\n }\r\n },\n\n renderCanvas: function (isChanged) {\r\n var canvas = this.canvas;\n var image = this.image;\n var rotate = image.rotate;\n var naturalWidth = image.naturalWidth;\n var naturalHeight = image.naturalHeight;\n var aspectRatio;\n var rotated;\n\n if (this.isRotated) {\r\n this.isRotated = false;\n\n // Computes rotated sizes with image sizes\n rotated = getRotatedSizes({\r\n width: image.width,\n height: image.height,\n degree: rotate\r\n });\n\n aspectRatio = rotated.width / rotated.height;\n\n if (aspectRatio !== canvas.aspectRatio) {\r\n canvas.left -= (rotated.width - canvas.width) / 2;\n canvas.top -= (rotated.height - canvas.height) / 2;\n canvas.width = rotated.width;\n canvas.height = rotated.height;\n canvas.aspectRatio = aspectRatio;\n canvas.naturalWidth = naturalWidth;\n canvas.naturalHeight = naturalHeight;\n\n // Computes rotated sizes with natural image sizes\n if (rotate % 180) {\r\n rotated = getRotatedSizes({\r\n width: naturalWidth,\n height: naturalHeight,\n degree: rotate\r\n });\n\n canvas.naturalWidth = rotated.width;\n canvas.naturalHeight = rotated.height;\r\n }\n\n this.limitCanvas(true, false);\r\n }\r\n }\n\n if (canvas.width > canvas.maxWidth || canvas.width < canvas.minWidth) {\r\n canvas.left = canvas.oldLeft;\r\n }\n\n if (canvas.height > canvas.maxHeight || canvas.height < canvas.minHeight) {\r\n canvas.top = canvas.oldTop;\r\n }\n\n canvas.width = min(max(canvas.width, canvas.minWidth), canvas.maxWidth);\n canvas.height = min(max(canvas.height, canvas.minHeight), canvas.maxHeight);\n\n this.limitCanvas(false, true);\n\n canvas.oldLeft = canvas.left = min(max(canvas.left, canvas.minLeft), canvas.maxLeft);\n canvas.oldTop = canvas.top = min(max(canvas.top, canvas.minTop), canvas.maxTop);\n\n this.$canvas.css({\r\n width: canvas.width,\n height: canvas.height,\n left: canvas.left,\n top: canvas.top\r\n });\n\n this.renderImage();\n\n if (this.isCropped && this.isLimited) {\r\n this.limitCropBox(true, true);\r\n }\n\n if (isChanged) {\r\n this.output();\r\n }\r\n },\n\n renderImage: function (isChanged) {\r\n var canvas = this.canvas;\n var image = this.image;\n var reversed;\n\n if (image.rotate) {\r\n reversed = getRotatedSizes({\r\n width: canvas.width,\n height: canvas.height,\n degree: image.rotate,\n aspectRatio: image.aspectRatio\r\n }, true);\r\n }\n\n $.extend(image, reversed ? {\r\n width: reversed.width,\n height: reversed.height,\n left: (canvas.width - reversed.width) / 2,\n top: (canvas.height - reversed.height) / 2\r\n } : {\r\n width: canvas.width,\n height: canvas.height,\n left: 0,\n top: 0\r\n });\n\n this.$clone.css({\r\n width: image.width,\n height: image.height,\n marginLeft: image.left,\n marginTop: image.top,\n transform: getTransform(image)\r\n });\n\n if (isChanged) {\r\n this.output();\r\n }\r\n },\n\n initCropBox: function () {\r\n var options = this.options;\n var canvas = this.canvas;\n var aspectRatio = options.aspectRatio;\n var autoCropArea = num(options.autoCropArea) || 0.8;\n var cropBox = {\r\n width: canvas.width,\n height: canvas.height\r\n };\n\n if (aspectRatio) {\r\n if (canvas.height * aspectRatio > canvas.width) {\r\n cropBox.height = cropBox.width / aspectRatio;\r\n } else {\r\n cropBox.width = cropBox.height * aspectRatio;\r\n }\r\n }\n\n this.cropBox = cropBox;\n this.limitCropBox(true, true);\n\n // Initialize auto crop area\n cropBox.width = min(max(cropBox.width, cropBox.minWidth), cropBox.maxWidth);\n cropBox.height = min(max(cropBox.height, cropBox.minHeight), cropBox.maxHeight);\n\n // The width of auto crop area must large than \"minWidth\", and the height too. (#164)\n cropBox.width = max(cropBox.minWidth, cropBox.width * autoCropArea);\n cropBox.height = max(cropBox.minHeight, cropBox.height * autoCropArea);\n cropBox.oldLeft = cropBox.left = canvas.left + (canvas.width - cropBox.width) / 2;\n cropBox.oldTop = cropBox.top = canvas.top + (canvas.height - cropBox.height) / 2;\n\n this.initialCropBox = $.extend({}, cropBox);\r\n },\n\n limitCropBox: function (isSizeLimited, isPositionLimited) {\r\n var options = this.options;\n var aspectRatio = options.aspectRatio;\n var container = this.container;\n var containerWidth = container.width;\n var containerHeight = container.height;\n var canvas = this.canvas;\n var cropBox = this.cropBox;\n var isLimited = this.isLimited;\n var minCropBoxWidth;\n var minCropBoxHeight;\n var maxCropBoxWidth;\n var maxCropBoxHeight;\n\n if (isSizeLimited) {\r\n minCropBoxWidth = num(options.minCropBoxWidth) || 0;\n minCropBoxHeight = num(options.minCropBoxHeight) || 0;\n\n // The min/maxCropBoxWidth/Height must be less than containerWidth/Height\n minCropBoxWidth = min(minCropBoxWidth, containerWidth);\n minCropBoxHeight = min(minCropBoxHeight, containerHeight);\n maxCropBoxWidth = min(containerWidth, isLimited ? canvas.width : containerWidth);\n maxCropBoxHeight = min(containerHeight, isLimited ? canvas.height : containerHeight);\n\n if (aspectRatio) {\r\n if (minCropBoxWidth && minCropBoxHeight) {\r\n if (minCropBoxHeight * aspectRatio > minCropBoxWidth) {\r\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\r\n } else {\r\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\r\n }\r\n } else if (minCropBoxWidth) {\r\n minCropBoxHeight = minCropBoxWidth / aspectRatio;\r\n } else if (minCropBoxHeight) {\r\n minCropBoxWidth = minCropBoxHeight * aspectRatio;\r\n }\n\n if (maxCropBoxHeight * aspectRatio > maxCropBoxWidth) {\r\n maxCropBoxHeight = maxCropBoxWidth / aspectRatio;\r\n } else {\r\n maxCropBoxWidth = maxCropBoxHeight * aspectRatio;\r\n }\r\n }\n\n // The minWidth/Height must be less than maxWidth/Height\n cropBox.minWidth = min(minCropBoxWidth, maxCropBoxWidth);\n cropBox.minHeight = min(minCropBoxHeight, maxCropBoxHeight);\n cropBox.maxWidth = maxCropBoxWidth;\n cropBox.maxHeight = maxCropBoxHeight;\r\n }\n\n if (isPositionLimited) {\r\n if (isLimited) {\r\n cropBox.minLeft = max(0, canvas.left);\n cropBox.minTop = max(0, canvas.top);\n cropBox.maxLeft = min(containerWidth, canvas.left + canvas.width) - cropBox.width;\n cropBox.maxTop = min(containerHeight, canvas.top + canvas.height) - cropBox.height;\r\n } else {\r\n cropBox.minLeft = 0;\n cropBox.minTop = 0;\n cropBox.maxLeft = containerWidth - cropBox.width;\n cropBox.maxTop = containerHeight - cropBox.height;\r\n }\r\n }\r\n },\n\n renderCropBox: function () {\r\n var options = this.options;\n var container = this.container;\n var containerWidth = container.width;\n var containerHeight = container.height;\n var cropBox = this.cropBox;\n\n if (cropBox.width > cropBox.maxWidth || cropBox.width < cropBox.minWidth) {\r\n cropBox.left = cropBox.oldLeft;\r\n }\n\n if (cropBox.height > cropBox.maxHeight || cropBox.height < cropBox.minHeight) {\r\n cropBox.top = cropBox.oldTop;\r\n }\n\n cropBox.width = min(max(cropBox.width, cropBox.minWidth), cropBox.maxWidth);\n cropBox.height = min(max(cropBox.height, cropBox.minHeight), cropBox.maxHeight);\n\n this.limitCropBox(false, true);\n\n cropBox.oldLeft = cropBox.left = min(max(cropBox.left, cropBox.minLeft), cropBox.maxLeft);\n cropBox.oldTop = cropBox.top = min(max(cropBox.top, cropBox.minTop), cropBox.maxTop);\n\n if (options.movable && options.cropBoxMovable) {\n\n // Turn to move the canvas when the crop box is equal to the container\n this.$face.data(DATA_ACTION, (cropBox.width === containerWidth && cropBox.height === containerHeight) ? ACTION_MOVE : ACTION_ALL);\r\n }\n\n this.$cropBox.css({\r\n width: cropBox.width,\n height: cropBox.height,\n left: cropBox.left,\n top: cropBox.top\r\n });\n\n if (this.isCropped && this.isLimited) {\r\n this.limitCanvas(true, true);\r\n }\n\n if (!this.isDisabled) {\r\n this.output();\r\n }\r\n },\n\n output: function () {\r\n this.preview();\n\n if (this.isCompleted) {\r\n this.trigger(EVENT_CROP, this.getData());\r\n }\r\n },\n\n initPreview: function () {\r\n var crossOrigin = getCrossOrigin(this.crossOrigin);\n var url = crossOrigin ? this.crossOriginUrl : this.url;\n var $clone2;\n\n this.$preview = $(this.options.preview);\n this.$clone2 = $clone2 = $('');\n this.$viewBox.html($clone2);\n this.$preview.each(function () {\r\n var $this = $(this);\n\n // Save the original size for recover\n $this.data(DATA_PREVIEW, {\r\n width: $this.width(),\n height: $this.height(),\n html: $this.html()\r\n });\n\n /**\n * Override img element styles\n * Add `display:block` to avoid margin top issue\n * (Occur only when margin-top <= -height)\n */\n $this.html(\n ''\n );\r\n });\r\n },\n\n resetPreview: function () {\r\n this.$preview.each(function () {\r\n var $this = $(this);\n var data = $this.data(DATA_PREVIEW);\n\n $this.css({\r\n width: data.width,\n height: data.height\r\n }).html(data.html).removeData(DATA_PREVIEW);\r\n });\r\n },\n\n preview: function () {\r\n var image = this.image;\n var canvas = this.canvas;\n var cropBox = this.cropBox;\n var cropBoxWidth = cropBox.width;\n var cropBoxHeight = cropBox.height;\n var width = image.width;\n var height = image.height;\n var left = cropBox.left - canvas.left - image.left;\n var top = cropBox.top - canvas.top - image.top;\n\n if (!this.isCropped || this.isDisabled) {\r\n return;\r\n }\n\n this.$clone2.css({\r\n width: width,\n height: height,\n marginLeft: -left,\n marginTop: -top,\n transform: getTransform(image)\r\n });\n\n this.$preview.each(function () {\r\n var $this = $(this);\n var data = $this.data(DATA_PREVIEW);\n var originalWidth = data.width;\n var originalHeight = data.height;\n var newWidth = originalWidth;\n var newHeight = originalHeight;\n var ratio = 1;\n\n if (cropBoxWidth) {\r\n ratio = originalWidth / cropBoxWidth;\n newHeight = cropBoxHeight * ratio;\r\n }\n\n if (cropBoxHeight && newHeight > originalHeight) {\r\n ratio = originalHeight / cropBoxHeight;\n newWidth = cropBoxWidth * ratio;\n newHeight = originalHeight;\r\n }\n\n $this.css({\r\n width: newWidth,\n height: newHeight\r\n }).find('img').css({\r\n width: width * ratio,\n height: height * ratio,\n marginLeft: -left * ratio,\n marginTop: -top * ratio,\n transform: getTransform(image)\r\n });\r\n });\r\n },\n\n bind: function () {\r\n var options = this.options;\n var $this = this.$element;\n var $cropper = this.$cropper;\n\n if ($.isFunction(options.cropstart)) {\r\n $this.on(EVENT_CROP_START, options.cropstart);\r\n }\n\n if ($.isFunction(options.cropmove)) {\r\n $this.on(EVENT_CROP_MOVE, options.cropmove);\r\n }\n\n if ($.isFunction(options.cropend)) {\r\n $this.on(EVENT_CROP_END, options.cropend);\r\n }\n\n if ($.isFunction(options.crop)) {\r\n $this.on(EVENT_CROP, options.crop);\r\n }\n\n if ($.isFunction(options.zoom)) {\r\n $this.on(EVENT_ZOOM, options.zoom);\r\n }\n\n $cropper.on(EVENT_MOUSE_DOWN, $.proxy(this.cropStart, this));\n\n if (options.zoomable && options.zoomOnWheel) {\r\n $cropper.on(EVENT_WHEEL, $.proxy(this.wheel, this));\r\n }\n\n if (options.toggleDragModeOnDblclick) {\r\n $cropper.on(EVENT_DBLCLICK, $.proxy(this.dblclick, this));\r\n }\n\n $document.\n on(EVENT_MOUSE_MOVE, (this._cropMove = proxy(this.cropMove, this))).\n on(EVENT_MOUSE_UP, (this._cropEnd = proxy(this.cropEnd, this)));\n\n if (options.responsive) {\r\n $window.on(EVENT_RESIZE, (this._resize = proxy(this.resize, this)));\r\n }\r\n },\n\n unbind: function () {\r\n var options = this.options;\n var $this = this.$element;\n var $cropper = this.$cropper;\n\n if ($.isFunction(options.cropstart)) {\r\n $this.off(EVENT_CROP_START, options.cropstart);\r\n }\n\n if ($.isFunction(options.cropmove)) {\r\n $this.off(EVENT_CROP_MOVE, options.cropmove);\r\n }\n\n if ($.isFunction(options.cropend)) {\r\n $this.off(EVENT_CROP_END, options.cropend);\r\n }\n\n if ($.isFunction(options.crop)) {\r\n $this.off(EVENT_CROP, options.crop);\r\n }\n\n if ($.isFunction(options.zoom)) {\r\n $this.off(EVENT_ZOOM, options.zoom);\r\n }\n\n $cropper.off(EVENT_MOUSE_DOWN, this.cropStart);\n\n if (options.zoomable && options.zoomOnWheel) {\r\n $cropper.off(EVENT_WHEEL, this.wheel);\r\n }\n\n if (options.toggleDragModeOnDblclick) {\r\n $cropper.off(EVENT_DBLCLICK, this.dblclick);\r\n }\n\n $document.\n off(EVENT_MOUSE_MOVE, this._cropMove).\n off(EVENT_MOUSE_UP, this._cropEnd);\n\n if (options.responsive) {\r\n $window.off(EVENT_RESIZE, this._resize);\r\n }\r\n },\n\n resize: function () {\r\n var restore = this.options.restore;\n var $container = this.$container;\n var container = this.container;\n var canvasData;\n var cropBoxData;\n var ratio;\n\n // Check `container` is necessary for IE8\n if (this.isDisabled || !container) {\r\n return;\r\n }\n\n ratio = $container.width() / container.width;\n\n // Resize when width changed or height changed\n if (ratio !== 1 || $container.height() !== container.height) {\r\n if (restore) {\r\n canvasData = this.getCanvasData();\n cropBoxData = this.getCropBoxData();\r\n }\n\n this.render();\n\n if (restore) {\r\n this.setCanvasData($.each(canvasData, function (i, n) {\r\n canvasData[i] = n * ratio;\r\n }));\n this.setCropBoxData($.each(cropBoxData, function (i, n) {\r\n cropBoxData[i] = n * ratio;\r\n }));\r\n }\r\n }\r\n },\n\n dblclick: function () {\r\n if (this.isDisabled) {\r\n return;\r\n }\n\n if (this.$dragBox.hasClass(CLASS_CROP)) {\r\n this.setDragMode(ACTION_MOVE);\r\n } else {\r\n this.setDragMode(ACTION_CROP);\r\n }\r\n },\n\n wheel: function (event) {\r\n var e = event.originalEvent || event;\n var ratio = num(this.options.wheelZoomRatio) || 0.1;\n var delta = 1;\n\n if (this.isDisabled) {\r\n return;\r\n }\n\n event.preventDefault();\n\n // Limit wheel speed to prevent zoom too fast\n if (this.wheeling) {\r\n return;\r\n }\n\n this.wheeling = true;\n\n setTimeout($.proxy(function () {\r\n this.wheeling = false;\r\n }, this), 50);\n\n if (e.deltaY) {\r\n delta = e.deltaY > 0 ? 1 : -1;\r\n } else if (e.wheelDelta) {\r\n delta = -e.wheelDelta / 120;\r\n } else if (e.detail) {\r\n delta = e.detail > 0 ? 1 : -1;\r\n }\n\n this.zoom(-delta * ratio, event);\r\n },\n\n cropStart: function (event) {\r\n var options = this.options;\n var originalEvent = event.originalEvent;\n var touches = originalEvent && originalEvent.touches;\n var e = event;\n var touchesLength;\n var action;\n\n if (this.isDisabled) {\r\n return;\r\n }\n\n if (touches) {\r\n touchesLength = touches.length;\n\n if (touchesLength > 1) {\r\n if (options.zoomable && options.zoomOnTouch && touchesLength === 2) {\r\n e = touches[1];\n this.startX2 = e.pageX;\n this.startY2 = e.pageY;\n action = ACTION_ZOOM;\r\n } else {\r\n return;\r\n }\r\n }\n\n e = touches[0];\r\n }\n\n action = action || $(e.target).data(DATA_ACTION);\n\n if (REGEXP_ACTIONS.test(action)) {\r\n if (this.trigger(EVENT_CROP_START, {\r\n originalEvent: originalEvent,\n action: action\r\n }).isDefaultPrevented()) {\r\n return;\r\n }\n\n event.preventDefault();\n\n this.action = action;\n this.cropping = false;\n\n // IE8 has `event.pageX/Y`, but not `event.originalEvent.pageX/Y`\n // IE10 has `event.originalEvent.pageX/Y`, but not `event.pageX/Y`\n this.startX = e.pageX || originalEvent && originalEvent.pageX;\n this.startY = e.pageY || originalEvent && originalEvent.pageY;\n\n if (action === ACTION_CROP) {\r\n this.cropping = true;\n this.$dragBox.addClass(CLASS_MODAL);\r\n }\r\n }\r\n },\n\n cropMove: function (event) {\r\n var options = this.options;\n var originalEvent = event.originalEvent;\n var touches = originalEvent && originalEvent.touches;\n var e = event;\n var action = this.action;\n var touchesLength;\n\n if (this.isDisabled) {\r\n return;\r\n }\n\n if (touches) {\r\n touchesLength = touches.length;\n\n if (touchesLength > 1) {\r\n if (options.zoomable && options.zoomOnTouch && touchesLength === 2) {\r\n e = touches[1];\n this.endX2 = e.pageX;\n this.endY2 = e.pageY;\r\n } else {\r\n return;\r\n }\r\n }\n\n e = touches[0];\r\n }\n\n if (action) {\r\n if (this.trigger(EVENT_CROP_MOVE, {\r\n originalEvent: originalEvent,\n action: action\r\n }).isDefaultPrevented()) {\r\n return;\r\n }\n\n event.preventDefault();\n\n this.endX = e.pageX || originalEvent && originalEvent.pageX;\n this.endY = e.pageY || originalEvent && originalEvent.pageY;\n\n this.change(e.shiftKey, action === ACTION_ZOOM ? event : null);\r\n }\r\n },\n\n cropEnd: function (event) {\r\n var originalEvent = event.originalEvent;\n var action = this.action;\n\n if (this.isDisabled) {\r\n return;\r\n }\n\n if (action) {\r\n event.preventDefault();\n\n if (this.cropping) {\r\n this.cropping = false;\n this.$dragBox.toggleClass(CLASS_MODAL, this.isCropped && this.options.modal);\r\n }\n\n this.action = '';\n\n this.trigger(EVENT_CROP_END, {\r\n originalEvent: originalEvent,\n action: action\r\n });\r\n }\r\n },\n\n change: function (shiftKey, event) {\r\n var options = this.options;\n var aspectRatio = options.aspectRatio;\n var action = this.action;\n var container = this.container;\n var canvas = this.canvas;\n var cropBox = this.cropBox;\n var width = cropBox.width;\n var height = cropBox.height;\n var left = cropBox.left;\n var top = cropBox.top;\n var right = left + width;\n var bottom = top + height;\n var minLeft = 0;\n var minTop = 0;\n var maxWidth = container.width;\n var maxHeight = container.height;\n var renderable = true;\n var offset;\n var range;\n\n // Locking aspect ratio in \"free mode\" by holding shift key (#259)\n if (!aspectRatio && shiftKey) {\r\n aspectRatio = width && height ? width / height : 1;\r\n }\n\n if (this.isLimited) {\r\n minLeft = cropBox.minLeft;\n minTop = cropBox.minTop;\n maxWidth = minLeft + min(container.width, canvas.width, canvas.left + canvas.width);\n maxHeight = minTop + min(container.height, canvas.height, canvas.top + canvas.height);\r\n }\n\n range = {\r\n x: this.endX - this.startX,\n y: this.endY - this.startY\r\n };\n\n if (aspectRatio) {\r\n range.X = range.y * aspectRatio;\n range.Y = range.x / aspectRatio;\r\n }\n\n switch (action) {\n // Move crop box\n case ACTION_ALL:\n left += range.x;\n top += range.y;\n break;\n\n // Resize crop box\n case ACTION_EAST:\n if (range.x >= 0 && (right >= maxWidth || aspectRatio &&\n (top <= minTop || bottom >= maxHeight))) {\r\n\n renderable = false;\n break;\r\n }\n\n width += range.x;\n\n if (aspectRatio) {\r\n height = width / aspectRatio;\n top -= range.Y / 2;\r\n }\n\n if (width < 0) {\r\n action = ACTION_WEST;\n width = 0;\r\n }\n\n break;\n\n case ACTION_NORTH:\n if (range.y <= 0 && (top <= minTop || aspectRatio &&\n (left <= minLeft || right >= maxWidth))) {\r\n\n renderable = false;\n break;\r\n }\n\n height -= range.y;\n top += range.y;\n\n if (aspectRatio) {\r\n width = height * aspectRatio;\n left += range.X / 2;\r\n }\n\n if (height < 0) {\r\n action = ACTION_SOUTH;\n height = 0;\r\n }\n\n break;\n\n case ACTION_WEST:\n if (range.x <= 0 && (left <= minLeft || aspectRatio &&\n (top <= minTop || bottom >= maxHeight))) {\r\n\n renderable = false;\n break;\r\n }\n\n width -= range.x;\n left += range.x;\n\n if (aspectRatio) {\r\n height = width / aspectRatio;\n top += range.Y / 2;\r\n }\n\n if (width < 0) {\r\n action = ACTION_EAST;\n width = 0;\r\n }\n\n break;\n\n case ACTION_SOUTH:\n if (range.y >= 0 && (bottom >= maxHeight || aspectRatio &&\n (left <= minLeft || right >= maxWidth))) {\r\n\n renderable = false;\n break;\r\n }\n\n height += range.y;\n\n if (aspectRatio) {\r\n width = height * aspectRatio;\n left -= range.X / 2;\r\n }\n\n if (height < 0) {\r\n action = ACTION_NORTH;\n height = 0;\r\n }\n\n break;\n\n case ACTION_NORTH_EAST:\n if (aspectRatio) {\r\n if (range.y <= 0 && (top <= minTop || right >= maxWidth)) {\r\n renderable = false;\n break;\r\n }\n\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\r\n } else {\r\n if (range.x >= 0) {\r\n if (right < maxWidth) {\r\n width += range.x;\r\n } else if (range.y <= 0 && top <= minTop) {\r\n renderable = false;\r\n }\r\n } else {\r\n width += range.x;\r\n }\n\n if (range.y <= 0) {\r\n if (top > minTop) {\r\n height -= range.y;\n top += range.y;\r\n }\r\n } else {\r\n height -= range.y;\n top += range.y;\r\n }\r\n }\n\n if (width < 0 && height < 0) {\r\n action = ACTION_SOUTH_WEST;\n height = 0;\n width = 0;\r\n } else if (width < 0) {\r\n action = ACTION_NORTH_WEST;\n width = 0;\r\n } else if (height < 0) {\r\n action = ACTION_SOUTH_EAST;\n height = 0;\r\n }\n\n break;\n\n case ACTION_NORTH_WEST:\n if (aspectRatio) {\r\n if (range.y <= 0 && (top <= minTop || left <= minLeft)) {\r\n renderable = false;\n break;\r\n }\n\n height -= range.y;\n top += range.y;\n width = height * aspectRatio;\n left += range.X;\r\n } else {\r\n if (range.x <= 0) {\r\n if (left > minLeft) {\r\n width -= range.x;\n left += range.x;\r\n } else if (range.y <= 0 && top <= minTop) {\r\n renderable = false;\r\n }\r\n } else {\r\n width -= range.x;\n left += range.x;\r\n }\n\n if (range.y <= 0) {\r\n if (top > minTop) {\r\n height -= range.y;\n top += range.y;\r\n }\r\n } else {\r\n height -= range.y;\n top += range.y;\r\n }\r\n }\n\n if (width < 0 && height < 0) {\r\n action = ACTION_SOUTH_EAST;\n height = 0;\n width = 0;\r\n } else if (width < 0) {\r\n action = ACTION_NORTH_EAST;\n width = 0;\r\n } else if (height < 0) {\r\n action = ACTION_SOUTH_WEST;\n height = 0;\r\n }\n\n break;\n\n case ACTION_SOUTH_WEST:\n if (aspectRatio) {\r\n if (range.x <= 0 && (left <= minLeft || bottom >= maxHeight)) {\r\n renderable = false;\n break;\r\n }\n\n width -= range.x;\n left += range.x;\n height = width / aspectRatio;\r\n } else {\r\n if (range.x <= 0) {\r\n if (left > minLeft) {\r\n width -= range.x;\n left += range.x;\r\n } else if (range.y >= 0 && bottom >= maxHeight) {\r\n renderable = false;\r\n }\r\n } else {\r\n width -= range.x;\n left += range.x;\r\n }\n\n if (range.y >= 0) {\r\n if (bottom < maxHeight) {\r\n height += range.y;\r\n }\r\n } else {\r\n height += range.y;\r\n }\r\n }\n\n if (width < 0 && height < 0) {\r\n action = ACTION_NORTH_EAST;\n height = 0;\n width = 0;\r\n } else if (width < 0) {\r\n action = ACTION_SOUTH_EAST;\n width = 0;\r\n } else if (height < 0) {\r\n action = ACTION_NORTH_WEST;\n height = 0;\r\n }\n\n break;\n\n case ACTION_SOUTH_EAST:\n if (aspectRatio) {\r\n if (range.x >= 0 && (right >= maxWidth || bottom >= maxHeight)) {\r\n renderable = false;\n break;\r\n }\n\n width += range.x;\n height = width / aspectRatio;\r\n } else {\r\n if (range.x >= 0) {\r\n if (right < maxWidth) {\r\n width += range.x;\r\n } else if (range.y >= 0 && bottom >= maxHeight) {\r\n renderable = false;\r\n }\r\n } else {\r\n width += range.x;\r\n }\n\n if (range.y >= 0) {\r\n if (bottom < maxHeight) {\r\n height += range.y;\r\n }\r\n } else {\r\n height += range.y;\r\n }\r\n }\n\n if (width < 0 && height < 0) {\r\n action = ACTION_NORTH_WEST;\n height = 0;\n width = 0;\r\n } else if (width < 0) {\r\n action = ACTION_SOUTH_WEST;\n width = 0;\r\n } else if (height < 0) {\r\n action = ACTION_NORTH_EAST;\n height = 0;\r\n }\n\n break;\n\n // Move canvas\n case ACTION_MOVE:\n this.move(range.x, range.y);\n renderable = false;\n break;\n\n // Zoom canvas\n case ACTION_ZOOM:\n this.zoom((function (x1, y1, x2, y2) {\r\n var z1 = sqrt(x1 * x1 + y1 * y1);\n var z2 = sqrt(x2 * x2 + y2 * y2);\n\n return (z2 - z1) / z1;\r\n })(\n abs(this.startX - this.startX2),\n abs(this.startY - this.startY2),\n abs(this.endX - this.endX2),\n abs(this.endY - this.endY2)\n ), event);\n this.startX2 = this.endX2;\n this.startY2 = this.endY2;\n renderable = false;\n break;\n\n // Create crop box\n case ACTION_CROP:\n if (!range.x || !range.y) {\r\n renderable = false;\n break;\r\n }\n\n offset = this.$cropper.offset();\n left = this.startX - offset.left;\n top = this.startY - offset.top;\n width = cropBox.minWidth;\n height = cropBox.minHeight;\n\n if (range.x > 0) {\r\n action = range.y > 0 ? ACTION_SOUTH_EAST : ACTION_NORTH_EAST;\r\n } else if (range.x < 0) {\r\n left -= width;\n action = range.y > 0 ? ACTION_SOUTH_WEST : ACTION_NORTH_WEST;\r\n }\n\n if (range.y < 0) {\r\n top -= height;\r\n }\n\n // Show the crop box if is hidden\n if (!this.isCropped) {\r\n this.$cropBox.removeClass(CLASS_HIDDEN);\n this.isCropped = true;\n\n if (this.isLimited) {\r\n this.limitCropBox(true, true);\r\n }\r\n }\n\n break;\n\n // No default\n }\n\n if (renderable) {\r\n cropBox.width = width;\n cropBox.height = height;\n cropBox.left = left;\n cropBox.top = top;\n this.action = action;\n\n this.renderCropBox();\r\n }\n\n // Override\n this.startX = this.endX;\n this.startY = this.endY;\r\n },\n\n // Show the crop box manually\n crop: function () {\r\n if (!this.isBuilt || this.isDisabled) {\r\n return;\r\n }\n\n if (!this.isCropped) {\r\n this.isCropped = true;\n this.limitCropBox(true, true);\n\n if (this.options.modal) {\r\n this.$dragBox.addClass(CLASS_MODAL);\r\n }\n\n this.$cropBox.removeClass(CLASS_HIDDEN);\r\n }\n\n this.setCropBoxData(this.initialCropBox);\r\n },\n\n // Reset the image and crop box to their initial states\n reset: function () {\r\n if (!this.isBuilt || this.isDisabled) {\r\n return;\r\n }\n\n this.image = $.extend({}, this.initialImage);\n this.canvas = $.extend({}, this.initialCanvas);\n this.cropBox = $.extend({}, this.initialCropBox);\n\n this.renderCanvas();\n\n if (this.isCropped) {\r\n this.renderCropBox();\r\n }\r\n },\n\n // Clear the crop box\n clear: function () {\r\n if (!this.isCropped || this.isDisabled) {\r\n return;\r\n }\n\n $.extend(this.cropBox, {\r\n left: 0,\n top: 0,\n width: 0,\n height: 0\r\n });\n\n this.isCropped = false;\n this.renderCropBox();\n\n this.limitCanvas(true, true);\n\n // Render canvas after crop box rendered\n this.renderCanvas();\n\n this.$dragBox.removeClass(CLASS_MODAL);\n this.$cropBox.addClass(CLASS_HIDDEN);\r\n },\n\n /**\n * Replace the image's src and rebuild the cropper\n *\n * @param {String} url\n * @param {Boolean} onlyColorChanged (optional)\n */\n replace: function (url, onlyColorChanged) {\r\n if (!this.isDisabled && url) {\r\n if (this.isImg) {\r\n this.$element.attr('src', url);\r\n }\n\n if (onlyColorChanged) {\r\n this.url = url;\n this.$clone.attr('src', url);\n\n if (this.isBuilt) {\r\n this.$preview.find('img').add(this.$clone2).attr('src', url);\r\n }\r\n } else {\r\n if (this.isImg) {\r\n this.isReplaced = true;\r\n }\n\n // Clear previous data\n this.options.data = null;\n this.load(url);\r\n }\r\n }\r\n },\n\n // Enable (unfreeze) the cropper\n enable: function () {\r\n if (this.isBuilt) {\r\n this.isDisabled = false;\n this.$cropper.removeClass(CLASS_DISABLED);\r\n }\r\n },\n\n // Disable (freeze) the cropper\n disable: function () {\r\n if (this.isBuilt) {\r\n this.isDisabled = true;\n this.$cropper.addClass(CLASS_DISABLED);\r\n }\r\n },\n\n // Destroy the cropper and remove the instance from the image\n destroy: function () {\r\n var $this = this.$element;\n\n if (this.isLoaded) {\r\n if (this.isImg && this.isReplaced) {\r\n $this.attr('src', this.originalUrl);\r\n }\n\n this.unbuild();\n $this.removeClass(CLASS_HIDDEN);\r\n } else {\r\n if (this.isImg) {\r\n $this.off(EVENT_LOAD, this.start);\r\n } else if (this.$clone) {\r\n this.$clone.remove();\r\n }\r\n }\n\n $this.removeData(NAMESPACE);\r\n },\n\n /**\n * Move the canvas with relative offsets\n *\n * @param {Number} offsetX\n * @param {Number} offsetY (optional)\n */\n move: function (offsetX, offsetY) {\r\n var canvas = this.canvas;\n\n this.moveTo(\n isUndefined(offsetX) ? offsetX : canvas.left + num(offsetX),\n isUndefined(offsetY) ? offsetY : canvas.top + num(offsetY)\n );\r\n },\n\n /**\n * Move the canvas to an absolute point\n *\n * @param {Number} x\n * @param {Number} y (optional)\n */\n moveTo: function (x, y) {\r\n var canvas = this.canvas;\n var isChanged = false;\n\n // If \"y\" is not present, its default value is \"x\"\n if (isUndefined(y)) {\r\n y = x;\r\n }\n\n x = num(x);\n y = num(y);\n\n if (this.isBuilt && !this.isDisabled && this.options.movable) {\r\n if (isNumber(x)) {\r\n canvas.left = x;\n isChanged = true;\r\n }\n\n if (isNumber(y)) {\r\n canvas.top = y;\n isChanged = true;\r\n }\n\n if (isChanged) {\r\n this.renderCanvas(true);\r\n }\r\n }\r\n },\n\n /**\n * Zoom the canvas with a relative ratio\n *\n * @param {Number} ratio\n * @param {jQuery Event} _event (private)\n */\n zoom: function (ratio, _event) {\r\n var canvas = this.canvas;\n\n ratio = num(ratio);\n\n if (ratio < 0) {\r\n ratio = 1 / (1 - ratio);\r\n } else {\r\n ratio = 1 + ratio;\r\n }\n\n this.zoomTo(canvas.width * ratio / canvas.naturalWidth, _event);\r\n },\n\n /**\n * Zoom the canvas to an absolute ratio\n *\n * @param {Number} ratio\n * @param {jQuery Event} _event (private)\n */\n zoomTo: function (ratio, _event) {\r\n var options = this.options;\n var canvas = this.canvas;\n var width = canvas.width;\n var height = canvas.height;\n var naturalWidth = canvas.naturalWidth;\n var naturalHeight = canvas.naturalHeight;\n var originalEvent;\n var newWidth;\n var newHeight;\n var offset;\n var center;\n\n ratio = num(ratio);\n\n if (ratio >= 0 && this.isBuilt && !this.isDisabled && options.zoomable) {\r\n newWidth = naturalWidth * ratio;\n newHeight = naturalHeight * ratio;\n\n if (_event) {\r\n originalEvent = _event.originalEvent;\r\n }\n\n if (this.trigger(EVENT_ZOOM, {\r\n originalEvent: originalEvent,\n oldRatio: width / naturalWidth,\n ratio: newWidth / naturalWidth\r\n }).isDefaultPrevented()) {\r\n return;\r\n }\n\n if (originalEvent) {\r\n offset = this.$cropper.offset();\n center = originalEvent.touches ? getTouchesCenter(originalEvent.touches) : {\r\n pageX: _event.pageX || originalEvent.pageX || 0,\n pageY: _event.pageY || originalEvent.pageY || 0\r\n };\n\n // Zoom from the triggering point of the event\n canvas.left -= (newWidth - width) * (\n ((center.pageX - offset.left) - canvas.left) / width\n );\n canvas.top -= (newHeight - height) * (\n ((center.pageY - offset.top) - canvas.top) / height\n );\r\n } else {\n\n // Zoom from the center of the canvas\n canvas.left -= (newWidth - width) / 2;\n canvas.top -= (newHeight - height) / 2;\r\n }\n\n canvas.width = newWidth;\n canvas.height = newHeight;\n this.renderCanvas(true);\r\n }\r\n },\n\n /**\n * Rotate the canvas with a relative degree\n *\n * @param {Number} degree\n */\n rotate: function (degree) {\r\n this.rotateTo((this.image.rotate || 0) + num(degree));\r\n },\n\n /**\n * Rotate the canvas to an absolute degree\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function#rotate()\n *\n * @param {Number} degree\n */\n rotateTo: function (degree) {\r\n degree = num(degree);\n\n if (isNumber(degree) && this.isBuilt && !this.isDisabled && this.options.rotatable) {\r\n this.image.rotate = degree % 360;\n this.isRotated = true;\n this.renderCanvas(true);\r\n }\r\n },\n\n /**\n * Scale the image\n * https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function#scale()\n *\n * @param {Number} scaleX\n * @param {Number} scaleY (optional)\n */\n scale: function (scaleX, scaleY) {\r\n var image = this.image;\n var isChanged = false;\n\n // If \"scaleY\" is not present, its default value is \"scaleX\"\n if (isUndefined(scaleY)) {\r\n scaleY = scaleX;\r\n }\n\n scaleX = num(scaleX);\n scaleY = num(scaleY);\n\n if (this.isBuilt && !this.isDisabled && this.options.scalable) {\r\n if (isNumber(scaleX)) {\r\n image.scaleX = scaleX;\n isChanged = true;\r\n }\n\n if (isNumber(scaleY)) {\r\n image.scaleY = scaleY;\n isChanged = true;\r\n }\n\n if (isChanged) {\r\n this.renderImage(true);\r\n }\r\n }\r\n },\n\n /**\n * Scale the abscissa of the image\n *\n * @param {Number} scaleX\n */\n scaleX: function (scaleX) {\r\n var scaleY = this.image.scaleY;\n\n this.scale(scaleX, isNumber(scaleY) ? scaleY : 1);\r\n },\n\n /**\n * Scale the ordinate of the image\n *\n * @param {Number} scaleY\n */\n scaleY: function (scaleY) {\r\n var scaleX = this.image.scaleX;\n\n this.scale(isNumber(scaleX) ? scaleX : 1, scaleY);\r\n },\n\n /**\n * Get the cropped area position and size data (base on the original image)\n *\n * @param {Boolean} isRounded (optional)\n * @return {Object} data\n */\n getData: function (isRounded) {\r\n var options = this.options;\n var image = this.image;\n var canvas = this.canvas;\n var cropBox = this.cropBox;\n var ratio;\n var data;\n\n if (this.isBuilt && this.isCropped) {\r\n data = {\r\n x: cropBox.left - canvas.left,\n y: cropBox.top - canvas.top,\n width: cropBox.width,\n height: cropBox.height\r\n };\n\n ratio = image.width / image.naturalWidth;\n\n $.each(data, function (i, n) {\r\n n = n / ratio;\n data[i] = isRounded ? round(n) : n;\r\n });\r\n\n } else {\r\n data = {\r\n x: 0,\n y: 0,\n width: 0,\n height: 0\r\n };\r\n }\n\n if (options.rotatable) {\r\n data.rotate = image.rotate || 0;\r\n }\n\n if (options.scalable) {\r\n data.scaleX = image.scaleX || 1;\n data.scaleY = image.scaleY || 1;\r\n }\n\n return data;\r\n },\n\n /**\n * Set the cropped area position and size with new data\n *\n * @param {Object} data\n */\n setData: function (data) {\r\n var options = this.options;\n var image = this.image;\n var canvas = this.canvas;\n var cropBoxData = {};\n var isRotated;\n var isScaled;\n var ratio;\n\n if ($.isFunction(data)) {\r\n data = data.call(this.element);\r\n }\n\n if (this.isBuilt && !this.isDisabled && $.isPlainObject(data)) {\r\n if (options.rotatable) {\r\n if (isNumber(data.rotate) && data.rotate !== image.rotate) {\r\n image.rotate = data.rotate;\n this.isRotated = isRotated = true;\r\n }\r\n }\n\n if (options.scalable) {\r\n if (isNumber(data.scaleX) && data.scaleX !== image.scaleX) {\r\n image.scaleX = data.scaleX;\n isScaled = true;\r\n }\n\n if (isNumber(data.scaleY) && data.scaleY !== image.scaleY) {\r\n image.scaleY = data.scaleY;\n isScaled = true;\r\n }\r\n }\n\n if (isRotated) {\r\n this.renderCanvas();\r\n } else if (isScaled) {\r\n this.renderImage();\r\n }\n\n ratio = image.width / image.naturalWidth;\n\n if (isNumber(data.x)) {\r\n cropBoxData.left = data.x * ratio + canvas.left;\r\n }\n\n if (isNumber(data.y)) {\r\n cropBoxData.top = data.y * ratio + canvas.top;\r\n }\n\n if (isNumber(data.width)) {\r\n cropBoxData.width = data.width * ratio;\r\n }\n\n if (isNumber(data.height)) {\r\n cropBoxData.height = data.height * ratio;\r\n }\n\n this.setCropBoxData(cropBoxData);\r\n }\r\n },\n\n /**\n * Get the container size data\n *\n * @return {Object} data\n */\n getContainerData: function () {\r\n return this.isBuilt ? this.container : {};\r\n },\n\n /**\n * Get the image position and size data\n *\n * @return {Object} data\n */\n getImageData: function () {\r\n return this.isLoaded ? this.image : {};\r\n },\n\n /**\n * Get the canvas position and size data\n *\n * @return {Object} data\n */\n getCanvasData: function () {\r\n var canvas = this.canvas;\n var data = {};\n\n if (this.isBuilt) {\r\n $.each([\n 'left',\n 'top',\n 'width',\n 'height',\n 'naturalWidth',\n 'naturalHeight'\n ], function (i, n) {\r\n data[n] = canvas[n];\r\n });\r\n }\n\n return data;\r\n },\n\n /**\n * Set the canvas position and size with new data\n *\n * @param {Object} data\n */\n setCanvasData: function (data) {\r\n var canvas = this.canvas;\n var aspectRatio = canvas.aspectRatio;\n\n if ($.isFunction(data)) {\r\n data = data.call(this.$element);\r\n }\n\n if (this.isBuilt && !this.isDisabled && $.isPlainObject(data)) {\r\n if (isNumber(data.left)) {\r\n canvas.left = data.left;\r\n }\n\n if (isNumber(data.top)) {\r\n canvas.top = data.top;\r\n }\n\n if (isNumber(data.width)) {\r\n canvas.width = data.width;\n canvas.height = data.width / aspectRatio;\r\n } else if (isNumber(data.height)) {\r\n canvas.height = data.height;\n canvas.width = data.height * aspectRatio;\r\n }\n\n this.renderCanvas(true);\r\n }\r\n },\n\n /**\n * Get the crop box position and size data\n *\n * @return {Object} data\n */\n getCropBoxData: function () {\r\n var cropBox = this.cropBox;\n var data;\n\n if (this.isBuilt && this.isCropped) {\r\n data = {\r\n left: cropBox.left,\n top: cropBox.top,\n width: cropBox.width,\n height: cropBox.height\r\n };\r\n }\n\n return data || {};\r\n },\n\n /**\n * Set the crop box position and size with new data\n *\n * @param {Object} data\n */\n setCropBoxData: function (data) {\r\n var cropBox = this.cropBox;\n var aspectRatio = this.options.aspectRatio;\n var isWidthChanged;\n var isHeightChanged;\n\n if ($.isFunction(data)) {\r\n data = data.call(this.$element);\r\n }\n\n if (this.isBuilt && this.isCropped && !this.isDisabled && $.isPlainObject(data)) {\r\n\n if (isNumber(data.left)) {\r\n cropBox.left = data.left;\r\n }\n\n if (isNumber(data.top)) {\r\n cropBox.top = data.top;\r\n }\n\n if (isNumber(data.width)) {\r\n isWidthChanged = true;\n cropBox.width = data.width;\r\n }\n\n if (isNumber(data.height)) {\r\n isHeightChanged = true;\n cropBox.height = data.height;\r\n }\n\n if (aspectRatio) {\r\n if (isWidthChanged) {\r\n cropBox.height = cropBox.width / aspectRatio;\r\n } else if (isHeightChanged) {\r\n cropBox.width = cropBox.height * aspectRatio;\r\n }\r\n }\n\n this.renderCropBox();\r\n }\r\n },\n\n /**\n * Get a canvas drawn the cropped image\n *\n * @param {Object} options (optional)\n * @return {HTMLCanvasElement} canvas\n */\n getCroppedCanvas: function (options) {\r\n var originalWidth;\n var originalHeight;\n var canvasWidth;\n var canvasHeight;\n var scaledWidth;\n var scaledHeight;\n var scaledRatio;\n var aspectRatio;\n var canvas;\n var context;\n var data;\n\n if (!this.isBuilt || !SUPPORT_CANVAS) {\r\n return;\r\n }\n\n if (!this.isCropped) {\r\n return getSourceCanvas(this.$clone[0], this.image);\r\n }\n\n if (!$.isPlainObject(options)) {\r\n options = {};\r\n }\n\n data = this.getData();\n originalWidth = data.width;\n originalHeight = data.height;\n aspectRatio = originalWidth / originalHeight;\n\n if ($.isPlainObject(options)) {\r\n scaledWidth = options.width;\n scaledHeight = options.height;\n\n if (scaledWidth) {\r\n scaledHeight = scaledWidth / aspectRatio;\n scaledRatio = scaledWidth / originalWidth;\r\n } else if (scaledHeight) {\r\n scaledWidth = scaledHeight * aspectRatio;\n scaledRatio = scaledHeight / originalHeight;\r\n }\r\n }\n\n // The canvas element will use `Math.floor` on a float number, so floor first\n canvasWidth = floor(scaledWidth || originalWidth);\n canvasHeight = floor(scaledHeight || originalHeight);\n\n canvas = $('')[0];\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n context = canvas.getContext('2d');\n\n if (options.fillColor) {\r\n context.fillStyle = options.fillColor;\n context.fillRect(0, 0, canvasWidth, canvasHeight);\r\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage\n context.drawImage.apply(context, (function () {\r\n var source = getSourceCanvas(this.$clone[0], this.image);\n var sourceWidth = source.width;\n var sourceHeight = source.height;\n var canvas = this.canvas;\n var params = [source];\n\n // Source canvas\n var srcX = data.x + canvas.naturalWidth * (abs(data.scaleX || 1) - 1) / 2;\n var srcY = data.y + canvas.naturalHeight * (abs(data.scaleY || 1) - 1) / 2;\n var srcWidth;\n var srcHeight;\n\n // Destination canvas\n var dstX;\n var dstY;\n var dstWidth;\n var dstHeight;\n\n if (srcX <= -originalWidth || srcX > sourceWidth) {\r\n srcX = srcWidth = dstX = dstWidth = 0;\r\n } else if (srcX <= 0) {\r\n dstX = -srcX;\n srcX = 0;\n srcWidth = dstWidth = min(sourceWidth, originalWidth + srcX);\r\n } else if (srcX <= sourceWidth) {\r\n dstX = 0;\n srcWidth = dstWidth = min(originalWidth, sourceWidth - srcX);\r\n }\n\n if (srcWidth <= 0 || srcY <= -originalHeight || srcY > sourceHeight) {\r\n srcY = srcHeight = dstY = dstHeight = 0;\r\n } else if (srcY <= 0) {\r\n dstY = -srcY;\n srcY = 0;\n srcHeight = dstHeight = min(sourceHeight, originalHeight + srcY);\r\n } else if (srcY <= sourceHeight) {\r\n dstY = 0;\n srcHeight = dstHeight = min(originalHeight, sourceHeight - srcY);\r\n }\n\n // All the numerical parameters should be integer for `drawImage` (#476)\n params.push(floor(srcX), floor(srcY), floor(srcWidth), floor(srcHeight));\n\n // Scale destination sizes\n if (scaledRatio) {\r\n dstX *= scaledRatio;\n dstY *= scaledRatio;\n dstWidth *= scaledRatio;\n dstHeight *= scaledRatio;\r\n }\n\n // Avoid \"IndexSizeError\" in IE and Firefox\n if (dstWidth > 0 && dstHeight > 0) {\r\n params.push(floor(dstX), floor(dstY), floor(dstWidth), floor(dstHeight));\r\n }\n\n return params;\r\n }).call(this));\n\n return canvas;\r\n },\n\n /**\n * Change the aspect ratio of the crop box\n *\n * @param {Number} aspectRatio\n */\n setAspectRatio: function (aspectRatio) {\r\n var options = this.options;\n\n if (!this.isDisabled && !isUndefined(aspectRatio)) {\n\n // 0 -> NaN\n options.aspectRatio = max(0, aspectRatio) || NaN;\n\n if (this.isBuilt) {\r\n this.initCropBox();\n\n if (this.isCropped) {\r\n this.renderCropBox();\r\n }\r\n }\r\n }\r\n },\n\n /**\n * Change the drag mode\n *\n * @param {String} mode (optional)\n */\n setDragMode: function (mode) {\r\n var options = this.options;\n var croppable;\n var movable;\n\n if (this.isLoaded && !this.isDisabled) {\r\n croppable = mode === ACTION_CROP;\n movable = options.movable && mode === ACTION_MOVE;\n mode = (croppable || movable) ? mode : ACTION_NONE;\n\n this.$dragBox.\n data(DATA_ACTION, mode).\n toggleClass(CLASS_CROP, croppable).\n toggleClass(CLASS_MOVE, movable);\n\n if (!options.cropBoxMovable) {\n\n // Sync drag mode to crop box when it is not movable(#300)\n this.$face.\n data(DATA_ACTION, mode).\n toggleClass(CLASS_CROP, croppable).\n toggleClass(CLASS_MOVE, movable);\r\n }\r\n }\r\n }\r\n };\n\n Cropper.DEFAULTS = {\n\n // Define the view mode of the cropper\n viewMode: 0, // 0, 1, 2, 3\n\n // Define the dragging mode of the cropper\n dragMode: 'crop', // 'crop', 'move' or 'none'\n\n // Define the aspect ratio of the crop box\n aspectRatio: NaN,\n\n // An object with the previous cropping result data\n data: null,\n\n // A jQuery selector for adding extra containers to preview\n preview: '',\n\n // Re-render the cropper when resize the window\n responsive: true,\n\n // Restore the cropped area after resize the window\n restore: true,\n\n // Check if the current image is a cross-origin image\n checkCrossOrigin: true,\n\n // Check the current image's Exif Orientation information\n checkOrientation: true,\n\n // Show the black modal\n modal: true,\n\n // Show the dashed lines for guiding\n guides: true,\n\n // Show the center indicator for guiding\n center: true,\n\n // Show the white modal to highlight the crop box\n highlight: true,\n\n // Show the grid background\n background: true,\n\n // Enable to crop the image automatically when initialize\n autoCrop: true,\n\n // Define the percentage of automatic cropping area when initializes\n autoCropArea: 0.8,\n\n // Enable to move the image\n movable: true,\n\n // Enable to rotate the image\n rotatable: true,\n\n // Enable to scale the image\n scalable: true,\n\n // Enable to zoom the image\n zoomable: true,\n\n // Enable to zoom the image by dragging touch\n zoomOnTouch: true,\n\n // Enable to zoom the image by wheeling mouse\n zoomOnWheel: true,\n\n // Define zoom ratio when zoom the image by wheeling mouse\n wheelZoomRatio: 0.1,\n\n // Enable to move the crop box\n cropBoxMovable: true,\n\n // Enable to resize the crop box\n cropBoxResizable: true,\n\n // Toggle drag mode between \"crop\" and \"move\" when click twice on the cropper\n toggleDragModeOnDblclick: true,\n\n // Size limitation\n minCanvasWidth: 0,\n minCanvasHeight: 0,\n minCropBoxWidth: 0,\n minCropBoxHeight: 0,\n minContainerWidth: 200,\n minContainerHeight: 100,\n\n // Shortcuts of events\n build: null,\n built: null,\n cropstart: null,\n cropmove: null,\n cropend: null,\n crop: null,\n zoom: null\r\n };\n\n Cropper.setDefaults = function (options) {\r\n $.extend(Cropper.DEFAULTS, options);\r\n };\n\n Cropper.TEMPLATE = (\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
' +\n '
'\n );\n\n // Save the other cropper\n Cropper.other = $.fn.cropper;\n\n // Register as jQuery plugin\n $.fn.cropper = function (option) {\r\n var args = toArray(arguments, 1);\n var result;\n\n this.each(function () {\r\n var $this = $(this);\n var data = $this.data(NAMESPACE);\n var options;\n var fn;\n\n if (!data) {\r\n if (/destroy/.test(option)) {\r\n return;\r\n }\n\n options = $.extend({}, $this.data(), $.isPlainObject(option) && option);\n $this.data(NAMESPACE, (data = new Cropper(this, options)));\r\n }\n\n if (typeof option === 'string' && $.isFunction(fn = data[option])) {\r\n result = fn.apply(data, args);\r\n }\r\n });\n\n return isUndefined(result) ? this : result;\r\n };\n\n $.fn.cropper.Constructor = Cropper;\n $.fn.cropper.setDefaults = Cropper.setDefaults;\n\n // No conflict\n $.fn.cropper.noConflict = function () {\r\n $.fn.cropper = Cropper.other;\n return this;\r\n };\r\n\n});\n","/*!\r\n * crosstab JavaScript Library v0.2.12\r\n * https://github.com/tejacques/crosstab\r\n *\r\n * License: Apache 2.0 https://github.com/tejacques/crosstab/blob/master/LICENSE\r\n *\r\n * Copyright 2015 Tom Jacques\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n *\r\n */\r\n/* global define */\r\n/* global global */\r\n; (function (window, define) {\r\n define('crosstab', function (require, exports, module) {\r\n 'use strict';\r\n\r\n // --- Handle Support ---\r\n // See: http://detectmobilebrowsers.com/about\r\n var useragent = (window.navigator && (window.navigator.userAgent || window.navigator.vendor)) || window.opera || \"none\";\r\n var isMobile = (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(useragent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(useragent.substr(0, 4)));\r\n\r\n var localStorage;\r\n try {\r\n localStorage = window.localStorage;\r\n localStorage = window['ie8-eventlistener/storage'] || window.localStorage;\r\n } catch (e) {\r\n // New versions of Firefox throw a Security exception\r\n // if cookies are disabled. See\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1028153\r\n }\r\n\r\n // When Safari on OS X or iOS is in private browsing mode,\r\n // calling localStorage.setItem throws an exception.\r\n //\r\n // \"QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made\r\n // to add something to storage that exceeded the quota.\"\r\n var setItemAllowed = true;\r\n try {\r\n localStorage.setItem('__crosstab', '');\r\n localStorage.removeItem('__crosstab');\r\n } catch (e) {\r\n setItemAllowed = false;\r\n }\r\n\r\n // Other reasons\r\n var frozenTabEnvironment = false;\r\n\r\n function notSupported() {\r\n if (crosstab.supported) return;\r\n var errorMsg = 'crosstab not supported';\r\n var reasons = [];\r\n if (!localStorage) {\r\n reasons.push('localStorage not availabe');\r\n }\r\n if (!window.addEventListener) {\r\n reasons.push('addEventListener not available');\r\n }\r\n if (isMobile) {\r\n reasons.push('mobile browser');\r\n }\r\n if (frozenTabEnvironment) {\r\n reasons.push('frozen tab environment detected');\r\n }\r\n if (!setItemAllowed) {\r\n reasons.push('localStorage.setItem not allowed');\r\n }\r\n\r\n if (reasons.length > 0) {\r\n errorMsg += ': ' + reasons.join(', ');\r\n }\r\n\r\n throw new Error(errorMsg);\r\n }\r\n\r\n // --- Utility ---\r\n var util = {\r\n keys: {\r\n MESSAGE_KEY: 'crosstab.MESSAGE_KEY',\r\n TABS_KEY: 'crosstab.TABS_KEY',\r\n MASTER_TAB: 'MASTER_TAB',\r\n SUPPORTED_KEY: 'crosstab.SUPPORTED',\r\n FROZEN_TAB_ENVIRONMENT: 'crosstab.FROZEN_TAB_ENVIRONMENT'\r\n }\r\n };\r\n\r\n util.isArray = Array.isArray || function (arr) {\r\n return arr instanceof Array;\r\n };\r\n\r\n util.isNumber = function (num) {\r\n return typeof num === 'number';\r\n };\r\n\r\n util.isFunction = function (fn) {\r\n return typeof fn === 'function';\r\n };\r\n\r\n util.forEachObj = function (obj, fn) {\r\n for (var key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n fn.call(obj, obj[key], key, obj);\r\n }\r\n }\r\n };\r\n\r\n util.forEachArr = function (arr, fn) {\r\n var len = arr.length;\r\n for (var i = 0; i < len; i++) {\r\n fn.call(arr, arr[i], i, arr);\r\n }\r\n };\r\n\r\n util.forEach = function (thing, fn) {\r\n if (util.isArray(thing)) {\r\n util.forEachArr(thing, fn);\r\n } else {\r\n util.forEachObj(thing, fn);\r\n }\r\n };\r\n\r\n util.map = function (thing, fn) {\r\n var res = [];\r\n util.forEach(thing, function (item, key, obj) {\r\n res.push(fn(item, key, obj));\r\n });\r\n\r\n return res;\r\n };\r\n\r\n util.filter = function (thing, fn) {\r\n var isArr = util.isArray(thing);\r\n var res = isArr ? [] : {};\r\n\r\n if (isArr) {\r\n util.forEachArr(thing, function (value, key) {\r\n if (fn(value, key)) {\r\n res.push(value);\r\n }\r\n });\r\n } else {\r\n util.forEachObj(thing, function (value, key) {\r\n if (fn(value, key)) {\r\n res[key] = value;\r\n }\r\n });\r\n }\r\n\r\n return res;\r\n };\r\n\r\n util.reduce = function (thing, fn, accumulator) {\r\n var first = arguments.length < 3;\r\n\r\n util.forEach(thing, function (item, key, obj) {\r\n if (first) {\r\n accumulator = item;\r\n first = false;\r\n } else {\r\n accumulator = fn(accumulator, item, key, obj);\r\n }\r\n });\r\n\r\n return accumulator;\r\n };\r\n\r\n util.now = function () {\r\n return (new Date()).getTime();\r\n };\r\n\r\n util.tabs = getStoredTabs();\r\n\r\n util.eventTypes = {\r\n becomeMaster: 'becomeMaster',\r\n demoteFromMaster: 'demotedFromMaster',\r\n tabUpdated: 'tabUpdated',\r\n tabClosed: 'tabClosed',\r\n tabPromoted: 'tabPromoted'\r\n };\r\n\r\n util.storageEventKeys = util.reduce(util.keys, function (keys, val) {\r\n keys[val] = 1;\r\n return keys;\r\n }, {});\r\n\r\n // --- Events ---\r\n // node.js style events, with the main difference being able\r\n // to add/remove events by key.\r\n util.createEventHandler = function () {\r\n var events = {};\r\n var subscribeKeyToListener = {};\r\n\r\n var findHandlerByKey = function (event, key) {\r\n var handler;\r\n if (subscribeKeyToListener[event]) {\r\n handler = subscribeKeyToListener[event][key];\r\n }\r\n return handler;\r\n };\r\n\r\n var findHandlerIndex = function (event, listener) {\r\n var listenerIndex = -1;\r\n var eventList = events[event];\r\n if (eventList && listener) {\r\n var len = eventList.length || 0;\r\n for (var i = 0; i < len; i++) {\r\n if (eventList[i] === listener) {\r\n listenerIndex = i;\r\n break;\r\n }\r\n }\r\n }\r\n return listenerIndex;\r\n };\r\n\r\n var addListener = function (event, listener, key) {\r\n var handlers = listeners(event);\r\n\r\n var storedHandler = findHandlerByKey(event, key);\r\n var listenerIndex;\r\n\r\n if (storedHandler === undefined) {\r\n listenerIndex = handlers.length;\r\n handlers[listenerIndex] = listener;\r\n\r\n if (!subscribeKeyToListener[event]) {\r\n (subscribeKeyToListener[event] = {});\r\n }\r\n\r\n if (key) {\r\n subscribeKeyToListener[event][key] = listener;\r\n }\r\n } else {\r\n listenerIndex = findHandlerIndex(event, storedHandler);\r\n handlers[listenerIndex] = listener;\r\n }\r\n\r\n return key || listener;\r\n };\r\n\r\n var removeListener = function (event, key) {\r\n var handler = util.isFunction(key)\r\n ? key\r\n : findHandlerByKey(event, key);\r\n\r\n var listenerIndex = findHandlerIndex(event, handler);\r\n if (listenerIndex === -1) return false;\r\n\r\n if (events[event] && events[event][listenerIndex]) {\r\n events[event].splice(listenerIndex, 1);\r\n delete subscribeKeyToListener[event][key];\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n var removeAllListeners = function (event) {\r\n var successful = false;\r\n if (event) {\r\n if (events[event]) {\r\n delete events[event];\r\n successful = true;\r\n }\r\n if (subscribeKeyToListener[event]) {\r\n delete subscribeKeyToListener[event];\r\n successful = successful && true;\r\n }\r\n } else {\r\n events = {};\r\n subscribeKeyToListener = {};\r\n successful = true;\r\n }\r\n return successful;\r\n };\r\n\r\n var emit = function (event) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n var handlers = listeners(event);\r\n\r\n util.forEach(handlers, function (listener) {\r\n if (util.isFunction(listener)) {\r\n listener.apply(this, args);\r\n }\r\n });\r\n };\r\n\r\n var once = function (event, listener, key) {\r\n // Generate a unique id for this listener\r\n while (!key || (findHandlerByKey(event, key) !== undefined)) {\r\n key = util.generateId();\r\n }\r\n\r\n addListener(event, function () {\r\n removeListener(event, key);\r\n var args = Array.prototype.slice.call(arguments);\r\n listener.apply(this, args);\r\n }, key);\r\n\r\n return key;\r\n };\r\n\r\n var listeners = function (event) {\r\n var handlers = events[event] = events[event] || [];\r\n return handlers;\r\n };\r\n\r\n var destructor = function () {\r\n clearInterval(crosstab.keepAliveInterval)\r\n removeAllListeners();\r\n };\r\n\r\n return {\r\n addListener: addListener,\r\n destructor: destructor,\r\n on: addListener,\r\n off: function (event, key) {\r\n var argsLen = arguments.length;\r\n if (!argsLen) {\r\n return removeAllListeners();\r\n } else if (argsLen === 1) {\r\n return removeAllListeners(event);\r\n } else {\r\n return removeListener(event, key);\r\n }\r\n },\r\n once: once,\r\n emit: emit,\r\n listeners: listeners,\r\n removeListener: removeListener,\r\n removeAllListeners: removeAllListeners\r\n };\r\n };\r\n\r\n // --- Setup Events ---\r\n var eventHandler = util.createEventHandler();\r\n\r\n // wrap eventHandler so that setting it will not blow up\r\n // any of the internal workings\r\n util.events = {\r\n addListener: eventHandler.addListener,\r\n on: eventHandler.on,\r\n off: eventHandler.off,\r\n once: eventHandler.once,\r\n emit: eventHandler.emit,\r\n listeners: eventHandler.listeners,\r\n removeListener: eventHandler.removeListener,\r\n removeAllListeners: eventHandler.removeAllListeners,\r\n destructor: eventHandler.destructor\r\n };\r\n\r\n var lastNewValue;\r\n var lastOldValue;\r\n function onStorageEvent(event) {\r\n // Only handle crosstab events\r\n if (!event || !(event.key in util.storageEventKeys)) {\r\n return;\r\n }\r\n\r\n var eventValue;\r\n try {\r\n eventValue = event.newValue ? JSON.parse(event.newValue) : {};\r\n } catch (e) {\r\n eventValue = {};\r\n }\r\n if (!eventValue || !eventValue.id || eventValue.id === crosstab.id) {\r\n // This is to force IE to behave properly\r\n return;\r\n }\r\n if (event.newValue === lastNewValue && event.oldValue === lastOldValue) {\r\n // Fix bug in IE11 where StorageEvents in iframes are sent twice.\r\n return;\r\n }\r\n lastNewValue = event.newValue;\r\n lastOldValue = event.oldValue;\r\n if (event.key === util.keys.MESSAGE_KEY) {\r\n var message = eventValue.data;\r\n // only handle if this message was meant for this tab.\r\n if (!message.destination || message.destination === crosstab.id) {\r\n eventHandler.emit(message.event, message);\r\n }\r\n } else if (event.key === util.keys.FROZEN_TAB_ENVIRONMENT) {\r\n frozenTabEnvironment = eventValue.data;\r\n crosstab.supported = crosstab.supported && !eventValue.data;\r\n } else if (event.key === util.keys.SUPPORTED_KEY) {\r\n crosstab.supported = crosstab.supported && eventValue.data;\r\n }\r\n }\r\n\r\n function setLocalStorageItem(key, data) {\r\n var storageItem = {\r\n id: crosstab.id,\r\n data: data,\r\n timestamp: util.now()\r\n };\r\n\r\n // TODO: Добавить обработку исключения на тот случай, если LocalStorage переполнен\r\n try {\r\n localStorage.setItem(key, JSON.stringify(storageItem));\r\n } catch (ex) {\r\n console.error(ex);\r\n }\r\n }\r\n\r\n function getLocalStorageItem(key) {\r\n var item = getLocalStorageRaw(key);\r\n return item.data;\r\n }\r\n\r\n function getLocalStorageRaw(key) {\r\n var json = localStorage ? localStorage.getItem(key) : null;\r\n var item = json ? JSON.parse(json) : {};\r\n return item;\r\n }\r\n\r\n function unload() {\r\n crosstab.stopKeepalive = true;\r\n var numTabs = 0;\r\n util.forEach(util.tabs, function (tab, key) {\r\n if (key !== util.keys.MASTER_TAB) {\r\n numTabs++;\r\n }\r\n });\r\n\r\n if (numTabs === 1) {\r\n util.tabs = {};\r\n setStoredTabs();\r\n } else {\r\n broadcast(util.eventTypes.tabClosed, crosstab.id);\r\n }\r\n\r\n }\r\n\r\n function restoreLoop() {\r\n crosstab.stopKeepalive = false;\r\n keepaliveLoop();\r\n }\r\n\r\n function swapUnloadEvents() {\r\n // `beforeunload` replaced by `unload` (IE11 will be smart now)\r\n window.removeEventListener('beforeunload', unload, false);\r\n window.addEventListener('unload', unload, false);\r\n restoreLoop();\r\n }\r\n\r\n function getMaster() {\r\n return util.tabs[util.keys.MASTER_TAB];\r\n }\r\n\r\n function setMaster(newMaster) {\r\n util.tabs[util.keys.MASTER_TAB] = newMaster;\r\n }\r\n\r\n function deleteMaster() {\r\n delete util.tabs[util.keys.MASTER_TAB];\r\n }\r\n\r\n function getMasterId() {\r\n var master = getMaster();\r\n\r\n return master ? master.id : 0;\r\n }\r\n\r\n function isMaster() {\r\n return getMasterId() === crosstab.id;\r\n }\r\n\r\n function masterTabElection() {\r\n var maxId = null;\r\n util.forEach(util.tabs, function (tab) {\r\n if (!maxId || tab.id < maxId) {\r\n maxId = tab.id;\r\n }\r\n });\r\n\r\n // only broadcast the promotion if I am the new master\r\n if (maxId === crosstab.id) {\r\n broadcast(util.eventTypes.tabPromoted, crosstab.id);\r\n } else {\r\n // this is done so that in the case where multiple tabs are being\r\n // started at the same time, and there is no current saved tab\r\n // information, we will still have a value set for the master tab\r\n setMaster({\r\n id: maxId,\r\n lastUpdated: util.now()\r\n });\r\n }\r\n }\r\n\r\n // Handle other tabs closing by updating internal tab model, and promoting\r\n // self if we are the lowest tab id\r\n eventHandler.addListener(util.eventTypes.tabClosed, function (message) {\r\n var id = message.data;\r\n if (id in util.tabs) {\r\n delete util.tabs[id];\r\n }\r\n\r\n var master = getMaster();\r\n if (!master || master.id === id) {\r\n // If the master was the closed tab, delete it and the highest\r\n // tab ID becomes the new master, which will save the tabs\r\n if (master) {\r\n deleteMaster();\r\n }\r\n masterTabElection();\r\n } else if (master.id === crosstab.id) {\r\n // If I am master, save the new tabs out\r\n setStoredTabs();\r\n }\r\n });\r\n\r\n eventHandler.addListener(util.eventTypes.tabUpdated, function (message) {\r\n var tab = message.data;\r\n util.tabs[tab.id] = tab;\r\n\r\n // If there is no master, hold an election\r\n if (!getMaster()) {\r\n masterTabElection();\r\n }\r\n\r\n if (getMasterId() === tab.id) {\r\n setMaster(tab);\r\n }\r\n if (isMaster()) {\r\n // If I am master, save the new tabs out\r\n setStoredTabs();\r\n }\r\n });\r\n\r\n var bullying;\r\n eventHandler.addListener(util.eventTypes.tabPromoted, function (message) {\r\n var id = message.data;\r\n var lastUpdated = message.timestamp;\r\n var previousMaster = getMasterId();\r\n\r\n // Bully out competing broadcasts if our id is lower\r\n if (crosstab.id < id) {\r\n if (!bullying) {\r\n bullying = setTimeout(function () {\r\n bullying = 0;\r\n broadcast(util.eventTypes.tabPromoted, crosstab.id);\r\n }, 0);\r\n }\r\n return;\r\n }\r\n\r\n setMaster({\r\n id: id,\r\n lastUpdated: lastUpdated\r\n });\r\n\r\n if (isMaster()) {\r\n // set the tabs in localStorage\r\n setStoredTabs();\r\n }\r\n if (isMaster()\r\n && previousMaster !== crosstab.id) {\r\n // emit the become master event so we can handle it accordingly\r\n util.events.emit(util.eventTypes.becomeMaster);\r\n } else if (!isMaster()\r\n && previousMaster === crosstab.id) {\r\n // emit the demoted from master event so we can clean up resources\r\n util.events.emit(util.eventTypes.demoteFromMaster);\r\n }\r\n });\r\n\r\n function pad(num, width, padChar) {\r\n padChar = padChar || '0';\r\n var numStr = (num.toString());\r\n\r\n if (numStr.length >= width) {\r\n return numStr;\r\n }\r\n\r\n return new Array(width - numStr.length + 1).join(padChar) + numStr;\r\n }\r\n\r\n util.generateId = function () {\r\n /*jshint bitwise: false*/\r\n return util.now().toString() + pad((Math.random() * 0x7FFFFFFF) | 0, 10);\r\n };\r\n\r\n // --- Setup message sending and handling ---\r\n function broadcast(event, data, destination) {\r\n if (!crosstab.supported) {\r\n notSupported();\r\n }\r\n\r\n var message = {\r\n id: util.generateId(),\r\n event: event,\r\n data: data,\r\n destination: destination,\r\n origin: crosstab.id,\r\n timestamp: util.now()\r\n };\r\n\r\n // If the destination differs from the origin send it out, otherwise\r\n // handle it locally\r\n if (message.destination !== message.origin) {\r\n setLocalStorageItem(util.keys.MESSAGE_KEY, message);\r\n }\r\n\r\n if (!message.destination || message.destination === message.origin) {\r\n eventHandler.emit(event, message);\r\n }\r\n }\r\n\r\n function broadcastMaster(event, data) {\r\n broadcast(event, data, getMaster().id);\r\n }\r\n\r\n // ---- Return ----\r\n var setupComplete = false;\r\n util.events.once('setupComplete', function () {\r\n setupComplete = true;\r\n });\r\n\r\n var crosstab = function (fn) {\r\n if (setupComplete) {\r\n fn();\r\n } else {\r\n util.events.once('setupComplete', fn);\r\n }\r\n };\r\n\r\n crosstab.id = util.generateId();\r\n crosstab.supported = !!localStorage && window.addEventListener && !isMobile && setItemAllowed;\r\n crosstab.util = util;\r\n crosstab.broadcast = broadcast;\r\n crosstab.broadcastMaster = broadcastMaster;\r\n crosstab.on = util.events.on;\r\n crosstab.once = util.events.once;\r\n crosstab.off = util.events.off;\r\n\r\n // 10 minute timeout\r\n var CACHE_TIMEOUT = 10 * 60 * 1000;\r\n\r\n // --- Crosstab supported ---\r\n // Check to see if the global frozen tab environment key or supported key has been set.\r\n if (!setupComplete && crosstab.supported) {\r\n var frozenTabsRaw = getLocalStorageRaw(util.keys.FROZEN_TAB_ENVIRONMENT);\r\n\r\n if (frozenTabsRaw.timestamp) {\r\n var frozenTabs = frozenTabsRaw.data;\r\n if (util.now() - frozenTabsRaw.timestamp > CACHE_TIMEOUT) {\r\n localStorage.removeItem(util.keys.FROZEN_TAB_ENVIRONMENT);\r\n } else if (frozenTabs === true) {\r\n frozenTabEnvironmentDetected();\r\n }\r\n }\r\n\r\n var supportedRaw = getLocalStorageRaw(util.keys.SUPPORTED_KEY);\r\n\r\n if (supportedRaw.timestamp) {\r\n var supported = supportedRaw.data;\r\n\r\n if (util.now() - supportedRaw.timestamp > CACHE_TIMEOUT) {\r\n localStorage.removeItem(util.keys.SUPPORTED_KEY);\r\n } else if (supported === false || supported === true) {\r\n // As long as it is explicitely set, use the value\r\n crosstab.supported = supported;\r\n util.events.emit('setupComplete');\r\n }\r\n }\r\n }\r\n\r\n function frozenTabEnvironmentDetected() {\r\n crosstab.supported = false;\r\n frozenTabEnvironment = true;\r\n setLocalStorageItem(util.keys.FROZEN_TAB_ENVIRONMENT, true);\r\n setLocalStorageItem(util.keys.SUPPORTED_KEY, false);\r\n }\r\n\r\n // --- Tab Setup ---\r\n // 3 second keepalive\r\n var TAB_KEEPALIVE = 3 * 1000;\r\n // 5 second timeout\r\n var TAB_TIMEOUT = 5 * 1000;\r\n // 500 ms ping timeout\r\n var PING_TIMEOUT = 500;\r\n\r\n function getStoredTabs() {\r\n var storedTabs = getLocalStorageItem(util.keys.TABS_KEY);\r\n util.tabs = storedTabs || util.tabs || {};\r\n return util.tabs;\r\n }\r\n\r\n function setStoredTabs() {\r\n setLocalStorageItem(util.keys.TABS_KEY, util.tabs);\r\n }\r\n\r\n function keepalive() {\r\n var now = util.now();\r\n\r\n var myTab = {\r\n id: crosstab.id,\r\n lastUpdated: now,\r\n url: window.location.href\r\n };\r\n\r\n // broadcast tabUpdated event\r\n broadcast(util.eventTypes.tabUpdated, myTab);\r\n\r\n // broadcast tabClosed event for each tab that timed out\r\n function stillAlive(tab) {\r\n return now - tab.lastUpdated < TAB_TIMEOUT;\r\n }\r\n\r\n function notAlive(tab, key) {\r\n return key !== util.keys.MASTER_TAB && !stillAlive(tab);\r\n }\r\n\r\n var deadTabs = util.filter(util.tabs, notAlive);\r\n util.forEach(deadTabs, function (tab) {\r\n broadcast(util.eventTypes.tabClosed, tab.id);\r\n });\r\n\r\n // check to see if setup is complete\r\n if (!setupComplete) {\r\n var master = getMaster();\r\n // ping master\r\n if (master && master.id !== myTab.id) {\r\n var timeout;\r\n var start;\r\n\r\n crosstab.util.events.once('PONG', function () {\r\n if (!setupComplete) {\r\n clearTimeout(timeout);\r\n // set supported to true / frozen to false\r\n setLocalStorageItem(\r\n util.keys.SUPPORTED_KEY,\r\n true);\r\n setLocalStorageItem(\r\n util.keys.FROZEN_TAB_ENVIRONMENT,\r\n false);\r\n util.events.emit('setupComplete');\r\n }\r\n });\r\n\r\n start = util.now();\r\n\r\n // There is a nested timeout here. We'll give it 100ms\r\n // timeout, with iters \"yields\" to the event loop. So at least\r\n // iters number of blocks of javascript will be able to run\r\n // covering at least 100ms\r\n var recursiveTimeout = function (iters) {\r\n var diff = util.now() - start;\r\n\r\n if (!setupComplete) {\r\n if (iters <= 0 && diff > PING_TIMEOUT) {\r\n frozenTabEnvironmentDetected();\r\n util.events.emit('setupComplete');\r\n } else {\r\n timeout = setTimeout(function () {\r\n recursiveTimeout(iters - 1);\r\n }, 5);\r\n }\r\n }\r\n };\r\n\r\n var iterations = 5;\r\n timeout = setTimeout(function () {\r\n recursiveTimeout(5);\r\n }, PING_TIMEOUT - 5 * iterations);\r\n crosstab.broadcastMaster('PING');\r\n } else if (master && master.id === myTab.id) {\r\n util.events.emit('setupComplete');\r\n }\r\n }\r\n }\r\n\r\n function keepaliveLoop() {\r\n if (crosstab.supported && !crosstab.stopKeepalive) {\r\n keepalive();\r\n }\r\n }\r\n\r\n // --- Check if crosstab is supported ---\r\n if (!crosstab.supported) {\r\n crosstab.broadcast = notSupported;\r\n } else {\r\n // ---- Setup Storage Listener\r\n window.addEventListener('storage', onStorageEvent, false);\r\n // start with the `beforeunload` event due to IE11\r\n window.addEventListener('beforeunload', unload, false);\r\n // swap `beforeunload` to `unload` after DOM is loaded\r\n window.addEventListener('DOMContentLoaded', swapUnloadEvents, false);\r\n\r\n util.events.on('PING', function (message) {\r\n // only handle direct messages\r\n if (!message.destination || message.destination !== crosstab.id) {\r\n return;\r\n }\r\n\r\n if (util.now() - message.timestamp < PING_TIMEOUT) {\r\n crosstab.broadcast('PONG', null, message.origin);\r\n }\r\n });\r\n\r\n crosstab.keepAliveInterval = setInterval(keepaliveLoop, TAB_KEEPALIVE);\r\n keepaliveLoop();\r\n }\r\n\r\n module.exports = crosstab;\r\n\r\n /*!\r\n * UMD/AMD/Global context Module Loader wrapper\r\n *\r\n * This wrapper will try to use a module loader with the\r\n * following priority:\r\n *\r\n * 1.) AMD\r\n * 2.) CommonJS\r\n * 3.) Context Variable (this)\r\n * - window in the browser\r\n * - module.exports in node and browserify\r\n */\r\n });\r\n})(\r\n // First arg -- the global object in the browser or node\r\n typeof window == 'object' ? window : global,\r\n // Second arg -- the define object\r\n typeof define == 'function' && define.amd\r\n ? define\r\n : (function (context) {\r\n 'use strict';\r\n return typeof module == 'object' ? function (name, factory) {\r\n factory(require, exports, module);\r\n }\r\n : function (name, factory) {\r\n var module = {\r\n exports: {}\r\n };\r\n var require = function (n) {\r\n if (n === 'jquery') {\r\n n = 'jQuery';\r\n }\r\n return context[n];\r\n };\r\n\r\n factory(require, module.exports, module);\r\n context[name] = module.exports;\r\n };\r\n })(this));","/**\r\n * FingerprintJS v4.6.0 - Copyright (c) FingerprintJS, Inc, 2025 (https://fingerprint.com)\r\n *\r\n * Licensed under Business Source License 1.1 https://mariadb.com/bsl11/\r\n * Licensor: FingerprintJS, Inc.\r\n * Licensed Work: FingerprintJS browser fingerprinting library\r\n * Additional Use Grant: None\r\n * Change Date: Four years from first release for the specific version.\r\n * Change License: MIT, text at https://opensource.org/license/mit/ with the following copyright notice:\r\n * Copyright 2015-present FingerprintJS, Inc.\r\n */\r\n\r\n(function (global, factory) {\r\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\r\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\r\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.FingerprintJS = {}));\r\n})(this, (function (exports) { 'use strict';\r\n\r\n /******************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n\r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\r\n /* global Reflect, Promise */\r\n\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\r\n\r\n function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n }\r\n\r\n function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n }\r\n\r\n function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n }\r\n\r\n var version = \"4.6.0\";\r\n\r\n function wait(durationMs, resolveWith) {\r\n return new Promise(function (resolve) { return setTimeout(resolve, durationMs, resolveWith); });\r\n }\r\n /**\r\n * Allows asynchronous actions and microtasks to happen.\r\n */\r\n function releaseEventLoop() {\r\n // Don't use setTimeout because Chrome throttles it in some cases causing very long agent execution:\r\n // https://stackoverflow.com/a/6032591/1118709\r\n // https://github.com/chromium/chromium/commit/0295dd09496330f3a9103ef7e543fa9b6050409b\r\n // Reusing a MessageChannel object gives no noticeable benefits\r\n return new Promise(function (resolve) {\r\n var channel = new MessageChannel();\r\n channel.port1.onmessage = function () { return resolve(); };\r\n channel.port2.postMessage(null);\r\n });\r\n }\r\n function requestIdleCallbackIfAvailable(fallbackTimeout, deadlineTimeout) {\r\n if (deadlineTimeout === void 0) { deadlineTimeout = Infinity; }\r\n var requestIdleCallback = window.requestIdleCallback;\r\n if (requestIdleCallback) {\r\n // The function `requestIdleCallback` loses the binding to `window` here.\r\n // `globalThis` isn't always equal `window` (see https://github.com/fingerprintjs/fingerprintjs/issues/683).\r\n // Therefore, an error can occur. `call(window,` prevents the error.\r\n return new Promise(function (resolve) { return requestIdleCallback.call(window, function () { return resolve(); }, { timeout: deadlineTimeout }); });\r\n }\r\n else {\r\n return wait(Math.min(fallbackTimeout, deadlineTimeout));\r\n }\r\n }\r\n function isPromise(value) {\r\n return !!value && typeof value.then === 'function';\r\n }\r\n /**\r\n * Calls a maybe asynchronous function without creating microtasks when the function is synchronous.\r\n * Catches errors in both cases.\r\n *\r\n * If just you run a code like this:\r\n * ```\r\n * console.time('Action duration')\r\n * await action()\r\n * console.timeEnd('Action duration')\r\n * ```\r\n * The synchronous function time can be measured incorrectly because another microtask may run before the `await`\r\n * returns the control back to the code.\r\n */\r\n function awaitIfAsync(action, callback) {\r\n try {\r\n var returnedValue = action();\r\n if (isPromise(returnedValue)) {\r\n returnedValue.then(function (result) { return callback(true, result); }, function (error) { return callback(false, error); });\r\n }\r\n else {\r\n callback(true, returnedValue);\r\n }\r\n }\r\n catch (error) {\r\n callback(false, error);\r\n }\r\n }\r\n /**\r\n * If you run many synchronous tasks without using this function, the JS main loop will be busy and asynchronous tasks\r\n * (e.g. completing a network request, rendering the page) won't be able to happen.\r\n * This function allows running many synchronous tasks such way that asynchronous tasks can run too in background.\r\n */\r\n function mapWithBreaks(items, callback, loopReleaseInterval) {\r\n if (loopReleaseInterval === void 0) { loopReleaseInterval = 16; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var results, lastLoopReleaseTime, i, now;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n results = Array(items.length);\r\n lastLoopReleaseTime = Date.now();\r\n i = 0;\r\n _a.label = 1;\r\n case 1:\r\n if (!(i < items.length)) return [3 /*break*/, 4];\r\n results[i] = callback(items[i], i);\r\n now = Date.now();\r\n if (!(now >= lastLoopReleaseTime + loopReleaseInterval)) return [3 /*break*/, 3];\r\n lastLoopReleaseTime = now;\r\n return [4 /*yield*/, releaseEventLoop()];\r\n case 2:\r\n _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n ++i;\r\n return [3 /*break*/, 1];\r\n case 4: return [2 /*return*/, results];\r\n }\r\n });\r\n });\r\n }\r\n /**\r\n * Makes the given promise never emit an unhandled promise rejection console warning.\r\n * The promise will still pass errors to the next promises.\r\n * Returns the input promise for convenience.\r\n *\r\n * Otherwise, promise emits a console warning unless it has a `catch` listener.\r\n */\r\n function suppressUnhandledRejectionWarning(promise) {\r\n promise.then(undefined, function () { return undefined; });\r\n return promise;\r\n }\r\n\r\n /*\r\n * This file contains functions to work with pure data only (no browser features, DOM, side effects, etc).\r\n */\r\n /**\r\n * Does the same as Array.prototype.includes but has better typing\r\n */\r\n function includes(haystack, needle) {\r\n for (var i = 0, l = haystack.length; i < l; ++i) {\r\n if (haystack[i] === needle) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * Like `!includes()` but with proper typing\r\n */\r\n function excludes(haystack, needle) {\r\n return !includes(haystack, needle);\r\n }\r\n /**\r\n * Be careful, NaN can return\r\n */\r\n function toInt(value) {\r\n return parseInt(value);\r\n }\r\n /**\r\n * Be careful, NaN can return\r\n */\r\n function toFloat(value) {\r\n return parseFloat(value);\r\n }\r\n function replaceNaN(value, replacement) {\r\n return typeof value === 'number' && isNaN(value) ? replacement : value;\r\n }\r\n function countTruthy(values) {\r\n return values.reduce(function (sum, value) { return sum + (value ? 1 : 0); }, 0);\r\n }\r\n function round(value, base) {\r\n if (base === void 0) { base = 1; }\r\n if (Math.abs(base) >= 1) {\r\n return Math.round(value / base) * base;\r\n }\r\n else {\r\n // Sometimes when a number is multiplied by a small number, precision is lost,\r\n // for example 1234 * 0.0001 === 0.12340000000000001, and it's more precise divide: 1234 / (1 / 0.0001) === 0.1234.\r\n var counterBase = 1 / base;\r\n return Math.round(value * counterBase) / counterBase;\r\n }\r\n }\r\n /**\r\n * Parses a CSS selector into tag name with HTML attributes.\r\n * Only single element selector are supported (without operators like space, +, >, etc).\r\n *\r\n * Multiple values can be returned for each attribute. You decide how to handle them.\r\n */\r\n function parseSimpleCssSelector(selector) {\r\n var _a, _b;\r\n var errorMessage = \"Unexpected syntax '\".concat(selector, \"'\");\r\n var tagMatch = /^\\s*([a-z-]*)(.*)$/i.exec(selector);\r\n var tag = tagMatch[1] || undefined;\r\n var attributes = {};\r\n var partsRegex = /([.:#][\\w-]+|\\[.+?\\])/gi;\r\n var addAttribute = function (name, value) {\r\n attributes[name] = attributes[name] || [];\r\n attributes[name].push(value);\r\n };\r\n for (;;) {\r\n var match = partsRegex.exec(tagMatch[2]);\r\n if (!match) {\r\n break;\r\n }\r\n var part = match[0];\r\n switch (part[0]) {\r\n case '.':\r\n addAttribute('class', part.slice(1));\r\n break;\r\n case '#':\r\n addAttribute('id', part.slice(1));\r\n break;\r\n case '[': {\r\n var attributeMatch = /^\\[([\\w-]+)([~|^$*]?=(\"(.*?)\"|([\\w-]+)))?(\\s+[is])?\\]$/.exec(part);\r\n if (attributeMatch) {\r\n addAttribute(attributeMatch[1], (_b = (_a = attributeMatch[4]) !== null && _a !== void 0 ? _a : attributeMatch[5]) !== null && _b !== void 0 ? _b : '');\r\n }\r\n else {\r\n throw new Error(errorMessage);\r\n }\r\n break;\r\n }\r\n default:\r\n throw new Error(errorMessage);\r\n }\r\n }\r\n return [tag, attributes];\r\n }\r\n /**\r\n * Converts a string to UTF8 bytes\r\n */\r\n function getUTF8Bytes(input) {\r\n // Benchmark: https://jsbench.me/b6klaaxgwq/1\r\n // If you want to just count bytes, see solutions at https://jsbench.me/ehklab415e/1\r\n var result = new Uint8Array(input.length);\r\n for (var i = 0; i < input.length; i++) {\r\n // `charCode` is faster than encoding, so we prefer that when it's possible\r\n var charCode = input.charCodeAt(i);\r\n // In case of non-ASCII symbols we use proper encoding\r\n if (charCode > 127) {\r\n return new TextEncoder().encode(input);\r\n }\r\n result[i] = charCode;\r\n }\r\n return result;\r\n }\r\n\r\n /*\r\n * Based on https://github.com/karanlyons/murmurHash3.js/blob/a33d0723127e2e5415056c455f8aed2451ace208/murmurHash3.js\r\n */\r\n /**\r\n * Adds two 64-bit values (provided as tuples of 32-bit values)\r\n * and updates (mutates) first value to write the result\r\n */\r\n function x64Add(m, n) {\r\n var m0 = m[0] >>> 16, m1 = m[0] & 0xffff, m2 = m[1] >>> 16, m3 = m[1] & 0xffff;\r\n var n0 = n[0] >>> 16, n1 = n[0] & 0xffff, n2 = n[1] >>> 16, n3 = n[1] & 0xffff;\r\n var o0 = 0, o1 = 0, o2 = 0, o3 = 0;\r\n o3 += m3 + n3;\r\n o2 += o3 >>> 16;\r\n o3 &= 0xffff;\r\n o2 += m2 + n2;\r\n o1 += o2 >>> 16;\r\n o2 &= 0xffff;\r\n o1 += m1 + n1;\r\n o0 += o1 >>> 16;\r\n o1 &= 0xffff;\r\n o0 += m0 + n0;\r\n o0 &= 0xffff;\r\n m[0] = (o0 << 16) | o1;\r\n m[1] = (o2 << 16) | o3;\r\n }\r\n /**\r\n * Multiplies two 64-bit values (provided as tuples of 32-bit values)\r\n * and updates (mutates) first value to write the result\r\n */\r\n function x64Multiply(m, n) {\r\n var m0 = m[0] >>> 16, m1 = m[0] & 0xffff, m2 = m[1] >>> 16, m3 = m[1] & 0xffff;\r\n var n0 = n[0] >>> 16, n1 = n[0] & 0xffff, n2 = n[1] >>> 16, n3 = n[1] & 0xffff;\r\n var o0 = 0, o1 = 0, o2 = 0, o3 = 0;\r\n o3 += m3 * n3;\r\n o2 += o3 >>> 16;\r\n o3 &= 0xffff;\r\n o2 += m2 * n3;\r\n o1 += o2 >>> 16;\r\n o2 &= 0xffff;\r\n o2 += m3 * n2;\r\n o1 += o2 >>> 16;\r\n o2 &= 0xffff;\r\n o1 += m1 * n3;\r\n o0 += o1 >>> 16;\r\n o1 &= 0xffff;\r\n o1 += m2 * n2;\r\n o0 += o1 >>> 16;\r\n o1 &= 0xffff;\r\n o1 += m3 * n1;\r\n o0 += o1 >>> 16;\r\n o1 &= 0xffff;\r\n o0 += m0 * n3 + m1 * n2 + m2 * n1 + m3 * n0;\r\n o0 &= 0xffff;\r\n m[0] = (o0 << 16) | o1;\r\n m[1] = (o2 << 16) | o3;\r\n }\r\n /**\r\n * Provides left rotation of the given int64 value (provided as tuple of two int32)\r\n * by given number of bits. Result is written back to the value\r\n */\r\n function x64Rotl(m, bits) {\r\n var m0 = m[0];\r\n bits %= 64;\r\n if (bits === 32) {\r\n m[0] = m[1];\r\n m[1] = m0;\r\n }\r\n else if (bits < 32) {\r\n m[0] = (m0 << bits) | (m[1] >>> (32 - bits));\r\n m[1] = (m[1] << bits) | (m0 >>> (32 - bits));\r\n }\r\n else {\r\n bits -= 32;\r\n m[0] = (m[1] << bits) | (m0 >>> (32 - bits));\r\n m[1] = (m0 << bits) | (m[1] >>> (32 - bits));\r\n }\r\n }\r\n /**\r\n * Provides a left shift of the given int32 value (provided as tuple of [0, int32])\r\n * by given number of bits. Result is written back to the value\r\n */\r\n function x64LeftShift(m, bits) {\r\n bits %= 64;\r\n if (bits === 0) {\r\n return;\r\n }\r\n else if (bits < 32) {\r\n m[0] = m[1] >>> (32 - bits);\r\n m[1] = m[1] << bits;\r\n }\r\n else {\r\n m[0] = m[1] << (bits - 32);\r\n m[1] = 0;\r\n }\r\n }\r\n /**\r\n * Provides a XOR of the given int64 values(provided as tuple of two int32).\r\n * Result is written back to the first value\r\n */\r\n function x64Xor(m, n) {\r\n m[0] ^= n[0];\r\n m[1] ^= n[1];\r\n }\r\n var F1 = [0xff51afd7, 0xed558ccd];\r\n var F2 = [0xc4ceb9fe, 0x1a85ec53];\r\n /**\r\n * Calculates murmurHash3's final x64 mix of that block and writes result back to the input value.\r\n * (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\r\n * only place where we need to right shift 64bit ints.)\r\n */\r\n function x64Fmix(h) {\r\n var shifted = [0, h[0] >>> 1];\r\n x64Xor(h, shifted);\r\n x64Multiply(h, F1);\r\n shifted[1] = h[0] >>> 1;\r\n x64Xor(h, shifted);\r\n x64Multiply(h, F2);\r\n shifted[1] = h[0] >>> 1;\r\n x64Xor(h, shifted);\r\n }\r\n var C1 = [0x87c37b91, 0x114253d5];\r\n var C2 = [0x4cf5ad43, 0x2745937f];\r\n var M$1 = [0, 5];\r\n var N1 = [0, 0x52dce729];\r\n var N2 = [0, 0x38495ab5];\r\n /**\r\n * Given a string and an optional seed as an int, returns a 128 bit\r\n * hash using the x64 flavor of MurmurHash3, as an unsigned hex.\r\n * All internal functions mutates passed value to achieve minimal memory allocations and GC load\r\n *\r\n * Benchmark https://jsbench.me/p4lkpaoabi/1\r\n */\r\n function x64hash128(input, seed) {\r\n var key = getUTF8Bytes(input);\r\n seed = seed || 0;\r\n var length = [0, key.length];\r\n var remainder = length[1] % 16;\r\n var bytes = length[1] - remainder;\r\n var h1 = [0, seed];\r\n var h2 = [0, seed];\r\n var k1 = [0, 0];\r\n var k2 = [0, 0];\r\n var i;\r\n for (i = 0; i < bytes; i = i + 16) {\r\n k1[0] = key[i + 4] | (key[i + 5] << 8) | (key[i + 6] << 16) | (key[i + 7] << 24);\r\n k1[1] = key[i] | (key[i + 1] << 8) | (key[i + 2] << 16) | (key[i + 3] << 24);\r\n k2[0] = key[i + 12] | (key[i + 13] << 8) | (key[i + 14] << 16) | (key[i + 15] << 24);\r\n k2[1] = key[i + 8] | (key[i + 9] << 8) | (key[i + 10] << 16) | (key[i + 11] << 24);\r\n x64Multiply(k1, C1);\r\n x64Rotl(k1, 31);\r\n x64Multiply(k1, C2);\r\n x64Xor(h1, k1);\r\n x64Rotl(h1, 27);\r\n x64Add(h1, h2);\r\n x64Multiply(h1, M$1);\r\n x64Add(h1, N1);\r\n x64Multiply(k2, C2);\r\n x64Rotl(k2, 33);\r\n x64Multiply(k2, C1);\r\n x64Xor(h2, k2);\r\n x64Rotl(h2, 31);\r\n x64Add(h2, h1);\r\n x64Multiply(h2, M$1);\r\n x64Add(h2, N2);\r\n }\r\n k1[0] = 0;\r\n k1[1] = 0;\r\n k2[0] = 0;\r\n k2[1] = 0;\r\n var val = [0, 0];\r\n switch (remainder) {\r\n case 15:\r\n val[1] = key[i + 14];\r\n x64LeftShift(val, 48);\r\n x64Xor(k2, val);\r\n // fallthrough\r\n case 14:\r\n val[1] = key[i + 13];\r\n x64LeftShift(val, 40);\r\n x64Xor(k2, val);\r\n // fallthrough\r\n case 13:\r\n val[1] = key[i + 12];\r\n x64LeftShift(val, 32);\r\n x64Xor(k2, val);\r\n // fallthrough\r\n case 12:\r\n val[1] = key[i + 11];\r\n x64LeftShift(val, 24);\r\n x64Xor(k2, val);\r\n // fallthrough\r\n case 11:\r\n val[1] = key[i + 10];\r\n x64LeftShift(val, 16);\r\n x64Xor(k2, val);\r\n // fallthrough\r\n case 10:\r\n val[1] = key[i + 9];\r\n x64LeftShift(val, 8);\r\n x64Xor(k2, val);\r\n // fallthrough\r\n case 9:\r\n val[1] = key[i + 8];\r\n x64Xor(k2, val);\r\n x64Multiply(k2, C2);\r\n x64Rotl(k2, 33);\r\n x64Multiply(k2, C1);\r\n x64Xor(h2, k2);\r\n // fallthrough\r\n case 8:\r\n val[1] = key[i + 7];\r\n x64LeftShift(val, 56);\r\n x64Xor(k1, val);\r\n // fallthrough\r\n case 7:\r\n val[1] = key[i + 6];\r\n x64LeftShift(val, 48);\r\n x64Xor(k1, val);\r\n // fallthrough\r\n case 6:\r\n val[1] = key[i + 5];\r\n x64LeftShift(val, 40);\r\n x64Xor(k1, val);\r\n // fallthrough\r\n case 5:\r\n val[1] = key[i + 4];\r\n x64LeftShift(val, 32);\r\n x64Xor(k1, val);\r\n // fallthrough\r\n case 4:\r\n val[1] = key[i + 3];\r\n x64LeftShift(val, 24);\r\n x64Xor(k1, val);\r\n // fallthrough\r\n case 3:\r\n val[1] = key[i + 2];\r\n x64LeftShift(val, 16);\r\n x64Xor(k1, val);\r\n // fallthrough\r\n case 2:\r\n val[1] = key[i + 1];\r\n x64LeftShift(val, 8);\r\n x64Xor(k1, val);\r\n // fallthrough\r\n case 1:\r\n val[1] = key[i];\r\n x64Xor(k1, val);\r\n x64Multiply(k1, C1);\r\n x64Rotl(k1, 31);\r\n x64Multiply(k1, C2);\r\n x64Xor(h1, k1);\r\n // fallthrough\r\n }\r\n x64Xor(h1, length);\r\n x64Xor(h2, length);\r\n x64Add(h1, h2);\r\n x64Add(h2, h1);\r\n x64Fmix(h1);\r\n x64Fmix(h2);\r\n x64Add(h1, h2);\r\n x64Add(h2, h1);\r\n return (('00000000' + (h1[0] >>> 0).toString(16)).slice(-8) +\r\n ('00000000' + (h1[1] >>> 0).toString(16)).slice(-8) +\r\n ('00000000' + (h2[0] >>> 0).toString(16)).slice(-8) +\r\n ('00000000' + (h2[1] >>> 0).toString(16)).slice(-8));\r\n }\r\n\r\n /**\r\n * Converts an error object to a plain object that can be used with `JSON.stringify`.\r\n * If you just run `JSON.stringify(error)`, you'll get `'{}'`.\r\n */\r\n function errorToObject(error) {\r\n var _a;\r\n return __assign({ name: error.name, message: error.message, stack: (_a = error.stack) === null || _a === void 0 ? void 0 : _a.split('\\n') }, error);\r\n }\r\n function isFunctionNative(func) {\r\n return /^function\\s.*?\\{\\s*\\[native code]\\s*}$/.test(String(func));\r\n }\r\n\r\n function isFinalResultLoaded(loadResult) {\r\n return typeof loadResult !== 'function';\r\n }\r\n /**\r\n * Loads the given entropy source. Returns a function that gets an entropy component from the source.\r\n *\r\n * The result is returned synchronously to prevent `loadSources` from\r\n * waiting for one source to load before getting the components from the other sources.\r\n */\r\n function loadSource(source, sourceOptions) {\r\n var sourceLoadPromise = suppressUnhandledRejectionWarning(new Promise(function (resolveLoad) {\r\n var loadStartTime = Date.now();\r\n // `awaitIfAsync` is used instead of just `await` in order to measure the duration of synchronous sources\r\n // correctly (other microtasks won't affect the duration).\r\n awaitIfAsync(source.bind(null, sourceOptions), function () {\r\n var loadArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n loadArgs[_i] = arguments[_i];\r\n }\r\n var loadDuration = Date.now() - loadStartTime;\r\n // Source loading failed\r\n if (!loadArgs[0]) {\r\n return resolveLoad(function () { return ({ error: loadArgs[1], duration: loadDuration }); });\r\n }\r\n var loadResult = loadArgs[1];\r\n // Source loaded with the final result\r\n if (isFinalResultLoaded(loadResult)) {\r\n return resolveLoad(function () { return ({ value: loadResult, duration: loadDuration }); });\r\n }\r\n // Source loaded with \"get\" stage\r\n resolveLoad(function () {\r\n return new Promise(function (resolveGet) {\r\n var getStartTime = Date.now();\r\n awaitIfAsync(loadResult, function () {\r\n var getArgs = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n getArgs[_i] = arguments[_i];\r\n }\r\n var duration = loadDuration + Date.now() - getStartTime;\r\n // Source getting failed\r\n if (!getArgs[0]) {\r\n return resolveGet({ error: getArgs[1], duration: duration });\r\n }\r\n // Source getting succeeded\r\n resolveGet({ value: getArgs[1], duration: duration });\r\n });\r\n });\r\n });\r\n });\r\n }));\r\n return function getComponent() {\r\n return sourceLoadPromise.then(function (finalizeSource) { return finalizeSource(); });\r\n };\r\n }\r\n /**\r\n * Loads the given entropy sources. Returns a function that collects the entropy components.\r\n *\r\n * The result is returned synchronously in order to allow start getting the components\r\n * before the sources are loaded completely.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function loadSources(sources, sourceOptions, excludeSources, loopReleaseInterval) {\r\n var includedSources = Object.keys(sources).filter(function (sourceKey) { return excludes(excludeSources, sourceKey); });\r\n // Using `mapWithBreaks` allows asynchronous sources to complete between synchronous sources\r\n // and measure the duration correctly\r\n var sourceGettersPromise = suppressUnhandledRejectionWarning(mapWithBreaks(includedSources, function (sourceKey) { return loadSource(sources[sourceKey], sourceOptions); }, loopReleaseInterval));\r\n return function getComponents() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var sourceGetters, componentPromises, componentArray, components, index;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, sourceGettersPromise];\r\n case 1:\r\n sourceGetters = _a.sent();\r\n return [4 /*yield*/, mapWithBreaks(sourceGetters, function (sourceGetter) { return suppressUnhandledRejectionWarning(sourceGetter()); }, loopReleaseInterval)];\r\n case 2:\r\n componentPromises = _a.sent();\r\n return [4 /*yield*/, Promise.all(componentPromises)\r\n // Keeping the component keys order the same as the source keys order\r\n ];\r\n case 3:\r\n componentArray = _a.sent();\r\n components = {};\r\n for (index = 0; index < includedSources.length; ++index) {\r\n components[includedSources[index]] = componentArray[index];\r\n }\r\n return [2 /*return*/, components];\r\n }\r\n });\r\n });\r\n };\r\n }\r\n /**\r\n * Modifies an entropy source by transforming its returned value with the given function.\r\n * Keeps the source properties: sync/async, 1/2 stages.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function transformSource(source, transformValue) {\r\n var transformLoadResult = function (loadResult) {\r\n if (isFinalResultLoaded(loadResult)) {\r\n return transformValue(loadResult);\r\n }\r\n return function () {\r\n var getResult = loadResult();\r\n if (isPromise(getResult)) {\r\n return getResult.then(transformValue);\r\n }\r\n return transformValue(getResult);\r\n };\r\n };\r\n return function (options) {\r\n var loadResult = source(options);\r\n if (isPromise(loadResult)) {\r\n return loadResult.then(transformLoadResult);\r\n }\r\n return transformLoadResult(loadResult);\r\n };\r\n }\r\n\r\n /*\r\n * Functions to help with features that vary through browsers\r\n */\r\n /**\r\n * Checks whether the browser is based on Trident (the Internet Explorer engine) without using user-agent.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function isTrident() {\r\n var w = window;\r\n var n = navigator;\r\n // The properties are checked to be in IE 10, IE 11 and not to be in other browsers in October 2020\r\n return (countTruthy([\r\n 'MSCSSMatrix' in w,\r\n 'msSetImmediate' in w,\r\n 'msIndexedDB' in w,\r\n 'msMaxTouchPoints' in n,\r\n 'msPointerEnabled' in n,\r\n ]) >= 4);\r\n }\r\n /**\r\n * Checks whether the browser is based on EdgeHTML (the pre-Chromium Edge engine) without using user-agent.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function isEdgeHTML() {\r\n // Based on research in October 2020\r\n var w = window;\r\n var n = navigator;\r\n return (countTruthy(['msWriteProfilerMark' in w, 'MSStream' in w, 'msLaunchUri' in n, 'msSaveBlob' in n]) >= 3 &&\r\n !isTrident());\r\n }\r\n /**\r\n * Checks whether the browser is based on Chromium without using user-agent.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function isChromium() {\r\n // Based on research in October 2020. Tested to detect Chromium 42-86.\r\n var w = window;\r\n var n = navigator;\r\n return (countTruthy([\r\n 'webkitPersistentStorage' in n,\r\n 'webkitTemporaryStorage' in n,\r\n n.vendor.indexOf('Google') === 0,\r\n 'webkitResolveLocalFileSystemURL' in w,\r\n 'BatteryManager' in w,\r\n 'webkitMediaStream' in w,\r\n 'webkitSpeechGrammar' in w,\r\n ]) >= 5);\r\n }\r\n /**\r\n * Checks whether the browser is based on mobile or desktop Safari without using user-agent.\r\n * All iOS browsers use WebKit (the Safari engine).\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function isWebKit() {\r\n // Based on research in August 2024\r\n var w = window;\r\n var n = navigator;\r\n return (countTruthy([\r\n 'ApplePayError' in w,\r\n 'CSSPrimitiveValue' in w,\r\n 'Counter' in w,\r\n n.vendor.indexOf('Apple') === 0,\r\n 'RGBColor' in w,\r\n 'WebKitMediaKeys' in w,\r\n ]) >= 4);\r\n }\r\n /**\r\n * Checks whether this WebKit browser is a desktop browser.\r\n * It doesn't check that the browser is based on WebKit, there is a separate function for this.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function isDesktopWebKit() {\r\n // Checked in Safari and DuckDuckGo\r\n var w = window;\r\n var HTMLElement = w.HTMLElement, Document = w.Document;\r\n return (countTruthy([\r\n 'safari' in w,\r\n !('ongestureend' in w),\r\n !('TouchEvent' in w),\r\n !('orientation' in w),\r\n HTMLElement && !('autocapitalize' in HTMLElement.prototype),\r\n Document && 'pointerLockElement' in Document.prototype,\r\n ]) >= 4);\r\n }\r\n /**\r\n * Checks whether this WebKit browser is Safari.\r\n * It doesn't check that the browser is based on WebKit, there is a separate function for this.\r\n *\r\n * Warning! The function works properly only for Safari version 15.4 and newer.\r\n */\r\n function isSafariWebKit() {\r\n // Checked in Safari, Chrome, Firefox, Yandex, UC Browser, Opera, Edge and DuckDuckGo.\r\n // iOS Safari and Chrome were checked on iOS 11-18. DuckDuckGo was checked on iOS 17-18 and macOS 14-15.\r\n // Desktop Safari versions 12-18 were checked.\r\n // The other browsers were checked on iOS 17 and 18; there was no chance to check them on the other OS versions.\r\n var w = window;\r\n return (\r\n // Filters-out Chrome, Yandex, DuckDuckGo (macOS and iOS), Edge\r\n isFunctionNative(w.print) &&\r\n // Doesn't work in Safari < 15.4\r\n String(w.browser) === '[object WebPageNamespace]');\r\n }\r\n /**\r\n * Checks whether the browser is based on Gecko (Firefox engine) without using user-agent.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function isGecko() {\r\n var _a, _b;\r\n var w = window;\r\n // Based on research in September 2020\r\n return (countTruthy([\r\n 'buildID' in navigator,\r\n 'MozAppearance' in ((_b = (_a = document.documentElement) === null || _a === void 0 ? void 0 : _a.style) !== null && _b !== void 0 ? _b : {}),\r\n 'onmozfullscreenchange' in w,\r\n 'mozInnerScreenX' in w,\r\n 'CSSMozDocumentRule' in w,\r\n 'CanvasCaptureMediaStream' in w,\r\n ]) >= 4);\r\n }\r\n /**\r\n * Checks whether the browser is based on Chromium version ≥86 without using user-agent.\r\n * It doesn't check that the browser is based on Chromium, there is a separate function for this.\r\n */\r\n function isChromium86OrNewer() {\r\n // Checked in Chrome 85 vs Chrome 86 both on desktop and Android. Checked in macOS Chrome 128, Android Chrome 127.\r\n var w = window;\r\n return (countTruthy([\r\n !('MediaSettingsRange' in w),\r\n 'RTCEncodedAudioFrame' in w,\r\n '' + w.Intl === '[object Intl]',\r\n '' + w.Reflect === '[object Reflect]',\r\n ]) >= 3);\r\n }\r\n /**\r\n * Checks whether the browser is based on Chromium version ≥122 without using user-agent.\r\n * It doesn't check that the browser is based on Chromium, there is a separate function for this.\r\n */\r\n function isChromium122OrNewer() {\r\n // Checked in Chrome 121 vs Chrome 122 and 129 both on desktop and Android\r\n var w = window;\r\n var URLPattern = w.URLPattern;\r\n return (countTruthy([\r\n 'union' in Set.prototype,\r\n 'Iterator' in w,\r\n URLPattern && 'hasRegExpGroups' in URLPattern.prototype,\r\n 'RGB8' in WebGLRenderingContext.prototype,\r\n ]) >= 3);\r\n }\r\n /**\r\n * Checks whether the browser is based on WebKit version ≥606 (Safari ≥12) without using user-agent.\r\n * It doesn't check that the browser is based on WebKit, there is a separate function for this.\r\n *\r\n * @see https://en.wikipedia.org/wiki/Safari_version_history#Release_history Safari-WebKit versions map\r\n */\r\n function isWebKit606OrNewer() {\r\n // Checked in Safari 9–18\r\n var w = window;\r\n return (countTruthy([\r\n 'DOMRectList' in w,\r\n 'RTCPeerConnectionIceEvent' in w,\r\n 'SVGGeometryElement' in w,\r\n 'ontransitioncancel' in w,\r\n ]) >= 3);\r\n }\r\n /**\r\n * Checks whether the browser is based on WebKit version ≥616 (Safari ≥17) without using user-agent.\r\n * It doesn't check that the browser is based on WebKit, there is a separate function for this.\r\n *\r\n * @see https://developer.apple.com/documentation/safari-release-notes/safari-17-release-notes Safari 17 release notes\r\n * @see https://tauri.app/v1/references/webview-versions/#webkit-versions-in-safari Safari-WebKit versions map\r\n */\r\n function isWebKit616OrNewer() {\r\n var w = window;\r\n var n = navigator;\r\n var CSS = w.CSS, HTMLButtonElement = w.HTMLButtonElement;\r\n return (countTruthy([\r\n !('getStorageUpdates' in n),\r\n HTMLButtonElement && 'popover' in HTMLButtonElement.prototype,\r\n 'CSSCounterStyleRule' in w,\r\n CSS.supports('font-size-adjust: ex-height 0.5'),\r\n CSS.supports('text-transform: full-width'),\r\n ]) >= 4);\r\n }\r\n /**\r\n * Checks whether the device is an iPad.\r\n * It doesn't check that the engine is WebKit and that the WebKit isn't desktop.\r\n */\r\n function isIPad() {\r\n // Checked on:\r\n // Safari on iPadOS (both mobile and desktop modes): 8, 11-18\r\n // Chrome on iPadOS (both mobile and desktop modes): 11-18\r\n // Safari on iOS (both mobile and desktop modes): 9-18\r\n // Chrome on iOS (both mobile and desktop modes): 9-18\r\n // Before iOS 13. Safari tampers the value in \"request desktop site\" mode since iOS 13.\r\n if (navigator.platform === 'iPad') {\r\n return true;\r\n }\r\n var s = screen;\r\n var screenRatio = s.width / s.height;\r\n return (countTruthy([\r\n // Since iOS 13. Doesn't work in Chrome on iPadOS <15, but works in desktop mode.\r\n 'MediaSource' in window,\r\n // Since iOS 12. Doesn't work in Chrome on iPadOS.\r\n !!Element.prototype.webkitRequestFullscreen,\r\n // iPhone 4S that runs iOS 9 matches this, but it is not supported\r\n // Doesn't work in incognito mode of Safari ≥17 with split screen because of tracking prevention\r\n screenRatio > 0.65 && screenRatio < 1.53,\r\n ]) >= 2);\r\n }\r\n /**\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function getFullscreenElement() {\r\n var d = document;\r\n return d.fullscreenElement || d.msFullscreenElement || d.mozFullScreenElement || d.webkitFullscreenElement || null;\r\n }\r\n function exitFullscreen() {\r\n var d = document;\r\n // `call` is required because the function throws an error without a proper \"this\" context\r\n return (d.exitFullscreen || d.msExitFullscreen || d.mozCancelFullScreen || d.webkitExitFullscreen).call(d);\r\n }\r\n /**\r\n * Checks whether the device runs on Android without using user-agent.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function isAndroid() {\r\n var isItChromium = isChromium();\r\n var isItGecko = isGecko();\r\n var w = window;\r\n var n = navigator;\r\n var c = 'connection';\r\n // Chrome removes all words \"Android\" from `navigator` when desktop version is requested\r\n // Firefox keeps \"Android\" in `navigator.appVersion` when desktop version is requested\r\n if (isItChromium) {\r\n return (countTruthy([\r\n !('SharedWorker' in w),\r\n // `typechange` is deprecated, but it's still present on Android (tested on Chrome Mobile 117)\r\n // Removal proposal https://bugs.chromium.org/p/chromium/issues/detail?id=699892\r\n // Note: this expression returns true on ChromeOS, so additional detectors are required to avoid false-positives\r\n n[c] && 'ontypechange' in n[c],\r\n !('sinkId' in new Audio()),\r\n ]) >= 2);\r\n }\r\n else if (isItGecko) {\r\n return countTruthy(['onorientationchange' in w, 'orientation' in w, /android/i.test(n.appVersion)]) >= 2;\r\n }\r\n else {\r\n // Only 2 browser engines are presented on Android.\r\n // Actually, there is also Android 4.1 browser, but it's not worth detecting it at the moment.\r\n return false;\r\n }\r\n }\r\n /**\r\n * Checks whether the browser is Samsung Internet without using user-agent.\r\n * It doesn't check that the browser is based on Chromium, please use `isChromium` before using this function.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function isSamsungInternet() {\r\n // Checked in Samsung Internet 21, 25 and 27\r\n var n = navigator;\r\n var w = window;\r\n var audioPrototype = Audio.prototype;\r\n var visualViewport = w.visualViewport;\r\n return (countTruthy([\r\n 'srLatency' in audioPrototype,\r\n 'srChannelCount' in audioPrototype,\r\n 'devicePosture' in n,\r\n visualViewport && 'segments' in visualViewport,\r\n 'getTextInformation' in Image.prototype, // Not available in Samsung Internet 21\r\n ]) >= 3);\r\n }\r\n\r\n /**\r\n * A deep description: https://fingerprint.com/blog/audio-fingerprinting/\r\n * Inspired by and based on https://github.com/cozylife/audio-fingerprint\r\n *\r\n * A version of the entropy source with stabilization to make it suitable for static fingerprinting.\r\n * Audio signal is noised in private mode of Safari 17, so audio fingerprinting is skipped in Safari 17.\r\n */\r\n function getAudioFingerprint() {\r\n if (doesBrowserPerformAntifingerprinting$1()) {\r\n return -4 /* SpecialFingerprint.KnownForAntifingerprinting */;\r\n }\r\n return getUnstableAudioFingerprint();\r\n }\r\n /**\r\n * A version of the entropy source without stabilization.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function getUnstableAudioFingerprint() {\r\n var w = window;\r\n var AudioContext = w.OfflineAudioContext || w.webkitOfflineAudioContext;\r\n if (!AudioContext) {\r\n return -2 /* SpecialFingerprint.NotSupported */;\r\n }\r\n // In some browsers, audio context always stays suspended unless the context is started in response to a user action\r\n // (e.g. a click or a tap). It prevents audio fingerprint from being taken at an arbitrary moment of time.\r\n // Such browsers are old and unpopular, so the audio fingerprinting is just skipped in them.\r\n // See a similar case explanation at https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\r\n if (doesBrowserSuspendAudioContext()) {\r\n return -1 /* SpecialFingerprint.KnownForSuspending */;\r\n }\r\n var hashFromIndex = 4500;\r\n var hashToIndex = 5000;\r\n var context = new AudioContext(1, hashToIndex, 44100);\r\n var oscillator = context.createOscillator();\r\n oscillator.type = 'triangle';\r\n oscillator.frequency.value = 10000;\r\n var compressor = context.createDynamicsCompressor();\r\n compressor.threshold.value = -50;\r\n compressor.knee.value = 40;\r\n compressor.ratio.value = 12;\r\n compressor.attack.value = 0;\r\n compressor.release.value = 0.25;\r\n oscillator.connect(compressor);\r\n compressor.connect(context.destination);\r\n oscillator.start(0);\r\n var _a = startRenderingAudio(context), renderPromise = _a[0], finishRendering = _a[1];\r\n // Suppresses the console error message in case when the fingerprint fails before requested\r\n var fingerprintPromise = suppressUnhandledRejectionWarning(renderPromise.then(function (buffer) { return getHash(buffer.getChannelData(0).subarray(hashFromIndex)); }, function (error) {\r\n if (error.name === \"timeout\" /* InnerErrorName.Timeout */ || error.name === \"suspended\" /* InnerErrorName.Suspended */) {\r\n return -3 /* SpecialFingerprint.Timeout */;\r\n }\r\n throw error;\r\n }));\r\n return function () {\r\n finishRendering();\r\n return fingerprintPromise;\r\n };\r\n }\r\n /**\r\n * Checks if the current browser is known for always suspending audio context\r\n */\r\n function doesBrowserSuspendAudioContext() {\r\n // Mobile Safari 11 and older\r\n return isWebKit() && !isDesktopWebKit() && !isWebKit606OrNewer();\r\n }\r\n /**\r\n * Checks if the current browser is known for applying anti-fingerprinting measures in all or some critical modes\r\n */\r\n function doesBrowserPerformAntifingerprinting$1() {\r\n return (\r\n // Safari ≥17\r\n (isWebKit() && isWebKit616OrNewer() && isSafariWebKit()) ||\r\n // Samsung Internet ≥26\r\n (isChromium() && isSamsungInternet() && isChromium122OrNewer()));\r\n }\r\n /**\r\n * Starts rendering the audio context.\r\n * When the returned function is called, the render process starts finishing.\r\n */\r\n function startRenderingAudio(context) {\r\n var renderTryMaxCount = 3;\r\n var renderRetryDelay = 500;\r\n var runningMaxAwaitTime = 500;\r\n var runningSufficientTime = 5000;\r\n var finalize = function () { return undefined; };\r\n var resultPromise = new Promise(function (resolve, reject) {\r\n var isFinalized = false;\r\n var renderTryCount = 0;\r\n var startedRunningAt = 0;\r\n context.oncomplete = function (event) { return resolve(event.renderedBuffer); };\r\n var startRunningTimeout = function () {\r\n setTimeout(function () { return reject(makeInnerError(\"timeout\" /* InnerErrorName.Timeout */)); }, Math.min(runningMaxAwaitTime, startedRunningAt + runningSufficientTime - Date.now()));\r\n };\r\n var tryRender = function () {\r\n try {\r\n var renderingPromise = context.startRendering();\r\n // `context.startRendering` has two APIs: Promise and callback, we check that it's really a promise just in case\r\n if (isPromise(renderingPromise)) {\r\n // Suppresses all unhandled rejections in case of scheduled redundant retries after successful rendering\r\n suppressUnhandledRejectionWarning(renderingPromise);\r\n }\r\n switch (context.state) {\r\n case 'running':\r\n startedRunningAt = Date.now();\r\n if (isFinalized) {\r\n startRunningTimeout();\r\n }\r\n break;\r\n // Sometimes the audio context doesn't start after calling `startRendering` (in addition to the cases where\r\n // audio context doesn't start at all). A known case is starting an audio context when the browser tab is in\r\n // background on iPhone. Retries usually help in this case.\r\n case 'suspended':\r\n // The audio context can reject starting until the tab is in foreground. Long fingerprint duration\r\n // in background isn't a problem, therefore the retry attempts don't count in background. It can lead to\r\n // a situation when a fingerprint takes very long time and finishes successfully. FYI, the audio context\r\n // can be suspended when `document.hidden === false` and start running after a retry.\r\n if (!document.hidden) {\r\n renderTryCount++;\r\n }\r\n if (isFinalized && renderTryCount >= renderTryMaxCount) {\r\n reject(makeInnerError(\"suspended\" /* InnerErrorName.Suspended */));\r\n }\r\n else {\r\n setTimeout(tryRender, renderRetryDelay);\r\n }\r\n break;\r\n }\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n };\r\n tryRender();\r\n finalize = function () {\r\n if (!isFinalized) {\r\n isFinalized = true;\r\n if (startedRunningAt > 0) {\r\n startRunningTimeout();\r\n }\r\n }\r\n };\r\n });\r\n return [resultPromise, finalize];\r\n }\r\n function getHash(signal) {\r\n var hash = 0;\r\n for (var i = 0; i < signal.length; ++i) {\r\n hash += Math.abs(signal[i]);\r\n }\r\n return hash;\r\n }\r\n function makeInnerError(name) {\r\n var error = new Error(name);\r\n error.name = name;\r\n return error;\r\n }\r\n\r\n /**\r\n * Creates and keeps an invisible iframe while the given function runs.\r\n * The given function is called when the iframe is loaded and has a body.\r\n * The iframe allows to measure DOM sizes inside itself.\r\n *\r\n * Notice: passing an initial HTML code doesn't work in IE.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function withIframe(action, initialHtml, domPollInterval) {\r\n var _a, _b, _c;\r\n if (domPollInterval === void 0) { domPollInterval = 50; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var d, iframe;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n d = document;\r\n _d.label = 1;\r\n case 1:\r\n if (!!d.body) return [3 /*break*/, 3];\r\n return [4 /*yield*/, wait(domPollInterval)];\r\n case 2:\r\n _d.sent();\r\n return [3 /*break*/, 1];\r\n case 3:\r\n iframe = d.createElement('iframe');\r\n _d.label = 4;\r\n case 4:\r\n _d.trys.push([4, , 10, 11]);\r\n return [4 /*yield*/, new Promise(function (_resolve, _reject) {\r\n var isComplete = false;\r\n var resolve = function () {\r\n isComplete = true;\r\n _resolve();\r\n };\r\n var reject = function (error) {\r\n isComplete = true;\r\n _reject(error);\r\n };\r\n iframe.onload = resolve;\r\n iframe.onerror = reject;\r\n var style = iframe.style;\r\n style.setProperty('display', 'block', 'important'); // Required for browsers to calculate the layout\r\n style.position = 'absolute';\r\n style.top = '0';\r\n style.left = '0';\r\n style.visibility = 'hidden';\r\n if (initialHtml && 'srcdoc' in iframe) {\r\n iframe.srcdoc = initialHtml;\r\n }\r\n else {\r\n iframe.src = 'about:blank';\r\n }\r\n d.body.appendChild(iframe);\r\n // WebKit in WeChat doesn't fire the iframe's `onload` for some reason.\r\n // This code checks for the loading state manually.\r\n // See https://github.com/fingerprintjs/fingerprintjs/issues/645\r\n var checkReadyState = function () {\r\n var _a, _b;\r\n // The ready state may never become 'complete' in Firefox despite the 'load' event being fired.\r\n // So an infinite setTimeout loop can happen without this check.\r\n // See https://github.com/fingerprintjs/fingerprintjs/pull/716#issuecomment-986898796\r\n if (isComplete) {\r\n return;\r\n }\r\n // Make sure iframe.contentWindow and iframe.contentWindow.document are both loaded\r\n // The contentWindow.document can miss in JSDOM (https://github.com/jsdom/jsdom).\r\n if (((_b = (_a = iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.document) === null || _b === void 0 ? void 0 : _b.readyState) === 'complete') {\r\n resolve();\r\n }\r\n else {\r\n setTimeout(checkReadyState, 10);\r\n }\r\n };\r\n checkReadyState();\r\n })];\r\n case 5:\r\n _d.sent();\r\n _d.label = 6;\r\n case 6:\r\n if (!!((_b = (_a = iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.document) === null || _b === void 0 ? void 0 : _b.body)) return [3 /*break*/, 8];\r\n return [4 /*yield*/, wait(domPollInterval)];\r\n case 7:\r\n _d.sent();\r\n return [3 /*break*/, 6];\r\n case 8: return [4 /*yield*/, action(iframe, iframe.contentWindow)];\r\n case 9: return [2 /*return*/, _d.sent()];\r\n case 10:\r\n (_c = iframe.parentNode) === null || _c === void 0 ? void 0 : _c.removeChild(iframe);\r\n return [7 /*endfinally*/];\r\n case 11: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n }\r\n /**\r\n * Creates a DOM element that matches the given selector.\r\n * Only single element selector are supported (without operators like space, +, >, etc).\r\n */\r\n function selectorToElement(selector) {\r\n var _a = parseSimpleCssSelector(selector), tag = _a[0], attributes = _a[1];\r\n var element = document.createElement(tag !== null && tag !== void 0 ? tag : 'div');\r\n for (var _i = 0, _b = Object.keys(attributes); _i < _b.length; _i++) {\r\n var name_1 = _b[_i];\r\n var value = attributes[name_1].join(' ');\r\n // Changing the `style` attribute can cause a CSP error, therefore we change the `style.cssText` property.\r\n // https://github.com/fingerprintjs/fingerprintjs/issues/733\r\n if (name_1 === 'style') {\r\n addStyleString(element.style, value);\r\n }\r\n else {\r\n element.setAttribute(name_1, value);\r\n }\r\n }\r\n return element;\r\n }\r\n /**\r\n * Adds CSS styles from a string in such a way that doesn't trigger a CSP warning (unsafe-inline or unsafe-eval)\r\n */\r\n function addStyleString(style, source) {\r\n // We don't use `style.cssText` because browsers must block it when no `unsafe-eval` CSP is presented: https://csplite.com/csp145/#w3c_note\r\n // Even though the browsers ignore this standard, we don't use `cssText` just in case.\r\n for (var _i = 0, _a = source.split(';'); _i < _a.length; _i++) {\r\n var property = _a[_i];\r\n var match = /^\\s*([\\w-]+)\\s*:\\s*(.+?)(\\s*!([\\w-]+))?\\s*$/.exec(property);\r\n if (match) {\r\n var name_2 = match[1], value = match[2], priority = match[4];\r\n style.setProperty(name_2, value, priority || ''); // The last argument can't be undefined in IE11\r\n }\r\n }\r\n }\r\n /**\r\n * Returns true if the code runs in an iframe, and any parent page's origin doesn't match the current origin\r\n */\r\n function isAnyParentCrossOrigin() {\r\n var currentWindow = window;\r\n for (;;) {\r\n var parentWindow = currentWindow.parent;\r\n if (!parentWindow || parentWindow === currentWindow) {\r\n return false; // The top page is reached\r\n }\r\n try {\r\n if (parentWindow.location.origin !== currentWindow.location.origin) {\r\n return true;\r\n }\r\n }\r\n catch (error) {\r\n // The error is thrown when `origin` is accessed on `parentWindow.location` when the parent is cross-origin\r\n if (error instanceof Error && error.name === 'SecurityError') {\r\n return true;\r\n }\r\n throw error;\r\n }\r\n currentWindow = parentWindow;\r\n }\r\n }\r\n\r\n // We use m or w because these two characters take up the maximum width.\r\n // And we use a LLi so that the same matching fonts can get separated.\r\n var testString = 'mmMwWLliI0O&1';\r\n // We test using 48px font size, we may use any size. I guess larger the better.\r\n var textSize = '48px';\r\n // A font will be compared against all the three default fonts.\r\n // And if for any default fonts it doesn't match, then that font is available.\r\n var baseFonts = ['monospace', 'sans-serif', 'serif'];\r\n var fontList = [\r\n // This is android-specific font from \"Roboto\" family\r\n 'sans-serif-thin',\r\n 'ARNO PRO',\r\n 'Agency FB',\r\n 'Arabic Typesetting',\r\n 'Arial Unicode MS',\r\n 'AvantGarde Bk BT',\r\n 'BankGothic Md BT',\r\n 'Batang',\r\n 'Bitstream Vera Sans Mono',\r\n 'Calibri',\r\n 'Century',\r\n 'Century Gothic',\r\n 'Clarendon',\r\n 'EUROSTILE',\r\n 'Franklin Gothic',\r\n 'Futura Bk BT',\r\n 'Futura Md BT',\r\n 'GOTHAM',\r\n 'Gill Sans',\r\n 'HELV',\r\n 'Haettenschweiler',\r\n 'Helvetica Neue',\r\n 'Humanst521 BT',\r\n 'Leelawadee',\r\n 'Letter Gothic',\r\n 'Levenim MT',\r\n 'Lucida Bright',\r\n 'Lucida Sans',\r\n 'Menlo',\r\n 'MS Mincho',\r\n 'MS Outlook',\r\n 'MS Reference Specialty',\r\n 'MS UI Gothic',\r\n 'MT Extra',\r\n 'MYRIAD PRO',\r\n 'Marlett',\r\n 'Meiryo UI',\r\n 'Microsoft Uighur',\r\n 'Minion Pro',\r\n 'Monotype Corsiva',\r\n 'PMingLiU',\r\n 'Pristina',\r\n 'SCRIPTINA',\r\n 'Segoe UI Light',\r\n 'Serifa',\r\n 'SimHei',\r\n 'Small Fonts',\r\n 'Staccato222 BT',\r\n 'TRAJAN PRO',\r\n 'Univers CE 55 Medium',\r\n 'Vrinda',\r\n 'ZWAdobeF',\r\n ];\r\n // kudos to http://www.lalit.org/lab/javascript-css-font-detect/\r\n function getFonts() {\r\n var _this = this;\r\n // Running the script in an iframe makes it not affect the page look and not be affected by the page CSS. See:\r\n // https://github.com/fingerprintjs/fingerprintjs/issues/592\r\n // https://github.com/fingerprintjs/fingerprintjs/issues/628\r\n return withIframe(function (_, _a) {\r\n var document = _a.document;\r\n return __awaiter(_this, void 0, void 0, function () {\r\n var holder, spansContainer, defaultWidth, defaultHeight, createSpan, createSpanWithFonts, initializeBaseFontsSpans, initializeFontsSpans, isFontAvailable, baseFontsSpans, fontsSpans, index;\r\n return __generator(this, function (_b) {\r\n holder = document.body;\r\n holder.style.fontSize = textSize;\r\n spansContainer = document.createElement('div');\r\n spansContainer.style.setProperty('visibility', 'hidden', 'important');\r\n defaultWidth = {};\r\n defaultHeight = {};\r\n createSpan = function (fontFamily) {\r\n var span = document.createElement('span');\r\n var style = span.style;\r\n style.position = 'absolute';\r\n style.top = '0';\r\n style.left = '0';\r\n style.fontFamily = fontFamily;\r\n span.textContent = testString;\r\n spansContainer.appendChild(span);\r\n return span;\r\n };\r\n createSpanWithFonts = function (fontToDetect, baseFont) {\r\n return createSpan(\"'\".concat(fontToDetect, \"',\").concat(baseFont));\r\n };\r\n initializeBaseFontsSpans = function () {\r\n return baseFonts.map(createSpan);\r\n };\r\n initializeFontsSpans = function () {\r\n // Stores {fontName : [spans for that font]}\r\n var spans = {};\r\n var _loop_1 = function (font) {\r\n spans[font] = baseFonts.map(function (baseFont) { return createSpanWithFonts(font, baseFont); });\r\n };\r\n for (var _i = 0, fontList_1 = fontList; _i < fontList_1.length; _i++) {\r\n var font = fontList_1[_i];\r\n _loop_1(font);\r\n }\r\n return spans;\r\n };\r\n isFontAvailable = function (fontSpans) {\r\n return baseFonts.some(function (baseFont, baseFontIndex) {\r\n return fontSpans[baseFontIndex].offsetWidth !== defaultWidth[baseFont] ||\r\n fontSpans[baseFontIndex].offsetHeight !== defaultHeight[baseFont];\r\n });\r\n };\r\n baseFontsSpans = initializeBaseFontsSpans();\r\n fontsSpans = initializeFontsSpans();\r\n // add all the spans to the DOM\r\n holder.appendChild(spansContainer);\r\n // get the default width for the three base fonts\r\n for (index = 0; index < baseFonts.length; index++) {\r\n defaultWidth[baseFonts[index]] = baseFontsSpans[index].offsetWidth; // width for the default font\r\n defaultHeight[baseFonts[index]] = baseFontsSpans[index].offsetHeight; // height for the default font\r\n }\r\n // check available fonts\r\n return [2 /*return*/, fontList.filter(function (font) { return isFontAvailable(fontsSpans[font]); })];\r\n });\r\n });\r\n });\r\n }\r\n\r\n function getPlugins() {\r\n var rawPlugins = navigator.plugins;\r\n if (!rawPlugins) {\r\n return undefined;\r\n }\r\n var plugins = [];\r\n // Safari 10 doesn't support iterating navigator.plugins with for...of\r\n for (var i = 0; i < rawPlugins.length; ++i) {\r\n var plugin = rawPlugins[i];\r\n if (!plugin) {\r\n continue;\r\n }\r\n var mimeTypes = [];\r\n for (var j = 0; j < plugin.length; ++j) {\r\n var mimeType = plugin[j];\r\n mimeTypes.push({\r\n type: mimeType.type,\r\n suffixes: mimeType.suffixes,\r\n });\r\n }\r\n plugins.push({\r\n name: plugin.name,\r\n description: plugin.description,\r\n mimeTypes: mimeTypes,\r\n });\r\n }\r\n return plugins;\r\n }\r\n\r\n /**\r\n * @see https://www.browserleaks.com/canvas#how-does-it-work\r\n *\r\n * A version of the entropy source with stabilization to make it suitable for static fingerprinting.\r\n * Canvas image is noised in private mode of Safari 17, so image rendering is skipped in Safari 17.\r\n */\r\n function getCanvasFingerprint() {\r\n return getUnstableCanvasFingerprint(doesBrowserPerformAntifingerprinting());\r\n }\r\n /**\r\n * A version of the entropy source without stabilization.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function getUnstableCanvasFingerprint(skipImages) {\r\n var _a;\r\n var winding = false;\r\n var geometry;\r\n var text;\r\n var _b = makeCanvasContext(), canvas = _b[0], context = _b[1];\r\n if (!isSupported(canvas, context)) {\r\n geometry = text = \"unsupported\" /* ImageStatus.Unsupported */;\r\n }\r\n else {\r\n winding = doesSupportWinding(context);\r\n if (skipImages) {\r\n geometry = text = \"skipped\" /* ImageStatus.Skipped */;\r\n }\r\n else {\r\n _a = renderImages(canvas, context), geometry = _a[0], text = _a[1];\r\n }\r\n }\r\n return { winding: winding, geometry: geometry, text: text };\r\n }\r\n function makeCanvasContext() {\r\n var canvas = document.createElement('canvas');\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n return [canvas, canvas.getContext('2d')];\r\n }\r\n function isSupported(canvas, context) {\r\n return !!(context && canvas.toDataURL);\r\n }\r\n function doesSupportWinding(context) {\r\n // https://web.archive.org/web/20170825024655/http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\r\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/canvas/winding.js\r\n context.rect(0, 0, 10, 10);\r\n context.rect(2, 2, 6, 6);\r\n return !context.isPointInPath(5, 5, 'evenodd');\r\n }\r\n function renderImages(canvas, context) {\r\n renderTextImage(canvas, context);\r\n var textImage1 = canvasToString(canvas);\r\n var textImage2 = canvasToString(canvas); // It's slightly faster to double-encode the text image\r\n // Some browsers add a noise to the canvas: https://github.com/fingerprintjs/fingerprintjs/issues/791\r\n // The canvas is excluded from the fingerprint in this case\r\n if (textImage1 !== textImage2) {\r\n return [\"unstable\" /* ImageStatus.Unstable */, \"unstable\" /* ImageStatus.Unstable */];\r\n }\r\n // Text is unstable:\r\n // https://github.com/fingerprintjs/fingerprintjs/issues/583\r\n // https://github.com/fingerprintjs/fingerprintjs/issues/103\r\n // Therefore it's extracted into a separate image.\r\n renderGeometryImage(canvas, context);\r\n var geometryImage = canvasToString(canvas);\r\n return [geometryImage, textImage1];\r\n }\r\n function renderTextImage(canvas, context) {\r\n // Resizing the canvas cleans it\r\n canvas.width = 240;\r\n canvas.height = 60;\r\n context.textBaseline = 'alphabetic';\r\n context.fillStyle = '#f60';\r\n context.fillRect(100, 1, 62, 20);\r\n context.fillStyle = '#069';\r\n // It's important to use explicit built-in fonts in order to exclude the affect of font preferences\r\n // (there is a separate entropy source for them).\r\n context.font = '11pt \"Times New Roman\"';\r\n // The choice of emojis has a gigantic impact on rendering performance (especially in FF).\r\n // Some newer emojis cause it to slow down 50-200 times.\r\n // There must be no text to the right of the emoji, see https://github.com/fingerprintjs/fingerprintjs/issues/574\r\n // A bare emoji shouldn't be used because the canvas will change depending on the script encoding:\r\n // https://github.com/fingerprintjs/fingerprintjs/issues/66\r\n // Escape sequence shouldn't be used too because Terser will turn it into a bare unicode.\r\n var printedText = \"Cwm fjordbank gly \".concat(String.fromCharCode(55357, 56835) /* 😃 */);\r\n context.fillText(printedText, 2, 15);\r\n context.fillStyle = 'rgba(102, 204, 0, 0.2)';\r\n context.font = '18pt Arial';\r\n context.fillText(printedText, 4, 45);\r\n }\r\n function renderGeometryImage(canvas, context) {\r\n // Resizing the canvas cleans it\r\n canvas.width = 122;\r\n canvas.height = 110;\r\n // Canvas blending\r\n // https://web.archive.org/web/20170826194121/http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/\r\n // http://jsfiddle.net/NDYV8/16/\r\n context.globalCompositeOperation = 'multiply';\r\n for (var _i = 0, _a = [\r\n ['#f2f', 40, 40],\r\n ['#2ff', 80, 40],\r\n ['#ff2', 60, 80],\r\n ]; _i < _a.length; _i++) {\r\n var _b = _a[_i], color = _b[0], x = _b[1], y = _b[2];\r\n context.fillStyle = color;\r\n context.beginPath();\r\n context.arc(x, y, 40, 0, Math.PI * 2, true);\r\n context.closePath();\r\n context.fill();\r\n }\r\n // Canvas winding\r\n // https://web.archive.org/web/20130913061632/http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\r\n // http://jsfiddle.net/NDYV8/19/\r\n context.fillStyle = '#f9c';\r\n context.arc(60, 60, 60, 0, Math.PI * 2, true);\r\n context.arc(60, 60, 20, 0, Math.PI * 2, true);\r\n context.fill('evenodd');\r\n }\r\n function canvasToString(canvas) {\r\n return canvas.toDataURL();\r\n }\r\n /**\r\n * Checks if the current browser is known for applying anti-fingerprinting measures in all or some critical modes\r\n */\r\n function doesBrowserPerformAntifingerprinting() {\r\n // Safari 17\r\n return isWebKit() && isWebKit616OrNewer() && isSafariWebKit();\r\n }\r\n\r\n /**\r\n * This is a crude and primitive touch screen detection. It's not possible to currently reliably detect the availability\r\n * of a touch screen with a JS, without actually subscribing to a touch event.\r\n *\r\n * @see http://www.stucox.com/blog/you-cant-detect-a-touchscreen/\r\n * @see https://github.com/Modernizr/Modernizr/issues/548\r\n */\r\n function getTouchSupport() {\r\n var n = navigator;\r\n var maxTouchPoints = 0;\r\n var touchEvent;\r\n if (n.maxTouchPoints !== undefined) {\r\n maxTouchPoints = toInt(n.maxTouchPoints);\r\n }\r\n else if (n.msMaxTouchPoints !== undefined) {\r\n maxTouchPoints = n.msMaxTouchPoints;\r\n }\r\n try {\r\n document.createEvent('TouchEvent');\r\n touchEvent = true;\r\n }\r\n catch (_a) {\r\n touchEvent = false;\r\n }\r\n var touchStart = 'ontouchstart' in window;\r\n return {\r\n maxTouchPoints: maxTouchPoints,\r\n touchEvent: touchEvent,\r\n touchStart: touchStart,\r\n };\r\n }\r\n\r\n function getOsCpu() {\r\n return navigator.oscpu;\r\n }\r\n\r\n function getLanguages() {\r\n var n = navigator;\r\n var result = [];\r\n var language = n.language || n.userLanguage || n.browserLanguage || n.systemLanguage;\r\n if (language !== undefined) {\r\n result.push([language]);\r\n }\r\n if (Array.isArray(n.languages)) {\r\n // Starting from Chromium 86, there is only a single value in `navigator.language` in Incognito mode:\r\n // the value of `navigator.language`. Therefore the value is ignored in this browser.\r\n if (!(isChromium() && isChromium86OrNewer())) {\r\n result.push(n.languages);\r\n }\r\n }\r\n else if (typeof n.languages === 'string') {\r\n var languages = n.languages;\r\n if (languages) {\r\n result.push(languages.split(','));\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getColorDepth() {\r\n return window.screen.colorDepth;\r\n }\r\n\r\n function getDeviceMemory() {\r\n // `navigator.deviceMemory` is a string containing a number in some unidentified cases\r\n return replaceNaN(toFloat(navigator.deviceMemory), undefined);\r\n }\r\n\r\n /**\r\n * A version of the entropy source with stabilization to make it suitable for static fingerprinting.\r\n * The window resolution is always the document size in private mode of Safari 17,\r\n * so the window resolution is not used in Safari 17.\r\n */\r\n function getScreenResolution() {\r\n if (isWebKit() && isWebKit616OrNewer() && isSafariWebKit()) {\r\n return undefined;\r\n }\r\n return getUnstableScreenResolution();\r\n }\r\n /**\r\n * A version of the entropy source without stabilization.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function getUnstableScreenResolution() {\r\n var s = screen;\r\n // Some browsers return screen resolution as strings, e.g. \"1200\", instead of a number, e.g. 1200.\r\n // I suspect it's done by certain plugins that randomize browser properties to prevent fingerprinting.\r\n // Some browsers even return screen resolution as not numbers.\r\n var parseDimension = function (value) { return replaceNaN(toInt(value), null); };\r\n var dimensions = [parseDimension(s.width), parseDimension(s.height)];\r\n dimensions.sort().reverse();\r\n return dimensions;\r\n }\r\n\r\n var screenFrameCheckInterval = 2500;\r\n var roundingPrecision = 10;\r\n // The type is readonly to protect from unwanted mutations\r\n var screenFrameBackup;\r\n var screenFrameSizeTimeoutId;\r\n /**\r\n * Starts watching the screen frame size. When a non-zero size appears, the size is saved and the watch is stopped.\r\n * Later, when `getScreenFrame` runs, it will return the saved non-zero size if the current size is null.\r\n *\r\n * This trick is required to mitigate the fact that the screen frame turns null in some cases.\r\n * See more on this at https://github.com/fingerprintjs/fingerprintjs/issues/568\r\n */\r\n function watchScreenFrame() {\r\n if (screenFrameSizeTimeoutId !== undefined) {\r\n return;\r\n }\r\n var checkScreenFrame = function () {\r\n var frameSize = getCurrentScreenFrame();\r\n if (isFrameSizeNull(frameSize)) {\r\n screenFrameSizeTimeoutId = setTimeout(checkScreenFrame, screenFrameCheckInterval);\r\n }\r\n else {\r\n screenFrameBackup = frameSize;\r\n screenFrameSizeTimeoutId = undefined;\r\n }\r\n };\r\n checkScreenFrame();\r\n }\r\n /**\r\n * A version of the entropy source without stabilization.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function getUnstableScreenFrame() {\r\n var _this = this;\r\n watchScreenFrame();\r\n return function () { return __awaiter(_this, void 0, void 0, function () {\r\n var frameSize;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n frameSize = getCurrentScreenFrame();\r\n if (!isFrameSizeNull(frameSize)) return [3 /*break*/, 2];\r\n if (screenFrameBackup) {\r\n return [2 /*return*/, __spreadArray([], screenFrameBackup, true)];\r\n }\r\n if (!getFullscreenElement()) return [3 /*break*/, 2];\r\n // Some browsers set the screen frame to zero when programmatic fullscreen is on.\r\n // There is a chance of getting a non-zero frame after exiting the fullscreen.\r\n // See more on this at https://github.com/fingerprintjs/fingerprintjs/issues/568\r\n return [4 /*yield*/, exitFullscreen()];\r\n case 1:\r\n // Some browsers set the screen frame to zero when programmatic fullscreen is on.\r\n // There is a chance of getting a non-zero frame after exiting the fullscreen.\r\n // See more on this at https://github.com/fingerprintjs/fingerprintjs/issues/568\r\n _a.sent();\r\n frameSize = getCurrentScreenFrame();\r\n _a.label = 2;\r\n case 2:\r\n if (!isFrameSizeNull(frameSize)) {\r\n screenFrameBackup = frameSize;\r\n }\r\n return [2 /*return*/, frameSize];\r\n }\r\n });\r\n }); };\r\n }\r\n /**\r\n * A version of the entropy source with stabilization to make it suitable for static fingerprinting.\r\n *\r\n * Sometimes the available screen resolution changes a bit, e.g. 1900x1440 → 1900x1439. A possible reason: macOS Dock\r\n * shrinks to fit more icons when there is too little space. The rounding is used to mitigate the difference.\r\n *\r\n * The frame width is always 0 in private mode of Safari 17, so the frame is not used in Safari 17.\r\n */\r\n function getScreenFrame() {\r\n var _this = this;\r\n if (isWebKit() && isWebKit616OrNewer() && isSafariWebKit()) {\r\n return function () { return Promise.resolve(undefined); };\r\n }\r\n var screenFrameGetter = getUnstableScreenFrame();\r\n return function () { return __awaiter(_this, void 0, void 0, function () {\r\n var frameSize, processSize;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, screenFrameGetter()];\r\n case 1:\r\n frameSize = _a.sent();\r\n processSize = function (sideSize) { return (sideSize === null ? null : round(sideSize, roundingPrecision)); };\r\n // It might look like I don't know about `for` and `map`.\r\n // In fact, such code is used to avoid TypeScript issues without using `as`.\r\n return [2 /*return*/, [processSize(frameSize[0]), processSize(frameSize[1]), processSize(frameSize[2]), processSize(frameSize[3])]];\r\n }\r\n });\r\n }); };\r\n }\r\n function getCurrentScreenFrame() {\r\n var s = screen;\r\n // Some browsers return screen resolution as strings, e.g. \"1200\", instead of a number, e.g. 1200.\r\n // I suspect it's done by certain plugins that randomize browser properties to prevent fingerprinting.\r\n //\r\n // Some browsers (IE, Edge ≤18) don't provide `screen.availLeft` and `screen.availTop`. The property values are\r\n // replaced with 0 in such cases to not lose the entropy from `screen.availWidth` and `screen.availHeight`.\r\n return [\r\n replaceNaN(toFloat(s.availTop), null),\r\n replaceNaN(toFloat(s.width) - toFloat(s.availWidth) - replaceNaN(toFloat(s.availLeft), 0), null),\r\n replaceNaN(toFloat(s.height) - toFloat(s.availHeight) - replaceNaN(toFloat(s.availTop), 0), null),\r\n replaceNaN(toFloat(s.availLeft), null),\r\n ];\r\n }\r\n function isFrameSizeNull(frameSize) {\r\n for (var i = 0; i < 4; ++i) {\r\n if (frameSize[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n function getHardwareConcurrency() {\r\n // sometimes hardware concurrency is a string\r\n return replaceNaN(toInt(navigator.hardwareConcurrency), undefined);\r\n }\r\n\r\n function getTimezone() {\r\n var _a;\r\n var DateTimeFormat = (_a = window.Intl) === null || _a === void 0 ? void 0 : _a.DateTimeFormat;\r\n if (DateTimeFormat) {\r\n var timezone = new DateTimeFormat().resolvedOptions().timeZone;\r\n if (timezone) {\r\n return timezone;\r\n }\r\n }\r\n // For browsers that don't support timezone names\r\n // The minus is intentional because the JS offset is opposite to the real offset\r\n var offset = -getTimezoneOffset();\r\n return \"UTC\".concat(offset >= 0 ? '+' : '').concat(offset);\r\n }\r\n function getTimezoneOffset() {\r\n var currentYear = new Date().getFullYear();\r\n // The timezone offset may change over time due to daylight saving time (DST) shifts.\r\n // The non-DST timezone offset is used as the result timezone offset.\r\n // Since the DST season differs in the northern and the southern hemispheres,\r\n // both January and July timezones offsets are considered.\r\n return Math.max(\r\n // `getTimezoneOffset` returns a number as a string in some unidentified cases\r\n toFloat(new Date(currentYear, 0, 1).getTimezoneOffset()), toFloat(new Date(currentYear, 6, 1).getTimezoneOffset()));\r\n }\r\n\r\n function getSessionStorage() {\r\n try {\r\n return !!window.sessionStorage;\r\n }\r\n catch (error) {\r\n /* SecurityError when referencing it means it exists */\r\n return true;\r\n }\r\n }\r\n\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=781447\r\n function getLocalStorage() {\r\n try {\r\n return !!window.localStorage;\r\n }\r\n catch (e) {\r\n /* SecurityError when referencing it means it exists */\r\n return true;\r\n }\r\n }\r\n\r\n function getIndexedDB() {\r\n // IE and Edge don't allow accessing indexedDB in private mode, therefore IE and Edge will have different\r\n // visitor identifier in normal and private modes.\r\n if (isTrident() || isEdgeHTML()) {\r\n return undefined;\r\n }\r\n try {\r\n return !!window.indexedDB;\r\n }\r\n catch (e) {\r\n /* SecurityError when referencing it means it exists */\r\n return true;\r\n }\r\n }\r\n\r\n function getOpenDatabase() {\r\n return !!window.openDatabase;\r\n }\r\n\r\n function getCpuClass() {\r\n return navigator.cpuClass;\r\n }\r\n\r\n function getPlatform() {\r\n // Android Chrome 86 and 87 and Android Firefox 80 and 84 don't mock the platform value when desktop mode is requested\r\n var platform = navigator.platform;\r\n // iOS mocks the platform value when desktop version is requested: https://github.com/fingerprintjs/fingerprintjs/issues/514\r\n // iPad uses desktop mode by default since iOS 13\r\n // The value is 'MacIntel' on M1 Macs\r\n // The value is 'iPhone' on iPod Touch\r\n if (platform === 'MacIntel') {\r\n if (isWebKit() && !isDesktopWebKit()) {\r\n return isIPad() ? 'iPad' : 'iPhone';\r\n }\r\n }\r\n return platform;\r\n }\r\n\r\n function getVendor() {\r\n return navigator.vendor || '';\r\n }\r\n\r\n /**\r\n * Checks for browser-specific (not engine specific) global variables to tell browsers with the same engine apart.\r\n * Only somewhat popular browsers are considered.\r\n */\r\n function getVendorFlavors() {\r\n var flavors = [];\r\n for (var _i = 0, _a = [\r\n // Blink and some browsers on iOS\r\n 'chrome',\r\n // Safari on macOS\r\n 'safari',\r\n // Chrome on iOS (checked in 85 on 13 and 87 on 14)\r\n '__crWeb',\r\n '__gCrWeb',\r\n // Yandex Browser on iOS, macOS and Android (checked in 21.2 on iOS 14, macOS and Android)\r\n 'yandex',\r\n // Yandex Browser on iOS (checked in 21.2 on 14)\r\n '__yb',\r\n '__ybro',\r\n // Firefox on iOS (checked in 32 on 14)\r\n '__firefox__',\r\n // Edge on iOS (checked in 46 on 14)\r\n '__edgeTrackingPreventionStatistics',\r\n 'webkit',\r\n // Opera Touch on iOS (checked in 2.6 on 14)\r\n 'oprt',\r\n // Samsung Internet on Android (checked in 11.1)\r\n 'samsungAr',\r\n // UC Browser on Android (checked in 12.10 and 13.0)\r\n 'ucweb',\r\n 'UCShellJava',\r\n // Puffin on Android (checked in 9.0)\r\n 'puffinDevice',\r\n // UC on iOS and Opera on Android have no specific global variables\r\n // Edge for Android isn't checked\r\n ]; _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n var value = window[key];\r\n if (value && typeof value === 'object') {\r\n flavors.push(key);\r\n }\r\n }\r\n return flavors.sort();\r\n }\r\n\r\n /**\r\n * navigator.cookieEnabled cannot detect custom or nuanced cookie blocking configurations. For example, when blocking\r\n * cookies via the Advanced Privacy Settings in IE9, it always returns true. And there have been issues in the past with\r\n * site-specific exceptions. Don't rely on it.\r\n *\r\n * @see https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cookies.js Taken from here\r\n */\r\n function areCookiesEnabled() {\r\n var d = document;\r\n // Taken from here: https://github.com/Modernizr/Modernizr/blob/master/feature-detects/cookies.js\r\n // navigator.cookieEnabled cannot detect custom or nuanced cookie blocking configurations. For example, when blocking\r\n // cookies via the Advanced Privacy Settings in IE9, it always returns true. And there have been issues in the past\r\n // with site-specific exceptions. Don't rely on it.\r\n // try..catch because some in situations `document.cookie` is exposed but throws a\r\n // SecurityError if you try to access it; e.g. documents created from data URIs\r\n // or in sandboxed iframes (depending on flags/context)\r\n try {\r\n // Create cookie\r\n d.cookie = 'cookietest=1; SameSite=Strict;';\r\n var result = d.cookie.indexOf('cookietest=') !== -1;\r\n // Delete cookie\r\n d.cookie = 'cookietest=1; SameSite=Strict; expires=Thu, 01-Jan-1970 00:00:01 GMT';\r\n return result;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Only single element selector are supported (no operators like space, +, >, etc).\r\n * `embed` and `position: fixed;` will be considered as blocked anyway because it always has no offsetParent.\r\n * Avoid `iframe` and anything with `[src=]` because they produce excess HTTP requests.\r\n *\r\n * The \"inappropriate\" selectors are obfuscated. See https://github.com/fingerprintjs/fingerprintjs/issues/734.\r\n * A function is used instead of a plain object to help tree-shaking.\r\n *\r\n * The function code is generated automatically. See docs/content_blockers.md to learn how to make the list.\r\n */\r\n function getFilters() {\r\n var fromB64 = atob; // Just for better minification\r\n return {\r\n abpIndo: [\r\n '#Iklan-Melayang',\r\n '#Kolom-Iklan-728',\r\n '#SidebarIklan-wrapper',\r\n '[title=\"ALIENBOLA\" i]',\r\n fromB64('I0JveC1CYW5uZXItYWRz'),\r\n ],\r\n abpvn: ['.quangcao', '#mobileCatfish', fromB64('LmNsb3NlLWFkcw=='), '[id^=\"bn_bottom_fixed_\"]', '#pmadv'],\r\n adBlockFinland: [\r\n '.mainostila',\r\n fromB64('LnNwb25zb3JpdA=='),\r\n '.ylamainos',\r\n fromB64('YVtocmVmKj0iL2NsaWNrdGhyZ2guYXNwPyJd'),\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9hcHAucmVhZHBlYWsuY29tL2FkcyJd'),\r\n ],\r\n adBlockPersian: [\r\n '#navbar_notice_50',\r\n '.kadr',\r\n 'TABLE[width=\"140px\"]',\r\n '#divAgahi',\r\n fromB64('YVtocmVmXj0iaHR0cDovL2cxLnYuZndtcm0ubmV0L2FkLyJd'),\r\n ],\r\n adBlockWarningRemoval: [\r\n '#adblock-honeypot',\r\n '.adblocker-root',\r\n '.wp_adblock_detect',\r\n fromB64('LmhlYWRlci1ibG9ja2VkLWFk'),\r\n fromB64('I2FkX2Jsb2NrZXI='),\r\n ],\r\n adGuardAnnoyances: [\r\n '.hs-sosyal',\r\n '#cookieconsentdiv',\r\n 'div[class^=\"app_gdpr\"]',\r\n '.as-oil',\r\n '[data-cypress=\"soft-push-notification-modal\"]',\r\n ],\r\n adGuardBase: [\r\n '.BetterJsPopOverlay',\r\n fromB64('I2FkXzMwMFgyNTA='),\r\n fromB64('I2Jhbm5lcmZsb2F0MjI='),\r\n fromB64('I2NhbXBhaWduLWJhbm5lcg=='),\r\n fromB64('I0FkLUNvbnRlbnQ='),\r\n ],\r\n adGuardChinese: [\r\n fromB64('LlppX2FkX2FfSA=='),\r\n fromB64('YVtocmVmKj0iLmh0aGJldDM0LmNvbSJd'),\r\n '#widget-quan',\r\n fromB64('YVtocmVmKj0iLzg0OTkyMDIwLnh5eiJd'),\r\n fromB64('YVtocmVmKj0iLjE5NTZobC5jb20vIl0='),\r\n ],\r\n adGuardFrench: [\r\n '#pavePub',\r\n fromB64('LmFkLWRlc2t0b3AtcmVjdGFuZ2xl'),\r\n '.mobile_adhesion',\r\n '.widgetadv',\r\n fromB64('LmFkc19iYW4='),\r\n ],\r\n adGuardGerman: ['aside[data-portal-id=\"leaderboard\"]'],\r\n adGuardJapanese: [\r\n '#kauli_yad_1',\r\n fromB64('YVtocmVmXj0iaHR0cDovL2FkMi50cmFmZmljZ2F0ZS5uZXQvIl0='),\r\n fromB64('Ll9wb3BJbl9pbmZpbml0ZV9hZA=='),\r\n fromB64('LmFkZ29vZ2xl'),\r\n fromB64('Ll9faXNib29zdFJldHVybkFk'),\r\n ],\r\n adGuardMobile: [\r\n fromB64('YW1wLWF1dG8tYWRz'),\r\n fromB64('LmFtcF9hZA=='),\r\n 'amp-embed[type=\"24smi\"]',\r\n '#mgid_iframe1',\r\n fromB64('I2FkX2ludmlld19hcmVh'),\r\n ],\r\n adGuardRussian: [\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9hZC5sZXRtZWFkcy5jb20vIl0='),\r\n fromB64('LnJlY2xhbWE='),\r\n 'div[id^=\"smi2adblock\"]',\r\n fromB64('ZGl2W2lkXj0iQWRGb3hfYmFubmVyXyJd'),\r\n '#psyduckpockeball',\r\n ],\r\n adGuardSocial: [\r\n fromB64('YVtocmVmXj0iLy93d3cuc3R1bWJsZXVwb24uY29tL3N1Ym1pdD91cmw9Il0='),\r\n fromB64('YVtocmVmXj0iLy90ZWxlZ3JhbS5tZS9zaGFyZS91cmw/Il0='),\r\n '.etsy-tweet',\r\n '#inlineShare',\r\n '.popup-social',\r\n ],\r\n adGuardSpanishPortuguese: ['#barraPublicidade', '#Publicidade', '#publiEspecial', '#queTooltip', '.cnt-publi'],\r\n adGuardTrackingProtection: [\r\n '#qoo-counter',\r\n fromB64('YVtocmVmXj0iaHR0cDovL2NsaWNrLmhvdGxvZy5ydS8iXQ=='),\r\n fromB64('YVtocmVmXj0iaHR0cDovL2hpdGNvdW50ZXIucnUvdG9wL3N0YXQucGhwIl0='),\r\n fromB64('YVtocmVmXj0iaHR0cDovL3RvcC5tYWlsLnJ1L2p1bXAiXQ=='),\r\n '#top100counter',\r\n ],\r\n adGuardTurkish: [\r\n '#backkapat',\r\n fromB64('I3Jla2xhbWk='),\r\n fromB64('YVtocmVmXj0iaHR0cDovL2Fkc2Vydi5vbnRlay5jb20udHIvIl0='),\r\n fromB64('YVtocmVmXj0iaHR0cDovL2l6bGVuemkuY29tL2NhbXBhaWduLyJd'),\r\n fromB64('YVtocmVmXj0iaHR0cDovL3d3dy5pbnN0YWxsYWRzLm5ldC8iXQ=='),\r\n ],\r\n bulgarian: [fromB64('dGQjZnJlZW5ldF90YWJsZV9hZHM='), '#ea_intext_div', '.lapni-pop-over', '#xenium_hot_offers'],\r\n easyList: [\r\n '.yb-floorad',\r\n fromB64('LndpZGdldF9wb19hZHNfd2lkZ2V0'),\r\n fromB64('LnRyYWZmaWNqdW5reS1hZA=='),\r\n '.textad_headline',\r\n fromB64('LnNwb25zb3JlZC10ZXh0LWxpbmtz'),\r\n ],\r\n easyListChina: [\r\n fromB64('LmFwcGd1aWRlLXdyYXBbb25jbGljayo9ImJjZWJvcy5jb20iXQ=='),\r\n fromB64('LmZyb250cGFnZUFkdk0='),\r\n '#taotaole',\r\n '#aafoot.top_box',\r\n '.cfa_popup',\r\n ],\r\n easyListCookie: [\r\n '.ezmob-footer',\r\n '.cc-CookieWarning',\r\n '[data-cookie-number]',\r\n fromB64('LmF3LWNvb2tpZS1iYW5uZXI='),\r\n '.sygnal24-gdpr-modal-wrap',\r\n ],\r\n easyListCzechSlovak: [\r\n '#onlajny-stickers',\r\n fromB64('I3Jla2xhbW5pLWJveA=='),\r\n fromB64('LnJla2xhbWEtbWVnYWJvYXJk'),\r\n '.sklik',\r\n fromB64('W2lkXj0ic2tsaWtSZWtsYW1hIl0='),\r\n ],\r\n easyListDutch: [\r\n fromB64('I2FkdmVydGVudGll'),\r\n fromB64('I3ZpcEFkbWFya3RCYW5uZXJCbG9jaw=='),\r\n '.adstekst',\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly94bHR1YmUubmwvY2xpY2svIl0='),\r\n '#semilo-lrectangle',\r\n ],\r\n easyListGermany: [\r\n '#SSpotIMPopSlider',\r\n fromB64('LnNwb25zb3JsaW5rZ3J1ZW4='),\r\n fromB64('I3dlcmJ1bmdza3k='),\r\n fromB64('I3Jla2xhbWUtcmVjaHRzLW1pdHRl'),\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9iZDc0Mi5jb20vIl0='),\r\n ],\r\n easyListItaly: [\r\n fromB64('LmJveF9hZHZfYW5udW5jaQ=='),\r\n '.sb-box-pubbliredazionale',\r\n fromB64('YVtocmVmXj0iaHR0cDovL2FmZmlsaWF6aW9uaWFkcy5zbmFpLml0LyJd'),\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9hZHNlcnZlci5odG1sLml0LyJd'),\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9hZmZpbGlhemlvbmlhZHMuc25haS5pdC8iXQ=='),\r\n ],\r\n easyListLithuania: [\r\n fromB64('LnJla2xhbW9zX3RhcnBhcw=='),\r\n fromB64('LnJla2xhbW9zX251b3JvZG9z'),\r\n fromB64('aW1nW2FsdD0iUmVrbGFtaW5pcyBza3lkZWxpcyJd'),\r\n fromB64('aW1nW2FsdD0iRGVkaWt1b3RpLmx0IHNlcnZlcmlhaSJd'),\r\n fromB64('aW1nW2FsdD0iSG9zdGluZ2FzIFNlcnZlcmlhaS5sdCJd'),\r\n ],\r\n estonian: [fromB64('QVtocmVmKj0iaHR0cDovL3BheTRyZXN1bHRzMjQuZXUiXQ==')],\r\n fanboyAnnoyances: ['#ac-lre-player', '.navigate-to-top', '#subscribe_popup', '.newsletter_holder', '#back-top'],\r\n fanboyAntiFacebook: ['.util-bar-module-firefly-visible'],\r\n fanboyEnhancedTrackers: [\r\n '.open.pushModal',\r\n '#issuem-leaky-paywall-articles-zero-remaining-nag',\r\n '#sovrn_container',\r\n 'div[class$=\"-hide\"][zoompage-fontsize][style=\"display: block;\"]',\r\n '.BlockNag__Card',\r\n ],\r\n fanboySocial: ['#FollowUs', '#meteored_share', '#social_follow', '.article-sharer', '.community__social-desc'],\r\n frellwitSwedish: [\r\n fromB64('YVtocmVmKj0iY2FzaW5vcHJvLnNlIl1bdGFyZ2V0PSJfYmxhbmsiXQ=='),\r\n fromB64('YVtocmVmKj0iZG9rdG9yLXNlLm9uZWxpbmsubWUiXQ=='),\r\n 'article.category-samarbete',\r\n fromB64('ZGl2LmhvbGlkQWRz'),\r\n 'ul.adsmodern',\r\n ],\r\n greekAdBlock: [\r\n fromB64('QVtocmVmKj0iYWRtYW4ub3RlbmV0LmdyL2NsaWNrPyJd'),\r\n fromB64('QVtocmVmKj0iaHR0cDovL2F4aWFiYW5uZXJzLmV4b2R1cy5nci8iXQ=='),\r\n fromB64('QVtocmVmKj0iaHR0cDovL2ludGVyYWN0aXZlLmZvcnRobmV0LmdyL2NsaWNrPyJd'),\r\n 'DIV.agores300',\r\n 'TABLE.advright',\r\n ],\r\n hungarian: [\r\n '#cemp_doboz',\r\n '.optimonk-iframe-container',\r\n fromB64('LmFkX19tYWlu'),\r\n fromB64('W2NsYXNzKj0iR29vZ2xlQWRzIl0='),\r\n '#hirdetesek_box',\r\n ],\r\n iDontCareAboutCookies: [\r\n '.alert-info[data-block-track*=\"CookieNotice\"]',\r\n '.ModuleTemplateCookieIndicator',\r\n '.o--cookies--container',\r\n '#cookies-policy-sticky',\r\n '#stickyCookieBar',\r\n ],\r\n icelandicAbp: [fromB64('QVtocmVmXj0iL2ZyYW1ld29yay9yZXNvdXJjZXMvZm9ybXMvYWRzLmFzcHgiXQ==')],\r\n latvian: [\r\n fromB64('YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiAxMjBweDsgaGVpZ2h0O' +\r\n 'iA0MHB4OyBvdmVyZmxvdzogaGlkZGVuOyBwb3NpdGlvbjogcmVsYXRpdmU7Il0='),\r\n fromB64('YVtocmVmPSJodHRwOi8vd3d3LnNhbGlkemluaS5sdi8iXVtzdHlsZT0iZGlzcGxheTogYmxvY2s7IHdpZHRoOiA4OHB4OyBoZWlnaHQ6I' +\r\n 'DMxcHg7IG92ZXJmbG93OiBoaWRkZW47IHBvc2l0aW9uOiByZWxhdGl2ZTsiXQ=='),\r\n ],\r\n listKr: [\r\n fromB64('YVtocmVmKj0iLy9hZC5wbGFuYnBsdXMuY28ua3IvIl0='),\r\n fromB64('I2xpdmVyZUFkV3JhcHBlcg=='),\r\n fromB64('YVtocmVmKj0iLy9hZHYuaW1hZHJlcC5jby5rci8iXQ=='),\r\n fromB64('aW5zLmZhc3R2aWV3LWFk'),\r\n '.revenue_unit_item.dable',\r\n ],\r\n listeAr: [\r\n fromB64('LmdlbWluaUxCMUFk'),\r\n '.right-and-left-sponsers',\r\n fromB64('YVtocmVmKj0iLmFmbGFtLmluZm8iXQ=='),\r\n fromB64('YVtocmVmKj0iYm9vcmFxLm9yZyJd'),\r\n fromB64('YVtocmVmKj0iZHViaXp6bGUuY29tL2FyLz91dG1fc291cmNlPSJd'),\r\n ],\r\n listeFr: [\r\n fromB64('YVtocmVmXj0iaHR0cDovL3Byb21vLnZhZG9yLmNvbS8iXQ=='),\r\n fromB64('I2FkY29udGFpbmVyX3JlY2hlcmNoZQ=='),\r\n fromB64('YVtocmVmKj0id2Vib3JhbWEuZnIvZmNnaS1iaW4vIl0='),\r\n '.site-pub-interstitiel',\r\n 'div[id^=\"crt-\"][data-criteo-id]',\r\n ],\r\n officialPolish: [\r\n '#ceneo-placeholder-ceneo-12',\r\n fromB64('W2hyZWZePSJodHRwczovL2FmZi5zZW5kaHViLnBsLyJd'),\r\n fromB64('YVtocmVmXj0iaHR0cDovL2Fkdm1hbmFnZXIudGVjaGZ1bi5wbC9yZWRpcmVjdC8iXQ=='),\r\n fromB64('YVtocmVmXj0iaHR0cDovL3d3dy50cml6ZXIucGwvP3V0bV9zb3VyY2UiXQ=='),\r\n fromB64('ZGl2I3NrYXBpZWNfYWQ='),\r\n ],\r\n ro: [\r\n fromB64('YVtocmVmXj0iLy9hZmZ0cmsuYWx0ZXgucm8vQ291bnRlci9DbGljayJd'),\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9ibGFja2ZyaWRheXNhbGVzLnJvL3Ryay9zaG9wLyJd'),\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9ldmVudC4ycGVyZm9ybWFudC5jb20vZXZlbnRzL2NsaWNrIl0='),\r\n fromB64('YVtocmVmXj0iaHR0cHM6Ly9sLnByb2ZpdHNoYXJlLnJvLyJd'),\r\n 'a[href^=\"/url/\"]',\r\n ],\r\n ruAd: [\r\n fromB64('YVtocmVmKj0iLy9mZWJyYXJlLnJ1LyJd'),\r\n fromB64('YVtocmVmKj0iLy91dGltZy5ydS8iXQ=='),\r\n fromB64('YVtocmVmKj0iOi8vY2hpa2lkaWtpLnJ1Il0='),\r\n '#pgeldiz',\r\n '.yandex-rtb-block',\r\n ],\r\n thaiAds: [\r\n 'a[href*=macau-uta-popup]',\r\n fromB64('I2Fkcy1nb29nbGUtbWlkZGxlX3JlY3RhbmdsZS1ncm91cA=='),\r\n fromB64('LmFkczMwMHM='),\r\n '.bumq',\r\n '.img-kosana',\r\n ],\r\n webAnnoyancesUltralist: [\r\n '#mod-social-share-2',\r\n '#social-tools',\r\n fromB64('LmN0cGwtZnVsbGJhbm5lcg=='),\r\n '.zergnet-recommend',\r\n '.yt.btn-link.btn-md.btn',\r\n ],\r\n };\r\n }\r\n /**\r\n * The order of the returned array means nothing (it's always sorted alphabetically).\r\n *\r\n * Notice that the source is slightly unstable.\r\n * Safari provides a 2-taps way to disable all content blockers on a page temporarily.\r\n * Also content blockers can be disabled permanently for a domain, but it requires 4 taps.\r\n * So empty array shouldn't be treated as \"no blockers\", it should be treated as \"no signal\".\r\n * If you are a website owner, don't make your visitors want to disable content blockers.\r\n */\r\n function getDomBlockers(_a) {\r\n var _b = _a === void 0 ? {} : _a, debug = _b.debug;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var filters, filterNames, allSelectors, blockedSelectors, activeBlockers;\r\n var _c;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0:\r\n if (!isApplicable()) {\r\n return [2 /*return*/, undefined];\r\n }\r\n filters = getFilters();\r\n filterNames = Object.keys(filters);\r\n allSelectors = (_c = []).concat.apply(_c, filterNames.map(function (filterName) { return filters[filterName]; }));\r\n return [4 /*yield*/, getBlockedSelectors(allSelectors)];\r\n case 1:\r\n blockedSelectors = _d.sent();\r\n if (debug) {\r\n printDebug(filters, blockedSelectors);\r\n }\r\n activeBlockers = filterNames.filter(function (filterName) {\r\n var selectors = filters[filterName];\r\n var blockedCount = countTruthy(selectors.map(function (selector) { return blockedSelectors[selector]; }));\r\n return blockedCount > selectors.length * 0.6;\r\n });\r\n activeBlockers.sort();\r\n return [2 /*return*/, activeBlockers];\r\n }\r\n });\r\n });\r\n }\r\n function isApplicable() {\r\n // Safari (desktop and mobile) and all Android browsers keep content blockers in both regular and private mode\r\n return isWebKit() || isAndroid();\r\n }\r\n function getBlockedSelectors(selectors) {\r\n var _a;\r\n return __awaiter(this, void 0, void 0, function () {\r\n var d, root, elements, blockedSelectors, i, element, holder, i;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n d = document;\r\n root = d.createElement('div');\r\n elements = new Array(selectors.length);\r\n blockedSelectors = {} // Set() isn't used just in case somebody need older browser support\r\n ;\r\n forceShow(root);\r\n // First create all elements that can be blocked. If the DOM steps below are done in a single cycle,\r\n // browser will alternate tree modification and layout reading, that is very slow.\r\n for (i = 0; i < selectors.length; ++i) {\r\n element = selectorToElement(selectors[i]);\r\n if (element.tagName === 'DIALOG') {\r\n element.show();\r\n }\r\n holder = d.createElement('div') // Protects from unwanted effects of `+` and `~` selectors of filters\r\n ;\r\n forceShow(holder);\r\n holder.appendChild(element);\r\n root.appendChild(holder);\r\n elements[i] = element;\r\n }\r\n _b.label = 1;\r\n case 1:\r\n if (!!d.body) return [3 /*break*/, 3];\r\n return [4 /*yield*/, wait(50)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 1];\r\n case 3:\r\n d.body.appendChild(root);\r\n try {\r\n // Then check which of the elements are blocked\r\n for (i = 0; i < selectors.length; ++i) {\r\n if (!elements[i].offsetParent) {\r\n blockedSelectors[selectors[i]] = true;\r\n }\r\n }\r\n }\r\n finally {\r\n // Then remove the elements\r\n (_a = root.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(root);\r\n }\r\n return [2 /*return*/, blockedSelectors];\r\n }\r\n });\r\n });\r\n }\r\n function forceShow(element) {\r\n element.style.setProperty('visibility', 'hidden', 'important');\r\n element.style.setProperty('display', 'block', 'important');\r\n }\r\n function printDebug(filters, blockedSelectors) {\r\n var message = 'DOM blockers debug:\\n```';\r\n for (var _i = 0, _a = Object.keys(filters); _i < _a.length; _i++) {\r\n var filterName = _a[_i];\r\n message += \"\\n\".concat(filterName, \":\");\r\n for (var _b = 0, _c = filters[filterName]; _b < _c.length; _b++) {\r\n var selector = _c[_b];\r\n message += \"\\n \".concat(blockedSelectors[selector] ? '🚫' : '➡️', \" \").concat(selector);\r\n }\r\n }\r\n // console.log is ok here because it's under a debug clause\r\n // eslint-disable-next-line no-console\r\n console.log(\"\".concat(message, \"\\n```\"));\r\n }\r\n\r\n /**\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/color-gamut\r\n */\r\n function getColorGamut() {\r\n // rec2020 includes p3 and p3 includes srgb\r\n for (var _i = 0, _a = ['rec2020', 'p3', 'srgb']; _i < _a.length; _i++) {\r\n var gamut = _a[_i];\r\n if (matchMedia(\"(color-gamut: \".concat(gamut, \")\")).matches) {\r\n return gamut;\r\n }\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/inverted-colors\r\n */\r\n function areColorsInverted() {\r\n if (doesMatch$5('inverted')) {\r\n return true;\r\n }\r\n if (doesMatch$5('none')) {\r\n return false;\r\n }\r\n return undefined;\r\n }\r\n function doesMatch$5(value) {\r\n return matchMedia(\"(inverted-colors: \".concat(value, \")\")).matches;\r\n }\r\n\r\n /**\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/forced-colors\r\n */\r\n function areColorsForced() {\r\n if (doesMatch$4('active')) {\r\n return true;\r\n }\r\n if (doesMatch$4('none')) {\r\n return false;\r\n }\r\n return undefined;\r\n }\r\n function doesMatch$4(value) {\r\n return matchMedia(\"(forced-colors: \".concat(value, \")\")).matches;\r\n }\r\n\r\n var maxValueToCheck = 100;\r\n /**\r\n * If the display is monochrome (e.g. black&white), the value will be ≥0 and will mean the number of bits per pixel.\r\n * If the display is not monochrome, the returned value will be 0.\r\n * If the browser doesn't support this feature, the returned value will be undefined.\r\n *\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/monochrome\r\n */\r\n function getMonochromeDepth() {\r\n if (!matchMedia('(min-monochrome: 0)').matches) {\r\n // The media feature isn't supported by the browser\r\n return undefined;\r\n }\r\n // A variation of binary search algorithm can be used here.\r\n // But since expected values are very small (≤10), there is no sense in adding the complexity.\r\n for (var i = 0; i <= maxValueToCheck; ++i) {\r\n if (matchMedia(\"(max-monochrome: \".concat(i, \")\")).matches) {\r\n return i;\r\n }\r\n }\r\n throw new Error('Too high value');\r\n }\r\n\r\n /**\r\n * @see https://www.w3.org/TR/mediaqueries-5/#prefers-contrast\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-contrast\r\n */\r\n function getContrastPreference() {\r\n if (doesMatch$3('no-preference')) {\r\n return 0 /* ContrastPreference.None */;\r\n }\r\n // The sources contradict on the keywords. Probably 'high' and 'low' will never be implemented.\r\n // Need to check it when all browsers implement the feature.\r\n if (doesMatch$3('high') || doesMatch$3('more')) {\r\n return 1 /* ContrastPreference.More */;\r\n }\r\n if (doesMatch$3('low') || doesMatch$3('less')) {\r\n return -1 /* ContrastPreference.Less */;\r\n }\r\n if (doesMatch$3('forced')) {\r\n return 10 /* ContrastPreference.ForcedColors */;\r\n }\r\n return undefined;\r\n }\r\n function doesMatch$3(value) {\r\n return matchMedia(\"(prefers-contrast: \".concat(value, \")\")).matches;\r\n }\r\n\r\n /**\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion\r\n */\r\n function isMotionReduced() {\r\n if (doesMatch$2('reduce')) {\r\n return true;\r\n }\r\n if (doesMatch$2('no-preference')) {\r\n return false;\r\n }\r\n return undefined;\r\n }\r\n function doesMatch$2(value) {\r\n return matchMedia(\"(prefers-reduced-motion: \".concat(value, \")\")).matches;\r\n }\r\n\r\n /**\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-transparency\r\n */\r\n function isTransparencyReduced() {\r\n if (doesMatch$1('reduce')) {\r\n return true;\r\n }\r\n if (doesMatch$1('no-preference')) {\r\n return false;\r\n }\r\n return undefined;\r\n }\r\n function doesMatch$1(value) {\r\n return matchMedia(\"(prefers-reduced-transparency: \".concat(value, \")\")).matches;\r\n }\r\n\r\n /**\r\n * @see https://www.w3.org/TR/mediaqueries-5/#dynamic-range\r\n */\r\n function isHDR() {\r\n if (doesMatch('high')) {\r\n return true;\r\n }\r\n if (doesMatch('standard')) {\r\n return false;\r\n }\r\n return undefined;\r\n }\r\n function doesMatch(value) {\r\n return matchMedia(\"(dynamic-range: \".concat(value, \")\")).matches;\r\n }\r\n\r\n var M = Math; // To reduce the minified code size\r\n var fallbackFn = function () { return 0; };\r\n /**\r\n * @see https://gitlab.torproject.org/legacy/trac/-/issues/13018\r\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=531915\r\n */\r\n function getMathFingerprint() {\r\n // Native operations\r\n var acos = M.acos || fallbackFn;\r\n var acosh = M.acosh || fallbackFn;\r\n var asin = M.asin || fallbackFn;\r\n var asinh = M.asinh || fallbackFn;\r\n var atanh = M.atanh || fallbackFn;\r\n var atan = M.atan || fallbackFn;\r\n var sin = M.sin || fallbackFn;\r\n var sinh = M.sinh || fallbackFn;\r\n var cos = M.cos || fallbackFn;\r\n var cosh = M.cosh || fallbackFn;\r\n var tan = M.tan || fallbackFn;\r\n var tanh = M.tanh || fallbackFn;\r\n var exp = M.exp || fallbackFn;\r\n var expm1 = M.expm1 || fallbackFn;\r\n var log1p = M.log1p || fallbackFn;\r\n // Operation polyfills\r\n var powPI = function (value) { return M.pow(M.PI, value); };\r\n var acoshPf = function (value) { return M.log(value + M.sqrt(value * value - 1)); };\r\n var asinhPf = function (value) { return M.log(value + M.sqrt(value * value + 1)); };\r\n var atanhPf = function (value) { return M.log((1 + value) / (1 - value)) / 2; };\r\n var sinhPf = function (value) { return M.exp(value) - 1 / M.exp(value) / 2; };\r\n var coshPf = function (value) { return (M.exp(value) + 1 / M.exp(value)) / 2; };\r\n var expm1Pf = function (value) { return M.exp(value) - 1; };\r\n var tanhPf = function (value) { return (M.exp(2 * value) - 1) / (M.exp(2 * value) + 1); };\r\n var log1pPf = function (value) { return M.log(1 + value); };\r\n // Note: constant values are empirical\r\n return {\r\n acos: acos(0.123124234234234242),\r\n acosh: acosh(1e308),\r\n acoshPf: acoshPf(1e154),\r\n asin: asin(0.123124234234234242),\r\n asinh: asinh(1),\r\n asinhPf: asinhPf(1),\r\n atanh: atanh(0.5),\r\n atanhPf: atanhPf(0.5),\r\n atan: atan(0.5),\r\n sin: sin(-1e300),\r\n sinh: sinh(1),\r\n sinhPf: sinhPf(1),\r\n cos: cos(10.000000000123),\r\n cosh: cosh(1),\r\n coshPf: coshPf(1),\r\n tan: tan(-1e300),\r\n tanh: tanh(1),\r\n tanhPf: tanhPf(1),\r\n exp: exp(1),\r\n expm1: expm1(1),\r\n expm1Pf: expm1Pf(1),\r\n log1p: log1p(10),\r\n log1pPf: log1pPf(10),\r\n powPI: powPI(-100),\r\n };\r\n }\r\n\r\n /**\r\n * We use m or w because these two characters take up the maximum width.\r\n * Also there are a couple of ligatures.\r\n */\r\n var defaultText = 'mmMwWLliI0fiflO&1';\r\n /**\r\n * Settings of text blocks to measure. The keys are random but persistent words.\r\n */\r\n var presets = {\r\n /**\r\n * The default font. User can change it in desktop Chrome, desktop Firefox, IE 11,\r\n * Android Chrome (but only when the size is ≥ than the default) and Android Firefox.\r\n */\r\n default: [],\r\n /** OS font on macOS. User can change its size and weight. Applies after Safari restart. */\r\n apple: [{ font: '-apple-system-body' }],\r\n /** User can change it in desktop Chrome and desktop Firefox. */\r\n serif: [{ fontFamily: 'serif' }],\r\n /** User can change it in desktop Chrome and desktop Firefox. */\r\n sans: [{ fontFamily: 'sans-serif' }],\r\n /** User can change it in desktop Chrome and desktop Firefox. */\r\n mono: [{ fontFamily: 'monospace' }],\r\n /**\r\n * Check the smallest allowed font size. User can change it in desktop Chrome, desktop Firefox and desktop Safari.\r\n * The height can be 0 in Chrome on a retina display.\r\n */\r\n min: [{ fontSize: '1px' }],\r\n /** Tells one OS from another in desktop Chrome. */\r\n system: [{ fontFamily: 'system-ui' }],\r\n };\r\n /**\r\n * The result is a dictionary of the width of the text samples.\r\n * Heights aren't included because they give no extra entropy and are unstable.\r\n *\r\n * The result is very stable in IE 11, Edge 18 and Safari 14.\r\n * The result changes when the OS pixel density changes in Chromium 87. The real pixel density is required to solve,\r\n * but seems like it's impossible: https://stackoverflow.com/q/1713771/1118709.\r\n * The \"min\" and the \"mono\" (only on Windows) value may change when the page is zoomed in Firefox 87.\r\n */\r\n function getFontPreferences() {\r\n return withNaturalFonts(function (document, container) {\r\n var elements = {};\r\n var sizes = {};\r\n // First create all elements to measure. If the DOM steps below are done in a single cycle,\r\n // browser will alternate tree modification and layout reading, that is very slow.\r\n for (var _i = 0, _a = Object.keys(presets); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n var _b = presets[key], _c = _b[0], style = _c === void 0 ? {} : _c, _d = _b[1], text = _d === void 0 ? defaultText : _d;\r\n var element = document.createElement('span');\r\n element.textContent = text;\r\n element.style.whiteSpace = 'nowrap';\r\n for (var _e = 0, _f = Object.keys(style); _e < _f.length; _e++) {\r\n var name_1 = _f[_e];\r\n var value = style[name_1];\r\n if (value !== undefined) {\r\n element.style[name_1] = value;\r\n }\r\n }\r\n elements[key] = element;\r\n container.append(document.createElement('br'), element);\r\n }\r\n // Then measure the created elements\r\n for (var _g = 0, _h = Object.keys(presets); _g < _h.length; _g++) {\r\n var key = _h[_g];\r\n sizes[key] = elements[key].getBoundingClientRect().width;\r\n }\r\n return sizes;\r\n });\r\n }\r\n /**\r\n * Creates a DOM environment that provides the most natural font available, including Android OS font.\r\n * Measurements of the elements are zoom-independent.\r\n * Don't put a content to measure inside an absolutely positioned element.\r\n */\r\n function withNaturalFonts(action, containerWidthPx) {\r\n if (containerWidthPx === void 0) { containerWidthPx = 4000; }\r\n /*\r\n * Requirements for Android Chrome to apply the system font size to a text inside an iframe:\r\n * - The iframe mustn't have a `display: none;` style;\r\n * - The text mustn't be positioned absolutely;\r\n * - The text block must be wide enough.\r\n * 2560px on some devices in portrait orientation for the biggest font size option (32px);\r\n * - There must be much enough text to form a few lines (I don't know the exact numbers);\r\n * - The text must have the `text-size-adjust: none` style. Otherwise the text will scale in \"Desktop site\" mode;\r\n *\r\n * Requirements for Android Firefox to apply the system font size to a text inside an iframe:\r\n * - The iframe document must have a header: ``.\r\n * The only way to set it is to use the `srcdoc` attribute of the iframe;\r\n * - The iframe content must get loaded before adding extra content with JavaScript;\r\n *\r\n * https://example.com as the iframe target always inherits Android font settings so it can be used as a reference.\r\n *\r\n * Observations on how page zoom affects the measurements:\r\n * - macOS Safari 11.1, 12.1, 13.1, 14.0: zoom reset + offsetWidth = 100% reliable;\r\n * - macOS Safari 11.1, 12.1, 13.1, 14.0: zoom reset + getBoundingClientRect = 100% reliable;\r\n * - macOS Safari 14.0: offsetWidth = 5% fluctuation;\r\n * - macOS Safari 14.0: getBoundingClientRect = 5% fluctuation;\r\n * - iOS Safari 9, 10, 11.0, 12.0: haven't found a way to zoom a page (pinch doesn't change layout);\r\n * - iOS Safari 13.1, 14.0: zoom reset + offsetWidth = 100% reliable;\r\n * - iOS Safari 13.1, 14.0: zoom reset + getBoundingClientRect = 100% reliable;\r\n * - iOS Safari 14.0: offsetWidth = 100% reliable;\r\n * - iOS Safari 14.0: getBoundingClientRect = 100% reliable;\r\n * - Chrome 42, 65, 80, 87: zoom 1/devicePixelRatio + offsetWidth = 1px fluctuation;\r\n * - Chrome 42, 65, 80, 87: zoom 1/devicePixelRatio + getBoundingClientRect = 100% reliable;\r\n * - Chrome 87: offsetWidth = 1px fluctuation;\r\n * - Chrome 87: getBoundingClientRect = 0.7px fluctuation;\r\n * - Firefox 48, 51: offsetWidth = 10% fluctuation;\r\n * - Firefox 48, 51: getBoundingClientRect = 10% fluctuation;\r\n * - Firefox 52, 53, 57, 62, 66, 67, 68, 71, 75, 80, 84: offsetWidth = width 100% reliable, height 10% fluctuation;\r\n * - Firefox 52, 53, 57, 62, 66, 67, 68, 71, 75, 80, 84: getBoundingClientRect = width 100% reliable, height 10%\r\n * fluctuation;\r\n * - Android Chrome 86: haven't found a way to zoom a page (pinch doesn't change layout);\r\n * - Android Firefox 84: font size in accessibility settings changes all the CSS sizes, but offsetWidth and\r\n * getBoundingClientRect keep measuring with regular units, so the size reflects the font size setting and doesn't\r\n * fluctuate;\r\n * - IE 11, Edge 18: zoom 1/devicePixelRatio + offsetWidth = 100% reliable;\r\n * - IE 11, Edge 18: zoom 1/devicePixelRatio + getBoundingClientRect = reflects the zoom level;\r\n * - IE 11, Edge 18: offsetWidth = 100% reliable;\r\n * - IE 11, Edge 18: getBoundingClientRect = 100% reliable;\r\n */\r\n return withIframe(function (_, iframeWindow) {\r\n var iframeDocument = iframeWindow.document;\r\n var iframeBody = iframeDocument.body;\r\n var bodyStyle = iframeBody.style;\r\n bodyStyle.width = \"\".concat(containerWidthPx, \"px\");\r\n bodyStyle.webkitTextSizeAdjust = bodyStyle.textSizeAdjust = 'none';\r\n // See the big comment above\r\n if (isChromium()) {\r\n iframeBody.style.zoom = \"\".concat(1 / iframeWindow.devicePixelRatio);\r\n }\r\n else if (isWebKit()) {\r\n iframeBody.style.zoom = 'reset';\r\n }\r\n // See the big comment above\r\n var linesOfText = iframeDocument.createElement('div');\r\n linesOfText.textContent = __spreadArray([], Array((containerWidthPx / 20) << 0), true).map(function () { return 'word'; }).join(' ');\r\n iframeBody.appendChild(linesOfText);\r\n return action(iframeDocument, iframeBody);\r\n }, '');\r\n }\r\n\r\n function isPdfViewerEnabled() {\r\n return navigator.pdfViewerEnabled;\r\n }\r\n\r\n /**\r\n * Unlike most other architectures, on x86/x86-64 when floating-point instructions\r\n * have no NaN arguments, but produce NaN output, the output NaN has sign bit set.\r\n * We use it to distinguish x86/x86-64 from other architectures, by doing subtraction\r\n * of two infinities (must produce NaN per IEEE 754 standard).\r\n *\r\n * See https://codebrowser.bddppq.com/pytorch/pytorch/third_party/XNNPACK/src/init.c.html#79\r\n */\r\n function getArchitecture() {\r\n var f = new Float32Array(1);\r\n var u8 = new Uint8Array(f.buffer);\r\n f[0] = Infinity;\r\n f[0] = f[0] - f[0];\r\n return u8[3];\r\n }\r\n\r\n /**\r\n * The return type is a union instead of the enum, because it's too challenging to embed the const enum into another\r\n * project. Turning it into a union is a simple and an elegant solution.\r\n */\r\n function getApplePayState() {\r\n var ApplePaySession = window.ApplePaySession;\r\n if (typeof (ApplePaySession === null || ApplePaySession === void 0 ? void 0 : ApplePaySession.canMakePayments) !== 'function') {\r\n return -1 /* ApplePayState.NoAPI */;\r\n }\r\n if (willPrintConsoleError()) {\r\n return -3 /* ApplePayState.NotAvailableInFrame */;\r\n }\r\n try {\r\n return ApplePaySession.canMakePayments() ? 1 /* ApplePayState.Enabled */ : 0 /* ApplePayState.Disabled */;\r\n }\r\n catch (error) {\r\n return getStateFromError(error);\r\n }\r\n }\r\n /**\r\n * Starting from Safari 15 calling `ApplePaySession.canMakePayments()` produces this error message when FingerprintJS\r\n * runs in an iframe with a cross-origin parent page, and the iframe on that page has no allow=\"payment *\" attribute:\r\n * Feature policy 'Payment' check failed for element with origin 'https://example.com' and allow attribute ''.\r\n * This function checks whether the error message is expected.\r\n *\r\n * We check for cross-origin parents, which is prone to false-positive results. Instead, we should check for allowed\r\n * feature/permission, but we can't because none of these API works in Safari yet:\r\n * navigator.permissions.query({ name: ‘payment' })\r\n * navigator.permissions.query({ name: ‘payment-handler' })\r\n * document.featurePolicy\r\n */\r\n var willPrintConsoleError = isAnyParentCrossOrigin;\r\n function getStateFromError(error) {\r\n // See full expected error messages in the test\r\n if (error instanceof Error && error.name === 'InvalidAccessError' && /\\bfrom\\b.*\\binsecure\\b/i.test(error.message)) {\r\n return -2 /* ApplePayState.NotAvailableInInsecureContext */;\r\n }\r\n throw error;\r\n }\r\n\r\n /**\r\n * Checks whether the Safari's Privacy Preserving Ad Measurement setting is on.\r\n * The setting is on when the value is not undefined.\r\n * A.k.a. private click measurement, privacy-preserving ad attribution.\r\n *\r\n * Unfortunately, it doesn't work in mobile Safari.\r\n * Probably, it will start working in mobile Safari or stop working in desktop Safari later.\r\n * We've found no way to detect the setting state in mobile Safari. Help wanted.\r\n *\r\n * @see https://webkit.org/blog/11529/introducing-private-click-measurement-pcm/\r\n * @see https://developer.apple.com/videos/play/wwdc2021/10033\r\n */\r\n function getPrivateClickMeasurement() {\r\n var _a;\r\n var link = document.createElement('a');\r\n var sourceId = (_a = link.attributionSourceId) !== null && _a !== void 0 ? _a : link.attributionsourceid;\r\n return sourceId === undefined ? undefined : String(sourceId);\r\n }\r\n\r\n /** WebGl context is not available */\r\n var STATUS_NO_GL_CONTEXT = -1;\r\n /** WebGL context `getParameter` method is not a function */\r\n var STATUS_GET_PARAMETER_NOT_A_FUNCTION = -2;\r\n var validContextParameters = new Set([\r\n 10752, 2849, 2884, 2885, 2886, 2928, 2929, 2930, 2931, 2932, 2960, 2961, 2962, 2963, 2964, 2965, 2966, 2967, 2968,\r\n 2978, 3024, 3042, 3088, 3089, 3106, 3107, 32773, 32777, 32777, 32823, 32824, 32936, 32937, 32938, 32939, 32968, 32969,\r\n 32970, 32971, 3317, 33170, 3333, 3379, 3386, 33901, 33902, 34016, 34024, 34076, 3408, 3410, 3411, 3412, 3413, 3414,\r\n 3415, 34467, 34816, 34817, 34818, 34819, 34877, 34921, 34930, 35660, 35661, 35724, 35738, 35739, 36003, 36004, 36005,\r\n 36347, 36348, 36349, 37440, 37441, 37443, 7936, 7937, 7938,\r\n // SAMPLE_ALPHA_TO_COVERAGE (32926) and SAMPLE_COVERAGE (32928) are excluded because they trigger a console warning\r\n // in IE, Chrome ≤ 59 and Safari ≤ 13 and give no entropy.\r\n ]);\r\n var validExtensionParams = new Set([\r\n 34047,\r\n 35723,\r\n 36063,\r\n 34852,\r\n 34853,\r\n 34854,\r\n 34229,\r\n 36392,\r\n 36795,\r\n 38449, // MAX_VIEWS_OVR\r\n ]);\r\n var shaderTypes = ['FRAGMENT_SHADER', 'VERTEX_SHADER'];\r\n var precisionTypes = ['LOW_FLOAT', 'MEDIUM_FLOAT', 'HIGH_FLOAT', 'LOW_INT', 'MEDIUM_INT', 'HIGH_INT'];\r\n var rendererInfoExtensionName = 'WEBGL_debug_renderer_info';\r\n var polygonModeExtensionName = 'WEBGL_polygon_mode';\r\n /**\r\n * Gets the basic and simple WebGL parameters\r\n */\r\n function getWebGlBasics(_a) {\r\n var _b, _c, _d, _e, _f, _g;\r\n var cache = _a.cache;\r\n var gl = getWebGLContext(cache);\r\n if (!gl) {\r\n return STATUS_NO_GL_CONTEXT;\r\n }\r\n if (!isValidParameterGetter(gl)) {\r\n return STATUS_GET_PARAMETER_NOT_A_FUNCTION;\r\n }\r\n var debugExtension = shouldAvoidDebugRendererInfo() ? null : gl.getExtension(rendererInfoExtensionName);\r\n return {\r\n version: ((_b = gl.getParameter(gl.VERSION)) === null || _b === void 0 ? void 0 : _b.toString()) || '',\r\n vendor: ((_c = gl.getParameter(gl.VENDOR)) === null || _c === void 0 ? void 0 : _c.toString()) || '',\r\n vendorUnmasked: debugExtension ? (_d = gl.getParameter(debugExtension.UNMASKED_VENDOR_WEBGL)) === null || _d === void 0 ? void 0 : _d.toString() : '',\r\n renderer: ((_e = gl.getParameter(gl.RENDERER)) === null || _e === void 0 ? void 0 : _e.toString()) || '',\r\n rendererUnmasked: debugExtension ? (_f = gl.getParameter(debugExtension.UNMASKED_RENDERER_WEBGL)) === null || _f === void 0 ? void 0 : _f.toString() : '',\r\n shadingLanguageVersion: ((_g = gl.getParameter(gl.SHADING_LANGUAGE_VERSION)) === null || _g === void 0 ? void 0 : _g.toString()) || '',\r\n };\r\n }\r\n /**\r\n * Gets the advanced and massive WebGL parameters and extensions\r\n */\r\n function getWebGlExtensions(_a) {\r\n var cache = _a.cache;\r\n var gl = getWebGLContext(cache);\r\n if (!gl) {\r\n return STATUS_NO_GL_CONTEXT;\r\n }\r\n if (!isValidParameterGetter(gl)) {\r\n return STATUS_GET_PARAMETER_NOT_A_FUNCTION;\r\n }\r\n var extensions = gl.getSupportedExtensions();\r\n var contextAttributes = gl.getContextAttributes();\r\n var unsupportedExtensions = [];\r\n // Features\r\n var attributes = [];\r\n var parameters = [];\r\n var extensionParameters = [];\r\n var shaderPrecisions = [];\r\n // Context attributes\r\n if (contextAttributes) {\r\n for (var _i = 0, _b = Object.keys(contextAttributes); _i < _b.length; _i++) {\r\n var attributeName = _b[_i];\r\n attributes.push(\"\".concat(attributeName, \"=\").concat(contextAttributes[attributeName]));\r\n }\r\n }\r\n // Context parameters\r\n var constants = getConstantsFromPrototype(gl);\r\n for (var _c = 0, constants_1 = constants; _c < constants_1.length; _c++) {\r\n var constant = constants_1[_c];\r\n var code = gl[constant];\r\n parameters.push(\"\".concat(constant, \"=\").concat(code).concat(validContextParameters.has(code) ? \"=\".concat(gl.getParameter(code)) : ''));\r\n }\r\n // Extension parameters\r\n if (extensions) {\r\n for (var _d = 0, extensions_1 = extensions; _d < extensions_1.length; _d++) {\r\n var name_1 = extensions_1[_d];\r\n if ((name_1 === rendererInfoExtensionName && shouldAvoidDebugRendererInfo()) ||\r\n (name_1 === polygonModeExtensionName && shouldAvoidPolygonModeExtensions())) {\r\n continue;\r\n }\r\n var extension = gl.getExtension(name_1);\r\n if (!extension) {\r\n unsupportedExtensions.push(name_1);\r\n continue;\r\n }\r\n for (var _e = 0, _f = getConstantsFromPrototype(extension); _e < _f.length; _e++) {\r\n var constant = _f[_e];\r\n var code = extension[constant];\r\n extensionParameters.push(\"\".concat(constant, \"=\").concat(code).concat(validExtensionParams.has(code) ? \"=\".concat(gl.getParameter(code)) : ''));\r\n }\r\n }\r\n }\r\n // Shader precision\r\n for (var _g = 0, shaderTypes_1 = shaderTypes; _g < shaderTypes_1.length; _g++) {\r\n var shaderType = shaderTypes_1[_g];\r\n for (var _h = 0, precisionTypes_1 = precisionTypes; _h < precisionTypes_1.length; _h++) {\r\n var precisionType = precisionTypes_1[_h];\r\n var shaderPrecision = getShaderPrecision(gl, shaderType, precisionType);\r\n shaderPrecisions.push(\"\".concat(shaderType, \".\").concat(precisionType, \"=\").concat(shaderPrecision.join(',')));\r\n }\r\n }\r\n // Postprocess\r\n extensionParameters.sort();\r\n parameters.sort();\r\n return {\r\n contextAttributes: attributes,\r\n parameters: parameters,\r\n shaderPrecisions: shaderPrecisions,\r\n extensions: extensions,\r\n extensionParameters: extensionParameters,\r\n unsupportedExtensions: unsupportedExtensions,\r\n };\r\n }\r\n /**\r\n * This function usually takes the most time to execute in all the sources, therefore we cache its result.\r\n *\r\n * Warning for package users:\r\n * This function is out of Semantic Versioning, i.e. can change unexpectedly. Usage is at your own risk.\r\n */\r\n function getWebGLContext(cache) {\r\n if (cache.webgl) {\r\n return cache.webgl.context;\r\n }\r\n var canvas = document.createElement('canvas');\r\n var context;\r\n canvas.addEventListener('webglCreateContextError', function () { return (context = undefined); });\r\n for (var _i = 0, _a = ['webgl', 'experimental-webgl']; _i < _a.length; _i++) {\r\n var type = _a[_i];\r\n try {\r\n context = canvas.getContext(type);\r\n }\r\n catch (_b) {\r\n // Ok, continue\r\n }\r\n if (context) {\r\n break;\r\n }\r\n }\r\n cache.webgl = { context: context };\r\n return context;\r\n }\r\n /**\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat\r\n * https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getShaderPrecisionFormat\r\n * https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.12\r\n */\r\n function getShaderPrecision(gl, shaderType, precisionType) {\r\n var shaderPrecision = gl.getShaderPrecisionFormat(gl[shaderType], gl[precisionType]);\r\n return shaderPrecision ? [shaderPrecision.rangeMin, shaderPrecision.rangeMax, shaderPrecision.precision] : [];\r\n }\r\n function getConstantsFromPrototype(obj) {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n var keys = Object.keys(obj.__proto__);\r\n return keys.filter(isConstantLike);\r\n }\r\n function isConstantLike(key) {\r\n return typeof key === 'string' && !key.match(/[^A-Z0-9_x]/);\r\n }\r\n /**\r\n * Some browsers print a console warning when the WEBGL_debug_renderer_info extension is requested.\r\n * JS Agent aims to avoid printing messages to console, so we avoid this extension in that browsers.\r\n */\r\n function shouldAvoidDebugRendererInfo() {\r\n return isGecko();\r\n }\r\n /**\r\n * Some browsers print a console warning when the WEBGL_polygon_mode extension is requested.\r\n * JS Agent aims to avoid printing messages to console, so we avoid this extension in that browsers.\r\n */\r\n function shouldAvoidPolygonModeExtensions() {\r\n return isChromium() || isWebKit();\r\n }\r\n /**\r\n * Some unknown browsers have no `getParameter` method\r\n */\r\n function isValidParameterGetter(gl) {\r\n return typeof gl.getParameter === 'function';\r\n }\r\n\r\n function getAudioContextBaseLatency() {\r\n var _a;\r\n // The signal emits warning in Chrome and Firefox, therefore it is enabled on Safari where it doesn't produce warning\r\n // and on Android where it's less visible\r\n var isAllowedPlatform = isAndroid() || isWebKit();\r\n if (!isAllowedPlatform) {\r\n return -2 /* SpecialFingerprint.Disabled */;\r\n }\r\n if (!window.AudioContext) {\r\n return -1 /* SpecialFingerprint.NotSupported */;\r\n }\r\n return (_a = new AudioContext().baseLatency) !== null && _a !== void 0 ? _a : -1 /* SpecialFingerprint.NotSupported */;\r\n }\r\n\r\n /**\r\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions\r\n *\r\n * The return type is a union instead of a const enum due to the difficulty of embedding const enums in other projects.\r\n * This makes integration simpler and more elegant.\r\n */\r\n function getDateTimeLocale() {\r\n if (!window.Intl) {\r\n return -1 /* Status.IntlAPINotSupported */;\r\n }\r\n var DateTimeFormat = window.Intl.DateTimeFormat;\r\n if (!DateTimeFormat) {\r\n return -2 /* Status.DateTimeFormatNotSupported */;\r\n }\r\n var locale = DateTimeFormat().resolvedOptions().locale;\r\n if (!locale && locale !== '') {\r\n return -3 /* Status.LocaleNotAvailable */;\r\n }\r\n return locale;\r\n }\r\n\r\n /**\r\n * The list of entropy sources used to make visitor identifiers.\r\n *\r\n * This value isn't restricted by Semantic Versioning, i.e. it may be changed without bumping minor or major version of\r\n * this package.\r\n *\r\n * Note: Rollup and Webpack are smart enough to remove unused properties of this object during tree-shaking, so there is\r\n * no need to export the sources individually.\r\n */\r\n var sources = {\r\n // READ FIRST:\r\n // See https://github.com/fingerprintjs/fingerprintjs/blob/master/contributing.md#how-to-add-an-entropy-source\r\n // to learn how entropy source works and how to make your own.\r\n // The sources run in this exact order.\r\n // The asynchronous sources are at the start to run in parallel with other sources.\r\n fonts: getFonts,\r\n domBlockers: getDomBlockers,\r\n fontPreferences: getFontPreferences,\r\n audio: getAudioFingerprint,\r\n screenFrame: getScreenFrame,\r\n canvas: getCanvasFingerprint,\r\n osCpu: getOsCpu,\r\n languages: getLanguages,\r\n colorDepth: getColorDepth,\r\n deviceMemory: getDeviceMemory,\r\n screenResolution: getScreenResolution,\r\n hardwareConcurrency: getHardwareConcurrency,\r\n timezone: getTimezone,\r\n sessionStorage: getSessionStorage,\r\n localStorage: getLocalStorage,\r\n indexedDB: getIndexedDB,\r\n openDatabase: getOpenDatabase,\r\n cpuClass: getCpuClass,\r\n platform: getPlatform,\r\n plugins: getPlugins,\r\n touchSupport: getTouchSupport,\r\n vendor: getVendor,\r\n vendorFlavors: getVendorFlavors,\r\n cookiesEnabled: areCookiesEnabled,\r\n colorGamut: getColorGamut,\r\n invertedColors: areColorsInverted,\r\n forcedColors: areColorsForced,\r\n monochrome: getMonochromeDepth,\r\n contrast: getContrastPreference,\r\n reducedMotion: isMotionReduced,\r\n reducedTransparency: isTransparencyReduced,\r\n hdr: isHDR,\r\n math: getMathFingerprint,\r\n pdfViewerEnabled: isPdfViewerEnabled,\r\n architecture: getArchitecture,\r\n applePay: getApplePayState,\r\n privateClickMeasurement: getPrivateClickMeasurement,\r\n audioBaseLatency: getAudioContextBaseLatency,\r\n dateTimeLocale: getDateTimeLocale,\r\n // Some sources can affect other sources (e.g. WebGL can affect canvas), so it's important to run these sources\r\n // after other sources.\r\n webGlBasics: getWebGlBasics,\r\n webGlExtensions: getWebGlExtensions,\r\n };\r\n /**\r\n * Loads the built-in entropy sources.\r\n * Returns a function that collects the entropy components to make the visitor identifier.\r\n */\r\n function loadBuiltinSources(options) {\r\n return loadSources(sources, options, []);\r\n }\r\n\r\n var commentTemplate = '$ if upgrade to Pro: https://fpjs.dev/pro';\r\n function getConfidence(components) {\r\n var openConfidenceScore = getOpenConfidenceScore(components);\r\n var proConfidenceScore = deriveProConfidenceScore(openConfidenceScore);\r\n return { score: openConfidenceScore, comment: commentTemplate.replace(/\\$/g, \"\".concat(proConfidenceScore)) };\r\n }\r\n function getOpenConfidenceScore(components) {\r\n // In order to calculate the true probability of the visitor identifier being correct, we need to know the number of\r\n // website visitors (the higher the number, the less the probability because the fingerprint entropy is limited).\r\n // JS agent doesn't know the number of visitors, so we can only do an approximate assessment.\r\n if (isAndroid()) {\r\n return 0.4;\r\n }\r\n // Safari (mobile and desktop)\r\n if (isWebKit()) {\r\n return isDesktopWebKit() && !(isWebKit616OrNewer() && isSafariWebKit()) ? 0.5 : 0.3;\r\n }\r\n var platform = 'value' in components.platform ? components.platform.value : '';\r\n // Windows\r\n if (/^Win/.test(platform)) {\r\n // The score is greater than on macOS because of the higher variety of devices running Windows.\r\n // Chrome provides more entropy than Firefox according too\r\n // https://netmarketshare.com/browser-market-share.aspx?options=%7B%22filter%22%3A%7B%22%24and%22%3A%5B%7B%22platform%22%3A%7B%22%24in%22%3A%5B%22Windows%22%5D%7D%7D%5D%7D%2C%22dateLabel%22%3A%22Trend%22%2C%22attributes%22%3A%22share%22%2C%22group%22%3A%22browser%22%2C%22sort%22%3A%7B%22share%22%3A-1%7D%2C%22id%22%3A%22browsersDesktop%22%2C%22dateInterval%22%3A%22Monthly%22%2C%22dateStart%22%3A%222019-11%22%2C%22dateEnd%22%3A%222020-10%22%2C%22segments%22%3A%22-1000%22%7D\r\n // So we assign the same score to them.\r\n return 0.6;\r\n }\r\n // macOS\r\n if (/^Mac/.test(platform)) {\r\n // Chrome provides more entropy than Safari and Safari provides more entropy than Firefox.\r\n // Chrome is more popular than Safari and Safari is more popular than Firefox according to\r\n // https://netmarketshare.com/browser-market-share.aspx?options=%7B%22filter%22%3A%7B%22%24and%22%3A%5B%7B%22platform%22%3A%7B%22%24in%22%3A%5B%22Mac%20OS%22%5D%7D%7D%5D%7D%2C%22dateLabel%22%3A%22Trend%22%2C%22attributes%22%3A%22share%22%2C%22group%22%3A%22browser%22%2C%22sort%22%3A%7B%22share%22%3A-1%7D%2C%22id%22%3A%22browsersDesktop%22%2C%22dateInterval%22%3A%22Monthly%22%2C%22dateStart%22%3A%222019-11%22%2C%22dateEnd%22%3A%222020-10%22%2C%22segments%22%3A%22-1000%22%7D\r\n // So we assign the same score to them.\r\n return 0.5;\r\n }\r\n // Another platform, e.g. a desktop Linux. It's rare, so it should be pretty unique.\r\n return 0.7;\r\n }\r\n function deriveProConfidenceScore(openConfidenceScore) {\r\n return round(0.99 + 0.01 * openConfidenceScore, 0.0001);\r\n }\r\n\r\n function componentsToCanonicalString(components) {\r\n var result = '';\r\n for (var _i = 0, _a = Object.keys(components).sort(); _i < _a.length; _i++) {\r\n var componentKey = _a[_i];\r\n var component = components[componentKey];\r\n var value = 'error' in component ? 'error' : JSON.stringify(component.value);\r\n result += \"\".concat(result ? '|' : '').concat(componentKey.replace(/([:|\\\\])/g, '\\\\$1'), \":\").concat(value);\r\n }\r\n return result;\r\n }\r\n function componentsToDebugString(components) {\r\n return JSON.stringify(components, function (_key, value) {\r\n if (value instanceof Error) {\r\n return errorToObject(value);\r\n }\r\n return value;\r\n }, 2);\r\n }\r\n function hashComponents(components) {\r\n return x64hash128(componentsToCanonicalString(components));\r\n }\r\n /**\r\n * Makes a GetResult implementation that calculates the visitor id hash on demand.\r\n * Designed for optimisation.\r\n */\r\n function makeLazyGetResult(components) {\r\n var visitorIdCache;\r\n // This function runs very fast, so there is no need to make it lazy\r\n var confidence = getConfidence(components);\r\n // A plain class isn't used because its getters and setters aren't enumerable.\r\n return {\r\n get visitorId() {\r\n if (visitorIdCache === undefined) {\r\n visitorIdCache = hashComponents(this.components);\r\n }\r\n return visitorIdCache;\r\n },\r\n set visitorId(visitorId) {\r\n visitorIdCache = visitorId;\r\n },\r\n confidence: confidence,\r\n components: components,\r\n version: version,\r\n };\r\n }\r\n /**\r\n * A delay is required to ensure consistent entropy components.\r\n * See https://github.com/fingerprintjs/fingerprintjs/issues/254\r\n * and https://github.com/fingerprintjs/fingerprintjs/issues/307\r\n * and https://github.com/fingerprintjs/fingerprintjs/commit/945633e7c5f67ae38eb0fea37349712f0e669b18\r\n */\r\n function prepareForSources(delayFallback) {\r\n if (delayFallback === void 0) { delayFallback = 50; }\r\n // A proper deadline is unknown. Let it be twice the fallback timeout so that both cases have the same average time.\r\n return requestIdleCallbackIfAvailable(delayFallback, delayFallback * 2);\r\n }\r\n /**\r\n * The function isn't exported from the index file to not allow to call it without `load()`.\r\n * The hiding gives more freedom for future non-breaking updates.\r\n *\r\n * A factory function is used instead of a class to shorten the attribute names in the minified code.\r\n * Native private class fields could've been used, but TypeScript doesn't allow them with `\"target\": \"es5\"`.\r\n */\r\n function makeAgent(getComponents, debug) {\r\n var creationTime = Date.now();\r\n return {\r\n get: function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var startTime, components, result;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n startTime = Date.now();\r\n return [4 /*yield*/, getComponents()];\r\n case 1:\r\n components = _a.sent();\r\n result = makeLazyGetResult(components);\r\n if (debug || (options === null || options === void 0 ? void 0 : options.debug)) {\r\n // console.log is ok here because it's under a debug clause\r\n // eslint-disable-next-line no-console\r\n console.log(\"Copy the text below to get the debug data:\\n\\n```\\nversion: \".concat(result.version, \"\\nuserAgent: \").concat(navigator.userAgent, \"\\ntimeBetweenLoadAndGet: \").concat(startTime - creationTime, \"\\nvisitorId: \").concat(result.visitorId, \"\\ncomponents: \").concat(componentsToDebugString(components), \"\\n```\"));\r\n }\r\n return [2 /*return*/, result];\r\n }\r\n });\r\n });\r\n },\r\n };\r\n }\r\n /**\r\n * Sends an unpersonalized AJAX request to collect installation statistics\r\n */\r\n function monitor() {\r\n // The FingerprintJS CDN (https://github.com/fingerprintjs/cdn) replaces `window.__fpjs_d_m` with `true`\r\n if (window.__fpjs_d_m || Math.random() >= 0.001) {\r\n return;\r\n }\r\n try {\r\n var request = new XMLHttpRequest();\r\n request.open('get', \"https://m1.openfpcdn.io/fingerprintjs/v\".concat(version, \"/npm-monitoring\"), true);\r\n request.send();\r\n }\r\n catch (error) {\r\n // console.error is ok here because it's an unexpected error handler\r\n // eslint-disable-next-line no-console\r\n console.error(error);\r\n }\r\n }\r\n /**\r\n * Builds an instance of Agent and waits a delay required for a proper operation.\r\n */\r\n function load(options) {\r\n var _a;\r\n if (options === void 0) { options = {}; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var delayFallback, debug, getComponents;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if ((_a = options.monitoring) !== null && _a !== void 0 ? _a : true) {\r\n monitor();\r\n }\r\n delayFallback = options.delayFallback, debug = options.debug;\r\n return [4 /*yield*/, prepareForSources(delayFallback)];\r\n case 1:\r\n _b.sent();\r\n getComponents = loadBuiltinSources({ cache: {}, debug: debug });\r\n return [2 /*return*/, makeAgent(getComponents, debug)];\r\n }\r\n });\r\n });\r\n }\r\n\r\n // The default export is a syntax sugar (`import * as FP from '...' → import FP from '...'`).\r\n // It should contain all the public exported values.\r\n var index = { load: load, hashComponents: hashComponents, componentsToDebugString: componentsToDebugString };\r\n // The exports below are for private usage. They may change unexpectedly. Use them at your own risk.\r\n /** Not documented, out of Semantic Versioning, usage is at your own risk */\r\n var murmurX64Hash128 = x64hash128;\r\n\r\n exports.componentsToDebugString = componentsToDebugString;\r\n exports.default = index;\r\n exports.getFullscreenElement = getFullscreenElement;\r\n exports.getUnstableAudioFingerprint = getUnstableAudioFingerprint;\r\n exports.getUnstableCanvasFingerprint = getUnstableCanvasFingerprint;\r\n exports.getUnstableScreenFrame = getUnstableScreenFrame;\r\n exports.getUnstableScreenResolution = getUnstableScreenResolution;\r\n exports.getWebGLContext = getWebGLContext;\r\n exports.hashComponents = hashComponents;\r\n exports.isAndroid = isAndroid;\r\n exports.isChromium = isChromium;\r\n exports.isDesktopWebKit = isDesktopWebKit;\r\n exports.isEdgeHTML = isEdgeHTML;\r\n exports.isGecko = isGecko;\r\n exports.isSamsungInternet = isSamsungInternet;\r\n exports.isTrident = isTrident;\r\n exports.isWebKit = isWebKit;\r\n exports.load = load;\r\n exports.loadSources = loadSources;\r\n exports.murmurX64Hash128 = murmurX64Hash128;\r\n exports.prepareForSources = prepareForSources;\r\n exports.sources = sources;\r\n exports.transformSource = transformSource;\r\n exports.withIframe = withIframe;\r\n\r\n Object.defineProperty(exports, '__esModule', { value: true });\r\n\r\n}));\r\n","/*!\r\n* screenfull\r\n* v3.3.3 - 2018-09-04\r\n* (c) Sindre Sorhus; MIT License\r\n*/\r\n(function () {\r\n\t'use strict';\r\n\r\n\tvar document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};\r\n\tvar isCommonjs = typeof module !== 'undefined' && module.exports;\r\n\tvar keyboardAllowed = typeof Element !== 'undefined' && 'ALLOW_KEYBOARD_INPUT' in Element;\r\n\r\n\tvar fn = (function () {\r\n\t\tvar val;\r\n\r\n\t\tvar fnMap = [\r\n\t\t\t[\r\n\t\t\t\t'requestFullscreen',\r\n\t\t\t\t'exitFullscreen',\r\n\t\t\t\t'fullscreenElement',\r\n\t\t\t\t'fullscreenEnabled',\r\n\t\t\t\t'fullscreenchange',\r\n\t\t\t\t'fullscreenerror'\r\n\t\t\t],\r\n\t\t\t// New WebKit\r\n\t\t\t[\r\n\t\t\t\t'webkitRequestFullscreen',\r\n\t\t\t\t'webkitExitFullscreen',\r\n\t\t\t\t'webkitFullscreenElement',\r\n\t\t\t\t'webkitFullscreenEnabled',\r\n\t\t\t\t'webkitfullscreenchange',\r\n\t\t\t\t'webkitfullscreenerror'\r\n\r\n\t\t\t],\r\n\t\t\t// Old WebKit (Safari 5.1)\r\n\t\t\t[\r\n\t\t\t\t'webkitRequestFullScreen',\r\n\t\t\t\t'webkitCancelFullScreen',\r\n\t\t\t\t'webkitCurrentFullScreenElement',\r\n\t\t\t\t'webkitCancelFullScreen',\r\n\t\t\t\t'webkitfullscreenchange',\r\n\t\t\t\t'webkitfullscreenerror'\r\n\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'mozRequestFullScreen',\r\n\t\t\t\t'mozCancelFullScreen',\r\n\t\t\t\t'mozFullScreenElement',\r\n\t\t\t\t'mozFullScreenEnabled',\r\n\t\t\t\t'mozfullscreenchange',\r\n\t\t\t\t'mozfullscreenerror'\r\n\t\t\t],\r\n\t\t\t[\r\n\t\t\t\t'msRequestFullscreen',\r\n\t\t\t\t'msExitFullscreen',\r\n\t\t\t\t'msFullscreenElement',\r\n\t\t\t\t'msFullscreenEnabled',\r\n\t\t\t\t'MSFullscreenChange',\r\n\t\t\t\t'MSFullscreenError'\r\n\t\t\t]\r\n\t\t];\r\n\r\n\t\tvar i = 0;\r\n\t\tvar l = fnMap.length;\r\n\t\tvar ret = {};\r\n\r\n\t\tfor (; i < l; i++) {\r\n\t\t\tval = fnMap[i];\r\n\t\t\tif (val && val[1] in document) {\r\n\t\t\t\tfor (i = 0; i < val.length; i++) {\r\n\t\t\t\t\tret[fnMap[0][i]] = val[i];\r\n\t\t\t\t}\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t})();\r\n\r\n\tvar eventNameMap = {\r\n\t\tchange: fn.fullscreenchange,\r\n\t\terror: fn.fullscreenerror\r\n\t};\r\n\r\n\tvar screenfull = {\r\n\t\trequest: function (elem) {\r\n\t\t\tvar request = fn.requestFullscreen;\r\n\r\n\t\t\telem = elem || document.documentElement;\r\n\r\n\t\t\t// Work around Safari 5.1 bug: reports support for\r\n\t\t\t// keyboard in fullscreen even though it doesn't.\r\n\t\t\t// Browser sniffing, since the alternative with\r\n\t\t\t// setTimeout is even worse.\r\n\t\t\tif (/ Version\\/5\\.1(?:\\.\\d+)? Safari\\//.test(navigator.userAgent)) {\r\n\t\t\t\telem[request]();\r\n\t\t\t} else {\r\n\t\t\t elem[request]({});\r\n\t\t\t}\r\n\t\t},\r\n\t\texit: function () {\r\n\t\t\tdocument[fn.exitFullscreen]();\r\n\t\t},\r\n\t\ttoggle: function (elem) {\r\n\t\t\tif (this.isFullscreen) {\r\n\t\t\t\tthis.exit();\r\n\t\t\t} else {\r\n\t\t\t\tthis.request(elem);\r\n\t\t\t}\r\n\t\t},\r\n\t\tonchange: function (callback) {\r\n\t\t\tthis.on('change', callback);\r\n\t\t},\r\n\t\tonerror: function (callback) {\r\n\t\t\tthis.on('error', callback);\r\n\t\t},\r\n\t\ton: function (event, callback) {\r\n\t\t\tvar eventName = eventNameMap[event];\r\n\t\t\tif (eventName) {\r\n\t\t\t\tdocument.addEventListener(eventName, callback, false);\r\n\t\t\t}\r\n\t\t},\r\n\t\toff: function (event, callback) {\r\n\t\t\tvar eventName = eventNameMap[event];\r\n\t\t\tif (eventName) {\r\n\t\t\t\tdocument.removeEventListener(eventName, callback, false);\r\n\t\t\t}\r\n\t\t},\r\n\t\traw: fn\r\n\t};\r\n\r\n\tif (!fn) {\r\n\t\tif (isCommonjs) {\r\n\t\t\tmodule.exports = false;\r\n\t\t} else {\r\n\t\t\twindow.screenfull = false;\r\n\t\t}\r\n\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperties(screenfull, {\r\n\t\tisFullscreen: {\r\n\t\t\tget: function () {\r\n\t\t\t\treturn Boolean(document[fn.fullscreenElement]);\r\n\t\t\t}\r\n\t\t},\r\n\t\telement: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\treturn document[fn.fullscreenElement];\r\n\t\t\t}\r\n\t\t},\r\n\t\tenabled: {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function () {\r\n\t\t\t\t// Coerce to boolean in case of old WebKit\r\n\t\t\t\treturn Boolean(document[fn.fullscreenEnabled]);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tif (isCommonjs) {\r\n\t\tmodule.exports = screenfull;\r\n\t} else {\r\n\t\twindow.screenfull = screenfull;\r\n\t}\r\n})();\r\n","/*!\r\n * Select2 4.0.0\r\n * https://select2.github.io\r\n *\r\n * Released under the MIT license\r\n * https://github.com/select2/select2/blob/master/LICENSE.md\r\n */\r\n(function (factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Register as an anonymous module.\r\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\r\n // Node/CommonJS\r\n factory(require('jquery'));\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function (jQuery) {\r\n // This is needed so we can catch the AMD loader configuration and use it\r\n // The inner file should be wrapped (by `banner.start.js`) in a function that\r\n // returns the AMD loader references.\r\n var S2 =\r\n(function () {\r\n // Restore the Select2 AMD loader so it can be used\r\n // Needed mostly in the language files, where the loader is not inserted\r\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\r\n var S2 = jQuery.fn.select2.amd;\r\n }\r\nvar S2;(function () { if (!S2 || !S2.requirejs) {\r\nif (!S2) { S2 = {}; } else { require = S2; }\r\n/**\r\n * @license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.\r\n * Available via the MIT or new BSD license.\r\n * see: http://github.com/jrburke/almond for details\r\n */\r\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\r\n//be followed.\r\n/*jslint sloppy: true */\r\n/*global setTimeout: false */\r\n\r\nvar requirejs, require, define;\r\n(function (undef) {\r\n var main, req, makeMap, handlers,\r\n defined = {},\r\n waiting = {},\r\n config = {},\r\n defining = {},\r\n hasOwn = Object.prototype.hasOwnProperty,\r\n aps = [].slice,\r\n jsSuffixRegExp = /\\.js$/;\r\n\r\n function hasProp(obj, prop) {\r\n return hasOwn.call(obj, prop);\r\n }\r\n\r\n /**\r\n * Given a relative module name, like ./something, normalize it to\r\n * a real name that can be mapped to a path.\r\n * @param {String} name the relative name\r\n * @param {String} baseName a real name that the name arg is relative\r\n * to.\r\n * @returns {String} normalized name\r\n */\r\n function normalize(name, baseName) {\r\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\r\n foundI, foundStarMap, starI, i, j, part,\r\n baseParts = baseName && baseName.split(\"/\"),\r\n map = config.map,\r\n starMap = (map && map['*']) || {};\r\n\r\n //Adjust any relative paths.\r\n if (name && name.charAt(0) === \".\") {\r\n //If have a base name, try to normalize against it,\r\n //otherwise, assume it is a top-level require that will\r\n //be relative to baseUrl in the end.\r\n if (baseName) {\r\n //Convert baseName to array, and lop off the last part,\r\n //so that . matches that \"directory\" and not name of the baseName's\r\n //module. For instance, baseName of \"one/two/three\", maps to\r\n //\"one/two/three.js\", but we want the directory, \"one/two\" for\r\n //this normalization.\r\n baseParts = baseParts.slice(0, baseParts.length - 1);\r\n name = name.split('/');\r\n lastIndex = name.length - 1;\r\n\r\n // Node .js allowance:\r\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\r\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\r\n }\r\n\r\n name = baseParts.concat(name);\r\n\r\n //start trimDots\r\n for (i = 0; i < name.length; i += 1) {\r\n part = name[i];\r\n if (part === \".\") {\r\n name.splice(i, 1);\r\n i -= 1;\r\n } else if (part === \"..\") {\r\n if (i === 1 && (name[2] === '..' || name[0] === '..')) {\r\n //End of the line. Keep at least one non-dot\r\n //path segment at the front so it can be mapped\r\n //correctly to disk. Otherwise, there is likely\r\n //no path mapping for a path starting with '..'.\r\n //This can still fail, but catches the most reasonable\r\n //uses of ..\r\n break;\r\n } else if (i > 0) {\r\n name.splice(i - 1, 2);\r\n i -= 2;\r\n }\r\n }\r\n }\r\n //end trimDots\r\n\r\n name = name.join(\"/\");\r\n } else if (name.indexOf('./') === 0) {\r\n // No baseName, so this is ID is resolved relative\r\n // to baseUrl, pull off the leading dot.\r\n name = name.substring(2);\r\n }\r\n }\r\n\r\n //Apply map config if available.\r\n if ((baseParts || starMap) && map) {\r\n nameParts = name.split('/');\r\n\r\n for (i = nameParts.length; i > 0; i -= 1) {\r\n nameSegment = nameParts.slice(0, i).join(\"/\");\r\n\r\n if (baseParts) {\r\n //Find the longest baseName segment match in the config.\r\n //So, do joins on the biggest to smallest lengths of baseParts.\r\n for (j = baseParts.length; j > 0; j -= 1) {\r\n mapValue = map[baseParts.slice(0, j).join('/')];\r\n\r\n //baseName segment has config, find if it has one for\r\n //this name.\r\n if (mapValue) {\r\n mapValue = mapValue[nameSegment];\r\n if (mapValue) {\r\n //Match, update name to the new value.\r\n foundMap = mapValue;\r\n foundI = i;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (foundMap) {\r\n break;\r\n }\r\n\r\n //Check for a star map match, but just hold on to it,\r\n //if there is a shorter segment match later in a matching\r\n //config, then favor over this star map.\r\n if (!foundStarMap && starMap && starMap[nameSegment]) {\r\n foundStarMap = starMap[nameSegment];\r\n starI = i;\r\n }\r\n }\r\n\r\n if (!foundMap && foundStarMap) {\r\n foundMap = foundStarMap;\r\n foundI = starI;\r\n }\r\n\r\n if (foundMap) {\r\n nameParts.splice(0, foundI, foundMap);\r\n name = nameParts.join('/');\r\n }\r\n }\r\n\r\n return name;\r\n }\r\n\r\n function makeRequire(relName, forceSync) {\r\n return function () {\r\n //A version of a require function that passes a moduleName\r\n //value for items that may need to\r\n //look up paths relative to the moduleName\r\n return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync]));\r\n };\r\n }\r\n\r\n function makeNormalize(relName) {\r\n return function (name) {\r\n return normalize(name, relName);\r\n };\r\n }\r\n\r\n function makeLoad(depName) {\r\n return function (value) {\r\n defined[depName] = value;\r\n };\r\n }\r\n\r\n function callDep(name) {\r\n if (hasProp(waiting, name)) {\r\n var args = waiting[name];\r\n delete waiting[name];\r\n defining[name] = true;\r\n main.apply(undef, args);\r\n }\r\n\r\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\r\n throw new Error('No ' + name);\r\n }\r\n return defined[name];\r\n }\r\n\r\n //Turns a plugin!resource to [plugin, resource]\r\n //with the plugin being undefined if the name\r\n //did not have a plugin prefix.\r\n function splitPrefix(name) {\r\n var prefix,\r\n index = name ? name.indexOf('!') : -1;\r\n if (index > -1) {\r\n prefix = name.substring(0, index);\r\n name = name.substring(index + 1, name.length);\r\n }\r\n return [prefix, name];\r\n }\r\n\r\n /**\r\n * Makes a name map, normalizing the name, and using a plugin\r\n * for normalization if necessary. Grabs a ref to plugin\r\n * too, as an optimization.\r\n */\r\n makeMap = function (name, relName) {\r\n var plugin,\r\n parts = splitPrefix(name),\r\n prefix = parts[0];\r\n\r\n name = parts[1];\r\n\r\n if (prefix) {\r\n prefix = normalize(prefix, relName);\r\n plugin = callDep(prefix);\r\n }\r\n\r\n //Normalize according\r\n if (prefix) {\r\n if (plugin && plugin.normalize) {\r\n name = plugin.normalize(name, makeNormalize(relName));\r\n } else {\r\n name = normalize(name, relName);\r\n }\r\n } else {\r\n name = normalize(name, relName);\r\n parts = splitPrefix(name);\r\n prefix = parts[0];\r\n name = parts[1];\r\n if (prefix) {\r\n plugin = callDep(prefix);\r\n }\r\n }\r\n\r\n //Using ridiculous property names for space reasons\r\n return {\r\n f: prefix ? prefix + '!' + name : name, //fullName\r\n n: name,\r\n pr: prefix,\r\n p: plugin\r\n };\r\n };\r\n\r\n function makeConfig(name) {\r\n return function () {\r\n return (config && config.config && config.config[name]) || {};\r\n };\r\n }\r\n\r\n handlers = {\r\n require: function (name) {\r\n return makeRequire(name);\r\n },\r\n exports: function (name) {\r\n var e = defined[name];\r\n if (typeof e !== 'undefined') {\r\n return e;\r\n } else {\r\n return (defined[name] = {});\r\n }\r\n },\r\n module: function (name) {\r\n return {\r\n id: name,\r\n uri: '',\r\n exports: defined[name],\r\n config: makeConfig(name)\r\n };\r\n }\r\n };\r\n\r\n main = function (name, deps, callback, relName) {\r\n var cjsModule, depName, ret, map, i,\r\n args = [],\r\n callbackType = typeof callback,\r\n usingExports;\r\n\r\n //Use name if no relName\r\n relName = relName || name;\r\n\r\n //Call the callback to define the module, if necessary.\r\n if (callbackType === 'undefined' || callbackType === 'function') {\r\n //Pull out the defined dependencies and pass the ordered\r\n //values to the callback.\r\n //Default to [require, exports, module] if no deps\r\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\r\n for (i = 0; i < deps.length; i += 1) {\r\n map = makeMap(deps[i], relName);\r\n depName = map.f;\r\n\r\n //Fast path CommonJS standard dependencies.\r\n if (depName === \"require\") {\r\n args[i] = handlers.require(name);\r\n } else if (depName === \"exports\") {\r\n //CommonJS module spec 1.1\r\n args[i] = handlers.exports(name);\r\n usingExports = true;\r\n } else if (depName === \"module\") {\r\n //CommonJS module spec 1.1\r\n cjsModule = args[i] = handlers.module(name);\r\n } else if (hasProp(defined, depName) ||\r\n hasProp(waiting, depName) ||\r\n hasProp(defining, depName)) {\r\n args[i] = callDep(depName);\r\n } else if (map.p) {\r\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\r\n args[i] = defined[depName];\r\n } else {\r\n throw new Error(name + ' missing ' + depName);\r\n }\r\n }\r\n\r\n ret = callback ? callback.apply(defined[name], args) : undefined;\r\n\r\n if (name) {\r\n //If setting exports via \"module\" is in play,\r\n //favor that over return value and exports. After that,\r\n //favor a non-undefined return value over exports use.\r\n if (cjsModule && cjsModule.exports !== undef &&\r\n cjsModule.exports !== defined[name]) {\r\n defined[name] = cjsModule.exports;\r\n } else if (ret !== undef || !usingExports) {\r\n //Use the return value from the function.\r\n defined[name] = ret;\r\n }\r\n }\r\n } else if (name) {\r\n //May just be an object definition for the module. Only\r\n //worry about defining if have a module name.\r\n defined[name] = callback;\r\n }\r\n };\r\n\r\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\r\n if (typeof deps === \"string\") {\r\n if (handlers[deps]) {\r\n //callback in this case is really relName\r\n return handlers[deps](callback);\r\n }\r\n //Just return the module wanted. In this scenario, the\r\n //deps arg is the module name, and second arg (if passed)\r\n //is just the relName.\r\n //Normalize module name, if it contains . or ..\r\n return callDep(makeMap(deps, callback).f);\r\n } else if (!deps.splice) {\r\n //deps is a config object, not an array.\r\n config = deps;\r\n if (config.deps) {\r\n req(config.deps, config.callback);\r\n }\r\n if (!callback) {\r\n return;\r\n }\r\n\r\n if (callback.splice) {\r\n //callback is an array, which means it is a dependency list.\r\n //Adjust args if there are dependencies\r\n deps = callback;\r\n callback = relName;\r\n relName = null;\r\n } else {\r\n deps = undef;\r\n }\r\n }\r\n\r\n //Support require(['a'])\r\n callback = callback || function () {};\r\n\r\n //If relName is a function, it is an errback handler,\r\n //so remove it.\r\n if (typeof relName === 'function') {\r\n relName = forceSync;\r\n forceSync = alt;\r\n }\r\n\r\n //Simulate async callback;\r\n if (forceSync) {\r\n main(undef, deps, callback, relName);\r\n } else {\r\n //Using a non-zero value because of concern for what old browsers\r\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\r\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\r\n //If want a value immediately, use require('id') instead -- something\r\n //that works in almond on the global level, but not guaranteed and\r\n //unlikely to work in other AMD implementations.\r\n setTimeout(function () {\r\n main(undef, deps, callback, relName);\r\n }, 4);\r\n }\r\n\r\n return req;\r\n };\r\n\r\n /**\r\n * Just drops the config on the floor, but returns req in case\r\n * the config return value is used.\r\n */\r\n req.config = function (cfg) {\r\n return req(cfg);\r\n };\r\n\r\n /**\r\n * Expose module registry for debugging and tooling\r\n */\r\n requirejs._defined = defined;\r\n\r\n define = function (name, deps, callback) {\r\n\r\n //This module may not have dependencies\r\n if (!deps.splice) {\r\n //deps is not an array, so probably means\r\n //an object literal or factory function for\r\n //the value. Adjust args.\r\n callback = deps;\r\n deps = [];\r\n }\r\n\r\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\r\n waiting[name] = [name, deps, callback];\r\n }\r\n };\r\n\r\n define.amd = {\r\n jQuery: true\r\n };\r\n}());\r\n\r\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\r\n}\r\n}());\r\nS2.define(\"almond\", function(){});\r\n\r\n/* global jQuery:false, $:false */\r\nS2.define('jquery',[],function () {\r\n var _$ = jQuery || $;\r\n\r\n if (_$ == null && console && console.error) {\r\n console.error(\r\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\r\n 'found. Make sure that you are including jQuery before Select2 on your ' +\r\n 'web page.'\r\n );\r\n }\r\n\r\n return _$;\r\n});\r\n\r\nS2.define('select2/utils',[\r\n 'jquery'\r\n], function ($) {\r\n var Utils = {};\r\n\r\n Utils.Extend = function (ChildClass, SuperClass) {\r\n var __hasProp = {}.hasOwnProperty;\r\n\r\n function BaseConstructor () {\r\n this.constructor = ChildClass;\r\n }\r\n\r\n for (var key in SuperClass) {\r\n if (__hasProp.call(SuperClass, key)) {\r\n ChildClass[key] = SuperClass[key];\r\n }\r\n }\r\n\r\n BaseConstructor.prototype = SuperClass.prototype;\r\n ChildClass.prototype = new BaseConstructor();\r\n ChildClass.__super__ = SuperClass.prototype;\r\n\r\n return ChildClass;\r\n };\r\n\r\n function getMethods (theClass) {\r\n var proto = theClass.prototype;\r\n\r\n var methods = [];\r\n\r\n for (var methodName in proto) {\r\n var m = proto[methodName];\r\n\r\n if (typeof m !== 'function') {\r\n continue;\r\n }\r\n\r\n if (methodName === 'constructor') {\r\n continue;\r\n }\r\n\r\n methods.push(methodName);\r\n }\r\n\r\n return methods;\r\n }\r\n\r\n Utils.Decorate = function (SuperClass, DecoratorClass) {\r\n var decoratedMethods = getMethods(DecoratorClass);\r\n var superMethods = getMethods(SuperClass);\r\n\r\n function DecoratedClass () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n var argCount = DecoratorClass.prototype.constructor.length;\r\n\r\n var calledConstructor = SuperClass.prototype.constructor;\r\n\r\n if (argCount > 0) {\r\n unshift.call(arguments, SuperClass.prototype.constructor);\r\n\r\n calledConstructor = DecoratorClass.prototype.constructor;\r\n }\r\n\r\n calledConstructor.apply(this, arguments);\r\n }\r\n\r\n DecoratorClass.displayName = SuperClass.displayName;\r\n\r\n function ctr () {\r\n this.constructor = DecoratedClass;\r\n }\r\n\r\n DecoratedClass.prototype = new ctr();\r\n\r\n for (var m = 0; m < superMethods.length; m++) {\r\n var superMethod = superMethods[m];\r\n\r\n DecoratedClass.prototype[superMethod] =\r\n SuperClass.prototype[superMethod];\r\n }\r\n\r\n var calledMethod = function (methodName) {\r\n // Stub out the original method if it's not decorating an actual method\r\n var originalMethod = function () {};\r\n\r\n if (methodName in DecoratedClass.prototype) {\r\n originalMethod = DecoratedClass.prototype[methodName];\r\n }\r\n\r\n var decoratedMethod = DecoratorClass.prototype[methodName];\r\n\r\n return function () {\r\n var unshift = Array.prototype.unshift;\r\n\r\n unshift.call(arguments, originalMethod);\r\n\r\n return decoratedMethod.apply(this, arguments);\r\n };\r\n };\r\n\r\n for (var d = 0; d < decoratedMethods.length; d++) {\r\n var decoratedMethod = decoratedMethods[d];\r\n\r\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\r\n }\r\n\r\n return DecoratedClass;\r\n };\r\n\r\n var Observable = function () {\r\n this.listeners = {};\r\n };\r\n\r\n Observable.prototype.on = function (event, callback) {\r\n this.listeners = this.listeners || {};\r\n\r\n if (event in this.listeners) {\r\n this.listeners[event].push(callback);\r\n } else {\r\n this.listeners[event] = [callback];\r\n }\r\n };\r\n\r\n Observable.prototype.trigger = function (event) {\r\n var slice = Array.prototype.slice;\r\n\r\n this.listeners = this.listeners || {};\r\n\r\n if (event in this.listeners) {\r\n this.invoke(this.listeners[event], slice.call(arguments, 1));\r\n }\r\n\r\n if ('*' in this.listeners) {\r\n this.invoke(this.listeners['*'], arguments);\r\n }\r\n };\r\n\r\n Observable.prototype.invoke = function (listeners, params) {\r\n for (var i = 0, len = listeners.length; i < len; i++) {\r\n listeners[i].apply(this, params);\r\n }\r\n };\r\n\r\n Utils.Observable = Observable;\r\n\r\n Utils.generateChars = function (length) {\r\n var chars = '';\r\n\r\n for (var i = 0; i < length; i++) {\r\n var randomChar = Math.floor(Math.random() * 36);\r\n chars += randomChar.toString(36);\r\n }\r\n\r\n return chars;\r\n };\r\n\r\n Utils.bind = function (func, context) {\r\n return function () {\r\n func.apply(context, arguments);\r\n };\r\n };\r\n\r\n Utils._convertData = function (data) {\r\n for (var originalKey in data) {\r\n var keys = originalKey.split('-');\r\n\r\n var dataLevel = data;\r\n\r\n if (keys.length === 1) {\r\n continue;\r\n }\r\n\r\n for (var k = 0; k < keys.length; k++) {\r\n var key = keys[k];\r\n\r\n // Lowercase the first letter\r\n // By default, dash-separated becomes camelCase\r\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\r\n\r\n if (!(key in dataLevel)) {\r\n dataLevel[key] = {};\r\n }\r\n\r\n if (k == keys.length - 1) {\r\n dataLevel[key] = data[originalKey];\r\n }\r\n\r\n dataLevel = dataLevel[key];\r\n }\r\n\r\n delete data[originalKey];\r\n }\r\n\r\n return data;\r\n };\r\n\r\n Utils.hasScroll = function (index, el) {\r\n // Adapted from the function created by @ShadowScripter\r\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\r\n // The original code can be found at\r\n // http://codereview.stackexchange.com/q/13338\r\n // and was designed to be used with the Sizzle selector engine.\r\n\r\n var $el = $(el);\r\n var overflowX = el.style.overflowX;\r\n var overflowY = el.style.overflowY;\r\n\r\n //Check both x and y declarations\r\n if (overflowX === overflowY &&\r\n (overflowY === 'hidden' || overflowY === 'visible')) {\r\n return false;\r\n }\r\n\r\n if (overflowX === 'scroll' || overflowY === 'scroll') {\r\n return true;\r\n }\r\n\r\n return ($el.innerHeight() < el.scrollHeight ||\r\n $el.innerWidth() < el.scrollWidth);\r\n };\r\n\r\n Utils.escapeMarkup = function (markup) {\r\n var replaceMap = {\r\n '\\\\': '\',\r\n '&': '&',\r\n '<': '<',\r\n '>': '>',\r\n '\"': '"',\r\n '\\'': ''',\r\n '/': '/'\r\n };\r\n\r\n // Do not try to escape the markup if it's not a string\r\n if (typeof markup !== 'string') {\r\n return markup;\r\n }\r\n\r\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\r\n return replaceMap[match];\r\n });\r\n };\r\n\r\n // Append an array of jQuery nodes to a given element.\r\n Utils.appendMany = function ($element, $nodes) {\r\n // jQuery 1.7.x does not support $.fn.append() with an array\r\n // Fall back to a jQuery object collection using $.fn.add()\r\n if ($.fn.jquery.substr(0, 3) === '1.7') {\r\n var $jqNodes = $();\r\n\r\n $.map($nodes, function (node) {\r\n $jqNodes = $jqNodes.add(node);\r\n });\r\n\r\n $nodes = $jqNodes;\r\n }\r\n\r\n $element.append($nodes);\r\n };\r\n\r\n return Utils;\r\n});\r\n\r\nS2.define('select2/results',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Results ($element, options, dataAdapter) {\r\n this.$element = $element;\r\n this.data = dataAdapter;\r\n this.options = options;\r\n\r\n Results.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Results, Utils.Observable);\r\n\r\n Results.prototype.render = function () {\r\n var $results = $(\r\n '
    '\r\n );\r\n\r\n if (this.options.get('multiple')) {\r\n $results.attr('aria-multiselectable', 'true');\r\n }\r\n\r\n this.$results = $results;\r\n\r\n return $results;\r\n };\r\n\r\n Results.prototype.clear = function () {\r\n this.$results.empty();\r\n };\r\n\r\n Results.prototype.displayMessage = function (params) {\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n this.clear();\r\n this.hideLoading();\r\n\r\n var $message = $(\r\n '
  • '\r\n );\r\n\r\n var message = this.options.get('translations').get(params.message);\r\n\r\n $message.append(\r\n escapeMarkup(\r\n message(params.args)\r\n )\r\n );\r\n\r\n this.$results.append($message);\r\n };\r\n\r\n Results.prototype.append = function (data) {\r\n this.hideLoading();\r\n\r\n var $options = [];\r\n\r\n if (data.results == null || data.results.length === 0) {\r\n if (this.$results.children().length === 0) {\r\n this.trigger('results:message', {\r\n message: 'noResults'\r\n });\r\n }\r\n\r\n return;\r\n }\r\n\r\n data.results = this.sort(data.results);\r\n\r\n for (var d = 0; d < data.results.length; d++) {\r\n var item = data.results[d];\r\n\r\n var $option = this.option(item);\r\n\r\n $options.push($option);\r\n }\r\n\r\n this.$results.append($options);\r\n };\r\n\r\n Results.prototype.position = function ($results, $dropdown) {\r\n var $resultsContainer = $dropdown.find('.select2-results');\r\n $resultsContainer.append($results);\r\n };\r\n\r\n Results.prototype.sort = function (data) {\r\n var sorter = this.options.get('sorter');\r\n\r\n return sorter(data);\r\n };\r\n\r\n Results.prototype.setClasses = function () {\r\n var self = this;\r\n\r\n this.data.current(function (selected) {\r\n var selectedIds = $.map(selected, function (s) {\r\n return s.id.toString();\r\n });\r\n\r\n var $options = self.$results\r\n .find('.select2-results__option[aria-selected]');\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n var item = $.data(this, 'data');\r\n\r\n // id needs to be converted to a string when comparing\r\n var id = '' + item.id;\r\n\r\n if ((item.element != null && item.element.selected) ||\r\n (item.element == null && $.inArray(id, selectedIds) > -1)) {\r\n $option.attr('aria-selected', 'true');\r\n } else {\r\n $option.attr('aria-selected', 'false');\r\n }\r\n });\r\n\r\n var $selected = $options.filter('[aria-selected=true]');\r\n\r\n // Check if there are any selected options\r\n if ($selected.length > 0) {\r\n // If there are selected options, highlight the first\r\n $selected.first().trigger('mouseenter');\r\n } else {\r\n // If there are no selected options, highlight the first option\r\n // in the dropdown\r\n $options.first().trigger('mouseenter');\r\n }\r\n });\r\n };\r\n\r\n Results.prototype.showLoading = function (params) {\r\n this.hideLoading();\r\n\r\n var loadingMore = this.options.get('translations').get('searching');\r\n\r\n var loading = {\r\n disabled: true,\r\n loading: true,\r\n text: loadingMore(params)\r\n };\r\n var $loading = this.option(loading);\r\n $loading.className += ' loading-results';\r\n\r\n this.$results.prepend($loading);\r\n };\r\n\r\n Results.prototype.hideLoading = function () {\r\n this.$results.find('.loading-results').remove();\r\n };\r\n\r\n Results.prototype.option = function (data) {\r\n var option = document.createElement('li');\r\n option.className = 'select2-results__option';\r\n\r\n var attrs = {\r\n 'role': 'treeitem',\r\n 'aria-selected': 'false'\r\n };\r\n\r\n if (data.disabled) {\r\n delete attrs['aria-selected'];\r\n attrs['aria-disabled'] = 'true';\r\n }\r\n\r\n if (data.id == null) {\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n if (data._resultId != null) {\r\n option.id = data._resultId;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n if (data.children) {\r\n attrs.role = 'group';\r\n attrs['aria-label'] = data.text;\r\n delete attrs['aria-selected'];\r\n }\r\n\r\n for (var attr in attrs) {\r\n var val = attrs[attr];\r\n\r\n option.setAttribute(attr, val);\r\n }\r\n\r\n if (data.children) {\r\n var $option = $(option);\r\n\r\n var label = document.createElement('strong');\r\n label.className = 'select2-results__group';\r\n\r\n var $label = $(label);\r\n this.template(data, label);\r\n\r\n var $children = [];\r\n\r\n for (var c = 0; c < data.children.length; c++) {\r\n var child = data.children[c];\r\n\r\n var $child = this.option(child);\r\n\r\n $children.push($child);\r\n }\r\n\r\n var $childrenContainer = $('
      ', {\r\n 'class': 'select2-results__options select2-results__options--nested'\r\n });\r\n\r\n $childrenContainer.append($children);\r\n\r\n $option.append(label);\r\n $option.append($childrenContainer);\r\n } else {\r\n this.template(data, option);\r\n }\r\n\r\n $.data(option, 'data', data);\r\n\r\n return option;\r\n };\r\n\r\n Results.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-results';\r\n\r\n this.$results.attr('id', id);\r\n\r\n container.on('results:all', function (params) {\r\n self.clear();\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n }\r\n });\r\n\r\n container.on('results:append', function (params) {\r\n self.append(params.data);\r\n\r\n if (container.isOpen()) {\r\n self.setClasses();\r\n }\r\n });\r\n\r\n container.on('query', function (params) {\r\n self.showLoading(params);\r\n });\r\n\r\n container.on('select', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n });\r\n\r\n container.on('unselect', function () {\r\n if (!container.isOpen()) {\r\n return;\r\n }\r\n\r\n self.setClasses();\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expended=\"true\"\r\n self.$results.attr('aria-expanded', 'true');\r\n self.$results.attr('aria-hidden', 'false');\r\n\r\n self.setClasses();\r\n self.ensureHighlightVisible();\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expended=\"false\"\r\n self.$results.attr('aria-expanded', 'false');\r\n self.$results.attr('aria-hidden', 'true');\r\n self.$results.removeAttr('aria-activedescendant');\r\n });\r\n\r\n container.on('results:toggle', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n $highlighted.trigger('mouseup');\r\n });\r\n\r\n container.on('results:select', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var data = $highlighted.data('data');\r\n\r\n if ($highlighted.attr('aria-selected') == 'true') {\r\n self.trigger('close', {});\r\n } else {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n });\r\n\r\n container.on('results:previous', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n // If we are already at te top, don't move further\r\n if (currentIndex === 0) {\r\n return;\r\n }\r\n\r\n var nextIndex = currentIndex - 1;\r\n\r\n // If none are highlighted, highlight the first\r\n if ($highlighted.length === 0) {\r\n nextIndex = 0;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top;\r\n var nextTop = $next.offset().top;\r\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextTop - currentOffset < 0) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:next', function () {\r\n var $highlighted = self.getHighlightedResults();\r\n\r\n var $options = self.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var nextIndex = currentIndex + 1;\r\n\r\n // If we are at the last option, stay there\r\n if (nextIndex >= $options.length) {\r\n return;\r\n }\r\n\r\n var $next = $options.eq(nextIndex);\r\n\r\n $next.trigger('mouseenter');\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var nextBottom = $next.offset().top + $next.outerHeight(false);\r\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\r\n\r\n if (nextIndex === 0) {\r\n self.$results.scrollTop(0);\r\n } else if (nextBottom > currentOffset) {\r\n self.$results.scrollTop(nextOffset);\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n params.element.addClass('select2-results__option--highlighted');\r\n });\r\n\r\n container.on('results:message', function (params) {\r\n self.displayMessage(params);\r\n });\r\n\r\n if ($.fn.mousewheel) {\r\n this.$results.on('mousewheel', function (e) {\r\n var top = self.$results.scrollTop();\r\n\r\n var bottom = (\r\n self.$results.get(0).scrollHeight -\r\n self.$results.scrollTop() +\r\n e.deltaY\r\n );\r\n\r\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\r\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\r\n\r\n if (isAtTop) {\r\n self.$results.scrollTop(0);\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n } else if (isAtBottom) {\r\n self.$results.scrollTop(\r\n self.$results.get(0).scrollHeight - self.$results.height()\r\n );\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n });\r\n }\r\n\r\n this.$results.on('mouseup', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var $this = $(this);\r\n\r\n var data = $this.data('data');\r\n\r\n if ($this.attr('aria-selected') === 'true') {\r\n if (self.options.get('multiple')) {\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n } else {\r\n self.trigger('close', {});\r\n }\r\n\r\n return;\r\n }\r\n\r\n self.trigger('select', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n });\r\n\r\n this.$results.on('mouseenter', '.select2-results__option[aria-selected]',\r\n function (evt) {\r\n var data = $(this).data('data');\r\n\r\n self.getHighlightedResults()\r\n .removeClass('select2-results__option--highlighted');\r\n\r\n self.trigger('results:focus', {\r\n data: data,\r\n element: $(this)\r\n });\r\n });\r\n };\r\n\r\n Results.prototype.getHighlightedResults = function () {\r\n var $highlighted = this.$results\r\n .find('.select2-results__option--highlighted');\r\n\r\n return $highlighted;\r\n };\r\n\r\n Results.prototype.destroy = function () {\r\n this.$results.remove();\r\n };\r\n\r\n Results.prototype.ensureHighlightVisible = function () {\r\n var $highlighted = this.getHighlightedResults();\r\n\r\n if ($highlighted.length === 0) {\r\n return;\r\n }\r\n\r\n var $options = this.$results.find('[aria-selected]');\r\n\r\n var currentIndex = $options.index($highlighted);\r\n\r\n var currentOffset = this.$results.offset().top;\r\n var nextTop = $highlighted.offset().top;\r\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\r\n\r\n var offsetDelta = nextTop - currentOffset;\r\n nextOffset -= $highlighted.outerHeight(false) * 2;\r\n\r\n if (currentIndex <= 2) {\r\n this.$results.scrollTop(0);\r\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\r\n this.$results.scrollTop(nextOffset);\r\n }\r\n };\r\n\r\n Results.prototype.template = function (result, container) {\r\n var template = this.options.get('templateResult');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n var content = template(result);\r\n\r\n if (content == null) {\r\n container.style.display = 'none';\r\n } else if (typeof content === 'string') {\r\n container.innerHTML = escapeMarkup(content);\r\n } else {\r\n $(container).append(content);\r\n }\r\n };\r\n\r\n return Results;\r\n});\r\n\r\nS2.define('select2/keys',[\r\n\r\n], function () {\r\n var KEYS = {\r\n BACKSPACE: 8,\r\n TAB: 9,\r\n ENTER: 13,\r\n SHIFT: 16,\r\n CTRL: 17,\r\n ALT: 18,\r\n ESC: 27,\r\n SPACE: 32,\r\n PAGE_UP: 33,\r\n PAGE_DOWN: 34,\r\n END: 35,\r\n HOME: 36,\r\n LEFT: 37,\r\n UP: 38,\r\n RIGHT: 39,\r\n DOWN: 40,\r\n DELETE: 46\r\n };\r\n\r\n return KEYS;\r\n});\r\n\r\nS2.define('select2/selection/base',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function BaseSelection ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n BaseSelection.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseSelection, Utils.Observable);\r\n\r\n BaseSelection.prototype.render = function () {\r\n var $selection = $(\r\n '' +\r\n ''\r\n );\r\n\r\n this._tabindex = 0;\r\n\r\n if (this.$element.data('old-tabindex') != null) {\r\n this._tabindex = this.$element.data('old-tabindex');\r\n } else if (this.$element.attr('tabindex') != null) {\r\n this._tabindex = this.$element.attr('tabindex');\r\n }\r\n\r\n $selection.attr('title', this.$element.attr('title'));\r\n $selection.attr('tabindex', this._tabindex);\r\n\r\n this.$selection = $selection;\r\n\r\n return $selection;\r\n };\r\n\r\n BaseSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n var id = container.id + '-container';\r\n var resultsId = container.id + '-results';\r\n\r\n this.container = container;\r\n\r\n this.$selection.on('focus', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n if (evt.which === KEYS.SPACE) {\r\n evt.preventDefault();\r\n }\r\n });\r\n\r\n container.on('results:focus', function (params) {\r\n self.$selection.attr('aria-activedescendant', params.data._resultId);\r\n });\r\n\r\n container.on('selection:update', function (params) {\r\n self.update(params.data);\r\n });\r\n\r\n container.on('open', function () {\r\n // When the dropdown is open, aria-expanded=\"true\"\r\n self.$selection.attr('aria-expanded', 'true');\r\n self.$selection.attr('aria-owns', resultsId);\r\n\r\n self._attachCloseHandler(container);\r\n });\r\n\r\n container.on('close', function () {\r\n // When the dropdown is closed, aria-expanded=\"false\"\r\n self.$selection.attr('aria-expanded', 'false');\r\n self.$selection.removeAttr('aria-activedescendant');\r\n self.$selection.removeAttr('aria-owns');\r\n\r\n self.$selection.focus();\r\n\r\n self._detachCloseHandler(container);\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$selection.attr('tabindex', self._tabindex);\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$selection.attr('tabindex', '-1');\r\n });\r\n };\r\n\r\n BaseSelection.prototype._handleBlur = function (evt) {\r\n var self = this;\r\n\r\n // This needs to be delayed as the actve element is the body when the tab\r\n // key is pressed, possibly along with others.\r\n window.setTimeout(function () {\r\n // Don't trigger `blur` if the focus is still in the selection\r\n if (\r\n (document.activeElement == self.$selection[0]) ||\r\n ($.contains(self.$selection[0], document.activeElement))\r\n ) {\r\n return;\r\n }\r\n\r\n self.trigger('blur', evt);\r\n }, 1);\r\n };\r\n\r\n BaseSelection.prototype._attachCloseHandler = function (container) {\r\n var self = this;\r\n\r\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\r\n var $target = $(e.target);\r\n\r\n var $select = $target.closest('.select2');\r\n\r\n var $all = $('.select2.select2-container--open');\r\n\r\n $all.each(function () {\r\n var $this = $(this);\r\n\r\n if (this == $select[0]) {\r\n return;\r\n }\r\n\r\n var $element = $this.data('element');\r\n\r\n $element.select2('close');\r\n });\r\n });\r\n };\r\n\r\n BaseSelection.prototype._detachCloseHandler = function (container) {\r\n $(document.body).off('mousedown.select2.' + container.id);\r\n };\r\n\r\n BaseSelection.prototype.position = function ($selection, $container) {\r\n var $selectionContainer = $container.find('.selection');\r\n $selectionContainer.append($selection);\r\n };\r\n\r\n BaseSelection.prototype.destroy = function () {\r\n this._detachCloseHandler(this.container);\r\n };\r\n\r\n BaseSelection.prototype.update = function (data) {\r\n throw new Error('The `update` method must be defined in child classes.');\r\n };\r\n\r\n return BaseSelection;\r\n});\r\n\r\nS2.define('select2/selection/single',[\r\n 'jquery',\r\n './base',\r\n '../utils',\r\n '../keys'\r\n], function ($, BaseSelection, Utils, KEYS) {\r\n function SingleSelection () {\r\n SingleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(SingleSelection, BaseSelection);\r\n\r\n SingleSelection.prototype.render = function () {\r\n var $selection = SingleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--single');\r\n\r\n $selection.html(\r\n '' +\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n SingleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n SingleSelection.__super__.bind.apply(this, arguments);\r\n\r\n var id = container.id + '-container';\r\n\r\n this.$selection.find('.select2-selection__rendered').attr('id', id);\r\n this.$selection.attr('aria-labelledby', id);\r\n\r\n this.$selection.on('mousedown', function (evt) {\r\n // Only respond to left clicks\r\n if (evt.which !== 1) {\r\n return;\r\n }\r\n\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on('focus', function (evt) {\r\n // User focuses on the container\r\n });\r\n\r\n this.$selection.on('blur', function (evt) {\r\n // User exits the container\r\n });\r\n\r\n container.on('selection:update', function (params) {\r\n self.update(params.data);\r\n });\r\n };\r\n\r\n SingleSelection.prototype.clear = function () {\r\n this.$selection.find('.select2-selection__rendered').empty();\r\n };\r\n\r\n SingleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n SingleSelection.prototype.selectionContainer = function () {\r\n return $('');\r\n };\r\n\r\n SingleSelection.prototype.update = function (data) {\r\n if (data.length === 0) {\r\n this.clear();\r\n return;\r\n }\r\n\r\n var selection = data[0];\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n var formatted = this.display(selection, $rendered);\r\n\r\n $rendered.empty().append(formatted);\r\n $rendered.prop('title', selection.title || selection.text);\r\n };\r\n\r\n return SingleSelection;\r\n});\r\n\r\nS2.define('select2/selection/multiple',[\r\n 'jquery',\r\n './base',\r\n '../utils'\r\n], function ($, BaseSelection, Utils) {\r\n function MultipleSelection ($element, options) {\r\n MultipleSelection.__super__.constructor.apply(this, arguments);\r\n }\r\n\r\n Utils.Extend(MultipleSelection, BaseSelection);\r\n\r\n MultipleSelection.prototype.render = function () {\r\n var $selection = MultipleSelection.__super__.render.call(this);\r\n\r\n $selection.addClass('select2-selection--multiple');\r\n\r\n $selection.html(\r\n '
        '\r\n );\r\n\r\n return $selection;\r\n };\r\n\r\n MultipleSelection.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n MultipleSelection.__super__.bind.apply(this, arguments);\r\n\r\n this.$selection.on('click', function (evt) {\r\n self.trigger('toggle', {\r\n originalEvent: evt\r\n });\r\n });\r\n\r\n this.$selection.on(\r\n 'click',\r\n '.select2-selection__choice__remove',\r\n function (evt) {\r\n // Ignore the event if it is disabled\r\n if (self.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n var $remove = $(this);\r\n var $selection = $remove.parent();\r\n\r\n var data = $selection.data('data');\r\n\r\n self.trigger('unselect', {\r\n originalEvent: evt,\r\n data: data\r\n });\r\n }\r\n );\r\n };\r\n\r\n MultipleSelection.prototype.clear = function () {\r\n this.$selection.find('.select2-selection__rendered').empty();\r\n };\r\n\r\n MultipleSelection.prototype.display = function (data, container) {\r\n var template = this.options.get('templateSelection');\r\n var escapeMarkup = this.options.get('escapeMarkup');\r\n\r\n return escapeMarkup(template(data, container));\r\n };\r\n\r\n MultipleSelection.prototype.selectionContainer = function () {\r\n var $container = $(\r\n '
      • ' +\r\n '' +\r\n '' +\r\n '' +\r\n '
      • '\r\n );\r\n\r\n return $container;\r\n };\r\n\r\n MultipleSelection.prototype.update = function (data) {\r\n this.clear();\r\n\r\n if (data.length === 0) {\r\n return;\r\n }\r\n\r\n var $selections = [];\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var selection = data[d];\r\n\r\n var $selection = this.selectionContainer();\r\n var formatted = this.display(selection, $selection);\r\n\r\n $selection.append(formatted);\r\n $selection.prop('title', selection.title || selection.text);\r\n\r\n $selection.data('data', selection);\r\n\r\n $selections.push($selection);\r\n }\r\n\r\n var $rendered = this.$selection.find('.select2-selection__rendered');\r\n\r\n Utils.appendMany($rendered, $selections);\r\n };\r\n\r\n return MultipleSelection;\r\n});\r\n\r\nS2.define('select2/selection/placeholder',[\r\n '../utils'\r\n], function (Utils) {\r\n function Placeholder (decorated, $element, options) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\r\n var $placeholder = this.selectionContainer();\r\n\r\n $placeholder.html(this.display(placeholder));\r\n $placeholder.addClass('select2-selection__placeholder')\r\n .removeClass('select2-selection__choice');\r\n\r\n return $placeholder;\r\n };\r\n\r\n Placeholder.prototype.update = function (decorated, data) {\r\n var singlePlaceholder = (\r\n data.length == 1 && data[0].id != this.placeholder.id\r\n );\r\n var multipleSelections = data.length > 1;\r\n\r\n if (multipleSelections || singlePlaceholder) {\r\n return decorated.call(this, data);\r\n }\r\n\r\n this.clear();\r\n\r\n var $placeholder = this.createPlaceholder(this.placeholder);\r\n\r\n this.$selection.find('.select2-selection__rendered').append($placeholder);\r\n };\r\n\r\n return Placeholder;\r\n});\r\n\r\nS2.define('select2/selection/allowClear',[\r\n 'jquery',\r\n '../keys'\r\n], function ($, KEYS) {\r\n function AllowClear () { }\r\n\r\n AllowClear.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n if (this.placeholder == null) {\r\n if (this.options.get('debug') && window.console && console.error) {\r\n console.error(\r\n 'Select2: The `allowClear` option should be used in combination ' +\r\n 'with the `placeholder` option.'\r\n );\r\n }\r\n }\r\n\r\n this.$selection.on('mousedown', '.select2-selection__clear',\r\n function (evt) {\r\n self._handleClear(evt);\r\n });\r\n\r\n container.on('keypress', function (evt) {\r\n self._handleKeyboardClear(evt, container);\r\n });\r\n };\r\n\r\n AllowClear.prototype._handleClear = function (_, evt) {\r\n // Ignore the event if it is disabled\r\n if (this.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n var $clear = this.$selection.find('.select2-selection__clear');\r\n\r\n // Ignore the event if nothing has been selected\r\n if ($clear.length === 0) {\r\n return;\r\n }\r\n\r\n evt.stopPropagation();\r\n\r\n var data = $clear.data('data');\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var unselectData = {\r\n data: data[d]\r\n };\r\n\r\n // Trigger the `unselect` event, so people can prevent it from being\r\n // cleared.\r\n this.trigger('unselect', unselectData);\r\n\r\n // If the event was prevented, don't clear it out.\r\n if (unselectData.prevented) {\r\n return;\r\n }\r\n }\r\n\r\n this.$element.val(this.placeholder.id).trigger('change');\r\n\r\n this.trigger('toggle', {});\r\n };\r\n\r\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\r\n if (container.isOpen()) {\r\n return;\r\n }\r\n\r\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\r\n this._handleClear(evt);\r\n }\r\n };\r\n\r\n AllowClear.prototype.update = function (decorated, data) {\r\n decorated.call(this, data);\r\n\r\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\r\n data.length === 0) {\r\n return;\r\n }\r\n\r\n var $remove = $(\r\n '' +\r\n '×' +\r\n ''\r\n );\r\n $remove.data('data', data);\r\n\r\n this.$selection.find('.select2-selection__rendered').prepend($remove);\r\n };\r\n\r\n return AllowClear;\r\n});\r\n\r\nS2.define('select2/selection/search',[\r\n 'jquery',\r\n '../utils',\r\n '../keys'\r\n], function ($, Utils, KEYS) {\r\n function Search (decorated, $element, options) {\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $search = $(\r\n ''\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n var $rendered = decorated.call(this);\r\n\r\n this._transferTabIndex();\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.val('');\r\n self.$search.trigger('focus');\r\n });\r\n\r\n container.on('enable', function () {\r\n self.$search.prop('disabled', false);\r\n\r\n self._transferTabIndex();\r\n });\r\n\r\n container.on('disable', function () {\r\n self.$search.prop('disabled', true);\r\n });\r\n\r\n container.on('focus', function (evt) {\r\n self.$search.trigger('focus');\r\n });\r\n\r\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\r\n self.trigger('focus', evt);\r\n });\r\n\r\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\r\n self._handleBlur(evt);\r\n });\r\n\r\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\r\n evt.stopPropagation();\r\n\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n\r\n var key = evt.which;\r\n\r\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\r\n var $previousChoice = self.$searchContainer\r\n .prev('.select2-selection__choice');\r\n\r\n if ($previousChoice.length > 0) {\r\n var item = $previousChoice.data('data');\r\n\r\n self.searchRemoveChoice(item);\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$selection.on(\r\n 'input.searchcheck',\r\n '.select2-search--inline',\r\n function (evt) {\r\n // Try to detect the IE version should the `documentMode` property that\r\n // is stored on the document. This is only implemented in IE and is\r\n // slightly cleaner than doing a user agent check.\r\n // This property is not available in Edge, but Edge also doesn't have\r\n // this bug.\r\n var msie = document.documentMode;\r\n\r\n // IE will trigger the `input` event when a placeholder is used on a\r\n // search box. To get around this issue, we are forced to ignore all\r\n // `input` events in IE and keep using `keyup`.\r\n if (msie && msie <= 11) {\r\n self.$selection.off('input.search input.searchcheck');\r\n return;\r\n }\r\n\r\n // Unbind the duplicated `keyup` event\r\n self.$selection.off('keyup.search');\r\n }\r\n );\r\n\r\n this.$selection.on(\r\n 'keyup.search input.search',\r\n '.select2-search--inline',\r\n function (evt) {\r\n var key = evt.which;\r\n\r\n // We can freely ignore events from modifier keys\r\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\r\n return;\r\n }\r\n\r\n // Tabbing will be handled during the `keydown` phase\r\n if (key == KEYS.TAB) {\r\n return;\r\n }\r\n\r\n self.handleSearch(evt);\r\n }\r\n );\r\n };\r\n\r\n /**\r\n * This method will transfer the tabindex attribute from the rendered\r\n * selection to the search box. This allows for the search box to be used as\r\n * the primary focus instead of the selection container.\r\n *\r\n * @private\r\n */\r\n Search.prototype._transferTabIndex = function (decorated) {\r\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\r\n this.$selection.attr('tabindex', '-1');\r\n };\r\n\r\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\r\n this.$search.attr('placeholder', placeholder.text);\r\n };\r\n\r\n Search.prototype.update = function (decorated, data) {\r\n var searchHadFocus = this.$search[0] == document.activeElement;\r\n\r\n this.$search.attr('placeholder', '');\r\n\r\n decorated.call(this, data);\r\n\r\n this.$selection.find('.select2-selection__rendered')\r\n .append(this.$searchContainer);\r\n\r\n this.resizeSearch();\r\n if (searchHadFocus) {\r\n this.$search.focus();\r\n }\r\n };\r\n\r\n Search.prototype.handleSearch = function () {\r\n this.resizeSearch();\r\n\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.searchRemoveChoice = function (decorated, item) {\r\n this.trigger('unselect', {\r\n data: item\r\n });\r\n\r\n this.trigger('open', {});\r\n\r\n this.$search.val(item.text + ' ');\r\n };\r\n\r\n Search.prototype.resizeSearch = function () {\r\n this.$search.css('width', '25px');\r\n\r\n var width = '';\r\n\r\n if (this.$search.attr('placeholder') !== '') {\r\n width = this.$selection.find('.select2-selection__rendered').innerWidth();\r\n } else {\r\n var minimumWidth = this.$search.val().length + 1;\r\n\r\n width = (minimumWidth * 0.75) + 'em';\r\n }\r\n\r\n this.$search.css('width', width);\r\n };\r\n\r\n return Search;\r\n});\r\n\r\nS2.define('select2/selection/eventRelay',[\r\n 'jquery'\r\n], function ($) {\r\n function EventRelay () { }\r\n\r\n EventRelay.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n var relayEvents = [\r\n 'open', 'opening',\r\n 'close', 'closing',\r\n 'select', 'selecting',\r\n 'unselect', 'unselecting'\r\n ];\r\n\r\n var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('*', function (name, params) {\r\n // Ignore events that should not be relayed\r\n if ($.inArray(name, relayEvents) === -1) {\r\n return;\r\n }\r\n\r\n // The parameters should always be an object\r\n params = params || {};\r\n\r\n // Generate the jQuery event for the Select2 event\r\n var evt = $.Event('select2:' + name, {\r\n params: params\r\n });\r\n\r\n self.$element.trigger(evt);\r\n\r\n // Only handle preventable events if it was one\r\n if ($.inArray(name, preventableEvents) === -1) {\r\n return;\r\n }\r\n\r\n params.prevented = evt.isDefaultPrevented();\r\n });\r\n };\r\n\r\n return EventRelay;\r\n});\r\n\r\nS2.define('select2/translation',[\r\n 'jquery',\r\n 'require'\r\n], function ($, require) {\r\n function Translation (dict) {\r\n this.dict = dict || {};\r\n }\r\n\r\n Translation.prototype.all = function () {\r\n return this.dict;\r\n };\r\n\r\n Translation.prototype.get = function (key) {\r\n return this.dict[key];\r\n };\r\n\r\n Translation.prototype.extend = function (translation) {\r\n this.dict = $.extend({}, translation.all(), this.dict);\r\n };\r\n\r\n // Static functions\r\n\r\n Translation._cache = {};\r\n\r\n Translation.loadPath = function (path) {\r\n if (!(path in Translation._cache)) {\r\n var translations = require(path);\r\n\r\n Translation._cache[path] = translations;\r\n }\r\n\r\n return new Translation(Translation._cache[path]);\r\n };\r\n\r\n return Translation;\r\n});\r\n\r\nS2.define('select2/diacritics',[\r\n\r\n], function () {\r\n var diacritics = {\r\n '\\u24B6': 'A',\r\n '\\uFF21': 'A',\r\n '\\u00C0': 'A',\r\n '\\u00C1': 'A',\r\n '\\u00C2': 'A',\r\n '\\u1EA6': 'A',\r\n '\\u1EA4': 'A',\r\n '\\u1EAA': 'A',\r\n '\\u1EA8': 'A',\r\n '\\u00C3': 'A',\r\n '\\u0100': 'A',\r\n '\\u0102': 'A',\r\n '\\u1EB0': 'A',\r\n '\\u1EAE': 'A',\r\n '\\u1EB4': 'A',\r\n '\\u1EB2': 'A',\r\n '\\u0226': 'A',\r\n '\\u01E0': 'A',\r\n '\\u00C4': 'A',\r\n '\\u01DE': 'A',\r\n '\\u1EA2': 'A',\r\n '\\u00C5': 'A',\r\n '\\u01FA': 'A',\r\n '\\u01CD': 'A',\r\n '\\u0200': 'A',\r\n '\\u0202': 'A',\r\n '\\u1EA0': 'A',\r\n '\\u1EAC': 'A',\r\n '\\u1EB6': 'A',\r\n '\\u1E00': 'A',\r\n '\\u0104': 'A',\r\n '\\u023A': 'A',\r\n '\\u2C6F': 'A',\r\n '\\uA732': 'AA',\r\n '\\u00C6': 'AE',\r\n '\\u01FC': 'AE',\r\n '\\u01E2': 'AE',\r\n '\\uA734': 'AO',\r\n '\\uA736': 'AU',\r\n '\\uA738': 'AV',\r\n '\\uA73A': 'AV',\r\n '\\uA73C': 'AY',\r\n '\\u24B7': 'B',\r\n '\\uFF22': 'B',\r\n '\\u1E02': 'B',\r\n '\\u1E04': 'B',\r\n '\\u1E06': 'B',\r\n '\\u0243': 'B',\r\n '\\u0182': 'B',\r\n '\\u0181': 'B',\r\n '\\u24B8': 'C',\r\n '\\uFF23': 'C',\r\n '\\u0106': 'C',\r\n '\\u0108': 'C',\r\n '\\u010A': 'C',\r\n '\\u010C': 'C',\r\n '\\u00C7': 'C',\r\n '\\u1E08': 'C',\r\n '\\u0187': 'C',\r\n '\\u023B': 'C',\r\n '\\uA73E': 'C',\r\n '\\u24B9': 'D',\r\n '\\uFF24': 'D',\r\n '\\u1E0A': 'D',\r\n '\\u010E': 'D',\r\n '\\u1E0C': 'D',\r\n '\\u1E10': 'D',\r\n '\\u1E12': 'D',\r\n '\\u1E0E': 'D',\r\n '\\u0110': 'D',\r\n '\\u018B': 'D',\r\n '\\u018A': 'D',\r\n '\\u0189': 'D',\r\n '\\uA779': 'D',\r\n '\\u01F1': 'DZ',\r\n '\\u01C4': 'DZ',\r\n '\\u01F2': 'Dz',\r\n '\\u01C5': 'Dz',\r\n '\\u24BA': 'E',\r\n '\\uFF25': 'E',\r\n '\\u00C8': 'E',\r\n '\\u00C9': 'E',\r\n '\\u00CA': 'E',\r\n '\\u1EC0': 'E',\r\n '\\u1EBE': 'E',\r\n '\\u1EC4': 'E',\r\n '\\u1EC2': 'E',\r\n '\\u1EBC': 'E',\r\n '\\u0112': 'E',\r\n '\\u1E14': 'E',\r\n '\\u1E16': 'E',\r\n '\\u0114': 'E',\r\n '\\u0116': 'E',\r\n '\\u00CB': 'E',\r\n '\\u1EBA': 'E',\r\n '\\u011A': 'E',\r\n '\\u0204': 'E',\r\n '\\u0206': 'E',\r\n '\\u1EB8': 'E',\r\n '\\u1EC6': 'E',\r\n '\\u0228': 'E',\r\n '\\u1E1C': 'E',\r\n '\\u0118': 'E',\r\n '\\u1E18': 'E',\r\n '\\u1E1A': 'E',\r\n '\\u0190': 'E',\r\n '\\u018E': 'E',\r\n '\\u24BB': 'F',\r\n '\\uFF26': 'F',\r\n '\\u1E1E': 'F',\r\n '\\u0191': 'F',\r\n '\\uA77B': 'F',\r\n '\\u24BC': 'G',\r\n '\\uFF27': 'G',\r\n '\\u01F4': 'G',\r\n '\\u011C': 'G',\r\n '\\u1E20': 'G',\r\n '\\u011E': 'G',\r\n '\\u0120': 'G',\r\n '\\u01E6': 'G',\r\n '\\u0122': 'G',\r\n '\\u01E4': 'G',\r\n '\\u0193': 'G',\r\n '\\uA7A0': 'G',\r\n '\\uA77D': 'G',\r\n '\\uA77E': 'G',\r\n '\\u24BD': 'H',\r\n '\\uFF28': 'H',\r\n '\\u0124': 'H',\r\n '\\u1E22': 'H',\r\n '\\u1E26': 'H',\r\n '\\u021E': 'H',\r\n '\\u1E24': 'H',\r\n '\\u1E28': 'H',\r\n '\\u1E2A': 'H',\r\n '\\u0126': 'H',\r\n '\\u2C67': 'H',\r\n '\\u2C75': 'H',\r\n '\\uA78D': 'H',\r\n '\\u24BE': 'I',\r\n '\\uFF29': 'I',\r\n '\\u00CC': 'I',\r\n '\\u00CD': 'I',\r\n '\\u00CE': 'I',\r\n '\\u0128': 'I',\r\n '\\u012A': 'I',\r\n '\\u012C': 'I',\r\n '\\u0130': 'I',\r\n '\\u00CF': 'I',\r\n '\\u1E2E': 'I',\r\n '\\u1EC8': 'I',\r\n '\\u01CF': 'I',\r\n '\\u0208': 'I',\r\n '\\u020A': 'I',\r\n '\\u1ECA': 'I',\r\n '\\u012E': 'I',\r\n '\\u1E2C': 'I',\r\n '\\u0197': 'I',\r\n '\\u24BF': 'J',\r\n '\\uFF2A': 'J',\r\n '\\u0134': 'J',\r\n '\\u0248': 'J',\r\n '\\u24C0': 'K',\r\n '\\uFF2B': 'K',\r\n '\\u1E30': 'K',\r\n '\\u01E8': 'K',\r\n '\\u1E32': 'K',\r\n '\\u0136': 'K',\r\n '\\u1E34': 'K',\r\n '\\u0198': 'K',\r\n '\\u2C69': 'K',\r\n '\\uA740': 'K',\r\n '\\uA742': 'K',\r\n '\\uA744': 'K',\r\n '\\uA7A2': 'K',\r\n '\\u24C1': 'L',\r\n '\\uFF2C': 'L',\r\n '\\u013F': 'L',\r\n '\\u0139': 'L',\r\n '\\u013D': 'L',\r\n '\\u1E36': 'L',\r\n '\\u1E38': 'L',\r\n '\\u013B': 'L',\r\n '\\u1E3C': 'L',\r\n '\\u1E3A': 'L',\r\n '\\u0141': 'L',\r\n '\\u023D': 'L',\r\n '\\u2C62': 'L',\r\n '\\u2C60': 'L',\r\n '\\uA748': 'L',\r\n '\\uA746': 'L',\r\n '\\uA780': 'L',\r\n '\\u01C7': 'LJ',\r\n '\\u01C8': 'Lj',\r\n '\\u24C2': 'M',\r\n '\\uFF2D': 'M',\r\n '\\u1E3E': 'M',\r\n '\\u1E40': 'M',\r\n '\\u1E42': 'M',\r\n '\\u2C6E': 'M',\r\n '\\u019C': 'M',\r\n '\\u24C3': 'N',\r\n '\\uFF2E': 'N',\r\n '\\u01F8': 'N',\r\n '\\u0143': 'N',\r\n '\\u00D1': 'N',\r\n '\\u1E44': 'N',\r\n '\\u0147': 'N',\r\n '\\u1E46': 'N',\r\n '\\u0145': 'N',\r\n '\\u1E4A': 'N',\r\n '\\u1E48': 'N',\r\n '\\u0220': 'N',\r\n '\\u019D': 'N',\r\n '\\uA790': 'N',\r\n '\\uA7A4': 'N',\r\n '\\u01CA': 'NJ',\r\n '\\u01CB': 'Nj',\r\n '\\u24C4': 'O',\r\n '\\uFF2F': 'O',\r\n '\\u00D2': 'O',\r\n '\\u00D3': 'O',\r\n '\\u00D4': 'O',\r\n '\\u1ED2': 'O',\r\n '\\u1ED0': 'O',\r\n '\\u1ED6': 'O',\r\n '\\u1ED4': 'O',\r\n '\\u00D5': 'O',\r\n '\\u1E4C': 'O',\r\n '\\u022C': 'O',\r\n '\\u1E4E': 'O',\r\n '\\u014C': 'O',\r\n '\\u1E50': 'O',\r\n '\\u1E52': 'O',\r\n '\\u014E': 'O',\r\n '\\u022E': 'O',\r\n '\\u0230': 'O',\r\n '\\u00D6': 'O',\r\n '\\u022A': 'O',\r\n '\\u1ECE': 'O',\r\n '\\u0150': 'O',\r\n '\\u01D1': 'O',\r\n '\\u020C': 'O',\r\n '\\u020E': 'O',\r\n '\\u01A0': 'O',\r\n '\\u1EDC': 'O',\r\n '\\u1EDA': 'O',\r\n '\\u1EE0': 'O',\r\n '\\u1EDE': 'O',\r\n '\\u1EE2': 'O',\r\n '\\u1ECC': 'O',\r\n '\\u1ED8': 'O',\r\n '\\u01EA': 'O',\r\n '\\u01EC': 'O',\r\n '\\u00D8': 'O',\r\n '\\u01FE': 'O',\r\n '\\u0186': 'O',\r\n '\\u019F': 'O',\r\n '\\uA74A': 'O',\r\n '\\uA74C': 'O',\r\n '\\u01A2': 'OI',\r\n '\\uA74E': 'OO',\r\n '\\u0222': 'OU',\r\n '\\u24C5': 'P',\r\n '\\uFF30': 'P',\r\n '\\u1E54': 'P',\r\n '\\u1E56': 'P',\r\n '\\u01A4': 'P',\r\n '\\u2C63': 'P',\r\n '\\uA750': 'P',\r\n '\\uA752': 'P',\r\n '\\uA754': 'P',\r\n '\\u24C6': 'Q',\r\n '\\uFF31': 'Q',\r\n '\\uA756': 'Q',\r\n '\\uA758': 'Q',\r\n '\\u024A': 'Q',\r\n '\\u24C7': 'R',\r\n '\\uFF32': 'R',\r\n '\\u0154': 'R',\r\n '\\u1E58': 'R',\r\n '\\u0158': 'R',\r\n '\\u0210': 'R',\r\n '\\u0212': 'R',\r\n '\\u1E5A': 'R',\r\n '\\u1E5C': 'R',\r\n '\\u0156': 'R',\r\n '\\u1E5E': 'R',\r\n '\\u024C': 'R',\r\n '\\u2C64': 'R',\r\n '\\uA75A': 'R',\r\n '\\uA7A6': 'R',\r\n '\\uA782': 'R',\r\n '\\u24C8': 'S',\r\n '\\uFF33': 'S',\r\n '\\u1E9E': 'S',\r\n '\\u015A': 'S',\r\n '\\u1E64': 'S',\r\n '\\u015C': 'S',\r\n '\\u1E60': 'S',\r\n '\\u0160': 'S',\r\n '\\u1E66': 'S',\r\n '\\u1E62': 'S',\r\n '\\u1E68': 'S',\r\n '\\u0218': 'S',\r\n '\\u015E': 'S',\r\n '\\u2C7E': 'S',\r\n '\\uA7A8': 'S',\r\n '\\uA784': 'S',\r\n '\\u24C9': 'T',\r\n '\\uFF34': 'T',\r\n '\\u1E6A': 'T',\r\n '\\u0164': 'T',\r\n '\\u1E6C': 'T',\r\n '\\u021A': 'T',\r\n '\\u0162': 'T',\r\n '\\u1E70': 'T',\r\n '\\u1E6E': 'T',\r\n '\\u0166': 'T',\r\n '\\u01AC': 'T',\r\n '\\u01AE': 'T',\r\n '\\u023E': 'T',\r\n '\\uA786': 'T',\r\n '\\uA728': 'TZ',\r\n '\\u24CA': 'U',\r\n '\\uFF35': 'U',\r\n '\\u00D9': 'U',\r\n '\\u00DA': 'U',\r\n '\\u00DB': 'U',\r\n '\\u0168': 'U',\r\n '\\u1E78': 'U',\r\n '\\u016A': 'U',\r\n '\\u1E7A': 'U',\r\n '\\u016C': 'U',\r\n '\\u00DC': 'U',\r\n '\\u01DB': 'U',\r\n '\\u01D7': 'U',\r\n '\\u01D5': 'U',\r\n '\\u01D9': 'U',\r\n '\\u1EE6': 'U',\r\n '\\u016E': 'U',\r\n '\\u0170': 'U',\r\n '\\u01D3': 'U',\r\n '\\u0214': 'U',\r\n '\\u0216': 'U',\r\n '\\u01AF': 'U',\r\n '\\u1EEA': 'U',\r\n '\\u1EE8': 'U',\r\n '\\u1EEE': 'U',\r\n '\\u1EEC': 'U',\r\n '\\u1EF0': 'U',\r\n '\\u1EE4': 'U',\r\n '\\u1E72': 'U',\r\n '\\u0172': 'U',\r\n '\\u1E76': 'U',\r\n '\\u1E74': 'U',\r\n '\\u0244': 'U',\r\n '\\u24CB': 'V',\r\n '\\uFF36': 'V',\r\n '\\u1E7C': 'V',\r\n '\\u1E7E': 'V',\r\n '\\u01B2': 'V',\r\n '\\uA75E': 'V',\r\n '\\u0245': 'V',\r\n '\\uA760': 'VY',\r\n '\\u24CC': 'W',\r\n '\\uFF37': 'W',\r\n '\\u1E80': 'W',\r\n '\\u1E82': 'W',\r\n '\\u0174': 'W',\r\n '\\u1E86': 'W',\r\n '\\u1E84': 'W',\r\n '\\u1E88': 'W',\r\n '\\u2C72': 'W',\r\n '\\u24CD': 'X',\r\n '\\uFF38': 'X',\r\n '\\u1E8A': 'X',\r\n '\\u1E8C': 'X',\r\n '\\u24CE': 'Y',\r\n '\\uFF39': 'Y',\r\n '\\u1EF2': 'Y',\r\n '\\u00DD': 'Y',\r\n '\\u0176': 'Y',\r\n '\\u1EF8': 'Y',\r\n '\\u0232': 'Y',\r\n '\\u1E8E': 'Y',\r\n '\\u0178': 'Y',\r\n '\\u1EF6': 'Y',\r\n '\\u1EF4': 'Y',\r\n '\\u01B3': 'Y',\r\n '\\u024E': 'Y',\r\n '\\u1EFE': 'Y',\r\n '\\u24CF': 'Z',\r\n '\\uFF3A': 'Z',\r\n '\\u0179': 'Z',\r\n '\\u1E90': 'Z',\r\n '\\u017B': 'Z',\r\n '\\u017D': 'Z',\r\n '\\u1E92': 'Z',\r\n '\\u1E94': 'Z',\r\n '\\u01B5': 'Z',\r\n '\\u0224': 'Z',\r\n '\\u2C7F': 'Z',\r\n '\\u2C6B': 'Z',\r\n '\\uA762': 'Z',\r\n '\\u24D0': 'a',\r\n '\\uFF41': 'a',\r\n '\\u1E9A': 'a',\r\n '\\u00E0': 'a',\r\n '\\u00E1': 'a',\r\n '\\u00E2': 'a',\r\n '\\u1EA7': 'a',\r\n '\\u1EA5': 'a',\r\n '\\u1EAB': 'a',\r\n '\\u1EA9': 'a',\r\n '\\u00E3': 'a',\r\n '\\u0101': 'a',\r\n '\\u0103': 'a',\r\n '\\u1EB1': 'a',\r\n '\\u1EAF': 'a',\r\n '\\u1EB5': 'a',\r\n '\\u1EB3': 'a',\r\n '\\u0227': 'a',\r\n '\\u01E1': 'a',\r\n '\\u00E4': 'a',\r\n '\\u01DF': 'a',\r\n '\\u1EA3': 'a',\r\n '\\u00E5': 'a',\r\n '\\u01FB': 'a',\r\n '\\u01CE': 'a',\r\n '\\u0201': 'a',\r\n '\\u0203': 'a',\r\n '\\u1EA1': 'a',\r\n '\\u1EAD': 'a',\r\n '\\u1EB7': 'a',\r\n '\\u1E01': 'a',\r\n '\\u0105': 'a',\r\n '\\u2C65': 'a',\r\n '\\u0250': 'a',\r\n '\\uA733': 'aa',\r\n '\\u00E6': 'ae',\r\n '\\u01FD': 'ae',\r\n '\\u01E3': 'ae',\r\n '\\uA735': 'ao',\r\n '\\uA737': 'au',\r\n '\\uA739': 'av',\r\n '\\uA73B': 'av',\r\n '\\uA73D': 'ay',\r\n '\\u24D1': 'b',\r\n '\\uFF42': 'b',\r\n '\\u1E03': 'b',\r\n '\\u1E05': 'b',\r\n '\\u1E07': 'b',\r\n '\\u0180': 'b',\r\n '\\u0183': 'b',\r\n '\\u0253': 'b',\r\n '\\u24D2': 'c',\r\n '\\uFF43': 'c',\r\n '\\u0107': 'c',\r\n '\\u0109': 'c',\r\n '\\u010B': 'c',\r\n '\\u010D': 'c',\r\n '\\u00E7': 'c',\r\n '\\u1E09': 'c',\r\n '\\u0188': 'c',\r\n '\\u023C': 'c',\r\n '\\uA73F': 'c',\r\n '\\u2184': 'c',\r\n '\\u24D3': 'd',\r\n '\\uFF44': 'd',\r\n '\\u1E0B': 'd',\r\n '\\u010F': 'd',\r\n '\\u1E0D': 'd',\r\n '\\u1E11': 'd',\r\n '\\u1E13': 'd',\r\n '\\u1E0F': 'd',\r\n '\\u0111': 'd',\r\n '\\u018C': 'd',\r\n '\\u0256': 'd',\r\n '\\u0257': 'd',\r\n '\\uA77A': 'd',\r\n '\\u01F3': 'dz',\r\n '\\u01C6': 'dz',\r\n '\\u24D4': 'e',\r\n '\\uFF45': 'e',\r\n '\\u00E8': 'e',\r\n '\\u00E9': 'e',\r\n '\\u00EA': 'e',\r\n '\\u1EC1': 'e',\r\n '\\u1EBF': 'e',\r\n '\\u1EC5': 'e',\r\n '\\u1EC3': 'e',\r\n '\\u1EBD': 'e',\r\n '\\u0113': 'e',\r\n '\\u1E15': 'e',\r\n '\\u1E17': 'e',\r\n '\\u0115': 'e',\r\n '\\u0117': 'e',\r\n '\\u00EB': 'e',\r\n '\\u1EBB': 'e',\r\n '\\u011B': 'e',\r\n '\\u0205': 'e',\r\n '\\u0207': 'e',\r\n '\\u1EB9': 'e',\r\n '\\u1EC7': 'e',\r\n '\\u0229': 'e',\r\n '\\u1E1D': 'e',\r\n '\\u0119': 'e',\r\n '\\u1E19': 'e',\r\n '\\u1E1B': 'e',\r\n '\\u0247': 'e',\r\n '\\u025B': 'e',\r\n '\\u01DD': 'e',\r\n '\\u24D5': 'f',\r\n '\\uFF46': 'f',\r\n '\\u1E1F': 'f',\r\n '\\u0192': 'f',\r\n '\\uA77C': 'f',\r\n '\\u24D6': 'g',\r\n '\\uFF47': 'g',\r\n '\\u01F5': 'g',\r\n '\\u011D': 'g',\r\n '\\u1E21': 'g',\r\n '\\u011F': 'g',\r\n '\\u0121': 'g',\r\n '\\u01E7': 'g',\r\n '\\u0123': 'g',\r\n '\\u01E5': 'g',\r\n '\\u0260': 'g',\r\n '\\uA7A1': 'g',\r\n '\\u1D79': 'g',\r\n '\\uA77F': 'g',\r\n '\\u24D7': 'h',\r\n '\\uFF48': 'h',\r\n '\\u0125': 'h',\r\n '\\u1E23': 'h',\r\n '\\u1E27': 'h',\r\n '\\u021F': 'h',\r\n '\\u1E25': 'h',\r\n '\\u1E29': 'h',\r\n '\\u1E2B': 'h',\r\n '\\u1E96': 'h',\r\n '\\u0127': 'h',\r\n '\\u2C68': 'h',\r\n '\\u2C76': 'h',\r\n '\\u0265': 'h',\r\n '\\u0195': 'hv',\r\n '\\u24D8': 'i',\r\n '\\uFF49': 'i',\r\n '\\u00EC': 'i',\r\n '\\u00ED': 'i',\r\n '\\u00EE': 'i',\r\n '\\u0129': 'i',\r\n '\\u012B': 'i',\r\n '\\u012D': 'i',\r\n '\\u00EF': 'i',\r\n '\\u1E2F': 'i',\r\n '\\u1EC9': 'i',\r\n '\\u01D0': 'i',\r\n '\\u0209': 'i',\r\n '\\u020B': 'i',\r\n '\\u1ECB': 'i',\r\n '\\u012F': 'i',\r\n '\\u1E2D': 'i',\r\n '\\u0268': 'i',\r\n '\\u0131': 'i',\r\n '\\u24D9': 'j',\r\n '\\uFF4A': 'j',\r\n '\\u0135': 'j',\r\n '\\u01F0': 'j',\r\n '\\u0249': 'j',\r\n '\\u24DA': 'k',\r\n '\\uFF4B': 'k',\r\n '\\u1E31': 'k',\r\n '\\u01E9': 'k',\r\n '\\u1E33': 'k',\r\n '\\u0137': 'k',\r\n '\\u1E35': 'k',\r\n '\\u0199': 'k',\r\n '\\u2C6A': 'k',\r\n '\\uA741': 'k',\r\n '\\uA743': 'k',\r\n '\\uA745': 'k',\r\n '\\uA7A3': 'k',\r\n '\\u24DB': 'l',\r\n '\\uFF4C': 'l',\r\n '\\u0140': 'l',\r\n '\\u013A': 'l',\r\n '\\u013E': 'l',\r\n '\\u1E37': 'l',\r\n '\\u1E39': 'l',\r\n '\\u013C': 'l',\r\n '\\u1E3D': 'l',\r\n '\\u1E3B': 'l',\r\n '\\u017F': 'l',\r\n '\\u0142': 'l',\r\n '\\u019A': 'l',\r\n '\\u026B': 'l',\r\n '\\u2C61': 'l',\r\n '\\uA749': 'l',\r\n '\\uA781': 'l',\r\n '\\uA747': 'l',\r\n '\\u01C9': 'lj',\r\n '\\u24DC': 'm',\r\n '\\uFF4D': 'm',\r\n '\\u1E3F': 'm',\r\n '\\u1E41': 'm',\r\n '\\u1E43': 'm',\r\n '\\u0271': 'm',\r\n '\\u026F': 'm',\r\n '\\u24DD': 'n',\r\n '\\uFF4E': 'n',\r\n '\\u01F9': 'n',\r\n '\\u0144': 'n',\r\n '\\u00F1': 'n',\r\n '\\u1E45': 'n',\r\n '\\u0148': 'n',\r\n '\\u1E47': 'n',\r\n '\\u0146': 'n',\r\n '\\u1E4B': 'n',\r\n '\\u1E49': 'n',\r\n '\\u019E': 'n',\r\n '\\u0272': 'n',\r\n '\\u0149': 'n',\r\n '\\uA791': 'n',\r\n '\\uA7A5': 'n',\r\n '\\u01CC': 'nj',\r\n '\\u24DE': 'o',\r\n '\\uFF4F': 'o',\r\n '\\u00F2': 'o',\r\n '\\u00F3': 'o',\r\n '\\u00F4': 'o',\r\n '\\u1ED3': 'o',\r\n '\\u1ED1': 'o',\r\n '\\u1ED7': 'o',\r\n '\\u1ED5': 'o',\r\n '\\u00F5': 'o',\r\n '\\u1E4D': 'o',\r\n '\\u022D': 'o',\r\n '\\u1E4F': 'o',\r\n '\\u014D': 'o',\r\n '\\u1E51': 'o',\r\n '\\u1E53': 'o',\r\n '\\u014F': 'o',\r\n '\\u022F': 'o',\r\n '\\u0231': 'o',\r\n '\\u00F6': 'o',\r\n '\\u022B': 'o',\r\n '\\u1ECF': 'o',\r\n '\\u0151': 'o',\r\n '\\u01D2': 'o',\r\n '\\u020D': 'o',\r\n '\\u020F': 'o',\r\n '\\u01A1': 'o',\r\n '\\u1EDD': 'o',\r\n '\\u1EDB': 'o',\r\n '\\u1EE1': 'o',\r\n '\\u1EDF': 'o',\r\n '\\u1EE3': 'o',\r\n '\\u1ECD': 'o',\r\n '\\u1ED9': 'o',\r\n '\\u01EB': 'o',\r\n '\\u01ED': 'o',\r\n '\\u00F8': 'o',\r\n '\\u01FF': 'o',\r\n '\\u0254': 'o',\r\n '\\uA74B': 'o',\r\n '\\uA74D': 'o',\r\n '\\u0275': 'o',\r\n '\\u01A3': 'oi',\r\n '\\u0223': 'ou',\r\n '\\uA74F': 'oo',\r\n '\\u24DF': 'p',\r\n '\\uFF50': 'p',\r\n '\\u1E55': 'p',\r\n '\\u1E57': 'p',\r\n '\\u01A5': 'p',\r\n '\\u1D7D': 'p',\r\n '\\uA751': 'p',\r\n '\\uA753': 'p',\r\n '\\uA755': 'p',\r\n '\\u24E0': 'q',\r\n '\\uFF51': 'q',\r\n '\\u024B': 'q',\r\n '\\uA757': 'q',\r\n '\\uA759': 'q',\r\n '\\u24E1': 'r',\r\n '\\uFF52': 'r',\r\n '\\u0155': 'r',\r\n '\\u1E59': 'r',\r\n '\\u0159': 'r',\r\n '\\u0211': 'r',\r\n '\\u0213': 'r',\r\n '\\u1E5B': 'r',\r\n '\\u1E5D': 'r',\r\n '\\u0157': 'r',\r\n '\\u1E5F': 'r',\r\n '\\u024D': 'r',\r\n '\\u027D': 'r',\r\n '\\uA75B': 'r',\r\n '\\uA7A7': 'r',\r\n '\\uA783': 'r',\r\n '\\u24E2': 's',\r\n '\\uFF53': 's',\r\n '\\u00DF': 's',\r\n '\\u015B': 's',\r\n '\\u1E65': 's',\r\n '\\u015D': 's',\r\n '\\u1E61': 's',\r\n '\\u0161': 's',\r\n '\\u1E67': 's',\r\n '\\u1E63': 's',\r\n '\\u1E69': 's',\r\n '\\u0219': 's',\r\n '\\u015F': 's',\r\n '\\u023F': 's',\r\n '\\uA7A9': 's',\r\n '\\uA785': 's',\r\n '\\u1E9B': 's',\r\n '\\u24E3': 't',\r\n '\\uFF54': 't',\r\n '\\u1E6B': 't',\r\n '\\u1E97': 't',\r\n '\\u0165': 't',\r\n '\\u1E6D': 't',\r\n '\\u021B': 't',\r\n '\\u0163': 't',\r\n '\\u1E71': 't',\r\n '\\u1E6F': 't',\r\n '\\u0167': 't',\r\n '\\u01AD': 't',\r\n '\\u0288': 't',\r\n '\\u2C66': 't',\r\n '\\uA787': 't',\r\n '\\uA729': 'tz',\r\n '\\u24E4': 'u',\r\n '\\uFF55': 'u',\r\n '\\u00F9': 'u',\r\n '\\u00FA': 'u',\r\n '\\u00FB': 'u',\r\n '\\u0169': 'u',\r\n '\\u1E79': 'u',\r\n '\\u016B': 'u',\r\n '\\u1E7B': 'u',\r\n '\\u016D': 'u',\r\n '\\u00FC': 'u',\r\n '\\u01DC': 'u',\r\n '\\u01D8': 'u',\r\n '\\u01D6': 'u',\r\n '\\u01DA': 'u',\r\n '\\u1EE7': 'u',\r\n '\\u016F': 'u',\r\n '\\u0171': 'u',\r\n '\\u01D4': 'u',\r\n '\\u0215': 'u',\r\n '\\u0217': 'u',\r\n '\\u01B0': 'u',\r\n '\\u1EEB': 'u',\r\n '\\u1EE9': 'u',\r\n '\\u1EEF': 'u',\r\n '\\u1EED': 'u',\r\n '\\u1EF1': 'u',\r\n '\\u1EE5': 'u',\r\n '\\u1E73': 'u',\r\n '\\u0173': 'u',\r\n '\\u1E77': 'u',\r\n '\\u1E75': 'u',\r\n '\\u0289': 'u',\r\n '\\u24E5': 'v',\r\n '\\uFF56': 'v',\r\n '\\u1E7D': 'v',\r\n '\\u1E7F': 'v',\r\n '\\u028B': 'v',\r\n '\\uA75F': 'v',\r\n '\\u028C': 'v',\r\n '\\uA761': 'vy',\r\n '\\u24E6': 'w',\r\n '\\uFF57': 'w',\r\n '\\u1E81': 'w',\r\n '\\u1E83': 'w',\r\n '\\u0175': 'w',\r\n '\\u1E87': 'w',\r\n '\\u1E85': 'w',\r\n '\\u1E98': 'w',\r\n '\\u1E89': 'w',\r\n '\\u2C73': 'w',\r\n '\\u24E7': 'x',\r\n '\\uFF58': 'x',\r\n '\\u1E8B': 'x',\r\n '\\u1E8D': 'x',\r\n '\\u24E8': 'y',\r\n '\\uFF59': 'y',\r\n '\\u1EF3': 'y',\r\n '\\u00FD': 'y',\r\n '\\u0177': 'y',\r\n '\\u1EF9': 'y',\r\n '\\u0233': 'y',\r\n '\\u1E8F': 'y',\r\n '\\u00FF': 'y',\r\n '\\u1EF7': 'y',\r\n '\\u1E99': 'y',\r\n '\\u1EF5': 'y',\r\n '\\u01B4': 'y',\r\n '\\u024F': 'y',\r\n '\\u1EFF': 'y',\r\n '\\u24E9': 'z',\r\n '\\uFF5A': 'z',\r\n '\\u017A': 'z',\r\n '\\u1E91': 'z',\r\n '\\u017C': 'z',\r\n '\\u017E': 'z',\r\n '\\u1E93': 'z',\r\n '\\u1E95': 'z',\r\n '\\u01B6': 'z',\r\n '\\u0225': 'z',\r\n '\\u0240': 'z',\r\n '\\u2C6C': 'z',\r\n '\\uA763': 'z',\r\n '\\u0386': '\\u0391',\r\n '\\u0388': '\\u0395',\r\n '\\u0389': '\\u0397',\r\n '\\u038A': '\\u0399',\r\n '\\u03AA': '\\u0399',\r\n '\\u038C': '\\u039F',\r\n '\\u038E': '\\u03A5',\r\n '\\u03AB': '\\u03A5',\r\n '\\u038F': '\\u03A9',\r\n '\\u03AC': '\\u03B1',\r\n '\\u03AD': '\\u03B5',\r\n '\\u03AE': '\\u03B7',\r\n '\\u03AF': '\\u03B9',\r\n '\\u03CA': '\\u03B9',\r\n '\\u0390': '\\u03B9',\r\n '\\u03CC': '\\u03BF',\r\n '\\u03CD': '\\u03C5',\r\n '\\u03CB': '\\u03C5',\r\n '\\u03B0': '\\u03C5',\r\n '\\u03C9': '\\u03C9',\r\n '\\u03C2': '\\u03C3'\r\n };\r\n\r\n return diacritics;\r\n});\r\n\r\nS2.define('select2/data/base',[\r\n '../utils'\r\n], function (Utils) {\r\n function BaseAdapter ($element, options) {\r\n BaseAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(BaseAdapter, Utils.Observable);\r\n\r\n BaseAdapter.prototype.current = function (callback) {\r\n throw new Error('The `current` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.query = function (params, callback) {\r\n throw new Error('The `query` method must be defined in child classes.');\r\n };\r\n\r\n BaseAdapter.prototype.bind = function (container, $container) {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.destroy = function () {\r\n // Can be implemented in subclasses\r\n };\r\n\r\n BaseAdapter.prototype.generateResultId = function (container, data) {\r\n var id = container.id + '-result-';\r\n\r\n id += Utils.generateChars(4);\r\n\r\n if (data.id != null) {\r\n id += '-' + data.id.toString();\r\n } else {\r\n id += '-' + Utils.generateChars(4);\r\n }\r\n return id;\r\n };\r\n\r\n return BaseAdapter;\r\n});\r\n\r\nS2.define('select2/data/select',[\r\n './base',\r\n '../utils',\r\n 'jquery'\r\n], function (BaseAdapter, Utils, $) {\r\n function SelectAdapter ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n SelectAdapter.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(SelectAdapter, BaseAdapter);\r\n\r\n SelectAdapter.prototype.current = function (callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n this.$element.find(':selected').each(function () {\r\n var $option = $(this);\r\n\r\n var option = self.item($option);\r\n\r\n data.push(option);\r\n });\r\n\r\n callback(data);\r\n };\r\n\r\n SelectAdapter.prototype.select = function (data) {\r\n var self = this;\r\n\r\n data.selected = true;\r\n\r\n // If data.element is a DOM node, use it instead\r\n if ($(data.element).is('option')) {\r\n data.element.selected = true;\r\n\r\n this.$element.trigger('change');\r\n\r\n return;\r\n }\r\n\r\n if (this.$element.prop('multiple')) {\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n data = [data];\r\n data.push.apply(data, currentData);\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var id = data[d].id;\r\n\r\n if ($.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n self.$element.trigger('change');\r\n });\r\n } else {\r\n var val = data.id;\r\n\r\n this.$element.val(val);\r\n this.$element.trigger('change');\r\n }\r\n };\r\n\r\n SelectAdapter.prototype.unselect = function (data) {\r\n var self = this;\r\n\r\n if (!this.$element.prop('multiple')) {\r\n return;\r\n }\r\n\r\n data.selected = false;\r\n\r\n if ($(data.element).is('option')) {\r\n data.element.selected = false;\r\n\r\n this.$element.trigger('change');\r\n\r\n return;\r\n }\r\n\r\n this.current(function (currentData) {\r\n var val = [];\r\n\r\n for (var d = 0; d < currentData.length; d++) {\r\n var id = currentData[d].id;\r\n\r\n if (id !== data.id && $.inArray(id, val) === -1) {\r\n val.push(id);\r\n }\r\n }\r\n\r\n self.$element.val(val);\r\n\r\n self.$element.trigger('change');\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.bind = function (container, $container) {\r\n var self = this;\r\n\r\n this.container = container;\r\n\r\n container.on('select', function (params) {\r\n self.select(params.data);\r\n });\r\n\r\n container.on('unselect', function (params) {\r\n self.unselect(params.data);\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.destroy = function () {\r\n // Remove anything added to child elements\r\n this.$element.find('*').each(function () {\r\n // Remove any custom data set by Select2\r\n $.removeData(this, 'data');\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.query = function (params, callback) {\r\n var data = [];\r\n var self = this;\r\n\r\n var $options = this.$element.children();\r\n\r\n $options.each(function () {\r\n var $option = $(this);\r\n\r\n if (!$option.is('option') && !$option.is('optgroup')) {\r\n return;\r\n }\r\n\r\n var option = self.item($option);\r\n\r\n var matches = self.matches(params, option);\r\n\r\n if (matches !== null) {\r\n data.push(matches);\r\n }\r\n });\r\n\r\n callback({\r\n results: data\r\n });\r\n };\r\n\r\n SelectAdapter.prototype.addOptions = function ($options) {\r\n Utils.appendMany(this.$element, $options);\r\n };\r\n\r\n SelectAdapter.prototype.option = function (data) {\r\n var option;\r\n\r\n if (data.children) {\r\n option = document.createElement('optgroup');\r\n option.label = data.text;\r\n } else {\r\n option = document.createElement('option');\r\n\r\n if (option.textContent !== undefined) {\r\n option.textContent = data.text;\r\n } else {\r\n option.innerText = data.text;\r\n }\r\n }\r\n\r\n if (data.id) {\r\n option.value = data.id;\r\n }\r\n\r\n if (data.disabled) {\r\n option.disabled = true;\r\n }\r\n\r\n if (data.selected) {\r\n option.selected = true;\r\n }\r\n\r\n if (data.title) {\r\n option.title = data.title;\r\n }\r\n\r\n var $option = $(option);\r\n\r\n var normalizedData = this._normalizeItem(data);\r\n normalizedData.element = option;\r\n\r\n // Override the option's data with the combined data\r\n $.data(option, 'data', normalizedData);\r\n\r\n return $option;\r\n };\r\n\r\n SelectAdapter.prototype.item = function ($option) {\r\n var data = {};\r\n\r\n data = $.data($option[0], 'data');\r\n\r\n if (data != null) {\r\n return data;\r\n }\r\n\r\n if ($option.is('option')) {\r\n data = {\r\n id: $option.val(),\r\n text: $option.text(),\r\n disabled: $option.prop('disabled'),\r\n selected: $option.prop('selected'),\r\n title: $option.prop('title')\r\n };\r\n } else if ($option.is('optgroup')) {\r\n data = {\r\n text: $option.prop('label'),\r\n children: [],\r\n title: $option.prop('title')\r\n };\r\n\r\n var $children = $option.children('option');\r\n var children = [];\r\n\r\n for (var c = 0; c < $children.length; c++) {\r\n var $child = $($children[c]);\r\n\r\n var child = this.item($child);\r\n\r\n children.push(child);\r\n }\r\n\r\n data.children = children;\r\n }\r\n\r\n data = this._normalizeItem(data);\r\n data.element = $option[0];\r\n\r\n $.data($option[0], 'data', data);\r\n\r\n return data;\r\n };\r\n\r\n SelectAdapter.prototype._normalizeItem = function (item) {\r\n if (!$.isPlainObject(item)) {\r\n item = {\r\n id: item,\r\n text: item\r\n };\r\n }\r\n\r\n item = $.extend({}, {\r\n text: ''\r\n }, item);\r\n\r\n var defaults = {\r\n selected: false,\r\n disabled: false\r\n };\r\n\r\n if (item.id != null) {\r\n item.id = item.id.toString();\r\n }\r\n\r\n if (item.text != null) {\r\n item.text = item.text.toString();\r\n }\r\n\r\n if (item._resultId == null && item.id && this.container != null) {\r\n item._resultId = this.generateResultId(this.container, item);\r\n }\r\n\r\n return $.extend({}, defaults, item);\r\n };\r\n\r\n SelectAdapter.prototype.matches = function (params, data) {\r\n var matcher = this.options.get('matcher');\r\n\r\n return matcher(params, data);\r\n };\r\n\r\n return SelectAdapter;\r\n});\r\n\r\nS2.define('select2/data/array',[\r\n './select',\r\n '../utils',\r\n 'jquery'\r\n], function (SelectAdapter, Utils, $) {\r\n function ArrayAdapter ($element, options) {\r\n var data = options.get('data') || [];\r\n\r\n ArrayAdapter.__super__.constructor.call(this, $element, options);\r\n\r\n this.addOptions(this.convertToOptions(data));\r\n }\r\n\r\n Utils.Extend(ArrayAdapter, SelectAdapter);\r\n\r\n ArrayAdapter.prototype.select = function (data) {\r\n var $option = this.$element.find('option').filter(function (i, elm) {\r\n return elm.value == data.id.toString();\r\n });\r\n\r\n if ($option.length === 0) {\r\n $option = this.option(data);\r\n\r\n this.addOptions($option);\r\n }\r\n\r\n ArrayAdapter.__super__.select.call(this, data);\r\n };\r\n\r\n ArrayAdapter.prototype.convertToOptions = function (data) {\r\n var self = this;\r\n\r\n var $existing = this.$element.find('option');\r\n var existingIds = $existing.map(function () {\r\n return self.item($(this)).id;\r\n }).get();\r\n\r\n var $options = [];\r\n\r\n // Filter out all items except for the one passed in the argument\r\n function onlyItem (item) {\r\n return function () {\r\n return $(this).val() == item.id;\r\n };\r\n }\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = this._normalizeItem(data[d]);\r\n\r\n // Skip items which were pre-loaded, only merge the data\r\n if ($.inArray(item.id, existingIds) >= 0) {\r\n var $existingOption = $existing.filter(onlyItem(item));\r\n\r\n var existingData = this.item($existingOption);\r\n var newData = $.extend(true, {}, existingData, item);\r\n\r\n var $newOption = this.option(newData);\r\n\r\n $existingOption.replaceWith($newOption);\r\n\r\n continue;\r\n }\r\n\r\n var $option = this.option(item);\r\n\r\n if (item.children) {\r\n var $children = this.convertToOptions(item.children);\r\n\r\n Utils.appendMany($option, $children);\r\n }\r\n\r\n $options.push($option);\r\n }\r\n\r\n return $options;\r\n };\r\n\r\n return ArrayAdapter;\r\n});\r\n\r\nS2.define('select2/data/ajax',[\r\n './array',\r\n '../utils',\r\n 'jquery'\r\n], function (ArrayAdapter, Utils, $) {\r\n function AjaxAdapter ($element, options) {\r\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\r\n\r\n if (this.ajaxOptions.processResults != null) {\r\n this.processResults = this.ajaxOptions.processResults;\r\n }\r\n\r\n AjaxAdapter.__super__.constructor.call(this, $element, options);\r\n }\r\n\r\n Utils.Extend(AjaxAdapter, ArrayAdapter);\r\n\r\n AjaxAdapter.prototype._applyDefaults = function (options) {\r\n var defaults = {\r\n data: function (params) {\r\n return {\r\n q: params.term\r\n };\r\n },\r\n transport: function (params, success, failure) {\r\n var $request = $.ajax(params);\r\n\r\n $request.then(success);\r\n $request.fail(failure);\r\n\r\n return $request;\r\n }\r\n };\r\n\r\n return $.extend({}, defaults, options, true);\r\n };\r\n\r\n AjaxAdapter.prototype.processResults = function (results) {\r\n return results;\r\n };\r\n\r\n AjaxAdapter.prototype.query = function (params, callback) {\r\n var matches = [];\r\n var self = this;\r\n\r\n if (this._request != null) {\r\n // JSONP requests cannot always be aborted\r\n if ($.isFunction(this._request.abort)) {\r\n this._request.abort();\r\n }\r\n\r\n this._request = null;\r\n }\r\n\r\n var options = $.extend({\r\n type: 'GET'\r\n }, this.ajaxOptions);\r\n\r\n if (typeof options.url === 'function') {\r\n options.url = options.url(params);\r\n }\r\n\r\n if (typeof options.data === 'function') {\r\n options.data = options.data(params);\r\n }\r\n\r\n function request () {\r\n var $request = options.transport(options, function (data) {\r\n var results = self.processResults(data, params);\r\n\r\n if (self.options.get('debug') && window.console && console.error) {\r\n // Check to make sure that the response included a `results` key.\r\n if (!results || !results.results || !$.isArray(results.results)) {\r\n console.error(\r\n 'Select2: The AJAX results did not return an array in the ' +\r\n '`results` key of the response.'\r\n );\r\n }\r\n }\r\n\r\n callback(results);\r\n }, function () {\r\n // TODO: Handle AJAX errors\r\n });\r\n\r\n self._request = $request;\r\n }\r\n\r\n if (this.ajaxOptions.delay && params.term !== '') {\r\n if (this._queryTimeout) {\r\n window.clearTimeout(this._queryTimeout);\r\n }\r\n\r\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\r\n } else {\r\n request();\r\n }\r\n };\r\n\r\n return AjaxAdapter;\r\n});\r\n\r\nS2.define('select2/data/tags',[\r\n 'jquery'\r\n], function ($) {\r\n function Tags (decorated, $element, options) {\r\n var tags = options.get('tags');\r\n\r\n var createTag = options.get('createTag');\r\n\r\n if (createTag !== undefined) {\r\n this.createTag = createTag;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n\r\n if ($.isArray(tags)) {\r\n for (var t = 0; t < tags.length; t++) {\r\n var tag = tags[t];\r\n var item = this._normalizeItem(tag);\r\n\r\n var $option = this.option(item);\r\n\r\n this.$element.append($option);\r\n }\r\n }\r\n }\r\n\r\n Tags.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this._removeOldTags();\r\n\r\n if (params.term == null || params.page != null) {\r\n decorated.call(this, params, callback);\r\n return;\r\n }\r\n\r\n function wrapper (obj, child) {\r\n var data = obj.results;\r\n\r\n for (var i = 0; i < data.length; i++) {\r\n var option = data[i];\r\n\r\n var checkChildren = (\r\n option.children != null &&\r\n !wrapper({\r\n results: option.children\r\n }, true)\r\n );\r\n\r\n var checkText = option.text === params.term;\r\n\r\n if (checkText || checkChildren) {\r\n if (child) {\r\n return false;\r\n }\r\n\r\n obj.data = data;\r\n callback(obj);\r\n\r\n return;\r\n }\r\n }\r\n\r\n if (child) {\r\n return true;\r\n }\r\n\r\n var tag = self.createTag(params);\r\n\r\n if (tag != null) {\r\n var $option = self.option(tag);\r\n $option.attr('data-select2-tag', true);\r\n\r\n self.addOptions([$option]);\r\n\r\n self.insertTag(data, tag);\r\n }\r\n\r\n obj.results = data;\r\n\r\n callback(obj);\r\n }\r\n\r\n decorated.call(this, params, wrapper);\r\n };\r\n\r\n Tags.prototype.createTag = function (decorated, params) {\r\n var term = $.trim(params.term);\r\n\r\n if (term === '') {\r\n return null;\r\n }\r\n\r\n return {\r\n id: term,\r\n text: term\r\n };\r\n };\r\n\r\n Tags.prototype.insertTag = function (_, data, tag) {\r\n data.unshift(tag);\r\n };\r\n\r\n Tags.prototype._removeOldTags = function (_) {\r\n var tag = this._lastTag;\r\n\r\n var $options = this.$element.find('option[data-select2-tag]');\r\n\r\n $options.each(function () {\r\n if (this.selected) {\r\n return;\r\n }\r\n\r\n $(this).remove();\r\n });\r\n };\r\n\r\n return Tags;\r\n});\r\n\r\nS2.define('select2/data/tokenizer',[\r\n 'jquery'\r\n], function ($) {\r\n function Tokenizer (decorated, $element, options) {\r\n var tokenizer = options.get('tokenizer');\r\n\r\n if (tokenizer !== undefined) {\r\n this.tokenizer = tokenizer;\r\n }\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n Tokenizer.prototype.bind = function (decorated, container, $container) {\r\n decorated.call(this, container, $container);\r\n\r\n this.$search = container.dropdown.$search || container.selection.$search ||\r\n $container.find('.select2-search__field');\r\n };\r\n\r\n Tokenizer.prototype.query = function (decorated, params, callback) {\r\n var self = this;\r\n\r\n function select (data) {\r\n self.trigger('select', {\r\n data: data\r\n });\r\n }\r\n\r\n params.term = params.term || '';\r\n\r\n var tokenData = this.tokenizer(params, this.options, select);\r\n\r\n if (tokenData.term !== params.term) {\r\n // Replace the search term if we have the search box\r\n if (this.$search.length) {\r\n this.$search.val(tokenData.term);\r\n this.$search.focus();\r\n }\r\n\r\n params.term = tokenData.term;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\r\n var separators = options.get('tokenSeparators') || [];\r\n var term = params.term;\r\n var i = 0;\r\n\r\n var createTag = this.createTag || function (params) {\r\n return {\r\n id: params.term,\r\n text: params.term\r\n };\r\n };\r\n\r\n while (i < term.length) {\r\n var termChar = term[i];\r\n\r\n if ($.inArray(termChar, separators) === -1) {\r\n i++;\r\n\r\n continue;\r\n }\r\n\r\n var part = term.substr(0, i);\r\n var partParams = $.extend({}, params, {\r\n term: part\r\n });\r\n\r\n var data = createTag(partParams);\r\n\r\n if (data == null) {\r\n i++;\r\n continue;\r\n }\r\n\r\n callback(data);\r\n\r\n // Reset the term to not include the tokenized portion\r\n term = term.substr(i + 1) || '';\r\n i = 0;\r\n }\r\n\r\n return {\r\n term: term\r\n };\r\n };\r\n\r\n return Tokenizer;\r\n});\r\n\r\nS2.define('select2/data/minimumInputLength',[\r\n\r\n], function () {\r\n function MinimumInputLength (decorated, $e, options) {\r\n this.minimumInputLength = options.get('minimumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (params.term.length < this.minimumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooShort',\r\n args: {\r\n minimum: this.minimumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MinimumInputLength;\r\n});\r\n\r\nS2.define('select2/data/maximumInputLength',[\r\n\r\n], function () {\r\n function MaximumInputLength (decorated, $e, options) {\r\n this.maximumInputLength = options.get('maximumInputLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\r\n params.term = params.term || '';\r\n\r\n if (this.maximumInputLength > 0 &&\r\n params.term.length > this.maximumInputLength) {\r\n this.trigger('results:message', {\r\n message: 'inputTooLong',\r\n args: {\r\n maximum: this.maximumInputLength,\r\n input: params.term,\r\n params: params\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n decorated.call(this, params, callback);\r\n };\r\n\r\n return MaximumInputLength;\r\n});\r\n\r\nS2.define('select2/data/maximumSelectionLength',[\r\n\r\n], function (){\r\n function MaximumSelectionLength (decorated, $e, options) {\r\n this.maximumSelectionLength = options.get('maximumSelectionLength');\r\n\r\n decorated.call(this, $e, options);\r\n }\r\n\r\n MaximumSelectionLength.prototype.query =\r\n function (decorated, params, callback) {\r\n var self = this;\r\n\r\n this.current(function (currentData) {\r\n var count = currentData != null ? currentData.length : 0;\r\n if (self.maximumSelectionLength > 0 &&\r\n count >= self.maximumSelectionLength) {\r\n self.trigger('results:message', {\r\n message: 'maximumSelected',\r\n args: {\r\n maximum: self.maximumSelectionLength\r\n }\r\n });\r\n return;\r\n }\r\n decorated.call(self, params, callback);\r\n });\r\n };\r\n\r\n return MaximumSelectionLength;\r\n});\r\n\r\nS2.define('select2/dropdown',[\r\n 'jquery',\r\n './utils'\r\n], function ($, Utils) {\r\n function Dropdown ($element, options) {\r\n this.$element = $element;\r\n this.options = options;\r\n\r\n Dropdown.__super__.constructor.call(this);\r\n }\r\n\r\n Utils.Extend(Dropdown, Utils.Observable);\r\n\r\n Dropdown.prototype.render = function () {\r\n var $dropdown = $(\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n $dropdown.attr('dir', this.options.get('dir'));\r\n\r\n this.$dropdown = $dropdown;\r\n\r\n return $dropdown;\r\n };\r\n\r\n Dropdown.prototype.position = function ($dropdown, $container) {\r\n // Should be implmented in subclasses\r\n };\r\n\r\n Dropdown.prototype.destroy = function () {\r\n // Remove the dropdown from the DOM\r\n this.$dropdown.remove();\r\n };\r\n\r\n return Dropdown;\r\n});\r\n\r\nS2.define('select2/dropdown/search',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function Search () { }\r\n\r\n Search.prototype.render = function (decorated) {\r\n var $rendered = decorated.call(this);\r\n\r\n var $search = $(\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n this.$searchContainer = $search;\r\n this.$search = $search.find('input');\r\n\r\n $rendered.prepend($search);\r\n\r\n return $rendered;\r\n };\r\n\r\n Search.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n this.$search.on('keydown', function (evt) {\r\n self.trigger('keypress', evt);\r\n\r\n self._keyUpPrevented = evt.isDefaultPrevented();\r\n });\r\n\r\n // Workaround for browsers which do not support the `input` event\r\n // This will prevent double-triggering of events for browsers which support\r\n // both the `keyup` and `input` events.\r\n this.$search.on('input', function (evt) {\r\n // Unbind the duplicated `keyup` event\r\n $(this).off('keyup');\r\n });\r\n\r\n this.$search.on('keyup input', function (evt) {\r\n self.handleSearch(evt);\r\n });\r\n\r\n container.on('open', function () {\r\n self.$search.attr('tabindex', 0);\r\n\r\n self.$search.focus();\r\n\r\n window.setTimeout(function () {\r\n self.$search.focus();\r\n }, 0);\r\n });\r\n\r\n container.on('close', function () {\r\n self.$search.attr('tabindex', -1);\r\n\r\n self.$search.val('');\r\n });\r\n\r\n container.on('results:all', function (params) {\r\n if (params.query.term == null || params.query.term === '') {\r\n var showSearch = self.showSearch(params);\r\n\r\n if (showSearch) {\r\n self.$searchContainer.removeClass('select2-search--hide');\r\n } else {\r\n self.$searchContainer.addClass('select2-search--hide');\r\n }\r\n }\r\n });\r\n };\r\n\r\n Search.prototype.handleSearch = function (evt) {\r\n if (!this._keyUpPrevented) {\r\n var input = this.$search.val();\r\n\r\n this.trigger('query', {\r\n term: input\r\n });\r\n }\r\n\r\n this._keyUpPrevented = false;\r\n };\r\n\r\n Search.prototype.showSearch = function (_, params) {\r\n return true;\r\n };\r\n\r\n return Search;\r\n});\r\n\r\nS2.define('select2/dropdown/hidePlaceholder',[\r\n\r\n], function () {\r\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\r\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n HidePlaceholder.prototype.append = function (decorated, data) {\r\n data.results = this.removePlaceholder(data.results);\r\n\r\n decorated.call(this, data);\r\n };\r\n\r\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\r\n if (typeof placeholder === 'string') {\r\n placeholder = {\r\n id: '',\r\n text: placeholder\r\n };\r\n }\r\n\r\n return placeholder;\r\n };\r\n\r\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\r\n var modifiedData = data.slice(0);\r\n\r\n for (var d = data.length - 1; d >= 0; d--) {\r\n var item = data[d];\r\n\r\n if (this.placeholder.id === item.id) {\r\n modifiedData.splice(d, 1);\r\n }\r\n }\r\n\r\n return modifiedData;\r\n };\r\n\r\n return HidePlaceholder;\r\n});\r\n\r\nS2.define('select2/dropdown/infiniteScroll',[\r\n 'jquery'\r\n], function ($) {\r\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\r\n this.lastParams = {};\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n\r\n this.$loadingMore = this.createLoadingMore();\r\n this.loading = false;\r\n }\r\n\r\n InfiniteScroll.prototype.append = function (decorated, data) {\r\n this.$loadingMore.remove();\r\n this.loading = false;\r\n\r\n decorated.call(this, data);\r\n\r\n if (this.showLoadingMore(data)) {\r\n this.$results.append(this.$loadingMore);\r\n }\r\n };\r\n\r\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('query', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n container.on('query:append', function (params) {\r\n self.lastParams = params;\r\n self.loading = true;\r\n });\r\n\r\n this.$results.on('scroll', function () {\r\n var isLoadMoreVisible = $.contains(\r\n document.documentElement,\r\n self.$loadingMore[0]\r\n );\r\n\r\n if (self.loading || !isLoadMoreVisible) {\r\n return;\r\n }\r\n\r\n var currentOffset = self.$results.offset().top +\r\n self.$results.outerHeight(false);\r\n var loadingMoreOffset = self.$loadingMore.offset().top +\r\n self.$loadingMore.outerHeight(false);\r\n\r\n if (currentOffset + 50 >= loadingMoreOffset) {\r\n self.loadMore();\r\n }\r\n });\r\n };\r\n\r\n InfiniteScroll.prototype.loadMore = function () {\r\n this.loading = true;\r\n\r\n var params = $.extend({}, {page: 1}, this.lastParams);\r\n\r\n params.page++;\r\n\r\n this.trigger('query:append', params);\r\n };\r\n\r\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\r\n return data.pagination && data.pagination.more;\r\n };\r\n\r\n InfiniteScroll.prototype.createLoadingMore = function () {\r\n var $option = $(\r\n '
      • '\r\n );\r\n\r\n var message = this.options.get('translations').get('loadingMore');\r\n\r\n $option.html(message(this.lastParams));\r\n\r\n return $option;\r\n };\r\n\r\n return InfiniteScroll;\r\n});\r\n\r\nS2.define('select2/dropdown/attachBody',[\r\n 'jquery',\r\n '../utils'\r\n], function ($, Utils) {\r\n function AttachBody (decorated, $element, options) {\r\n this.$dropdownParent = options.get('dropdownParent') || document.body;\r\n\r\n decorated.call(this, $element, options);\r\n }\r\n\r\n AttachBody.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n var setupResultsEvents = false;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('open', function () {\r\n self._showDropdown();\r\n self._attachPositioningHandler(container);\r\n\r\n if (!setupResultsEvents) {\r\n setupResultsEvents = true;\r\n\r\n container.on('results:all', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n\r\n container.on('results:append', function () {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n }\r\n });\r\n\r\n container.on('close', function () {\r\n self._hideDropdown();\r\n self._detachPositioningHandler(container);\r\n });\r\n\r\n this.$dropdownContainer.on('mousedown', function (evt) {\r\n evt.stopPropagation();\r\n });\r\n };\r\n\r\n AttachBody.prototype.destroy = function (decorated) {\r\n decorated.call(this);\r\n\r\n this.$dropdownContainer.remove();\r\n };\r\n\r\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\r\n // Clone all of the container classes\r\n $dropdown.attr('class', $container.attr('class'));\r\n\r\n $dropdown.removeClass('select2');\r\n $dropdown.addClass('select2-container--open');\r\n\r\n $dropdown.css({\r\n position: 'absolute',\r\n top: -999999\r\n });\r\n\r\n this.$container = $container;\r\n };\r\n\r\n AttachBody.prototype.render = function (decorated) {\r\n var $container = $('');\r\n\r\n var $dropdown = decorated.call(this);\r\n $container.append($dropdown);\r\n\r\n this.$dropdownContainer = $container;\r\n\r\n return $container;\r\n };\r\n\r\n AttachBody.prototype._hideDropdown = function (decorated) {\r\n this.$dropdownContainer.detach();\r\n };\r\n\r\n AttachBody.prototype._attachPositioningHandler = function (container) {\r\n var self = this;\r\n\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.each(function () {\r\n $(this).data('select2-scroll-position', {\r\n x: $(this).scrollLeft(),\r\n y: $(this).scrollTop()\r\n });\r\n });\r\n\r\n $watchers.on(scrollEvent, function (ev) {\r\n var position = $(this).data('select2-scroll-position');\r\n $(this).scrollTop(position.y);\r\n });\r\n\r\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\r\n function (e) {\r\n self._positionDropdown();\r\n self._resizeDropdown();\r\n });\r\n };\r\n\r\n AttachBody.prototype._detachPositioningHandler = function (container) {\r\n var scrollEvent = 'scroll.select2.' + container.id;\r\n var resizeEvent = 'resize.select2.' + container.id;\r\n var orientationEvent = 'orientationchange.select2.' + container.id;\r\n\r\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\r\n $watchers.off(scrollEvent);\r\n\r\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\r\n };\r\n\r\n AttachBody.prototype._positionDropdown = function () {\r\n var $window = $(window);\r\n\r\n var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');\r\n var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');\r\n\r\n var newDirection = null;\r\n\r\n var position = this.$container.position();\r\n var offset = this.$container.offset();\r\n\r\n offset.bottom = offset.top + this.$container.outerHeight(false);\r\n\r\n var container = {\r\n height: this.$container.outerHeight(false)\r\n };\r\n\r\n container.top = offset.top;\r\n container.bottom = offset.top + container.height;\r\n\r\n var dropdown = {\r\n height: this.$dropdown.outerHeight(false)\r\n };\r\n\r\n var viewport = {\r\n top: $window.scrollTop(),\r\n bottom: $window.scrollTop() + $window.height()\r\n };\r\n\r\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\r\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\r\n\r\n var css = {\r\n left: offset.left,\r\n top: container.bottom\r\n };\r\n\r\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\r\n newDirection = 'above';\r\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\r\n newDirection = 'below';\r\n }\r\n\r\n if (newDirection == 'above' ||\r\n (isCurrentlyAbove && newDirection !== 'below')) {\r\n css.top = container.top - dropdown.height;\r\n }\r\n\r\n if (newDirection != null) {\r\n this.$dropdown\r\n .removeClass('select2-dropdown--below select2-dropdown--above')\r\n .addClass('select2-dropdown--' + newDirection);\r\n this.$container\r\n .removeClass('select2-container--below select2-container--above')\r\n .addClass('select2-container--' + newDirection);\r\n }\r\n\r\n this.$dropdownContainer.css(css);\r\n };\r\n\r\n AttachBody.prototype._resizeDropdown = function () {\r\n var css = {\r\n width: this.$container.outerWidth(false) + 'px'\r\n };\r\n\r\n if (this.options.get('dropdownAutoWidth')) {\r\n css.minWidth = css.width;\r\n css.width = 'auto';\r\n }\r\n\r\n this.$dropdown.css(css);\r\n };\r\n\r\n AttachBody.prototype._showDropdown = function (decorated) {\r\n this.$dropdownContainer.appendTo(this.$dropdownParent);\r\n\r\n this._positionDropdown();\r\n this._resizeDropdown();\r\n };\r\n\r\n return AttachBody;\r\n});\r\n\r\nS2.define('select2/dropdown/minimumResultsForSearch',[\r\n\r\n], function () {\r\n function countResults (data) {\r\n var count = 0;\r\n\r\n for (var d = 0; d < data.length; d++) {\r\n var item = data[d];\r\n\r\n if (item.children) {\r\n count += countResults(item.children);\r\n } else {\r\n count++;\r\n }\r\n }\r\n\r\n return count;\r\n }\r\n\r\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\r\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\r\n\r\n if (this.minimumResultsForSearch < 0) {\r\n this.minimumResultsForSearch = Infinity;\r\n }\r\n\r\n decorated.call(this, $element, options, dataAdapter);\r\n }\r\n\r\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\r\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\r\n return false;\r\n }\r\n\r\n return decorated.call(this, params);\r\n };\r\n\r\n return MinimumResultsForSearch;\r\n});\r\n\r\nS2.define('select2/dropdown/selectOnClose',[\r\n\r\n], function () {\r\n function SelectOnClose () { }\r\n\r\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('close', function () {\r\n self._handleSelectOnClose();\r\n });\r\n };\r\n\r\n SelectOnClose.prototype._handleSelectOnClose = function () {\r\n var $highlightedResults = this.getHighlightedResults();\r\n\r\n if ($highlightedResults.length < 1) {\r\n return;\r\n }\r\n\r\n this.trigger('select', {\r\n data: $highlightedResults.data('data')\r\n });\r\n };\r\n\r\n return SelectOnClose;\r\n});\r\n\r\nS2.define('select2/dropdown/closeOnSelect',[\r\n\r\n], function () {\r\n function CloseOnSelect () { }\r\n\r\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\r\n var self = this;\r\n\r\n decorated.call(this, container, $container);\r\n\r\n container.on('select', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n\r\n container.on('unselect', function (evt) {\r\n self._selectTriggered(evt);\r\n });\r\n };\r\n\r\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\r\n var originalEvent = evt.originalEvent;\r\n\r\n // Don't close if the control key is being held\r\n if (originalEvent && originalEvent.ctrlKey) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {});\r\n };\r\n\r\n return CloseOnSelect;\r\n});\r\n\r\nS2.define('select2/i18n/en',[],function () {\r\n // English\r\n return {\r\n errorLoading: function () {\r\n return 'The results could not be loaded.';\r\n },\r\n inputTooLong: function (args) {\r\n var overChars = args.input.length - args.maximum;\r\n\r\n var message = 'Please delete ' + overChars + ' character';\r\n\r\n if (overChars != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n inputTooShort: function (args) {\r\n var remainingChars = args.minimum - args.input.length;\r\n\r\n var message = 'Please enter ' + remainingChars + ' or more characters';\r\n\r\n return message;\r\n },\r\n loadingMore: function () {\r\n return 'Loading more results…';\r\n },\r\n maximumSelected: function (args) {\r\n var message = 'You can only select ' + args.maximum + ' item';\r\n\r\n if (args.maximum != 1) {\r\n message += 's';\r\n }\r\n\r\n return message;\r\n },\r\n noResults: function () {\r\n return 'No results found';\r\n },\r\n searching: function () {\r\n return 'Searching…';\r\n }\r\n };\r\n});\r\n\r\nS2.define('select2/defaults',[\r\n 'jquery',\r\n 'require',\r\n\r\n './results',\r\n\r\n './selection/single',\r\n './selection/multiple',\r\n './selection/placeholder',\r\n './selection/allowClear',\r\n './selection/search',\r\n './selection/eventRelay',\r\n\r\n './utils',\r\n './translation',\r\n './diacritics',\r\n\r\n './data/select',\r\n './data/array',\r\n './data/ajax',\r\n './data/tags',\r\n './data/tokenizer',\r\n './data/minimumInputLength',\r\n './data/maximumInputLength',\r\n './data/maximumSelectionLength',\r\n\r\n './dropdown',\r\n './dropdown/search',\r\n './dropdown/hidePlaceholder',\r\n './dropdown/infiniteScroll',\r\n './dropdown/attachBody',\r\n './dropdown/minimumResultsForSearch',\r\n './dropdown/selectOnClose',\r\n './dropdown/closeOnSelect',\r\n\r\n './i18n/en'\r\n], function ($, require,\r\n\r\n ResultsList,\r\n\r\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\r\n SelectionSearch, EventRelay,\r\n\r\n Utils, Translation, DIACRITICS,\r\n\r\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\r\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\r\n\r\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\r\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\r\n\r\n EnglishTranslation) {\r\n function Defaults () {\r\n this.reset();\r\n }\r\n\r\n Defaults.prototype.apply = function (options) {\r\n options = $.extend({}, this.defaults, options);\r\n\r\n if (options.dataAdapter == null) {\r\n if (options.ajax != null) {\r\n options.dataAdapter = AjaxData;\r\n } else if (options.data != null) {\r\n options.dataAdapter = ArrayData;\r\n } else {\r\n options.dataAdapter = SelectData;\r\n }\r\n\r\n if (options.minimumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MinimumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumInputLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumInputLength\r\n );\r\n }\r\n\r\n if (options.maximumSelectionLength > 0) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n MaximumSelectionLength\r\n );\r\n }\r\n\r\n if (options.tags) {\r\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\r\n }\r\n\r\n if (options.tokenSeparators != null || options.tokenizer != null) {\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Tokenizer\r\n );\r\n }\r\n\r\n if (options.query != null) {\r\n var Query = require(options.amdBase + 'compat/query');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n Query\r\n );\r\n }\r\n\r\n if (options.initSelection != null) {\r\n var InitSelection = require(options.amdBase + 'compat/initSelection');\r\n\r\n options.dataAdapter = Utils.Decorate(\r\n options.dataAdapter,\r\n InitSelection\r\n );\r\n }\r\n }\r\n\r\n if (options.resultsAdapter == null) {\r\n options.resultsAdapter = ResultsList;\r\n\r\n if (options.ajax != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n InfiniteScroll\r\n );\r\n }\r\n\r\n if (options.placeholder != null) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n HidePlaceholder\r\n );\r\n }\r\n\r\n if (options.selectOnClose) {\r\n options.resultsAdapter = Utils.Decorate(\r\n options.resultsAdapter,\r\n SelectOnClose\r\n );\r\n }\r\n }\r\n\r\n if (options.dropdownAdapter == null) {\r\n if (options.multiple) {\r\n options.dropdownAdapter = Dropdown;\r\n } else {\r\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\r\n\r\n options.dropdownAdapter = SearchableDropdown;\r\n }\r\n\r\n if (options.minimumResultsForSearch !== 0) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n MinimumResultsForSearch\r\n );\r\n }\r\n\r\n if (options.closeOnSelect) {\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n CloseOnSelect\r\n );\r\n }\r\n\r\n if (\r\n options.dropdownCssClass != null ||\r\n options.dropdownCss != null ||\r\n options.adaptDropdownCssClass != null\r\n ) {\r\n var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n DropdownCSS\r\n );\r\n }\r\n\r\n options.dropdownAdapter = Utils.Decorate(\r\n options.dropdownAdapter,\r\n AttachBody\r\n );\r\n }\r\n\r\n if (options.selectionAdapter == null) {\r\n if (options.multiple) {\r\n options.selectionAdapter = MultipleSelection;\r\n } else {\r\n options.selectionAdapter = SingleSelection;\r\n }\r\n\r\n // Add the placeholder mixin if a placeholder was specified\r\n if (options.placeholder != null) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n Placeholder\r\n );\r\n }\r\n\r\n if (options.allowClear) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n AllowClear\r\n );\r\n }\r\n\r\n if (options.multiple) {\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n SelectionSearch\r\n );\r\n }\r\n\r\n if (\r\n options.containerCssClass != null ||\r\n options.containerCss != null ||\r\n options.adaptContainerCssClass != null\r\n ) {\r\n var ContainerCSS = require(options.amdBase + 'compat/containerCss');\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n ContainerCSS\r\n );\r\n }\r\n\r\n options.selectionAdapter = Utils.Decorate(\r\n options.selectionAdapter,\r\n EventRelay\r\n );\r\n }\r\n\r\n if (typeof options.language === 'string') {\r\n // Check if the language is specified with a region\r\n if (options.language.indexOf('-') > 0) {\r\n // Extract the region information if it is included\r\n var languageParts = options.language.split('-');\r\n var baseLanguage = languageParts[0];\r\n\r\n options.language = [options.language, baseLanguage];\r\n } else {\r\n options.language = [options.language];\r\n }\r\n }\r\n\r\n if ($.isArray(options.language)) {\r\n var languages = new Translation();\r\n options.language.push('en');\r\n\r\n var languageNames = options.language;\r\n\r\n for (var l = 0; l < languageNames.length; l++) {\r\n var name = languageNames[l];\r\n var language = {};\r\n\r\n try {\r\n // Try to load it with the original name\r\n language = Translation.loadPath(name);\r\n } catch (e) {\r\n try {\r\n // If we couldn't load it, check if it wasn't the full path\r\n name = this.defaults.amdLanguageBase + name;\r\n language = Translation.loadPath(name);\r\n } catch (ex) {\r\n // The translation could not be loaded at all. Sometimes this is\r\n // because of a configuration problem, other times this can be\r\n // because of how Select2 helps load all possible translation files.\r\n if (options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The language file for \"' + name + '\" could not be ' +\r\n 'automatically loaded. A fallback will be used instead.'\r\n );\r\n }\r\n\r\n continue;\r\n }\r\n }\r\n\r\n languages.extend(language);\r\n }\r\n\r\n options.translations = languages;\r\n } else {\r\n var baseTranslation = Translation.loadPath(\r\n this.defaults.amdLanguageBase + 'en'\r\n );\r\n var customTranslation = new Translation(options.language);\r\n\r\n customTranslation.extend(baseTranslation);\r\n\r\n options.translations = customTranslation;\r\n }\r\n\r\n return options;\r\n };\r\n\r\n Defaults.prototype.reset = function () {\r\n function stripDiacritics (text) {\r\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\r\n function match(a) {\r\n return DIACRITICS[a] || a;\r\n }\r\n\r\n return text.replace(/[^\\u0000-\\u007E]/g, match);\r\n }\r\n\r\n function matcher (params, data) {\r\n // Always return the object if there is nothing to compare\r\n if ($.trim(params.term) === '') {\r\n return data;\r\n }\r\n\r\n // Do a recursive check for options with children\r\n if (data.children && data.children.length > 0) {\r\n // Clone the data object if there are children\r\n // This is required as we modify the object to remove any non-matches\r\n var match = $.extend(true, {}, data);\r\n\r\n // Check each child of the option\r\n for (var c = data.children.length - 1; c >= 0; c--) {\r\n var child = data.children[c];\r\n\r\n var matches = matcher(params, child);\r\n\r\n // If there wasn't a match, remove the object in the array\r\n if (matches == null) {\r\n match.children.splice(c, 1);\r\n }\r\n }\r\n\r\n // If any children matched, return the new object\r\n if (match.children.length > 0) {\r\n return match;\r\n }\r\n\r\n // If there were no matching children, check just the plain object\r\n return matcher(params, match);\r\n }\r\n\r\n var original = stripDiacritics(data.text).toUpperCase();\r\n var term = stripDiacritics(params.term).toUpperCase();\r\n\r\n // Check if the text contains the term\r\n if (original.indexOf(term) > -1) {\r\n return data;\r\n }\r\n\r\n // If it doesn't contain the term, don't return anything\r\n return null;\r\n }\r\n\r\n this.defaults = {\r\n amdBase: './',\r\n amdLanguageBase: './i18n/',\r\n closeOnSelect: true,\r\n debug: false,\r\n dropdownAutoWidth: false,\r\n escapeMarkup: Utils.escapeMarkup,\r\n language: EnglishTranslation,\r\n matcher: matcher,\r\n minimumInputLength: 0,\r\n maximumInputLength: 0,\r\n maximumSelectionLength: 0,\r\n minimumResultsForSearch: 0,\r\n selectOnClose: false,\r\n sorter: function (data) {\r\n return data;\r\n },\r\n templateResult: function (result) {\r\n return result.text;\r\n },\r\n templateSelection: function (selection) {\r\n return selection.text;\r\n },\r\n theme: 'default',\r\n width: 'resolve'\r\n };\r\n };\r\n\r\n Defaults.prototype.set = function (key, value) {\r\n var camelKey = $.camelCase(key);\r\n\r\n var data = {};\r\n data[camelKey] = value;\r\n\r\n var convertedData = Utils._convertData(data);\r\n\r\n $.extend(this.defaults, convertedData);\r\n };\r\n\r\n var defaults = new Defaults();\r\n\r\n return defaults;\r\n});\r\n\r\nS2.define('select2/options',[\r\n 'require',\r\n 'jquery',\r\n './defaults',\r\n './utils'\r\n], function (require, $, Defaults, Utils) {\r\n function Options (options, $element) {\r\n this.options = options;\r\n\r\n if ($element != null) {\r\n this.fromElement($element);\r\n }\r\n\r\n this.options = Defaults.apply(this.options);\r\n\r\n if ($element && $element.is('input')) {\r\n var InputCompat = require(this.get('amdBase') + 'compat/inputData');\r\n\r\n this.options.dataAdapter = Utils.Decorate(\r\n this.options.dataAdapter,\r\n InputCompat\r\n );\r\n }\r\n }\r\n\r\n Options.prototype.fromElement = function ($e) {\r\n var excludedData = ['select2'];\r\n\r\n if (this.options.multiple == null) {\r\n this.options.multiple = $e.prop('multiple');\r\n }\r\n\r\n if (this.options.disabled == null) {\r\n this.options.disabled = $e.prop('disabled');\r\n }\r\n\r\n if (this.options.language == null) {\r\n if ($e.prop('lang')) {\r\n this.options.language = $e.prop('lang').toLowerCase();\r\n } else if ($e.closest('[lang]').prop('lang')) {\r\n this.options.language = $e.closest('[lang]').prop('lang');\r\n }\r\n }\r\n\r\n if (this.options.dir == null) {\r\n if ($e.prop('dir')) {\r\n this.options.dir = $e.prop('dir');\r\n } else if ($e.closest('[dir]').prop('dir')) {\r\n this.options.dir = $e.closest('[dir]').prop('dir');\r\n } else {\r\n this.options.dir = 'ltr';\r\n }\r\n }\r\n\r\n $e.prop('disabled', this.options.disabled);\r\n $e.prop('multiple', this.options.multiple);\r\n\r\n if ($e.data('select2Tags')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\r\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\r\n 'removed in future versions of Select2.'\r\n );\r\n }\r\n\r\n $e.data('data', $e.data('select2Tags'));\r\n $e.data('tags', true);\r\n }\r\n\r\n if ($e.data('ajaxUrl')) {\r\n if (this.options.debug && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\r\n '`data-ajax--url` and support for the old attribute will be removed' +\r\n ' in future versions of Select2.'\r\n );\r\n }\r\n\r\n $e.attr('ajax--url', $e.data('ajaxUrl'));\r\n $e.data('ajax--url', $e.data('ajaxUrl'));\r\n }\r\n\r\n var dataset = {};\r\n\r\n // Prefer the element's `dataset` attribute if it exists\r\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\r\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\r\n dataset = $.extend(true, {}, $e[0].dataset, $e.data());\r\n } else {\r\n dataset = $e.data();\r\n }\r\n\r\n var data = $.extend(true, {}, dataset);\r\n\r\n data = Utils._convertData(data);\r\n\r\n for (var key in data) {\r\n if ($.inArray(key, excludedData) > -1) {\r\n continue;\r\n }\r\n\r\n if ($.isPlainObject(this.options[key])) {\r\n $.extend(this.options[key], data[key]);\r\n } else {\r\n this.options[key] = data[key];\r\n }\r\n }\r\n\r\n return this;\r\n };\r\n\r\n Options.prototype.get = function (key) {\r\n return this.options[key];\r\n };\r\n\r\n Options.prototype.set = function (key, val) {\r\n this.options[key] = val;\r\n };\r\n\r\n return Options;\r\n});\r\n\r\nS2.define('select2/core',[\r\n 'jquery',\r\n './options',\r\n './utils',\r\n './keys'\r\n], function ($, Options, Utils, KEYS) {\r\n var Select2 = function ($element, options) {\r\n if ($element.data('select2') != null) {\r\n $element.data('select2').destroy();\r\n }\r\n\r\n this.$element = $element;\r\n\r\n this.id = this._generateId($element);\r\n\r\n options = options || {};\r\n\r\n this.options = new Options(options, $element);\r\n\r\n Select2.__super__.constructor.call(this);\r\n\r\n // Set up the tabindex\r\n\r\n var tabindex = $element.attr('tabindex') || 0;\r\n $element.data('old-tabindex', tabindex);\r\n $element.attr('tabindex', '-1');\r\n\r\n // Set up containers and adapters\r\n\r\n var DataAdapter = this.options.get('dataAdapter');\r\n this.dataAdapter = new DataAdapter($element, this.options);\r\n\r\n var $container = this.render();\r\n\r\n this._placeContainer($container);\r\n\r\n var SelectionAdapter = this.options.get('selectionAdapter');\r\n this.selection = new SelectionAdapter($element, this.options);\r\n this.$selection = this.selection.render();\r\n\r\n this.selection.position(this.$selection, $container);\r\n\r\n var DropdownAdapter = this.options.get('dropdownAdapter');\r\n this.dropdown = new DropdownAdapter($element, this.options);\r\n this.$dropdown = this.dropdown.render();\r\n\r\n this.dropdown.position(this.$dropdown, $container);\r\n\r\n var ResultsAdapter = this.options.get('resultsAdapter');\r\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\r\n this.$results = this.results.render();\r\n\r\n this.results.position(this.$results, this.$dropdown);\r\n\r\n // Bind events\r\n\r\n var self = this;\r\n\r\n // Bind the container to all of the adapters\r\n this._bindAdapters();\r\n\r\n // Register any DOM event handlers\r\n this._registerDomEvents();\r\n\r\n // Register any internal event handlers\r\n this._registerDataEvents();\r\n this._registerSelectionEvents();\r\n this._registerDropdownEvents();\r\n this._registerResultsEvents();\r\n this._registerEvents();\r\n\r\n // Set the initial state\r\n this.dataAdapter.current(function (initialData) {\r\n self.trigger('selection:update', {\r\n data: initialData\r\n });\r\n });\r\n\r\n // Hide the original select\r\n $element.addClass('select2-hidden-accessible');\r\n $element.attr('aria-hidden', 'true');\r\n\r\n // Synchronize any monitored attributes\r\n this._syncAttributes();\r\n\r\n $element.data('select2', this);\r\n };\r\n\r\n Utils.Extend(Select2, Utils.Observable);\r\n\r\n Select2.prototype._generateId = function ($element) {\r\n var id = '';\r\n\r\n if ($element.attr('id') != null) {\r\n id = $element.attr('id');\r\n } else if ($element.attr('name') != null) {\r\n id = $element.attr('name') + '-' + Utils.generateChars(2);\r\n } else {\r\n id = Utils.generateChars(4);\r\n }\r\n\r\n id = 'select2-' + id;\r\n\r\n return id;\r\n };\r\n\r\n Select2.prototype._placeContainer = function ($container) {\r\n $container.insertAfter(this.$element);\r\n\r\n var width = this._resolveWidth(this.$element, this.options.get('width'));\r\n\r\n if (width != null) {\r\n $container.css('width', width);\r\n }\r\n };\r\n\r\n Select2.prototype._resolveWidth = function ($element, method) {\r\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\r\n\r\n if (method == 'resolve') {\r\n var styleWidth = this._resolveWidth($element, 'style');\r\n\r\n if (styleWidth != null) {\r\n return styleWidth;\r\n }\r\n\r\n return this._resolveWidth($element, 'element');\r\n }\r\n\r\n if (method == 'element') {\r\n var elementWidth = $element.outerWidth(false);\r\n\r\n if (elementWidth <= 0) {\r\n return 'auto';\r\n }\r\n\r\n return elementWidth + 'px';\r\n }\r\n\r\n if (method == 'style') {\r\n var style = $element.attr('style');\r\n\r\n if (typeof(style) !== 'string') {\r\n return null;\r\n }\r\n\r\n var attrs = style.split(';');\r\n\r\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\r\n var attr = attrs[i].replace(/\\s/g, '');\r\n var matches = attr.match(WIDTH);\r\n\r\n if (matches !== null && matches.length >= 1) {\r\n return matches[1];\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return method;\r\n };\r\n\r\n Select2.prototype._bindAdapters = function () {\r\n this.dataAdapter.bind(this, this.$container);\r\n this.selection.bind(this, this.$container);\r\n\r\n this.dropdown.bind(this, this.$container);\r\n this.results.bind(this, this.$container);\r\n };\r\n\r\n Select2.prototype._registerDomEvents = function () {\r\n var self = this;\r\n\r\n this.$element.on('change.select2', function () {\r\n self.dataAdapter.current(function (data) {\r\n self.trigger('selection:update', {\r\n data: data\r\n });\r\n });\r\n });\r\n\r\n this._sync = Utils.bind(this._syncAttributes, this);\r\n\r\n if (this.$element[0].attachEvent) {\r\n this.$element[0].attachEvent('onpropertychange', this._sync);\r\n }\r\n\r\n var observer = window.MutationObserver ||\r\n window.WebKitMutationObserver ||\r\n window.MozMutationObserver\r\n ;\r\n\r\n if (observer != null) {\r\n this._observer = new observer(function (mutations) {\r\n $.each(mutations, self._sync);\r\n });\r\n this._observer.observe(this.$element[0], {\r\n attributes: true,\r\n subtree: false\r\n });\r\n } else if (this.$element[0].addEventListener) {\r\n this.$element[0].addEventListener('DOMAttrModified', self._sync, false);\r\n }\r\n };\r\n\r\n Select2.prototype._registerDataEvents = function () {\r\n var self = this;\r\n\r\n this.dataAdapter.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerSelectionEvents = function () {\r\n var self = this;\r\n var nonRelayEvents = ['toggle', 'focus'];\r\n\r\n this.selection.on('toggle', function () {\r\n self.toggleDropdown();\r\n });\r\n\r\n this.selection.on('focus', function (params) {\r\n self.focus(params);\r\n });\r\n\r\n this.selection.on('*', function (name, params) {\r\n if ($.inArray(name, nonRelayEvents) !== -1) {\r\n return;\r\n }\r\n\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerDropdownEvents = function () {\r\n var self = this;\r\n\r\n this.dropdown.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerResultsEvents = function () {\r\n var self = this;\r\n\r\n this.results.on('*', function (name, params) {\r\n self.trigger(name, params);\r\n });\r\n };\r\n\r\n Select2.prototype._registerEvents = function () {\r\n var self = this;\r\n\r\n this.on('open', function () {\r\n self.$container.addClass('select2-container--open');\r\n });\r\n\r\n this.on('close', function () {\r\n self.$container.removeClass('select2-container--open');\r\n });\r\n\r\n this.on('enable', function () {\r\n self.$container.removeClass('select2-container--disabled');\r\n });\r\n\r\n this.on('disable', function () {\r\n self.$container.addClass('select2-container--disabled');\r\n });\r\n\r\n this.on('blur', function () {\r\n self.$container.removeClass('select2-container--focus');\r\n });\r\n\r\n this.on('query', function (params) {\r\n if (!self.isOpen()) {\r\n self.trigger('open', {});\r\n }\r\n\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:all', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('query:append', function (params) {\r\n this.dataAdapter.query(params, function (data) {\r\n self.trigger('results:append', {\r\n data: data,\r\n query: params\r\n });\r\n });\r\n });\r\n\r\n this.on('keypress', function (evt) {\r\n var key = evt.which;\r\n\r\n if (self.isOpen()) {\r\n if (key === KEYS.ESC || key === KEYS.TAB ||\r\n (key === KEYS.UP && evt.altKey)) {\r\n self.close();\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.ENTER) {\r\n self.trigger('results:select', {});\r\n\r\n evt.preventDefault();\r\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\r\n self.trigger('results:toggle', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.UP) {\r\n self.trigger('results:previous', {});\r\n\r\n evt.preventDefault();\r\n } else if (key === KEYS.DOWN) {\r\n self.trigger('results:next', {});\r\n\r\n evt.preventDefault();\r\n }\r\n } else {\r\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\r\n (key === KEYS.DOWN && evt.altKey)) {\r\n self.open();\r\n\r\n evt.preventDefault();\r\n }\r\n }\r\n });\r\n };\r\n\r\n Select2.prototype._syncAttributes = function () {\r\n this.options.set('disabled', this.$element.prop('disabled'));\r\n\r\n if (this.options.get('disabled')) {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n\r\n this.trigger('disable', {});\r\n } else {\r\n this.trigger('enable', {});\r\n }\r\n };\r\n\r\n /**\r\n * Override the trigger method to automatically trigger pre-events when\r\n * there are events that can be prevented.\r\n */\r\n Select2.prototype.trigger = function (name, args) {\r\n var actualTrigger = Select2.__super__.trigger;\r\n var preTriggerMap = {\r\n 'open': 'opening',\r\n 'close': 'closing',\r\n 'select': 'selecting',\r\n 'unselect': 'unselecting'\r\n };\r\n\r\n if (name in preTriggerMap) {\r\n var preTriggerName = preTriggerMap[name];\r\n var preTriggerArgs = {\r\n prevented: false,\r\n name: name,\r\n args: args\r\n };\r\n\r\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\r\n\r\n if (preTriggerArgs.prevented) {\r\n args.prevented = true;\r\n\r\n return;\r\n }\r\n }\r\n\r\n actualTrigger.call(this, name, args);\r\n };\r\n\r\n Select2.prototype.toggleDropdown = function () {\r\n if (this.options.get('disabled')) {\r\n return;\r\n }\r\n\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n };\r\n\r\n Select2.prototype.open = function () {\r\n if (this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('query', {});\r\n };\r\n\r\n Select2.prototype.close = function () {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.trigger('close', {});\r\n };\r\n\r\n Select2.prototype.isOpen = function () {\r\n return this.$container.hasClass('select2-container--open');\r\n };\r\n\r\n Select2.prototype.hasFocus = function () {\r\n return this.$container.hasClass('select2-container--focus');\r\n };\r\n\r\n Select2.prototype.focus = function (data) {\r\n // No need to re-trigger focus events if we are already focused\r\n if (this.hasFocus()) {\r\n return;\r\n }\r\n\r\n this.$container.addClass('select2-container--focus');\r\n this.trigger('focus', {});\r\n };\r\n\r\n Select2.prototype.enable = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\r\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\r\n ' instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n args = [true];\r\n }\r\n\r\n var disabled = !args[0];\r\n\r\n this.$element.prop('disabled', disabled);\r\n };\r\n\r\n Select2.prototype.data = function () {\r\n if (this.options.get('debug') &&\r\n arguments.length > 0 && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\r\n 'should consider setting the value instead using `$element.val()`.'\r\n );\r\n }\r\n\r\n var data = [];\r\n\r\n this.dataAdapter.current(function (currentData) {\r\n data = currentData;\r\n });\r\n\r\n return data;\r\n };\r\n\r\n Select2.prototype.val = function (args) {\r\n if (this.options.get('debug') && window.console && console.warn) {\r\n console.warn(\r\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\r\n ' removed in later Select2 versions. Use $element.val() instead.'\r\n );\r\n }\r\n\r\n if (args == null || args.length === 0) {\r\n return this.$element.val();\r\n }\r\n\r\n var newVal = args[0];\r\n\r\n if ($.isArray(newVal)) {\r\n newVal = $.map(newVal, function (obj) {\r\n return obj.toString();\r\n });\r\n }\r\n\r\n this.$element.val(newVal).trigger('change');\r\n };\r\n\r\n Select2.prototype.destroy = function () {\r\n this.$container.remove();\r\n\r\n if (this.$element[0].detachEvent) {\r\n this.$element[0].detachEvent('onpropertychange', this._sync);\r\n }\r\n\r\n if (this._observer != null) {\r\n this._observer.disconnect();\r\n this._observer = null;\r\n } else if (this.$element[0].removeEventListener) {\r\n this.$element[0]\r\n .removeEventListener('DOMAttrModified', this._sync, false);\r\n }\r\n\r\n this._sync = null;\r\n\r\n this.$element.off('.select2');\r\n this.$element.attr('tabindex', this.$element.data('old-tabindex'));\r\n\r\n this.$element.removeClass('select2-hidden-accessible');\r\n this.$element.attr('aria-hidden', 'false');\r\n this.$element.removeData('select2');\r\n\r\n this.dataAdapter.destroy();\r\n this.selection.destroy();\r\n this.dropdown.destroy();\r\n this.results.destroy();\r\n\r\n this.dataAdapter = null;\r\n this.selection = null;\r\n this.dropdown = null;\r\n this.results = null;\r\n };\r\n\r\n Select2.prototype.render = function () {\r\n var $container = $(\r\n '' +\r\n '' +\r\n '' +\r\n ''\r\n );\r\n\r\n $container.attr('dir', this.options.get('dir'));\r\n\r\n this.$container = $container;\r\n\r\n this.$container.addClass('select2-container--' + this.options.get('theme'));\r\n\r\n $container.data('element', this.$element);\r\n\r\n return $container;\r\n };\r\n\r\n return Select2;\r\n});\r\n\r\nS2.define('jquery.select2',[\r\n 'jquery',\r\n 'require',\r\n\r\n './select2/core',\r\n './select2/defaults'\r\n], function ($, require, Select2, Defaults) {\r\n // Force jQuery.mousewheel to be loaded if it hasn't already\r\n require('jquery-mousewheel');\r\n\r\n if ($.fn.select2 == null) {\r\n // All methods that should return the element\r\n var thisMethods = ['open', 'close', 'destroy'];\r\n\r\n $.fn.select2 = function (options) {\r\n options = options || {};\r\n\r\n if (typeof options === 'object') {\r\n this.each(function () {\r\n var instanceOptions = $.extend({}, options, true);\r\n\r\n var instance = new Select2($(this), instanceOptions);\r\n });\r\n\r\n return this;\r\n } else if (typeof options === 'string') {\r\n var instance = this.data('select2');\r\n\r\n if (instance == null && window.console && console.error) {\r\n console.error(\r\n 'The select2(\\'' + options + '\\') method was called on an ' +\r\n 'element that is not using Select2.'\r\n );\r\n }\r\n\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n var ret = instance[options](args);\r\n\r\n // Check if we should be returning `this`\r\n if ($.inArray(options, thisMethods) > -1) {\r\n return this;\r\n }\r\n\r\n return ret;\r\n } else {\r\n throw new Error('Invalid arguments for Select2: ' + options);\r\n }\r\n };\r\n }\r\n\r\n if ($.fn.select2.defaults == null) {\r\n $.fn.select2.defaults = Defaults;\r\n }\r\n\r\n return Select2;\r\n});\r\n\r\nS2.define('jquery-mousewheel',[\r\n 'jquery'\r\n], function ($) {\r\n // Used to shim jQuery.mousewheel for non-full builds.\r\n return $;\r\n});\r\n\r\n // Return the AMD loader configuration so it can be used outside of this file\r\n return {\r\n define: S2.define,\r\n require: S2.require\r\n };\r\n}());\r\n\r\n // Autoload the jQuery bindings\r\n // We know that all of the modules exist above this, so we're safe\r\n var select2 = S2.require('jquery.select2');\r\n\r\n // Hold the AMD module references on the jQuery function that was just loaded\r\n // This allows Select2 to use the internal loader outside of this file, such\r\n // as in the language files.\r\n jQuery.fn.select2.amd = S2;\r\n\r\n // Return the Select2 instance for anyone who is importing it.\r\n return select2;\r\n}));\r\n","/*!\r\n * jquery.sumoselect - v2.1.0\r\n * http://hemantnegi.github.io/jquery.sumoselect\r\n * 2014-04-08\r\n *\r\n * Copyright 2015 Hemant Negi\r\n * Email : hemant.frnz@gmail.com\r\n * Compressor http://refresh-sf.com/\r\n */\r\n\r\n(function (factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n // AMD. Register as anonymous module.\r\n define([\"jquery\", \"lodash\"], factory);\r\n } else if (typeof exports === \"object\") {\r\n // Node / CommonJS\r\n factory(require(\"jquery\", \"lodash\"));\r\n } else {\r\n // Browser globals.\r\n factory(jQuery, _);\r\n }\r\n})(function ($, _) {\r\n\r\n \"namespace sumo\";\r\n $.fn.sumoSelect = function (options) {\r\n\r\n // var is_visible_default = false;\r\n //$(document).click(function () { is_visible_default = false; });\r\n\r\n // This is the easiest way to have default options.\r\n var settings = $.extend({\r\n placeholder: \"Ничего не выбрано\", // Dont change it here.\r\n csvDispCount: 1, // display no. of items in multiselect. 0 to display all.\r\n captionFormat:\"Выбрано {0} из {1}\", // format of caption text. you can set your locale.\r\n floatWidth: 400, // Screen width of device at which the list is rendered in floating popup fashion.\r\n forceCustomRendering: false, // force the custom modal on all devices below floatWidth resolution.\r\n nativeOnDevice: [\"Android\", \"BlackBerry\", \"iPhone\", \"iPad\", \"iPod\", \"Opera Mini\", \"IEMobile\", \"Silk\"], //\r\n outputAsCSV: false, // true to POST data as csv ( false for Html control array ie. deafault select )\r\n csvSepChar: \",\", // seperation char in csv mode\r\n okCancelInMulti: false, //display ok cancel buttons in desktop mode multiselect also.\r\n triggerChangeCombined: true, // im multi select mode wether to trigger change event on individual selection or combined selection.\r\n selectAll: false, // to display select all button in multiselect mode.|| also select all will not be available on mobile devices.\r\n selectAlltext: \"Выбрать все\" // the text to display for select all.\r\n\r\n }, options);\r\n\r\n var ret = this.each(function () {\r\n var selObj = this; // the original select object.\r\n if (this.sumo || !$(this).is(\"select\")) return; //already initialized\r\n\r\n this.sumo = {\r\n E: $(selObj), //the jquery object of original select element.\r\n is_multi: $(selObj).attr(\"multiple\"), //if its a mmultiple select\r\n select: \"\",\r\n caption: \"\",\r\n placeholder: \"\",\r\n optDiv: \"\",\r\n captionContainer: \"\",\r\n is_floating: false,\r\n is_opened: false,\r\n //backdrop: '',\r\n mob:false, // if to open device default select\r\n Pstate: [],\r\n selectedCount: 0,\r\n\r\n createElems: function () {\r\n var O = this;\r\n O.E.wrap(\"
        \");\r\n O.select = O.E.parent();\r\n O.caption = $(\"\");\r\n O.captionContainer = $(\"
        \").addClass(\"select-box\").attr(\"style\", O.E.attr(\"style\")).prepend(O.caption);\r\n O.select.append(O.captionContainer);\r\n\r\n if(O.E.attr(\"disabled\"))\r\n O.select.addClass(\"disabled\").removeAttr(\"tabindex\");\r\n\r\n //if output as csv and is a multiselect.\r\n if (settings.outputAsCSV && O.is_multi && O.E.attr(\"name\")) {\r\n //create a hidden field to store csv value.\r\n O.select.append($(\"\").attr(\"name\", O.E.attr(\"name\")).val(O.getSelStr()));\r\n\r\n // so it can not post the original select.\r\n O.E.removeAttr(\"name\");\r\n }\r\n\r\n //break for mobile rendring.. if forceCustomRendering is false\r\n if (O.isMobile() && !settings.forceCustomRendering) {\r\n O.setNativeMobile();\r\n return;\r\n }\r\n\r\n //hide original select\r\n O.E.hide();\r\n\r\n //## Creating the list...\r\n O.optDiv = $(\"
        \");\r\n\r\n //branch for floating list in low res devices.\r\n O.floatingList();\r\n\r\n //Creating the markup for the available options\r\n ul = $(\"
          \");\r\n O.optDiv.append(ul);\r\n\r\n // Select all functionality\r\n if (settings.selectAll) O.selAll();\r\n if (settings.clearAll && O.is_multi) O.clearAll();\r\n\r\n $(O.E.children(\"option\")).each(function (i, opt) { // parsing options to li\r\n opt = $(opt);\r\n O.createLi(opt);\r\n });\r\n\r\n //if multiple then add the class multiple and add OK / CANCEL button\r\n if (O.is_multi) O.multiSelelect();\r\n\r\n O.select.append(O.optDiv);\r\n O._handleMax();\r\n O.basicEvents();\r\n O.selAllState();\r\n },\r\n\r\n //## Creates a LI element from a given option and binds events to it\r\n //## Adds it to UL at a given index (Last by default)\r\n createLi: function (opt,i) {\r\n var O = this;\r\n\r\n var value = opt.val();\r\n if (!value || value.length === 0) {\r\n return;\r\n }\r\n\r\n if (!opt.attr(\"value\")) {\r\n opt.attr(\"value\", value);\r\n }\r\n\r\n li = $(\"
        • \");\r\n if (O.is_multi) li.prepend(\"\");\r\n\r\n if (opt[0].disabled)\r\n li = li.addClass(\"disabled\");\r\n\r\n O.onOptClick(li);\r\n\r\n if (opt[0].selected) {\r\n li.addClass(\"selected\");\r\n O.selectedCount++;\r\n }\r\n\r\n if (opt.attr(\"class\"))\r\n li.addClass(opt.attr(\"class\"));\r\n\r\n ul = O.optDiv.children(\"ul.options\");\r\n if (typeof i == \"undefined\")\r\n ul.append(li);\r\n else\r\n ul.children(\"li\").eq(i).before(li);\r\n\r\n return li;\r\n },\r\n\r\n //## Returns the selected items as string in a Multiselect.\r\n getSelStr: function () {\r\n // get the pre selected items.\r\n sopt = [];\r\n this.E.children(\"option:selected\").each(function () { sopt.push($(this).val()); });\r\n return sopt.join(settings.csvSepChar);\r\n },\r\n\r\n //## THOSE OK/CANCEL BUTTONS ON MULTIPLE SELECT.\r\n multiSelelect: function () {\r\n var O = this;\r\n O.optDiv.addClass(\"multiple\");\r\n O.okbtn = $(\"

          OK

          \").click(function () {\r\n\r\n //if combined change event is set.\r\n if (settings.triggerChangeCombined) {\r\n\r\n //check for a change in the selection.\r\n changed = false;\r\n if (O.E.children(\"option:selected\").length != O.Pstate.length) {\r\n changed = true;\r\n }\r\n else {\r\n O.E.children(\"option:selected\").each(function () {\r\n if (O.Pstate.indexOf($(this).val()) < 0) changed = true;\r\n });\r\n }\r\n\r\n if (changed) {\r\n O.E.trigger(\"change\").trigger(\"click\");\r\n O.setText();\r\n }\r\n }\r\n O.hideOpts();\r\n });\r\n O.cancelBtn = $(\"

          Отмена

          \").click(function () {\r\n O._cnbtn();\r\n O.hideOpts();\r\n });\r\n O.optDiv.append($(\"
          \").append(O.okbtn).append(O.cancelBtn));\r\n },\r\n\r\n _cnbtn: function () {\r\n var O = this;\r\n //remove all selections\r\n O.E.children(\"option:selected\").each(function () { this.selected = false; });\r\n O.optDiv.find(\"li.selected\").removeClass(\"selected\")\r\n this.selectedCount = 0;\r\n\r\n //restore selections from saved state.\r\n for (i = 0; i < O.Pstate.length; i++) {\r\n O.E.children(\"option[value=\\\"\" + O.Pstate[i] + \"\\\"]\")[0].selected = true;\r\n O.optDiv.find(\"li[data-val=\\\"\" + O.Pstate[i] + \"\\\"]\").addClass(\"selected\");\r\n this.selectedCount++;\r\n }\r\n O._handleMax();\r\n O.selAllState();\r\n },\r\n\r\n _handleMax() {\r\n // Disable options if max reached\r\n if (settings.max) {\r\n if (this.selectedCount >= +settings.max) {\r\n this.optDiv.find('li').not('.hidden').each((ix, e) => {\r\n if (!$(e).hasClass('selected')) {\r\n $(e).addClass('temporary-disabled disabled');\r\n }\r\n });\r\n } else {\r\n // Enable options back\r\n this.optDiv.find('li').not('.hidden').each((ix, e) => {\r\n if ($(e).hasClass('temporary-disabled')) {\r\n $(e).removeClass('temporary-disabled disabled');\r\n }\r\n });\r\n }\r\n }\r\n },\r\n\r\n clearAll() {\r\n const O = this;\r\n if (!O.is_multi) return;\r\n O.selAll = $('

          ');\r\n O.selAll.find('label')[0].innerText = settings.clearAlltext;\r\n O.selAll.on('click', () => {\r\n O.selAll.removeClass('selected');\r\n O.toggSelAll(false, 1);\r\n O.selectedCount = 0;\r\n if (settings.max) {\r\n O._handleMax();\r\n }\r\n if (settings.closeAfterClearAll) {\r\n O.hideOpts();\r\n }\r\n });\r\n\r\n O.optDiv.prepend(O.selAll);\r\n },\r\n\r\n selAll:function(){\r\n var O = this;\r\n if(!O.is_multi)return;\r\n O.chkAll = $(\"\");\r\n O.selAll = $(\"

          \").prepend($(\"\").append(O.chkAll));\r\n O.selAll.on(\"click\", function () {\r\n //O.toggSelAll(!);\r\n O.selAll.toggleClass(\"selected\");\r\n O.optDiv.find(\"ul.options li\").each(function(ix,e){\r\n e = $(e);\r\n if(O.selAll.hasClass(\"selected\")){\r\n if(!e.hasClass(\"selected\"))e.trigger(\"click\");\r\n }\r\n else\r\n if(e.hasClass(\"selected\"))e.trigger(\"click\");\r\n });\r\n });\r\n\r\n O.optDiv.prepend(O.selAll);\r\n },\r\n\r\n selAllState: function () {\r\n var O = this;\r\n if (settings.selectAll) {\r\n var sc = 0, vc = 0;\r\n O.optDiv.find(\"ul.options li\").each(function (ix, e) {\r\n if ($(e).hasClass(\"selected\")) sc++;\r\n if (!$(e).hasClass(\"disabled\")) vc++;\r\n });\r\n //select all checkbox state change.\r\n if (sc == vc) O.selAll.removeClass(\"partial\").addClass(\"selected\");\r\n else if (sc == 0) O.selAll.removeClass(\"selected partial\");\r\n else O.selAll.addClass(\"partial\")//.removeClass('selected');\r\n }\r\n },\r\n\r\n showOpts: function () {\r\n var O = this;\r\n if (O.E.attr(\"disabled\")) return; // if select is disabled then retrun\r\n O.is_opened = true;\r\n //O.backdrop.show();\r\n O.optDiv.addClass(\"open\");\r\n\r\n // hide options on click outside.\r\n $(document).on(\"click.sumo\", function (e) {\r\n if (!O.select.is(e.target) // if the target of the click isn't the container...\r\n && O.select.has(e.target).length === 0){ // ... nor a descendant of the container\r\n// if (O.is_multi && settings.okCancelInMulti)\r\n// O._cnbtn();\r\n// O.hideOpts();\r\n\t\t\t\t\t\t\t\tif(!O.is_opened)return;\r\n\t\t\t\t\t\t\t\tO.hideOpts();\r\n\t\t\t\t\t\t\t\tif (O.is_multi && settings.okCancelInMulti)O._cnbtn();\r\n }\r\n });\r\n\r\n if (O.is_floating) {\r\n H = O.optDiv.children(\"ul\").outerHeight() + 2; // +2 is clear fix\r\n if (O.is_multi) H = H + parseInt(O.optDiv.css(\"padding-bottom\"));\r\n O.optDiv.css(\"height\", H);\r\n }\r\n\r\n //maintain state when ok/cancel buttons are available.\r\n if (O.is_multi && (O.is_floating || settings.okCancelInMulti)) {\r\n O.Pstate = [];\r\n O.E.children(\"option:selected\").each(function () { O.Pstate.push($(this).val()); });\r\n }\r\n },\r\n hideOpts: function () {\r\n var O = this;\r\n O.is_opened = false;\r\n O.optDiv.removeClass(\"open\").find(\"ul li.selected\").removeClass(\"sel\");\r\n $(document).off(\"click.sumo\");\r\n },\r\n setOnOpen: function () {\r\n var O = this;\r\n var li = O.optDiv.find(\"ul li\").eq(O.E[0].selectedIndex);\r\n li.addClass(\"sel\");\r\n O.showOpts();\r\n },\r\n nav: function (up) {\r\n var O = this, c;\r\n var sel = O.optDiv.find(\"ul li.selected\");\r\n if (O.is_opened && sel.length) {\r\n if (up)\r\n c = sel.prevAll(\"li:not(.disabled)\");\r\n else\r\n c = sel.nextAll(\"li:not(.disabled)\");\r\n if (!c.length)return;\r\n sel.removeClass(\"sel\");\r\n sel = c.first().addClass(\"sel\");\r\n\r\n // setting sel item to visible view.\r\n var ul = O.optDiv.find(\"ul\"),\r\n st = ul.scrollTop(),\r\n t = sel.position().top + st; \r\n if(t >= st + ul.height()-sel.outerHeight())\r\n ul.scrollTop(t - ul.height() + sel.outerHeight());\r\n if(t= settings.csvDispCount && settings.csvDispCount) {\r\n O.placeholder = settings.captionFormat.replace(\"{0}\", sels.length).replace(\"{1}\", totalItems.length);\r\n //O.placeholder = i + '+ Selected';\r\n break;\r\n }\r\n else O.placeholder += $(sels[i]).text() + \", \";\r\n }\r\n O.placeholder = O.placeholder.replace(/,([^,]*)$/, \"$1\"); //remove unexpected \",\" from last.\r\n }\r\n else {\r\n O.placeholder = O.E.children(\":selected\").not(\":disabled\").text();\r\n }\r\n\r\n var is_placeholder = false;\r\n\r\n if (!O.placeholder) {\r\n\r\n is_placeholder = true;\r\n\r\n O.placeholder = O.E.attr(\"placeholder\");\r\n if (!O.placeholder) //if placeholder is there then set it\r\n {\r\n O.placeholder = O.E.children(\"option:disabled:selected\").text();\r\n //if (!O.placeholder && settings.placeholder === 'Select Here')\r\n // O.placeholder = O.E.val();\r\n }\r\n }\r\n\r\n O.placeholder = O.placeholder ? O.placeholder : settings.placeholder\r\n\r\n //set display text\r\n O.caption.html(O.placeholder);\r\n\r\n //set the hidden field if post as csv is true.\r\n var csvField = O.select.find(\"input.hidden-input\");\r\n if (csvField.length) csvField.val(O.getSelStr());\r\n\r\n //add class placeholder if its a placeholder text.\r\n if (is_placeholder) O.caption.addClass(\"placeholder\"); else O.caption.removeClass(\"placeholder\");\r\n return O.placeholder;\r\n },\r\n\r\n isMobile: function () {\r\n\r\n // Adapted from http://www.detectmobilebrowsers.com\r\n var ua = navigator.userAgent || navigator.vendor || window.opera;\r\n\r\n // Checks for iOs, Android, Blackberry, Opera Mini, and Windows mobile devices\r\n for (var i = 0; i < settings.nativeOnDevice.length; i++) if (ua.toString().toLowerCase().indexOf(settings.nativeOnDevice[i].toLowerCase()) > 0) return settings.nativeOnDevice[i];\r\n return false;\r\n },\r\n\r\n setNativeMobile: function () {\r\n var O = this;\r\n O.E.addClass(\"hidden-select\");\r\n\t\t\t\t\tO.mob = true;\r\n O.E.change(function () {\r\n O.setText();\r\n });\r\n },\r\n\r\n floatingList: function () {\r\n var O = this;\r\n //called on init and also on resize.\r\n //O.is_floating = true if window width is < specified float width\r\n O.is_floating = $(window).width() <= settings.floatWidth;\r\n\r\n //set class isFloating\r\n O.optDiv.toggleClass(\"isFloating\", O.is_floating);\r\n\r\n //remove height if not floating\r\n if (!O.is_floating) O.optDiv.css(\"height\", \"\");\r\n\r\n //toggle class according to okCancelInMulti flag only when it is not floating\r\n O.optDiv.toggleClass(\"okCancelInMulti\", settings.okCancelInMulti && !O.is_floating);\r\n },\r\n\r\n //HELPERS FOR OUTSIDERS\r\n // validates range of given item operations\r\n vRange: function (i) {\r\n var O = this;\r\n opts = O.E.children(\"option\");\r\n if (opts.length <= i || i < 0) throw \"index out of bounds\"\r\n return O;\r\n },\r\n\r\n //toggles selection on c as boolean.\r\n toggSel: function (c, i) {\r\n var O = this.vRange(i);\r\n if (O.E.children(\"option\")[i].disabled) return;\r\n O.E.children(\"option\")[i].selected = c;\r\n if(!O.mob)O.optDiv.find(\"ul.options li\").eq(i).toggleClass(\"selected\",c);\r\n O.setText();\r\n },\r\n\r\n //toggles disabled on c as boolean.\r\n toggDis: function (c, i) {\r\n var O = this.vRange(i);\r\n O.E.children(\"option\")[i].disabled = c;\r\n if(c)O.E.children(\"option\")[i].selected = false;\r\n if(!O.mob)O.optDiv.find(\"ul.options li\").eq(i).toggleClass(\"disabled\", c).removeClass(\"selected\");\r\n O.setText();\r\n },\r\n\r\n // toggle disable/enable on complete select control\r\n toggSumo: function(val) {\r\n var O = this;\r\n O.enabled = val;\r\n O.select.toggleClass(\"disabled\", val);\r\n\r\n if (val) {\r\n O.E.attr(\"disabled\", \"disabled\");\r\n O.select.removeAttr(\"tabindex\");\r\n }\r\n else{\r\n O.E.removeAttr(\"disabled\");\r\n O.select.attr(\"tabindex\",\"0\");\r\n }\r\n\r\n return O;\r\n },\r\n\r\n //toggles alloption on c as boolean.\r\n toggSelAll: function (c) {\r\n var O = this;\r\n O.E.find(\"option\").each(function (ix, el) {\r\n if (O.E.find(\"option\")[$(this).index()].disabled) return;\r\n O.E.find(\"option\")[$(this).index()].selected = c;\r\n if (!O.mob)\r\n\t\t\t\t\t\t\tO.optDiv.find(\"ul.options li\").eq($(this).index()).toggleClass(\"selected\", c);\r\n O.setText();\r\n });\r\n if(!O.mob && settings.selectAll)O.selAll.removeClass(\"partial\").toggleClass(\"selected\",c);\r\n },\r\n\r\n /* outside accessibility options\r\n which can be accessed from the element instance.\r\n */\r\n reload:function(){\r\n var elm = this.unload();\r\n return $(elm).sumoSelect(settings);\r\n },\r\n\r\n unload: function () {\r\n var O = this;\r\n O.select.before(O.E);\r\n O.E.show();\r\n\r\n if (settings.outputAsCSV && O.is_multi && O.select.find(\"input.hidden-input\").length) {\r\n O.E.attr(\"name\", O.select.find(\"input.hidden-input\").attr(\"name\")); // restore the name;\r\n }\r\n O.select.remove();\r\n delete selObj.sumo;\r\n return selObj;\r\n },\r\n\r\n //## add a new option to select at a given index.\r\n add: function (val, txt, i) {\r\n if (typeof val == \"undefined\") throw \"No value to add\"\r\n\r\n var O = this;\r\n opts=O.E.children(\"option\")\r\n if (typeof txt == \"number\") { i = txt; txt = val; }\r\n if (typeof txt == \"undefined\") { txt = val; }\r\n\r\n opt = $(\"\").val(val).html(txt);\r\n\r\n if (opts.length < i) throw \"index out of bounds\"\r\n\r\n if (typeof i == \"undefined\" || opts.length == i) { // add it to the last if given index is last no or no index provides.\r\n O.E.append(opt);\r\n if(!O.mob)O.createLi(opt);\r\n }\r\n else {\r\n opts.eq(i).before(opt);\r\n if(!O.mob)O.createLi(opt, i);\r\n }\r\n\r\n return selObj;\r\n },\r\n\r\n //## removes an item at a given index.\r\n remove: function (i) {\r\n var O = this.vRange(i);\r\n O.E.children(\"option\").eq(i).remove();\r\n if(!O.mob)O.optDiv.find(\"ul.options li\").eq(i).remove();\r\n O.setText();\r\n },\r\n\r\n //## Select an item at a given index.\r\n selectItem: function (i) { this.toggSel(true, i); },\r\n\r\n //## UnSelect an iten at a given index.\r\n unSelectItem: function (i) { this.toggSel(false, i); },\r\n\r\n //## Select all items of the select.\r\n selectAll: function () { this.toggSelAll(true); },\r\n\r\n //## UnSelect all items of the select.\r\n unSelectAll: function () { this.toggSelAll(false); },\r\n\r\n //## Disable an iten at a given index.\r\n disableItem: function (i) { this.toggDis(true, i) },\r\n\r\n //## Removes disabled an iten at a given index.\r\n enableItem: function (i) { this.toggDis(false, i) },\r\n\r\n //## New simple methods as getter and setter are not working fine in ie8-\r\n //## variable to check state of control if enabled or disabled.\r\n enabled : true,\r\n //## Enables the control\r\n enable: function(){return this.toggSumo(false)},\r\n\r\n //## Disables the control\r\n disable: function(){return this.toggSumo(true)},\r\n\r\n\r\n init: function () {\r\n var O = this;\r\n O.createElems();\r\n O.setText();\r\n return O\r\n }\r\n\r\n };\r\n\r\n selObj.sumo.init();\r\n });\r\n\r\n return ret.length == 1 ? ret[0] : ret;\r\n };\r\n\r\n\r\n});\r\n","/*!\r\n * @preserve\r\n *\r\n * Readmore.js jQuery plugin\r\n * Author: @jed_foster\r\n * Project home: http://jedfoster.github.io/Readmore.js\r\n * Licensed under the MIT license\r\n *\r\n * Debounce function from http://davidwalsh.name/javascript-debounce-function\r\n */\r\n\r\n/* global jQuery */\r\n\r\n(function(factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD\r\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\r\n // CommonJS\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function($) {\r\n 'use strict';\r\n\r\n var readmore = 'readmore',\r\n defaults = {\r\n speed: 100,\r\n collapsedHeight: 200,\r\n heightMargin: 16,\r\n moreLink: 'Read More',\r\n lessLink: 'Close',\r\n embedCSS: true,\r\n blockCSS: 'display: block; width: 100%;',\r\n startOpen: false,\r\n\r\n // callbacks\r\n beforeToggle: function(){},\r\n afterToggle: function(){}\r\n },\r\n cssEmbedded = {},\r\n uniqueIdCounter = 0;\r\n\r\n function debounce(func, wait, immediate) {\r\n var timeout;\r\n\r\n return function() {\r\n var context = this, args = arguments;\r\n var later = function() {\r\n timeout = null;\r\n if (! immediate) {\r\n func.apply(context, args);\r\n }\r\n };\r\n var callNow = immediate && !timeout;\r\n\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n\r\n if (callNow) {\r\n func.apply(context, args);\r\n }\r\n };\r\n }\r\n\r\n function uniqueId(prefix) {\r\n var id = ++uniqueIdCounter;\r\n\r\n return String(prefix == null ? 'rmjs-' : prefix) + id;\r\n }\r\n\r\n function setBoxHeights(element) {\r\n var el = element.clone().css({\r\n height: 'auto',\r\n width: element.width(),\r\n maxHeight: 'none',\r\n overflow: 'hidden'\r\n }).insertAfter(element),\r\n expandedHeight = el.outerHeight(),\r\n cssMaxHeight = parseInt(el.css({maxHeight: ''}).css('max-height').replace(/[^-\\d\\.]/g, ''), 10),\r\n defaultHeight = element.data('defaultHeight');\r\n\r\n el.remove();\r\n\r\n var collapsedHeight = cssMaxHeight || element.data('collapsedHeight') || defaultHeight;\r\n\r\n // Store our measurements.\r\n element.data({\r\n expandedHeight: expandedHeight,\r\n maxHeight: cssMaxHeight,\r\n collapsedHeight: collapsedHeight\r\n })\r\n // and disable any `max-height` property set in CSS\r\n .css({\r\n maxHeight: 'none'\r\n });\r\n }\r\n\r\n var resizeBoxes = debounce(function() {\r\n $('[data-readmore]').each(function() {\r\n var current = $(this),\r\n isExpanded = (current.attr('aria-expanded') === 'true');\r\n\r\n setBoxHeights(current);\r\n\r\n current.css({\r\n height: current.data( (isExpanded ? 'expandedHeight' : 'collapsedHeight') )\r\n });\r\n });\r\n }, 100);\r\n\r\n function embedCSS(options) {\r\n if (! cssEmbedded[options.selector]) {\r\n var styles = ' ';\r\n\r\n if (options.embedCSS && options.blockCSS !== '') {\r\n styles += options.selector + ' + [data-readmore-toggle], ' +\r\n options.selector + '[data-readmore]{' +\r\n options.blockCSS +\r\n '}';\r\n }\r\n\r\n // Include the transition CSS even if embedCSS is false\r\n styles += options.selector + '[data-readmore]{' +\r\n 'transition: height ' + options.speed + 'ms;' +\r\n 'overflow: hidden;' +\r\n '}';\r\n\r\n (function(d, u) {\r\n var css = d.createElement('style');\r\n css.type = 'text/css';\r\n\r\n if (css.styleSheet) {\r\n css.styleSheet.cssText = u;\r\n }\r\n else {\r\n css.appendChild(d.createTextNode(u));\r\n }\r\n\r\n d.getElementsByTagName('head')[0].appendChild(css);\r\n }(document, styles));\r\n\r\n cssEmbedded[options.selector] = true;\r\n }\r\n }\r\n\r\n function Readmore(element, options) {\r\n this.element = element;\r\n\r\n this.options = $.extend({}, defaults, options);\r\n\r\n embedCSS(this.options);\r\n\r\n this._defaults = defaults;\r\n this._name = readmore;\r\n\r\n this.init();\r\n\r\n // IE8 chokes on `window.addEventListener`, so need to test for support.\r\n if (window.addEventListener) {\r\n // Need to resize boxes when the page has fully loaded.\r\n window.addEventListener('load', resizeBoxes);\r\n window.addEventListener('resize', resizeBoxes);\r\n }\r\n else {\r\n window.attachEvent('load', resizeBoxes);\r\n window.attachEvent('resize', resizeBoxes);\r\n }\r\n }\r\n\r\n\r\n Readmore.prototype = {\r\n init: function() {\r\n var current = $(this.element);\r\n\r\n current.data({\r\n defaultHeight: this.options.collapsedHeight,\r\n heightMargin: this.options.heightMargin\r\n });\r\n\r\n setBoxHeights(current);\r\n\r\n var collapsedHeight = current.data('collapsedHeight'),\r\n heightMargin = current.data('heightMargin');\r\n\r\n if (current.outerHeight(true) <= collapsedHeight + heightMargin) {\r\n // The block is shorter than the limit, so there's no need to truncate it.\r\n return true;\r\n }\r\n else {\r\n var id = current.attr('id') || uniqueId(),\r\n useLink = this.options.startOpen ? this.options.lessLink : this.options.moreLink;\r\n\r\n current.attr({\r\n 'data-readmore': '',\r\n 'aria-expanded': this.options.startOpen,\r\n 'id': id\r\n });\r\n\r\n current.after($(useLink)\r\n .on('click', (function(_this) {\r\n return function(event) {\r\n _this.toggle(this, current[0], event);\r\n };\r\n })(this))\r\n .attr({\r\n 'data-readmore-toggle': '',\r\n 'aria-controls': id\r\n }));\r\n\r\n if (! this.options.startOpen) {\r\n current.css({\r\n height: collapsedHeight\r\n });\r\n }\r\n }\r\n },\r\n\r\n toggle: function(trigger, element, event) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n if (! trigger) {\r\n trigger = $('[aria-controls=\"' + _this.element.id + '\"]')[0];\r\n }\r\n\r\n if (! element) {\r\n element = _this.element;\r\n }\r\n\r\n var $element = $(element),\r\n newHeight = '',\r\n newLink = '',\r\n expanded = false,\r\n collapsedHeight = $element.data('collapsedHeight');\r\n\r\n if ($element.height() <= collapsedHeight) {\r\n newHeight = $element.data('expandedHeight') + 'px';\r\n newLink = 'lessLink';\r\n expanded = true;\r\n }\r\n else {\r\n newHeight = collapsedHeight;\r\n newLink = 'moreLink';\r\n }\r\n\r\n // Fire beforeToggle callback\r\n // Since we determined the new \"expanded\" state above we're now out of sync\r\n // with our true current state, so we need to flip the value of `expanded`\r\n this.options.beforeToggle(trigger, $element, ! expanded);\r\n\r\n $element.css({'height': newHeight});\r\n\r\n // Fire afterToggle callback\r\n $element.on('transitionend', (function(_this) {\r\n return function() {\r\n _this.options.afterToggle(trigger, $element, expanded);\r\n\r\n $(this).attr({\r\n 'aria-expanded': expanded\r\n }).off('transitionend');\r\n }\r\n })(this));\r\n\r\n $(trigger).replaceWith($(this.options[newLink])\r\n .on('click', (function(_this) {\r\n return function(event) {\r\n _this.toggle(this, element, event);\r\n };\r\n })(this))\r\n .attr({\r\n 'data-readmore-toggle': '',\r\n 'aria-controls': $element.attr('id')\r\n }));\r\n },\r\n\r\n destroy: function() {\r\n $(this.element).each(function() {\r\n var current = $(this);\r\n\r\n current.attr({\r\n 'data-readmore': null,\r\n 'aria-expanded': null\r\n })\r\n .css({\r\n maxHeight: '',\r\n height: ''\r\n })\r\n .next('[data-readmore-toggle]')\r\n .remove();\r\n\r\n current.removeData();\r\n });\r\n }\r\n };\r\n\r\n\r\n $.fn.readmore = function(options) {\r\n var args = arguments,\r\n selector = this.selector;\r\n\r\n options = options || {};\r\n\r\n if (typeof options === 'object') {\r\n return this.each(function() {\r\n if ($.data(this, 'plugin_' + readmore)) {\r\n var instance = $.data(this, 'plugin_' + readmore);\r\n instance.destroy.apply(instance);\r\n }\r\n\r\n options.selector = selector;\r\n\r\n $.data(this, 'plugin_' + readmore, new Readmore(this, options));\r\n });\r\n }\r\n else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {\r\n return this.each(function () {\r\n var instance = $.data(this, 'plugin_' + readmore);\r\n if (instance instanceof Readmore && typeof instance[options] === 'function') {\r\n instance[options].apply(instance, Array.prototype.slice.call(args, 1));\r\n }\r\n });\r\n }\r\n };\r\n\r\n}));\r\n\r\n","(function (factory) {\r\n \"use strict\";\r\n if (typeof define === \"function\" && define.amd) {\r\n // AMD anonymous module\r\n define([\"knockout\"], factory);\r\n } else if (typeof require === \"function\" && typeof exports === \"object\" && typeof module === \"object\") {\r\n // CommonJS module\r\n var ko = require(\"knockout\");\r\n var Sortable = require(\"sortable\");\r\n factory(ko, Sortable);\r\n } else {\r\n // No module loader (plain .\");\r\n }\r\n };\r\n\r\n _pageWindow.load(function () { _pageLoaded = true; });\r\n\r\n function validateTransport(requestedTransport, connection) {\r\n /// Validates the requested transport by cross checking it with the pre-defined signalR.transports\r\n /// The designated transports that the user has specified.\r\n /// The connection that will be using the requested transports. Used for logging purposes.\r\n /// \r\n\r\n if ($.isArray(requestedTransport)) {\r\n // Go through transport array and remove an \"invalid\" tranports\r\n for (var i = requestedTransport.length - 1; i >= 0; i--) {\r\n var transport = requestedTransport[i];\r\n if ($.type(transport) !== \"string\" || !signalR.transports[transport]) {\r\n connection.log(\"Invalid transport: \" + transport + \", removing it from the transports list.\");\r\n requestedTransport.splice(i, 1);\r\n }\r\n }\r\n\r\n // Verify we still have transports left, if we dont then we have invalid transports\r\n if (requestedTransport.length === 0) {\r\n connection.log(\"No transports remain within the specified transport array.\");\r\n requestedTransport = null;\r\n }\r\n } else if (!signalR.transports[requestedTransport] && requestedTransport !== \"auto\") {\r\n connection.log(\"Invalid transport: \" + requestedTransport.toString() + \".\");\r\n requestedTransport = null;\r\n } else if (requestedTransport === \"auto\" && signalR._.ieVersion <= 8) {\r\n // If we're doing an auto transport and we're IE8 then force longPolling, #1764\r\n return [\"longPolling\"];\r\n\r\n }\r\n\r\n return requestedTransport;\r\n }\r\n\r\n function getDefaultPort(protocol) {\r\n if (protocol === \"http:\") {\r\n return 80;\r\n } else if (protocol === \"https:\") {\r\n return 443;\r\n }\r\n }\r\n\r\n function addDefaultPort(protocol, url) {\r\n // Remove ports from url. We have to check if there's a / or end of line\r\n // following the port in order to avoid removing ports such as 8080.\r\n if (url.match(/:\\d+$/)) {\r\n return url;\r\n } else {\r\n return url + \":\" + getDefaultPort(protocol);\r\n }\r\n }\r\n\r\n function ConnectingMessageBuffer(connection, drainCallback) {\r\n var that = this,\r\n buffer = [];\r\n\r\n that.tryBuffer = function (message) {\r\n if (connection.state === $.signalR.connectionState.connecting) {\r\n buffer.push(message);\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n that.drain = function () {\r\n // Ensure that the connection is connected when we drain (do not want to drain while a connection is not active)\r\n if (connection.state === $.signalR.connectionState.connected) {\r\n while (buffer.length > 0) {\r\n drainCallback(buffer.shift());\r\n }\r\n }\r\n };\r\n\r\n that.clear = function () {\r\n buffer = [];\r\n };\r\n }\r\n\r\n signalR.fn = signalR.prototype = {\r\n init: function (url, qs, logging) {\r\n var $connection = $(this);\r\n\r\n this.url = url;\r\n this.qs = qs;\r\n this.lastError = null;\r\n this._ = {\r\n keepAliveData: {},\r\n connectingMessageBuffer: new ConnectingMessageBuffer(this, function (message) {\r\n $connection.triggerHandler(events.onReceived, [message]);\r\n }),\r\n lastMessageAt: new Date().getTime(),\r\n lastActiveAt: new Date().getTime(),\r\n beatInterval: 5000, // Default value, will only be overridden if keep alive is enabled,\r\n beatHandle: null,\r\n totalTransportConnectTimeout: 0 // This will be the sum of the TransportConnectTimeout sent in response to negotiate and connection.transportConnectTimeout\r\n };\r\n if (typeof (logging) === \"boolean\") {\r\n this.logging = logging;\r\n }\r\n },\r\n\r\n _parseResponse: function (response) {\r\n var that = this;\r\n\r\n if (!response) {\r\n return response;\r\n } else if (typeof response === \"string\") {\r\n return that.json.parse(response);\r\n } else {\r\n return response;\r\n }\r\n },\r\n\r\n _originalJson: window.JSON,\r\n\r\n json: window.JSON,\r\n\r\n isCrossDomain: function (url, against) {\r\n /// Checks if url is cross domain\r\n /// The base URL\r\n /// \r\n /// An optional argument to compare the URL against, if not specified it will be set to window.location.\r\n /// If specified it must contain a protocol and a host property.\r\n /// \r\n var link;\r\n\r\n url = $.trim(url);\r\n\r\n against = against || window.location;\r\n\r\n if (url.indexOf(\"http\") !== 0) {\r\n return false;\r\n }\r\n\r\n // Create an anchor tag.\r\n link = window.document.createElement(\"a\");\r\n link.href = url;\r\n\r\n // When checking for cross domain we have to special case port 80 because the window.location will remove the \r\n return link.protocol + addDefaultPort(link.protocol, link.host) !== against.protocol + addDefaultPort(against.protocol, against.host);\r\n },\r\n\r\n ajaxDataType: \"text\",\r\n\r\n contentType: \"application/json; charset=UTF-8\",\r\n\r\n logging: false,\r\n\r\n state: signalR.connectionState.disconnected,\r\n\r\n clientProtocol: \"1.5\",\r\n\r\n reconnectDelay: 2000,\r\n\r\n transportConnectTimeout: 0,\r\n\r\n disconnectTimeout: 30000, // This should be set by the server in response to the negotiate request (30s default)\r\n\r\n reconnectWindow: 30000, // This should be set by the server in response to the negotiate request \r\n\r\n keepAliveWarnAt: 2 / 3, // Warn user of slow connection if we breach the X% mark of the keep alive timeout\r\n\r\n start: function (options, callback) {\r\n /// Starts the connection\r\n /// Options map\r\n /// A callback function to execute when the connection has started\r\n var connection = this,\r\n config = {\r\n pingInterval: 300000,\r\n waitForPageLoad: true,\r\n transport: \"auto\",\r\n jsonp: false\r\n },\r\n initialize,\r\n deferred = connection._deferral || $.Deferred(), // Check to see if there is a pre-existing deferral that's being built on, if so we want to keep using it\r\n parser = window.document.createElement(\"a\");\r\n\r\n connection.lastError = null;\r\n\r\n // Persist the deferral so that if start is called multiple times the same deferral is used.\r\n connection._deferral = deferred;\r\n\r\n if (!connection.json) {\r\n // no JSON!\r\n throw new Error(\"SignalR: No JSON parser found. Please ensure json2.js is referenced before the SignalR.js file if you need to support clients without native JSON parsing support, e.g. IE<8.\");\r\n }\r\n\r\n if ($.type(options) === \"function\") {\r\n // Support calling with single callback parameter\r\n callback = options;\r\n } else if ($.type(options) === \"object\") {\r\n $.extend(config, options);\r\n if ($.type(config.callback) === \"function\") {\r\n callback = config.callback;\r\n }\r\n }\r\n\r\n config.transport = validateTransport(config.transport, connection);\r\n\r\n // If the transport is invalid throw an error and abort start\r\n if (!config.transport) {\r\n throw new Error(\"SignalR: Invalid transport(s) specified, aborting start.\");\r\n }\r\n\r\n connection._.config = config;\r\n\r\n // Check to see if start is being called prior to page load\r\n // If waitForPageLoad is true we then want to re-direct function call to the window load event\r\n if (!_pageLoaded && config.waitForPageLoad === true) {\r\n connection._.deferredStartHandler = function () {\r\n connection.start(options, callback);\r\n };\r\n _pageWindow.bind(\"load\", connection._.deferredStartHandler);\r\n\r\n return deferred.promise();\r\n }\r\n\r\n // If we're already connecting just return the same deferral as the original connection start\r\n if (connection.state === signalR.connectionState.connecting) {\r\n return deferred.promise();\r\n } else if (changeState(connection,\r\n signalR.connectionState.disconnected,\r\n signalR.connectionState.connecting) === false) {\r\n // We're not connecting so try and transition into connecting.\r\n // If we fail to transition then we're either in connected or reconnecting.\r\n\r\n deferred.resolve(connection);\r\n return deferred.promise();\r\n }\r\n\r\n configureStopReconnectingTimeout(connection);\r\n\r\n // Resolve the full url\r\n parser.href = connection.url;\r\n if (!parser.protocol || parser.protocol === \":\") {\r\n connection.protocol = window.document.location.protocol;\r\n connection.host = parser.host || window.document.location.host;\r\n } else {\r\n connection.protocol = parser.protocol;\r\n connection.host = parser.host;\r\n }\r\n\r\n connection.baseUrl = connection.protocol + \"//\" + connection.host;\r\n\r\n // Set the websocket protocol\r\n connection.wsProtocol = connection.protocol === \"https:\" ? \"wss://\" : \"ws://\";\r\n\r\n // If jsonp with no/auto transport is specified, then set the transport to long polling\r\n // since that is the only transport for which jsonp really makes sense.\r\n // Some developers might actually choose to specify jsonp for same origin requests\r\n // as demonstrated by Issue #623.\r\n if (config.transport === \"auto\" && config.jsonp === true) {\r\n config.transport = \"longPolling\";\r\n }\r\n\r\n // If the url is protocol relative, prepend the current windows protocol to the url. \r\n if (connection.url.indexOf(\"//\") === 0) {\r\n connection.url = window.location.protocol + connection.url;\r\n connection.log(\"Protocol relative URL detected, normalizing it to '\" + connection.url + \"'.\");\r\n }\r\n\r\n if (this.isCrossDomain(connection.url)) {\r\n connection.log(\"Auto detected cross domain url.\");\r\n\r\n if (config.transport === \"auto\") {\r\n // TODO: Support XDM with foreverFrame\r\n config.transport = [\"webSockets\", \"serverSentEvents\", \"longPolling\"];\r\n }\r\n\r\n if (typeof (config.withCredentials) === \"undefined\") {\r\n config.withCredentials = true;\r\n }\r\n\r\n // Determine if jsonp is the only choice for negotiation, ajaxSend and ajaxAbort.\r\n // i.e. if the browser doesn't supports CORS\r\n // If it is, ignore any preference to the contrary, and switch to jsonp.\r\n if (!config.jsonp) {\r\n config.jsonp = !$.support.cors;\r\n\r\n if (config.jsonp) {\r\n connection.log(\"Using jsonp because this browser doesn't support CORS.\");\r\n }\r\n }\r\n\r\n connection.contentType = signalR._.defaultContentType;\r\n }\r\n\r\n connection.withCredentials = config.withCredentials;\r\n\r\n connection.ajaxDataType = config.jsonp ? \"jsonp\" : \"text\";\r\n\r\n $(connection).bind(events.onStart, function (e, data) {\r\n if ($.type(callback) === \"function\") {\r\n callback.call(connection);\r\n }\r\n deferred.resolve(connection);\r\n });\r\n\r\n connection._.initHandler = signalR.transports._logic.initHandler(connection);\r\n\r\n initialize = function (transports, index) {\r\n var noTransportError = signalR._.error(resources.noTransportOnInit);\r\n\r\n index = index || 0;\r\n if (index >= transports.length) {\r\n if (index === 0) {\r\n connection.log(\"No transports supported by the server were selected.\");\r\n } else if (index === 1) {\r\n connection.log(\"No fallback transports were selected.\");\r\n } else {\r\n connection.log(\"Fallback transports exhausted.\");\r\n }\r\n\r\n // No transport initialized successfully\r\n $(connection).triggerHandler(events.onError, [noTransportError]);\r\n deferred.reject(noTransportError);\r\n // Stop the connection if it has connected and move it into the disconnected state\r\n connection.stop();\r\n return;\r\n }\r\n\r\n // The connection was aborted\r\n if (connection.state === signalR.connectionState.disconnected) {\r\n return;\r\n }\r\n\r\n var transportName = transports[index],\r\n transport = signalR.transports[transportName],\r\n onFallback = function () {\r\n initialize(transports, index + 1);\r\n };\r\n\r\n connection.transport = transport;\r\n\r\n try {\r\n connection._.initHandler.start(transport, function () { // success\r\n // Firefox 11+ doesn't allow sync XHR withCredentials: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#withCredentials\r\n var isFirefox11OrGreater = signalR._.firefoxMajorVersion(window.navigator.userAgent) >= 11,\r\n asyncAbort = !!connection.withCredentials && isFirefox11OrGreater;\r\n\r\n connection.log(\"The start request succeeded. Transitioning to the connected state.\");\r\n\r\n if (supportsKeepAlive(connection)) {\r\n signalR.transports._logic.monitorKeepAlive(connection);\r\n }\r\n\r\n signalR.transports._logic.startHeartbeat(connection);\r\n\r\n // Used to ensure low activity clients maintain their authentication.\r\n // Must be configured once a transport has been decided to perform valid ping requests.\r\n signalR._.configurePingInterval(connection);\r\n\r\n if (!changeState(connection,\r\n signalR.connectionState.connecting,\r\n signalR.connectionState.connected)) {\r\n connection.log(\"WARNING! The connection was not in the connecting state.\");\r\n }\r\n\r\n // Drain any incoming buffered messages (messages that came in prior to connect)\r\n connection._.connectingMessageBuffer.drain();\r\n\r\n $(connection).triggerHandler(events.onStart);\r\n\r\n // wire the stop handler for when the user leaves the page\r\n _pageWindow.bind(\"unload\", function () {\r\n connection.log(\"Window unloading, stopping the connection.\");\r\n\r\n connection.stop(asyncAbort);\r\n });\r\n\r\n if (isFirefox11OrGreater) {\r\n // Firefox does not fire cross-domain XHRs in the normal unload handler on tab close.\r\n // #2400\r\n _pageWindow.bind(\"beforeunload\", function () {\r\n // If connection.stop() runs runs in beforeunload and fails, it will also fail\r\n // in unload unless connection.stop() runs after a timeout.\r\n window.setTimeout(function () {\r\n connection.stop(asyncAbort);\r\n }, 0);\r\n });\r\n }\r\n }, onFallback);\r\n }\r\n catch (error) {\r\n connection.log(transport.name + \" transport threw '\" + error.message + \"' when attempting to start.\");\r\n onFallback();\r\n }\r\n };\r\n\r\n var url = connection.url + \"/negotiate\",\r\n onFailed = function (error, connection) {\r\n var err = signalR._.error(resources.errorOnNegotiate, error, connection._.negotiateRequest);\r\n\r\n $(connection).triggerHandler(events.onError, err);\r\n deferred.reject(err);\r\n // Stop the connection if negotiate failed\r\n connection.stop();\r\n };\r\n\r\n $(connection).triggerHandler(events.onStarting);\r\n\r\n url = signalR.transports._logic.prepareQueryString(connection, url);\r\n\r\n connection.log(\"Negotiating with '\" + url + \"'.\");\r\n\r\n // Save the ajax negotiate request object so we can abort it if stop is called while the request is in flight.\r\n connection._.negotiateRequest = signalR.transports._logic.ajax(connection, {\r\n url: url,\r\n error: function (error, statusText) {\r\n // We don't want to cause any errors if we're aborting our own negotiate request.\r\n if (statusText !== _negotiateAbortText) {\r\n onFailed(error, connection);\r\n } else {\r\n // This rejection will noop if the deferred has already been resolved or rejected.\r\n deferred.reject(signalR._.error(resources.stoppedWhileNegotiating, null /* error */, connection._.negotiateRequest));\r\n }\r\n },\r\n success: function (result) {\r\n var res,\r\n keepAliveData,\r\n protocolError,\r\n transports = [],\r\n supportedTransports = [];\r\n\r\n try {\r\n res = connection._parseResponse(result);\r\n } catch (error) {\r\n onFailed(signalR._.error(resources.errorParsingNegotiateResponse, error), connection);\r\n return;\r\n }\r\n\r\n keepAliveData = connection._.keepAliveData;\r\n connection.appRelativeUrl = res.Url;\r\n connection.id = res.ConnectionId;\r\n connection.token = res.ConnectionToken;\r\n connection.webSocketServerUrl = res.WebSocketServerUrl;\r\n\r\n // The long poll timeout is the ConnectionTimeout plus 10 seconds\r\n connection._.pollTimeout = res.ConnectionTimeout * 1000 + 10000; // in ms\r\n\r\n // Once the server has labeled the PersistentConnection as Disconnected, we should stop attempting to reconnect\r\n // after res.DisconnectTimeout seconds.\r\n connection.disconnectTimeout = res.DisconnectTimeout * 1000; // in ms\r\n\r\n // Add the TransportConnectTimeout from the response to the transportConnectTimeout from the client to calculate the total timeout\r\n connection._.totalTransportConnectTimeout = connection.transportConnectTimeout + res.TransportConnectTimeout * 1000;\r\n\r\n // If we have a keep alive\r\n if (res.KeepAliveTimeout) {\r\n // Register the keep alive data as activated\r\n keepAliveData.activated = true;\r\n\r\n // Timeout to designate when to force the connection into reconnecting converted to milliseconds\r\n keepAliveData.timeout = res.KeepAliveTimeout * 1000;\r\n\r\n // Timeout to designate when to warn the developer that the connection may be dead or is not responding.\r\n keepAliveData.timeoutWarning = keepAliveData.timeout * connection.keepAliveWarnAt;\r\n\r\n // Instantiate the frequency in which we check the keep alive. It must be short in order to not miss/pick up any changes\r\n connection._.beatInterval = (keepAliveData.timeout - keepAliveData.timeoutWarning) / 3;\r\n } else {\r\n keepAliveData.activated = false;\r\n }\r\n\r\n connection.reconnectWindow = connection.disconnectTimeout + (keepAliveData.timeout || 0);\r\n\r\n if (!res.ProtocolVersion || res.ProtocolVersion !== connection.clientProtocol) {\r\n protocolError = signalR._.error(signalR._.format(resources.protocolIncompatible, connection.clientProtocol, res.ProtocolVersion));\r\n $(connection).triggerHandler(events.onError, [protocolError]);\r\n deferred.reject(protocolError);\r\n\r\n return;\r\n }\r\n\r\n $.each(signalR.transports, function (key) {\r\n if ((key.indexOf(\"_\") === 0) || (key === \"webSockets\" && !res.TryWebSockets)) {\r\n return true;\r\n }\r\n supportedTransports.push(key);\r\n });\r\n\r\n if ($.isArray(config.transport)) {\r\n $.each(config.transport, function (_, transport) {\r\n if ($.inArray(transport, supportedTransports) >= 0) {\r\n transports.push(transport);\r\n }\r\n });\r\n } else if (config.transport === \"auto\") {\r\n transports = supportedTransports;\r\n } else if ($.inArray(config.transport, supportedTransports) >= 0) {\r\n transports.push(config.transport);\r\n }\r\n\r\n initialize(transports);\r\n }\r\n });\r\n\r\n return deferred.promise();\r\n },\r\n\r\n starting: function (callback) {\r\n /// Adds a callback that will be invoked before anything is sent over the connection\r\n /// A callback function to execute before the connection is fully instantiated.\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onStarting, function (e, data) {\r\n callback.call(connection);\r\n });\r\n return connection;\r\n },\r\n\r\n send: function (data) {\r\n /// Sends data over the connection\r\n /// The data to send over the connection\r\n /// \r\n var connection = this;\r\n\r\n if (connection.state === signalR.connectionState.disconnected) {\r\n // Connection hasn't been started yet\r\n throw new Error(\"SignalR: Connection must be started before data can be sent. Call .start() before .send()\");\r\n }\r\n\r\n if (connection.state === signalR.connectionState.connecting) {\r\n // Connection hasn't been started yet\r\n throw new Error(\"SignalR: Connection has not been fully initialized. Use .start().done() or .start().fail() to run logic after the connection has started.\");\r\n }\r\n\r\n connection.transport.send(connection, data);\r\n // REVIEW: Should we return deferred here?\r\n return connection;\r\n },\r\n\r\n received: function (callback) {\r\n /// Adds a callback that will be invoked after anything is received over the connection\r\n /// A callback function to execute when any data is received on the connection\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onReceived, function (e, data) {\r\n callback.call(connection, data);\r\n });\r\n return connection;\r\n },\r\n\r\n stateChanged: function (callback) {\r\n /// Adds a callback that will be invoked when the connection state changes\r\n /// A callback function to execute when the connection state changes\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onStateChanged, function (e, data) {\r\n callback.call(connection, data);\r\n });\r\n return connection;\r\n },\r\n\r\n error: function (callback) {\r\n /// Adds a callback that will be invoked after an error occurs with the connection\r\n /// A callback function to execute when an error occurs on the connection\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onError, function (e, errorData, sendData) {\r\n connection.lastError = errorData;\r\n // In practice 'errorData' is the SignalR built error object.\r\n // In practice 'sendData' is undefined for all error events except those triggered by\r\n // 'ajaxSend' and 'webSockets.send'.'sendData' is the original send payload.\r\n callback.call(connection, errorData, sendData);\r\n });\r\n return connection;\r\n },\r\n\r\n disconnected: function (callback) {\r\n /// Adds a callback that will be invoked when the client disconnects\r\n /// A callback function to execute when the connection is broken\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onDisconnect, function (e, data) {\r\n callback.call(connection);\r\n });\r\n return connection;\r\n },\r\n\r\n connectionSlow: function (callback) {\r\n /// Adds a callback that will be invoked when the client detects a slow connection\r\n /// A callback function to execute when the connection is slow\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onConnectionSlow, function (e, data) {\r\n callback.call(connection);\r\n });\r\n\r\n return connection;\r\n },\r\n\r\n reconnecting: function (callback) {\r\n /// Adds a callback that will be invoked when the underlying transport begins reconnecting\r\n /// A callback function to execute when the connection enters a reconnecting state\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onReconnecting, function (e, data) {\r\n callback.call(connection);\r\n });\r\n return connection;\r\n },\r\n\r\n reconnected: function (callback) {\r\n /// Adds a callback that will be invoked when the underlying transport reconnects\r\n /// A callback function to execute when the connection is restored\r\n /// \r\n var connection = this;\r\n $(connection).bind(events.onReconnect, function (e, data) {\r\n callback.call(connection);\r\n });\r\n return connection;\r\n },\r\n\r\n stop: function (async, notifyServer) {\r\n /// Stops listening\r\n /// Whether or not to asynchronously abort the connection\r\n /// Whether we want to notify the server that we are aborting the connection\r\n /// \r\n var connection = this,\r\n // Save deferral because this is always cleaned up\r\n deferral = connection._deferral;\r\n\r\n // Verify that we've bound a load event.\r\n if (connection._.deferredStartHandler) {\r\n // Unbind the event.\r\n _pageWindow.unbind(\"load\", connection._.deferredStartHandler);\r\n }\r\n\r\n // Always clean up private non-timeout based state.\r\n delete connection._.config;\r\n delete connection._.deferredStartHandler;\r\n\r\n // This needs to be checked despite the connection state because a connection start can be deferred until page load.\r\n // If we've deferred the start due to a page load we need to unbind the \"onLoad\" -> start event.\r\n if (!_pageLoaded && (!connection._.config || connection._.config.waitForPageLoad === true)) {\r\n connection.log(\"Stopping connection prior to negotiate.\");\r\n\r\n // If we have a deferral we should reject it\r\n if (deferral) {\r\n deferral.reject(signalR._.error(resources.stoppedWhileLoading));\r\n }\r\n\r\n // Short-circuit because the start has not been fully started.\r\n return;\r\n }\r\n\r\n if (connection.state === signalR.connectionState.disconnected) {\r\n return;\r\n }\r\n\r\n connection.log(\"Stopping connection.\");\r\n\r\n changeState(connection, connection.state, signalR.connectionState.disconnected);\r\n\r\n // Clear this no matter what\r\n window.clearTimeout(connection._.beatHandle);\r\n window.clearInterval(connection._.pingIntervalId);\r\n\r\n if (connection.transport) {\r\n connection.transport.stop(connection);\r\n\r\n if (notifyServer !== false) {\r\n connection.transport.abort(connection, async);\r\n }\r\n\r\n if (supportsKeepAlive(connection)) {\r\n signalR.transports._logic.stopMonitoringKeepAlive(connection);\r\n }\r\n\r\n connection.transport = null;\r\n }\r\n\r\n if (connection._.negotiateRequest) {\r\n // If the negotiation request has already completed this will noop.\r\n connection._.negotiateRequest.abort(_negotiateAbortText);\r\n delete connection._.negotiateRequest;\r\n }\r\n\r\n // Ensure that initHandler.stop() is called before connection._deferral is deleted\r\n if (connection._.initHandler) {\r\n connection._.initHandler.stop();\r\n }\r\n\r\n // Trigger the disconnect event\r\n $(connection).triggerHandler(events.onDisconnect);\r\n\r\n delete connection._deferral;\r\n delete connection.messageId;\r\n delete connection.groupsToken;\r\n delete connection.id;\r\n delete connection._.pingIntervalId;\r\n delete connection._.lastMessageAt;\r\n delete connection._.lastActiveAt;\r\n\r\n // Clear out our message buffer\r\n connection._.connectingMessageBuffer.clear();\r\n\r\n return connection;\r\n },\r\n\r\n log: function (msg) {\r\n log(msg, this.logging);\r\n }\r\n };\r\n\r\n signalR.fn.init.prototype = signalR.fn;\r\n\r\n signalR.noConflict = function () {\r\n /// Reinstates the original value of $.connection and returns the signalR object for manual assignment\r\n /// \r\n if ($.connection === signalR) {\r\n $.connection = _connection;\r\n }\r\n return signalR;\r\n };\r\n\r\n if ($.connection) {\r\n _connection = $.connection;\r\n }\r\n\r\n $.connection = $.signalR = signalR;\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.common.js */\r\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n startAbortText = \"__Start Aborted__\",\r\n transportLogic;\r\n\r\n signalR.transports = {};\r\n\r\n function beat(connection) {\r\n if (connection._.keepAliveData.monitoring) {\r\n checkIfAlive(connection);\r\n }\r\n\r\n // Ensure that we successfully marked active before continuing the heartbeat.\r\n if (transportLogic.markActive(connection)) {\r\n connection._.beatHandle = window.setTimeout(function () {\r\n beat(connection);\r\n }, connection._.beatInterval);\r\n }\r\n }\r\n\r\n function checkIfAlive(connection) {\r\n var keepAliveData = connection._.keepAliveData,\r\n timeElapsed;\r\n\r\n // Only check if we're connected\r\n if (connection.state === signalR.connectionState.connected) {\r\n timeElapsed = new Date().getTime() - connection._.lastMessageAt;\r\n\r\n // Check if the keep alive has completely timed out\r\n if (timeElapsed >= keepAliveData.timeout) {\r\n connection.log(\"Keep alive timed out. Notifying transport that connection has been lost.\");\r\n\r\n // Notify transport that the connection has been lost\r\n connection.transport.lostConnection(connection);\r\n } else if (timeElapsed >= keepAliveData.timeoutWarning) {\r\n // This is to assure that the user only gets a single warning\r\n if (!keepAliveData.userNotified) {\r\n connection.log(\"Keep alive has been missed, connection may be dead/slow.\");\r\n $(connection).triggerHandler(events.onConnectionSlow);\r\n keepAliveData.userNotified = true;\r\n }\r\n } else {\r\n keepAliveData.userNotified = false;\r\n }\r\n }\r\n }\r\n\r\n function getAjaxUrl(connection, path) {\r\n var url = connection.url + path;\r\n\r\n if (connection.transport) {\r\n url += \"?transport=\" + connection.transport.name;\r\n }\r\n\r\n return transportLogic.prepareQueryString(connection, url);\r\n }\r\n\r\n function InitHandler(connection) {\r\n this.connection = connection;\r\n\r\n this.startRequested = false;\r\n this.startCompleted = false;\r\n this.connectionStopped = false;\r\n }\r\n\r\n InitHandler.prototype = {\r\n start: function (transport, onSuccess, onFallback) {\r\n var that = this,\r\n connection = that.connection,\r\n failCalled = false;\r\n\r\n if (that.startRequested || that.connectionStopped) {\r\n connection.log(\"WARNING! \" + transport.name + \" transport cannot be started. Initialization ongoing or completed.\");\r\n return;\r\n }\r\n\r\n connection.log(transport.name + \" transport starting.\");\r\n\r\n that.transportTimeoutHandle = window.setTimeout(function () {\r\n if (!failCalled) {\r\n failCalled = true;\r\n connection.log(transport.name + \" transport timed out when trying to connect.\");\r\n that.transportFailed(transport, undefined, onFallback);\r\n }\r\n }, connection._.totalTransportConnectTimeout);\r\n\r\n transport.start(connection, function () {\r\n if (!failCalled) {\r\n that.initReceived(transport, onSuccess);\r\n }\r\n }, function (error) {\r\n // Don't allow the same transport to cause onFallback to be called twice\r\n if (!failCalled) {\r\n failCalled = true;\r\n that.transportFailed(transport, error, onFallback);\r\n }\r\n\r\n // Returns true if the transport should stop;\r\n // false if it should attempt to reconnect\r\n return !that.startCompleted || that.connectionStopped;\r\n });\r\n },\r\n\r\n stop: function () {\r\n this.connectionStopped = true;\r\n window.clearTimeout(this.transportTimeoutHandle);\r\n signalR.transports._logic.tryAbortStartRequest(this.connection);\r\n },\r\n\r\n initReceived: function (transport, onSuccess) {\r\n var that = this,\r\n connection = that.connection;\r\n\r\n if (that.startRequested) {\r\n connection.log(\"WARNING! The client received multiple init messages.\");\r\n return;\r\n }\r\n\r\n if (that.connectionStopped) {\r\n return;\r\n }\r\n\r\n that.startRequested = true;\r\n window.clearTimeout(that.transportTimeoutHandle);\r\n\r\n connection.log(transport.name + \" transport connected. Initiating start request.\");\r\n signalR.transports._logic.ajaxStart(connection, function () {\r\n that.startCompleted = true;\r\n onSuccess();\r\n });\r\n },\r\n\r\n transportFailed: function (transport, error, onFallback) {\r\n var connection = this.connection,\r\n deferred = connection._deferral,\r\n wrappedError;\r\n\r\n if (this.connectionStopped) {\r\n return;\r\n }\r\n\r\n window.clearTimeout(this.transportTimeoutHandle);\r\n\r\n if (!this.startRequested) {\r\n transport.stop(connection);\r\n\r\n connection.log(transport.name + \" transport failed to connect. Attempting to fall back.\");\r\n onFallback();\r\n } else if (!this.startCompleted) {\r\n // Do not attempt to fall back if a start request is ongoing during a transport failure.\r\n // Instead, trigger an error and stop the connection.\r\n wrappedError = signalR._.error(signalR.resources.errorDuringStartRequest, error);\r\n\r\n connection.log(transport.name + \" transport failed during the start request. Stopping the connection.\");\r\n $(connection).triggerHandler(events.onError, [wrappedError]);\r\n if (deferred) {\r\n deferred.reject(wrappedError);\r\n }\r\n\r\n connection.stop();\r\n } else {\r\n // The start request has completed, but the connection has not stopped.\r\n // No need to do anything here. The transport should attempt its normal reconnect logic.\r\n }\r\n }\r\n };\r\n\r\n transportLogic = signalR.transports._logic = {\r\n ajax: function (connection, options) {\r\n return $.ajax(\r\n $.extend(/*deep copy*/ true, {}, $.signalR.ajaxDefaults, {\r\n type: \"GET\",\r\n data: {},\r\n xhrFields: { withCredentials: connection.withCredentials },\r\n contentType: connection.contentType,\r\n dataType: connection.ajaxDataType\r\n }, options));\r\n },\r\n\r\n pingServer: function (connection) {\r\n /// Pings the server\r\n /// Connection associated with the server ping\r\n /// \r\n var url,\r\n xhr,\r\n deferral = $.Deferred();\r\n\r\n if (connection.transport) {\r\n url = connection.url + \"/ping\";\r\n\r\n url = transportLogic.addQs(url, connection.qs);\r\n\r\n xhr = transportLogic.ajax(connection, {\r\n url: url,\r\n success: function (result) {\r\n var data;\r\n\r\n try {\r\n data = connection._parseResponse(result);\r\n }\r\n catch (error) {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR.resources.pingServerFailedParse,\r\n connection.transport,\r\n error,\r\n xhr\r\n )\r\n );\r\n connection.stop();\r\n return;\r\n }\r\n\r\n if (data.Response === \"pong\") {\r\n deferral.resolve();\r\n }\r\n else {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR._.format(signalR.resources.pingServerFailedInvalidResponse, result),\r\n connection.transport,\r\n null /* error */,\r\n xhr\r\n )\r\n );\r\n }\r\n },\r\n error: function (error) {\r\n if (error.status === 401 || error.status === 403) {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR._.format(signalR.resources.pingServerFailedStatusCode, error.status),\r\n connection.transport,\r\n error,\r\n xhr\r\n )\r\n );\r\n connection.stop();\r\n }\r\n else {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR.resources.pingServerFailed,\r\n connection.transport,\r\n error,\r\n xhr\r\n )\r\n );\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n deferral.reject(\r\n signalR._.transportError(\r\n signalR.resources.noConnectionTransport,\r\n connection.transport\r\n )\r\n );\r\n }\r\n\r\n return deferral.promise();\r\n },\r\n\r\n prepareQueryString: function (connection, url) {\r\n var preparedUrl;\r\n\r\n // Use addQs to start since it handles the ?/& prefix for us\r\n preparedUrl = transportLogic.addQs(url, \"clientProtocol=\" + connection.clientProtocol);\r\n\r\n // Add the user-specified query string params if any\r\n preparedUrl = transportLogic.addQs(preparedUrl, connection.qs);\r\n\r\n if (connection.token) {\r\n preparedUrl += \"&connectionToken=\" + window.encodeURIComponent(connection.token);\r\n }\r\n\r\n if (connection.data) {\r\n preparedUrl += \"&connectionData=\" + window.encodeURIComponent(connection.data);\r\n }\r\n\r\n return preparedUrl;\r\n },\r\n\r\n addQs: function (url, qs) {\r\n var appender = url.indexOf(\"?\") !== -1 ? \"&\" : \"?\",\r\n firstChar;\r\n\r\n if (!qs) {\r\n return url;\r\n }\r\n\r\n if (typeof (qs) === \"object\") {\r\n return url + appender + $.param(qs);\r\n }\r\n\r\n if (typeof (qs) === \"string\") {\r\n firstChar = qs.charAt(0);\r\n\r\n if (firstChar === \"?\" || firstChar === \"&\") {\r\n appender = \"\";\r\n }\r\n\r\n return url + appender + qs;\r\n }\r\n\r\n throw new Error(\"Query string property must be either a string or object.\");\r\n },\r\n\r\n // BUG #2953: The url needs to be same otherwise it will cause a memory leak\r\n getUrl: function (connection, transport, reconnecting, poll, ajaxPost) {\r\n /// Gets the url for making a GET based connect request\r\n var baseUrl = transport === \"webSockets\" ? \"\" : connection.baseUrl,\r\n url = baseUrl + connection.appRelativeUrl,\r\n qs = \"transport=\" + transport;\r\n\r\n if (!ajaxPost && connection.groupsToken) {\r\n qs += \"&groupsToken=\" + window.encodeURIComponent(connection.groupsToken);\r\n }\r\n\r\n if (!reconnecting) {\r\n url += \"/connect\";\r\n } else {\r\n if (poll) {\r\n // longPolling transport specific\r\n url += \"/poll\";\r\n } else {\r\n url += \"/reconnect\";\r\n }\r\n\r\n if (!ajaxPost && connection.messageId) {\r\n qs += \"&messageId=\" + window.encodeURIComponent(connection.messageId);\r\n }\r\n }\r\n url += \"?\" + qs;\r\n url = transportLogic.prepareQueryString(connection, url);\r\n\r\n if (!ajaxPost) {\r\n url += \"&tid=\" + Math.floor(Math.random() * 11);\r\n }\r\n\r\n return url;\r\n },\r\n\r\n maximizePersistentResponse: function (minPersistentResponse) {\r\n return {\r\n MessageId: minPersistentResponse.C,\r\n Messages: minPersistentResponse.M,\r\n Initialized: typeof (minPersistentResponse.S) !== \"undefined\" ? true : false,\r\n ShouldReconnect: typeof (minPersistentResponse.T) !== \"undefined\" ? true : false,\r\n LongPollDelay: minPersistentResponse.L,\r\n GroupsToken: minPersistentResponse.G\r\n };\r\n },\r\n\r\n updateGroups: function (connection, groupsToken) {\r\n if (groupsToken) {\r\n connection.groupsToken = groupsToken;\r\n }\r\n },\r\n\r\n stringifySend: function (connection, message) {\r\n if (typeof (message) === \"string\" || typeof (message) === \"undefined\" || message === null) {\r\n return message;\r\n }\r\n return connection.json.stringify(message);\r\n },\r\n\r\n ajaxSend: function (connection, data) {\r\n var payload = transportLogic.stringifySend(connection, data),\r\n url = getAjaxUrl(connection, \"/send\"),\r\n xhr,\r\n onFail = function (error, connection) {\r\n $(connection).triggerHandler(events.onError, [signalR._.transportError(signalR.resources.sendFailed, connection.transport, error, xhr), data]);\r\n };\r\n\r\n\r\n xhr = transportLogic.ajax(connection, {\r\n url: url,\r\n type: connection.ajaxDataType === \"jsonp\" ? \"GET\" : \"POST\",\r\n contentType: signalR._.defaultContentType,\r\n data: {\r\n data: payload\r\n },\r\n success: function (result) {\r\n var res;\r\n\r\n if (result) {\r\n try {\r\n res = connection._parseResponse(result);\r\n }\r\n catch (error) {\r\n onFail(error, connection);\r\n connection.stop();\r\n return;\r\n }\r\n\r\n transportLogic.triggerReceived(connection, res);\r\n }\r\n },\r\n error: function (error, textStatus) {\r\n if (textStatus === \"abort\" || textStatus === \"parsererror\") {\r\n // The parsererror happens for sends that don't return any data, and hence\r\n // don't write the jsonp callback to the response. This is harder to fix on the server\r\n // so just hack around it on the client for now.\r\n return;\r\n }\r\n\r\n onFail(error, connection);\r\n }\r\n });\r\n\r\n return xhr;\r\n },\r\n\r\n ajaxAbort: function (connection, async) {\r\n if (typeof (connection.transport) === \"undefined\") {\r\n return;\r\n }\r\n\r\n // Async by default unless explicitly overidden\r\n async = typeof async === \"undefined\" ? true : async;\r\n\r\n var url = getAjaxUrl(connection, \"/abort\");\r\n\r\n transportLogic.ajax(connection, {\r\n url: url,\r\n async: async,\r\n timeout: 1000,\r\n type: \"POST\"\r\n });\r\n\r\n connection.log(\"Fired ajax abort async = \" + async + \".\");\r\n },\r\n\r\n ajaxStart: function (connection, onSuccess) {\r\n var rejectDeferred = function (error) {\r\n var deferred = connection._deferral;\r\n if (deferred) {\r\n deferred.reject(error);\r\n }\r\n },\r\n triggerStartError = function (error) {\r\n connection.log(\"The start request failed. Stopping the connection.\");\r\n $(connection).triggerHandler(events.onError, [error]);\r\n rejectDeferred(error);\r\n connection.stop();\r\n };\r\n\r\n connection._.startRequest = transportLogic.ajax(connection, {\r\n url: getAjaxUrl(connection, \"/start\"),\r\n success: function (result, statusText, xhr) {\r\n var data;\r\n\r\n try {\r\n data = connection._parseResponse(result);\r\n } catch (error) {\r\n triggerStartError(signalR._.error(\r\n signalR._.format(signalR.resources.errorParsingStartResponse, result),\r\n error, xhr));\r\n return;\r\n }\r\n\r\n if (data.Response === \"started\") {\r\n onSuccess();\r\n } else {\r\n triggerStartError(signalR._.error(\r\n signalR._.format(signalR.resources.invalidStartResponse, result),\r\n null /* error */, xhr));\r\n }\r\n },\r\n error: function (xhr, statusText, error) {\r\n if (statusText !== startAbortText) {\r\n triggerStartError(signalR._.error(\r\n signalR.resources.errorDuringStartRequest,\r\n error, xhr));\r\n } else {\r\n // Stop has been called, no need to trigger the error handler\r\n // or stop the connection again with onStartError\r\n connection.log(\"The start request aborted because connection.stop() was called.\");\r\n rejectDeferred(signalR._.error(\r\n signalR.resources.stoppedDuringStartRequest,\r\n null /* error */, xhr));\r\n }\r\n }\r\n });\r\n },\r\n\r\n tryAbortStartRequest: function (connection) {\r\n if (connection._.startRequest) {\r\n // If the start request has already completed this will noop.\r\n connection._.startRequest.abort(startAbortText);\r\n delete connection._.startRequest;\r\n }\r\n },\r\n\r\n tryInitialize: function (persistentResponse, onInitialized) {\r\n if (persistentResponse.Initialized) {\r\n onInitialized();\r\n }\r\n },\r\n\r\n triggerReceived: function (connection, data) {\r\n if (!connection._.connectingMessageBuffer.tryBuffer(data)) {\r\n $(connection).triggerHandler(events.onReceived, [data]);\r\n }\r\n },\r\n\r\n processMessages: function (connection, minData, onInitialized) {\r\n var data;\r\n\r\n // Update the last message time stamp\r\n transportLogic.markLastMessage(connection);\r\n\r\n if (minData) {\r\n data = transportLogic.maximizePersistentResponse(minData);\r\n\r\n transportLogic.updateGroups(connection, data.GroupsToken);\r\n\r\n if (data.MessageId) {\r\n connection.messageId = data.MessageId;\r\n }\r\n\r\n if (data.Messages) {\r\n $.each(data.Messages, function (index, message) {\r\n transportLogic.triggerReceived(connection, message);\r\n });\r\n\r\n transportLogic.tryInitialize(data, onInitialized);\r\n }\r\n }\r\n },\r\n\r\n monitorKeepAlive: function (connection) {\r\n var keepAliveData = connection._.keepAliveData;\r\n\r\n // If we haven't initiated the keep alive timeouts then we need to\r\n if (!keepAliveData.monitoring) {\r\n keepAliveData.monitoring = true;\r\n\r\n transportLogic.markLastMessage(connection);\r\n\r\n // Save the function so we can unbind it on stop\r\n connection._.keepAliveData.reconnectKeepAliveUpdate = function () {\r\n // Mark a new message so that keep alive doesn't time out connections\r\n transportLogic.markLastMessage(connection);\r\n };\r\n\r\n // Update Keep alive on reconnect\r\n $(connection).bind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n connection.log(\"Now monitoring keep alive with a warning timeout of \" + keepAliveData.timeoutWarning + \", keep alive timeout of \" + keepAliveData.timeout + \" and disconnecting timeout of \" + connection.disconnectTimeout);\r\n } else {\r\n connection.log(\"Tried to monitor keep alive but it's already being monitored.\");\r\n }\r\n },\r\n\r\n stopMonitoringKeepAlive: function (connection) {\r\n var keepAliveData = connection._.keepAliveData;\r\n\r\n // Only attempt to stop the keep alive monitoring if its being monitored\r\n if (keepAliveData.monitoring) {\r\n // Stop monitoring\r\n keepAliveData.monitoring = false;\r\n\r\n // Remove the updateKeepAlive function from the reconnect event\r\n $(connection).unbind(events.onReconnect, connection._.keepAliveData.reconnectKeepAliveUpdate);\r\n\r\n // Clear all the keep alive data\r\n connection._.keepAliveData = {};\r\n connection.log(\"Stopping the monitoring of the keep alive.\");\r\n }\r\n },\r\n\r\n startHeartbeat: function (connection) {\r\n connection._.lastActiveAt = new Date().getTime();\r\n beat(connection);\r\n },\r\n\r\n markLastMessage: function (connection) {\r\n connection._.lastMessageAt = new Date().getTime();\r\n },\r\n\r\n markActive: function (connection) {\r\n if (transportLogic.verifyLastActive(connection)) {\r\n connection._.lastActiveAt = new Date().getTime();\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n\r\n isConnectedOrReconnecting: function (connection) {\r\n return connection.state === signalR.connectionState.connected ||\r\n connection.state === signalR.connectionState.reconnecting;\r\n },\r\n\r\n ensureReconnectingState: function (connection) {\r\n if (changeState(connection,\r\n signalR.connectionState.connected,\r\n signalR.connectionState.reconnecting) === true) {\r\n $(connection).triggerHandler(events.onReconnecting);\r\n }\r\n return connection.state === signalR.connectionState.reconnecting;\r\n },\r\n\r\n clearReconnectTimeout: function (connection) {\r\n if (connection && connection._.reconnectTimeout) {\r\n window.clearTimeout(connection._.reconnectTimeout);\r\n delete connection._.reconnectTimeout;\r\n }\r\n },\r\n\r\n verifyLastActive: function (connection) {\r\n if (new Date().getTime() - connection._.lastActiveAt >= connection.reconnectWindow) {\r\n var message = signalR._.format(signalR.resources.reconnectWindowTimeout, new Date(connection._.lastActiveAt), connection.reconnectWindow);\r\n connection.log(message);\r\n $(connection).triggerHandler(events.onError, [signalR._.error(message, /* source */ \"TimeoutException\")]);\r\n connection.stop(/* async */ false, /* notifyServer */ false);\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n reconnect: function (connection, transportName) {\r\n var transport = signalR.transports[transportName];\r\n\r\n // We should only set a reconnectTimeout if we are currently connected\r\n // and a reconnectTimeout isn't already set.\r\n if (transportLogic.isConnectedOrReconnecting(connection) && !connection._.reconnectTimeout) {\r\n // Need to verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n if (!transportLogic.verifyLastActive(connection)) {\r\n return;\r\n }\r\n\r\n connection._.reconnectTimeout = window.setTimeout(function () {\r\n if (!transportLogic.verifyLastActive(connection)) {\r\n return;\r\n }\r\n\r\n transport.stop(connection);\r\n\r\n if (transportLogic.ensureReconnectingState(connection)) {\r\n connection.log(transportName + \" reconnecting.\");\r\n transport.start(connection);\r\n }\r\n }, connection.reconnectDelay);\r\n }\r\n },\r\n\r\n handleParseFailure: function (connection, result, error, onFailed, context) {\r\n var wrappedError = signalR._.transportError(\r\n signalR._.format(signalR.resources.parseFailed, result),\r\n connection.transport,\r\n error,\r\n context);\r\n\r\n // If we're in the initialization phase trigger onFailed, otherwise stop the connection.\r\n if (onFailed && onFailed(wrappedError)) {\r\n connection.log(\"Failed to parse server response while attempting to connect.\");\r\n } else {\r\n $(connection).triggerHandler(events.onError, [wrappedError]);\r\n connection.stop();\r\n }\r\n },\r\n\r\n initHandler: function (connection) {\r\n return new InitHandler(connection);\r\n },\r\n\r\n foreverFrame: {\r\n count: 0,\r\n connections: {}\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.webSockets.js */\r\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n transportLogic = signalR.transports._logic;\r\n\r\n signalR.transports.webSockets = {\r\n name: \"webSockets\",\r\n\r\n supportsKeepAlive: function () {\r\n return true;\r\n },\r\n\r\n send: function (connection, data) {\r\n var payload = transportLogic.stringifySend(connection, data);\r\n\r\n try {\r\n connection.socket.send(payload);\r\n } catch (ex) {\r\n $(connection).triggerHandler(events.onError,\r\n [signalR._.transportError(\r\n signalR.resources.webSocketsInvalidState,\r\n connection.transport,\r\n ex,\r\n connection.socket\r\n ),\r\n data]);\r\n }\r\n },\r\n\r\n start: function (connection, onSuccess, onFailed) {\r\n var url,\r\n opened = false,\r\n that = this,\r\n reconnecting = !onSuccess,\r\n $connection = $(connection);\r\n\r\n if (!window.WebSocket) {\r\n onFailed();\r\n return;\r\n }\r\n\r\n if (!connection.socket) {\r\n if (connection.webSocketServerUrl) {\r\n url = connection.webSocketServerUrl;\r\n } else {\r\n url = connection.wsProtocol + connection.host;\r\n }\r\n\r\n url += transportLogic.getUrl(connection, this.name, reconnecting);\r\n\r\n connection.log(\"Connecting to websocket endpoint '\" + url + \"'.\");\r\n connection.socket = new window.WebSocket(url);\r\n\r\n connection.socket.onopen = function () {\r\n opened = true;\r\n connection.log(\"Websocket opened.\");\r\n\r\n transportLogic.clearReconnectTimeout(connection);\r\n\r\n if (changeState(connection,\r\n signalR.connectionState.reconnecting,\r\n signalR.connectionState.connected) === true) {\r\n $connection.triggerHandler(events.onReconnect);\r\n }\r\n };\r\n\r\n connection.socket.onclose = function (event) {\r\n var error;\r\n\r\n // Only handle a socket close if the close is from the current socket.\r\n // Sometimes on disconnect the server will push down an onclose event\r\n // to an expired socket.\r\n\r\n if (this === connection.socket) {\r\n if (opened && typeof event.wasClean !== \"undefined\" && event.wasClean === false) {\r\n // Ideally this would use the websocket.onerror handler (rather than checking wasClean in onclose) but\r\n // I found in some circumstances Chrome won't call onerror. This implementation seems to work on all browsers.\r\n error = signalR._.transportError(\r\n signalR.resources.webSocketClosed,\r\n connection.transport,\r\n event);\r\n\r\n connection.log(\"Unclean disconnect from websocket: \" + (event.reason || \"[no reason given].\"));\r\n } else {\r\n connection.log(\"Websocket closed.\");\r\n }\r\n\r\n if (!onFailed || !onFailed(error)) {\r\n if (error) {\r\n $(connection).triggerHandler(events.onError, [error]);\r\n }\r\n\r\n that.reconnect(connection);\r\n }\r\n }\r\n };\r\n\r\n connection.socket.onmessage = function (event) {\r\n var data;\r\n\r\n try {\r\n data = connection._parseResponse(event.data);\r\n }\r\n catch (error) {\r\n transportLogic.handleParseFailure(connection, event.data, error, onFailed, event);\r\n return;\r\n }\r\n\r\n if (data) {\r\n // data.M is PersistentResponse.Messages\r\n if ($.isEmptyObject(data) || data.M) {\r\n transportLogic.processMessages(connection, data, onSuccess);\r\n } else {\r\n // For websockets we need to trigger onReceived\r\n // for callbacks to outgoing hub calls.\r\n transportLogic.triggerReceived(connection, data);\r\n }\r\n }\r\n };\r\n }\r\n },\r\n\r\n reconnect: function (connection) {\r\n transportLogic.reconnect(connection, this.name);\r\n },\r\n\r\n lostConnection: function (connection) {\r\n this.reconnect(connection);\r\n },\r\n\r\n stop: function (connection) {\r\n // Don't trigger a reconnect after stopping\r\n transportLogic.clearReconnectTimeout(connection);\r\n\r\n if (connection.socket) {\r\n connection.log(\"Closing the Websocket.\");\r\n connection.socket.close();\r\n connection.socket = null;\r\n }\r\n },\r\n\r\n abort: function (connection, async) {\r\n transportLogic.ajaxAbort(connection, async);\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.serverSentEvents.js */\r\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n transportLogic = signalR.transports._logic,\r\n clearReconnectAttemptTimeout = function (connection) {\r\n window.clearTimeout(connection._.reconnectAttemptTimeoutHandle);\r\n delete connection._.reconnectAttemptTimeoutHandle;\r\n };\r\n\r\n signalR.transports.serverSentEvents = {\r\n name: \"serverSentEvents\",\r\n\r\n supportsKeepAlive: function () {\r\n return true;\r\n },\r\n\r\n timeOut: 3000,\r\n\r\n start: function (connection, onSuccess, onFailed) {\r\n var that = this,\r\n opened = false,\r\n $connection = $(connection),\r\n reconnecting = !onSuccess,\r\n url;\r\n\r\n if (connection.eventSource) {\r\n connection.log(\"The connection already has an event source. Stopping it.\");\r\n connection.stop();\r\n }\r\n\r\n if (!window.EventSource) {\r\n if (onFailed) {\r\n connection.log(\"This browser doesn't support SSE.\");\r\n onFailed();\r\n }\r\n return;\r\n }\r\n\r\n url = transportLogic.getUrl(connection, this.name, reconnecting);\r\n\r\n try {\r\n connection.log(\"Attempting to connect to SSE endpoint '\" + url + \"'.\");\r\n connection.eventSource = new window.EventSource(url, { withCredentials: connection.withCredentials });\r\n }\r\n catch (e) {\r\n connection.log(\"EventSource failed trying to connect with error \" + e.Message + \".\");\r\n if (onFailed) {\r\n // The connection failed, call the failed callback\r\n onFailed();\r\n } else {\r\n $connection.triggerHandler(events.onError, [signalR._.transportError(signalR.resources.eventSourceFailedToConnect, connection.transport, e)]);\r\n if (reconnecting) {\r\n // If we were reconnecting, rather than doing initial connect, then try reconnect again\r\n that.reconnect(connection);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n if (reconnecting) {\r\n connection._.reconnectAttemptTimeoutHandle = window.setTimeout(function () {\r\n if (opened === false) {\r\n // If we're reconnecting and the event source is attempting to connect,\r\n // don't keep retrying. This causes duplicate connections to spawn.\r\n if (connection.eventSource.readyState !== window.EventSource.OPEN) {\r\n // If we were reconnecting, rather than doing initial connect, then try reconnect again\r\n that.reconnect(connection);\r\n }\r\n }\r\n },\r\n that.timeOut);\r\n }\r\n\r\n connection.eventSource.addEventListener(\"open\", function (e) {\r\n connection.log(\"EventSource connected.\");\r\n\r\n clearReconnectAttemptTimeout(connection);\r\n transportLogic.clearReconnectTimeout(connection);\r\n\r\n if (opened === false) {\r\n opened = true;\r\n\r\n if (changeState(connection,\r\n signalR.connectionState.reconnecting,\r\n signalR.connectionState.connected) === true) {\r\n $connection.triggerHandler(events.onReconnect);\r\n }\r\n }\r\n }, false);\r\n\r\n connection.eventSource.addEventListener(\"message\", function (e) {\r\n var res;\r\n\r\n // process messages\r\n if (e.data === \"initialized\") {\r\n return;\r\n }\r\n\r\n try {\r\n res = connection._parseResponse(e.data);\r\n }\r\n catch (error) {\r\n transportLogic.handleParseFailure(connection, e.data, error, onFailed, e);\r\n return;\r\n }\r\n\r\n transportLogic.processMessages(connection, res, onSuccess);\r\n }, false);\r\n\r\n connection.eventSource.addEventListener(\"error\", function (e) {\r\n var error = signalR._.transportError(\r\n signalR.resources.eventSourceError,\r\n connection.transport,\r\n e);\r\n\r\n // Only handle an error if the error is from the current Event Source.\r\n // Sometimes on disconnect the server will push down an error event\r\n // to an expired Event Source.\r\n if (this !== connection.eventSource) {\r\n return;\r\n }\r\n\r\n if (onFailed && onFailed(error)) {\r\n return;\r\n }\r\n\r\n connection.log(\"EventSource readyState: \" + connection.eventSource.readyState + \".\");\r\n\r\n if (e.eventPhase === window.EventSource.CLOSED) {\r\n // We don't use the EventSource's native reconnect function as it\r\n // doesn't allow us to change the URL when reconnecting. We need\r\n // to change the URL to not include the /connect suffix, and pass\r\n // the last message id we received.\r\n connection.log(\"EventSource reconnecting due to the server connection ending.\");\r\n that.reconnect(connection);\r\n } else {\r\n // connection error\r\n connection.log(\"EventSource error.\");\r\n $connection.triggerHandler(events.onError, [error]);\r\n }\r\n }, false);\r\n },\r\n\r\n reconnect: function (connection) {\r\n transportLogic.reconnect(connection, this.name);\r\n },\r\n\r\n lostConnection: function (connection) {\r\n this.reconnect(connection);\r\n },\r\n\r\n send: function (connection, data) {\r\n transportLogic.ajaxSend(connection, data);\r\n },\r\n\r\n stop: function (connection) {\r\n // Don't trigger a reconnect after stopping\r\n clearReconnectAttemptTimeout(connection);\r\n transportLogic.clearReconnectTimeout(connection);\r\n\r\n if (connection && connection.eventSource) {\r\n connection.log(\"EventSource calling close().\");\r\n connection.eventSource.close();\r\n connection.eventSource = null;\r\n delete connection.eventSource;\r\n }\r\n },\r\n\r\n abort: function (connection, async) {\r\n transportLogic.ajaxAbort(connection, async);\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.foreverFrame.js */\r\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n transportLogic = signalR.transports._logic,\r\n createFrame = function () {\r\n var frame = window.document.createElement(\"iframe\");\r\n frame.setAttribute(\"style\", \"position:absolute;top:0;left:0;width:0;height:0;visibility:hidden;\");\r\n return frame;\r\n },\r\n // Used to prevent infinite loading icon spins in older versions of ie\r\n // We build this object inside a closure so we don't pollute the rest of \r\n // the foreverFrame transport with unnecessary functions/utilities.\r\n loadPreventer = (function () {\r\n var loadingFixIntervalId = null,\r\n loadingFixInterval = 1000,\r\n attachedTo = 0;\r\n\r\n return {\r\n prevent: function () {\r\n // Prevent additional iframe removal procedures from newer browsers\r\n if (signalR._.ieVersion <= 8) {\r\n // We only ever want to set the interval one time, so on the first attachedTo\r\n if (attachedTo === 0) {\r\n // Create and destroy iframe every 3 seconds to prevent loading icon, super hacky\r\n loadingFixIntervalId = window.setInterval(function () {\r\n var tempFrame = createFrame();\r\n\r\n window.document.body.appendChild(tempFrame);\r\n window.document.body.removeChild(tempFrame);\r\n\r\n tempFrame = null;\r\n }, loadingFixInterval);\r\n }\r\n\r\n attachedTo++;\r\n }\r\n },\r\n cancel: function () {\r\n // Only clear the interval if there's only one more object that the loadPreventer is attachedTo\r\n if (attachedTo === 1) {\r\n window.clearInterval(loadingFixIntervalId);\r\n }\r\n\r\n if (attachedTo > 0) {\r\n attachedTo--;\r\n }\r\n }\r\n };\r\n })();\r\n\r\n signalR.transports.foreverFrame = {\r\n name: \"foreverFrame\",\r\n\r\n supportsKeepAlive: function () {\r\n return true;\r\n },\r\n\r\n // Added as a value here so we can create tests to verify functionality\r\n iframeClearThreshold: 50,\r\n\r\n start: function (connection, onSuccess, onFailed) {\r\n var that = this,\r\n frameId = (transportLogic.foreverFrame.count += 1),\r\n url,\r\n frame = createFrame(),\r\n frameLoadHandler = function () {\r\n connection.log(\"Forever frame iframe finished loading and is no longer receiving messages.\");\r\n if (!onFailed || !onFailed()) {\r\n that.reconnect(connection);\r\n }\r\n };\r\n\r\n if (window.EventSource) {\r\n // If the browser supports SSE, don't use Forever Frame\r\n if (onFailed) {\r\n connection.log(\"Forever Frame is not supported by SignalR on browsers with SSE support.\");\r\n onFailed();\r\n }\r\n return;\r\n }\r\n\r\n frame.setAttribute(\"data-signalr-connection-id\", connection.id);\r\n\r\n // Start preventing loading icon\r\n // This will only perform work if the loadPreventer is not attached to another connection.\r\n loadPreventer.prevent();\r\n\r\n // Build the url\r\n url = transportLogic.getUrl(connection, this.name);\r\n url += \"&frameId=\" + frameId;\r\n\r\n // add frame to the document prior to setting URL to avoid caching issues.\r\n window.document.documentElement.appendChild(frame);\r\n\r\n connection.log(\"Binding to iframe's load event.\");\r\n\r\n if (frame.addEventListener) {\r\n frame.addEventListener(\"load\", frameLoadHandler, false);\r\n } else if (frame.attachEvent) {\r\n frame.attachEvent(\"onload\", frameLoadHandler);\r\n }\r\n\r\n frame.src = url;\r\n transportLogic.foreverFrame.connections[frameId] = connection;\r\n\r\n connection.frame = frame;\r\n connection.frameId = frameId;\r\n\r\n if (onSuccess) {\r\n connection.onSuccess = function () {\r\n connection.log(\"Iframe transport started.\");\r\n onSuccess();\r\n };\r\n }\r\n },\r\n\r\n reconnect: function (connection) {\r\n var that = this;\r\n\r\n // Need to verify connection state and verify before the setTimeout occurs because an application sleep could occur during the setTimeout duration.\r\n if (transportLogic.isConnectedOrReconnecting(connection) && transportLogic.verifyLastActive(connection)) {\r\n window.setTimeout(function () {\r\n // Verify that we're ok to reconnect.\r\n if (!transportLogic.verifyLastActive(connection)) {\r\n return;\r\n }\r\n\r\n if (connection.frame && transportLogic.ensureReconnectingState(connection)) {\r\n var frame = connection.frame,\r\n src = transportLogic.getUrl(connection, that.name, true) + \"&frameId=\" + connection.frameId;\r\n connection.log(\"Updating iframe src to '\" + src + \"'.\");\r\n frame.src = src;\r\n }\r\n }, connection.reconnectDelay);\r\n }\r\n },\r\n\r\n lostConnection: function (connection) {\r\n this.reconnect(connection);\r\n },\r\n\r\n send: function (connection, data) {\r\n transportLogic.ajaxSend(connection, data);\r\n },\r\n\r\n receive: function (connection, data) {\r\n var cw,\r\n body,\r\n response;\r\n\r\n if (connection.json !== connection._originalJson) {\r\n // If there's a custom JSON parser configured then serialize the object\r\n // using the original (browser) JSON parser and then deserialize it using\r\n // the custom parser (connection._parseResponse does that). This is so we\r\n // can easily send the response from the server as \"raw\" JSON but still \r\n // support custom JSON deserialization in the browser.\r\n data = connection._originalJson.stringify(data);\r\n }\r\n\r\n response = connection._parseResponse(data);\r\n\r\n transportLogic.processMessages(connection, response, connection.onSuccess);\r\n\r\n // Protect against connection stopping from a callback trigger within the processMessages above.\r\n if (connection.state === $.signalR.connectionState.connected) {\r\n // Delete the script & div elements\r\n connection.frameMessageCount = (connection.frameMessageCount || 0) + 1;\r\n if (connection.frameMessageCount > signalR.transports.foreverFrame.iframeClearThreshold) {\r\n connection.frameMessageCount = 0;\r\n cw = connection.frame.contentWindow || connection.frame.contentDocument;\r\n if (cw && cw.document && cw.document.body) {\r\n body = cw.document.body;\r\n\r\n // Remove all the child elements from the iframe's body to conserver memory\r\n while (body.firstChild) {\r\n body.removeChild(body.firstChild);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n\r\n stop: function (connection) {\r\n var cw = null;\r\n\r\n // Stop attempting to prevent loading icon\r\n loadPreventer.cancel();\r\n\r\n if (connection.frame) {\r\n if (connection.frame.stop) {\r\n connection.frame.stop();\r\n } else {\r\n try {\r\n cw = connection.frame.contentWindow || connection.frame.contentDocument;\r\n if (cw.document && cw.document.execCommand) {\r\n cw.document.execCommand(\"Stop\");\r\n }\r\n }\r\n catch (e) {\r\n connection.log(\"Error occured when stopping foreverFrame transport. Message = \" + e.message + \".\");\r\n }\r\n }\r\n\r\n // Ensure the iframe is where we left it\r\n if (connection.frame.parentNode === window.document.body) {\r\n window.document.body.removeChild(connection.frame);\r\n }\r\n\r\n delete transportLogic.foreverFrame.connections[connection.frameId];\r\n connection.frame = null;\r\n connection.frameId = null;\r\n delete connection.frame;\r\n delete connection.frameId;\r\n delete connection.onSuccess;\r\n delete connection.frameMessageCount;\r\n connection.log(\"Stopping forever frame.\");\r\n }\r\n },\r\n\r\n abort: function (connection, async) {\r\n transportLogic.ajaxAbort(connection, async);\r\n },\r\n\r\n getConnection: function (id) {\r\n return transportLogic.foreverFrame.connections[id];\r\n },\r\n\r\n started: function (connection) {\r\n if (changeState(connection,\r\n signalR.connectionState.reconnecting,\r\n signalR.connectionState.connected) === true) {\r\n\r\n $(connection).triggerHandler(events.onReconnect);\r\n }\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.transports.longPolling.js */\r\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var signalR = $.signalR,\r\n events = $.signalR.events,\r\n changeState = $.signalR.changeState,\r\n isDisconnecting = $.signalR.isDisconnecting,\r\n transportLogic = signalR.transports._logic;\r\n\r\n signalR.transports.longPolling = {\r\n name: \"longPolling\",\r\n\r\n supportsKeepAlive: function () {\r\n return false;\r\n },\r\n\r\n reconnectDelay: 3000,\r\n\r\n start: function (connection, onSuccess, onFailed) {\r\n /// Starts the long polling connection\r\n /// The SignalR connection to start\r\n var that = this,\r\n fireConnect = function () {\r\n fireConnect = $.noop;\r\n\r\n connection.log(\"LongPolling connected.\");\r\n onSuccess();\r\n },\r\n tryFailConnect = function (error) {\r\n if (onFailed(error)) {\r\n connection.log(\"LongPolling failed to connect.\");\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n privateData = connection._,\r\n reconnectErrors = 0,\r\n fireReconnected = function (instance) {\r\n window.clearTimeout(privateData.reconnectTimeoutId);\r\n privateData.reconnectTimeoutId = null;\r\n\r\n if (changeState(instance,\r\n signalR.connectionState.reconnecting,\r\n signalR.connectionState.connected) === true) {\r\n // Successfully reconnected!\r\n instance.log(\"Raising the reconnect event\");\r\n $(instance).triggerHandler(events.onReconnect);\r\n }\r\n },\r\n // 1 hour\r\n maxFireReconnectedTimeout = 3600000;\r\n\r\n if (connection.pollXhr) {\r\n connection.log(\"Polling xhr requests already exists, aborting.\");\r\n connection.stop();\r\n }\r\n\r\n connection.messageId = null;\r\n\r\n privateData.reconnectTimeoutId = null;\r\n\r\n privateData.pollTimeoutId = window.setTimeout(function () {\r\n (function poll(instance, raiseReconnect) {\r\n var messageId = instance.messageId,\r\n connect = (messageId === null),\r\n reconnecting = !connect,\r\n polling = !raiseReconnect,\r\n url = transportLogic.getUrl(instance, that.name, reconnecting, polling, true /* use Post for longPolling */),\r\n postData = {};\r\n\r\n if (instance.messageId) {\r\n postData.messageId = instance.messageId;\r\n }\r\n\r\n if (instance.groupsToken) {\r\n postData.groupsToken = instance.groupsToken;\r\n }\r\n\r\n // If we've disconnected during the time we've tried to re-instantiate the poll then stop.\r\n if (isDisconnecting(instance) === true) {\r\n return;\r\n }\r\n\r\n connection.log(\"Opening long polling request to '\" + url + \"'.\");\r\n instance.pollXhr = transportLogic.ajax(connection, {\r\n xhrFields: {\r\n onprogress: function () {\r\n transportLogic.markLastMessage(connection);\r\n }\r\n },\r\n url: url,\r\n type: \"POST\",\r\n contentType: signalR._.defaultContentType,\r\n data: postData,\r\n timeout: connection._.pollTimeout,\r\n success: function (result) {\r\n var minData,\r\n delay = 0,\r\n data,\r\n shouldReconnect;\r\n\r\n connection.log(\"Long poll complete.\");\r\n\r\n // Reset our reconnect errors so if we transition into a reconnecting state again we trigger\r\n // reconnected quickly\r\n reconnectErrors = 0;\r\n\r\n try {\r\n // Remove any keep-alives from the beginning of the result\r\n minData = connection._parseResponse(result);\r\n }\r\n catch (error) {\r\n transportLogic.handleParseFailure(instance, result, error, tryFailConnect, instance.pollXhr);\r\n return;\r\n }\r\n\r\n // If there's currently a timeout to trigger reconnect, fire it now before processing messages\r\n if (privateData.reconnectTimeoutId !== null) {\r\n fireReconnected(instance);\r\n }\r\n\r\n if (minData) {\r\n data = transportLogic.maximizePersistentResponse(minData);\r\n }\r\n\r\n transportLogic.processMessages(instance, minData, fireConnect);\r\n\r\n if (data &&\r\n $.type(data.LongPollDelay) === \"number\") {\r\n delay = data.LongPollDelay;\r\n }\r\n\r\n if (isDisconnecting(instance) === true) {\r\n return;\r\n }\r\n\r\n shouldReconnect = data && data.ShouldReconnect;\r\n if (shouldReconnect) {\r\n // Transition into the reconnecting state\r\n // If this fails then that means that the user transitioned the connection into a invalid state in processMessages.\r\n if (!transportLogic.ensureReconnectingState(instance)) {\r\n return;\r\n }\r\n }\r\n\r\n // We never want to pass a raiseReconnect flag after a successful poll. This is handled via the error function\r\n if (delay > 0) {\r\n privateData.pollTimeoutId = window.setTimeout(function () {\r\n poll(instance, shouldReconnect);\r\n }, delay);\r\n } else {\r\n poll(instance, shouldReconnect);\r\n }\r\n },\r\n\r\n error: function (data, textStatus) {\r\n var error = signalR._.transportError(signalR.resources.longPollFailed, connection.transport, data, instance.pollXhr);\r\n\r\n // Stop trying to trigger reconnect, connection is in an error state\r\n // If we're not in the reconnect state this will noop\r\n window.clearTimeout(privateData.reconnectTimeoutId);\r\n privateData.reconnectTimeoutId = null;\r\n\r\n if (textStatus === \"abort\") {\r\n connection.log(\"Aborted xhr request.\");\r\n return;\r\n }\r\n\r\n if (!tryFailConnect(error)) {\r\n\r\n // Increment our reconnect errors, we assume all errors to be reconnect errors\r\n // In the case that it's our first error this will cause Reconnect to be fired\r\n // after 1 second due to reconnectErrors being = 1.\r\n reconnectErrors++;\r\n\r\n if (connection.state !== signalR.connectionState.reconnecting) {\r\n connection.log(\"An error occurred using longPolling. Status = \" + textStatus + \". Response = \" + data.responseText + \".\");\r\n $(instance).triggerHandler(events.onError, [error]);\r\n }\r\n\r\n // We check the state here to verify that we're not in an invalid state prior to verifying Reconnect.\r\n // If we're not in connected or reconnecting then the next ensureReconnectingState check will fail and will return.\r\n // Therefore we don't want to change that failure code path.\r\n if ((connection.state === signalR.connectionState.connected ||\r\n connection.state === signalR.connectionState.reconnecting) &&\r\n !transportLogic.verifyLastActive(connection)) {\r\n return;\r\n }\r\n\r\n // Transition into the reconnecting state\r\n // If this fails then that means that the user transitioned the connection into the disconnected or connecting state within the above error handler trigger.\r\n if (!transportLogic.ensureReconnectingState(instance)) {\r\n return;\r\n }\r\n\r\n // Call poll with the raiseReconnect flag as true after the reconnect delay\r\n privateData.pollTimeoutId = window.setTimeout(function () {\r\n poll(instance, true);\r\n }, that.reconnectDelay);\r\n }\r\n }\r\n });\r\n\r\n // This will only ever pass after an error has occured via the poll ajax procedure.\r\n if (reconnecting && raiseReconnect === true) {\r\n // We wait to reconnect depending on how many times we've failed to reconnect.\r\n // This is essentially a heuristic that will exponentially increase in wait time before\r\n // triggering reconnected. This depends on the \"error\" handler of Poll to cancel this \r\n // timeout if it triggers before the Reconnected event fires.\r\n // The Math.min at the end is to ensure that the reconnect timeout does not overflow.\r\n privateData.reconnectTimeoutId = window.setTimeout(function () { fireReconnected(instance); }, Math.min(1000 * (Math.pow(2, reconnectErrors) - 1), maxFireReconnectedTimeout));\r\n }\r\n }(connection));\r\n }, 250); // Have to delay initial poll so Chrome doesn't show loader spinner in tab\r\n },\r\n\r\n lostConnection: function (connection) {\r\n if (connection.pollXhr) {\r\n connection.pollXhr.abort(\"lostConnection\");\r\n }\r\n },\r\n\r\n send: function (connection, data) {\r\n transportLogic.ajaxSend(connection, data);\r\n },\r\n\r\n stop: function (connection) {\r\n /// Stops the long polling connection\r\n /// The SignalR connection to stop\r\n\r\n window.clearTimeout(connection._.pollTimeoutId);\r\n window.clearTimeout(connection._.reconnectTimeoutId);\r\n\r\n delete connection._.pollTimeoutId;\r\n delete connection._.reconnectTimeoutId;\r\n\r\n if (connection.pollXhr) {\r\n connection.pollXhr.abort();\r\n connection.pollXhr = null;\r\n delete connection.pollXhr;\r\n }\r\n },\r\n\r\n abort: function (connection, async) {\r\n transportLogic.ajaxAbort(connection, async);\r\n }\r\n };\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.hubs.js */\r\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n\r\n(function ($, window, undefined) {\r\n\r\n var eventNamespace = \".hubProxy\",\r\n signalR = $.signalR;\r\n\r\n function makeEventName(event) {\r\n return event + eventNamespace;\r\n }\r\n\r\n // Equivalent to Array.prototype.map\r\n function map(arr, fun, thisp) {\r\n var i,\r\n length = arr.length,\r\n result = [];\r\n for (i = 0; i < length; i += 1) {\r\n if (arr.hasOwnProperty(i)) {\r\n result[i] = fun.call(thisp, arr[i], i, arr);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n function getArgValue(a) {\r\n return $.isFunction(a) ? null : ($.type(a) === \"undefined\" ? null : a);\r\n }\r\n\r\n function hasMembers(obj) {\r\n for (var key in obj) {\r\n // If we have any properties in our callback map then we have callbacks and can exit the loop via return\r\n if (obj.hasOwnProperty(key)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function clearInvocationCallbacks(connection, error) {\r\n /// \r\n var callbacks = connection._.invocationCallbacks,\r\n callback;\r\n\r\n if (hasMembers(callbacks)) {\r\n connection.log(\"Clearing hub invocation callbacks with error: \" + error + \".\");\r\n }\r\n\r\n // Reset the callback cache now as we have a local var referencing it\r\n connection._.invocationCallbackId = 0;\r\n delete connection._.invocationCallbacks;\r\n connection._.invocationCallbacks = {};\r\n\r\n // Loop over the callbacks and invoke them.\r\n // We do this using a local var reference and *after* we've cleared the cache\r\n // so that if a fail callback itself tries to invoke another method we don't \r\n // end up with its callback in the list we're looping over.\r\n for (var callbackId in callbacks) {\r\n callback = callbacks[callbackId];\r\n callback.method.call(callback.scope, { E: error });\r\n }\r\n }\r\n\r\n // hubProxy\r\n function hubProxy(hubConnection, hubName) {\r\n /// \r\n /// Creates a new proxy object for the given hub connection that can be used to invoke\r\n /// methods on server hubs and handle client method invocation requests from the server.\r\n /// \r\n return new hubProxy.fn.init(hubConnection, hubName);\r\n }\r\n\r\n hubProxy.fn = hubProxy.prototype = {\r\n init: function (connection, hubName) {\r\n this.state = {};\r\n this.connection = connection;\r\n this.hubName = hubName;\r\n this._ = {\r\n callbackMap: {}\r\n };\r\n },\r\n\r\n constructor: hubProxy,\r\n\r\n hasSubscriptions: function () {\r\n return hasMembers(this._.callbackMap);\r\n },\r\n\r\n on: function (eventName, callback) {\r\n /// Wires up a callback to be invoked when a invocation request is received from the server hub.\r\n /// The name of the hub event to register the callback for.\r\n /// The callback to be invoked.\r\n var that = this,\r\n callbackMap = that._.callbackMap;\r\n\r\n // Normalize the event name to lowercase\r\n eventName = eventName.toLowerCase();\r\n\r\n // If there is not an event registered for this callback yet we want to create its event space in the callback map.\r\n if (!callbackMap[eventName]) {\r\n callbackMap[eventName] = {};\r\n }\r\n\r\n // Map the callback to our encompassed function\r\n callbackMap[eventName][callback] = function (e, data) {\r\n callback.apply(that, data);\r\n };\r\n\r\n $(that).bind(makeEventName(eventName), callbackMap[eventName][callback]);\r\n\r\n return that;\r\n },\r\n\r\n off: function (eventName, callback) {\r\n /// Removes the callback invocation request from the server hub for the given event name.\r\n /// The name of the hub event to unregister the callback for.\r\n /// The callback to be invoked.\r\n var that = this,\r\n callbackMap = that._.callbackMap,\r\n callbackSpace;\r\n\r\n // Normalize the event name to lowercase\r\n eventName = eventName.toLowerCase();\r\n\r\n callbackSpace = callbackMap[eventName];\r\n\r\n // Verify that there is an event space to unbind\r\n if (callbackSpace) {\r\n // Only unbind if there's an event bound with eventName and a callback with the specified callback\r\n if (callbackSpace[callback]) {\r\n $(that).unbind(makeEventName(eventName), callbackSpace[callback]);\r\n\r\n // Remove the callback from the callback map\r\n delete callbackSpace[callback];\r\n\r\n // Check if there are any members left on the event, if not we need to destroy it.\r\n if (!hasMembers(callbackSpace)) {\r\n delete callbackMap[eventName];\r\n }\r\n } else if (!callback) { // Check if we're removing the whole event and we didn't error because of an invalid callback\r\n $(that).unbind(makeEventName(eventName));\r\n\r\n delete callbackMap[eventName];\r\n }\r\n }\r\n\r\n return that;\r\n },\r\n\r\n invoke: function (methodName) {\r\n /// Invokes a server hub method with the given arguments.\r\n /// The name of the server hub method.\r\n\r\n var that = this,\r\n connection = that.connection,\r\n args = $.makeArray(arguments).slice(1),\r\n argValues = map(args, getArgValue),\r\n data = { H: that.hubName, M: methodName, A: argValues, I: connection._.invocationCallbackId },\r\n d = $.Deferred(),\r\n callback = function (minResult) {\r\n var result = that._maximizeHubResponse(minResult),\r\n source,\r\n error;\r\n\r\n // Update the hub state\r\n $.extend(that.state, result.State);\r\n\r\n if (result.Progress) {\r\n if (d.notifyWith) {\r\n // Progress is only supported in jQuery 1.7+\r\n d.notifyWith(that, [result.Progress.Data]);\r\n } else if(!connection._.progressjQueryVersionLogged) {\r\n connection.log(\"A hub method invocation progress update was received but the version of jQuery in use (\" + $.prototype.jquery + \") does not support progress updates. Upgrade to jQuery 1.7+ to receive progress notifications.\");\r\n connection._.progressjQueryVersionLogged = true;\r\n }\r\n } else if (result.Error) {\r\n // Server hub method threw an exception, log it & reject the deferred\r\n if (result.StackTrace) {\r\n connection.log(result.Error + \"\\n\" + result.StackTrace + \".\");\r\n }\r\n\r\n // result.ErrorData is only set if a HubException was thrown\r\n source = result.IsHubException ? \"HubException\" : \"Exception\";\r\n error = signalR._.error(result.Error, source);\r\n error.data = result.ErrorData;\r\n\r\n connection.log(that.hubName + \".\" + methodName + \" failed to execute. Error: \" + error.message);\r\n d.rejectWith(that, [error]);\r\n } else {\r\n // Server invocation succeeded, resolve the deferred\r\n connection.log(\"Invoked \" + that.hubName + \".\" + methodName);\r\n d.resolveWith(that, [result.Result]);\r\n }\r\n };\r\n\r\n connection._.invocationCallbacks[connection._.invocationCallbackId.toString()] = { scope: that, method: callback };\r\n connection._.invocationCallbackId += 1;\r\n\r\n if (!$.isEmptyObject(that.state)) {\r\n data.S = that.state;\r\n }\r\n\r\n connection.log(\"Invoking \" + that.hubName + \".\" + methodName);\r\n connection.send(data);\r\n\r\n return d.promise();\r\n },\r\n\r\n _maximizeHubResponse: function (minHubResponse) {\r\n return {\r\n State: minHubResponse.S,\r\n Result: minHubResponse.R,\r\n Progress: minHubResponse.P ? {\r\n Id: minHubResponse.P.I,\r\n Data: minHubResponse.P.D\r\n } : null,\r\n Id: minHubResponse.I,\r\n IsHubException: minHubResponse.H,\r\n Error: minHubResponse.E,\r\n StackTrace: minHubResponse.T,\r\n ErrorData: minHubResponse.D\r\n };\r\n }\r\n };\r\n\r\n hubProxy.fn.init.prototype = hubProxy.fn;\r\n\r\n // hubConnection\r\n function hubConnection(url, options) {\r\n /// Creates a new hub connection.\r\n /// [Optional] The hub route url, defaults to \"/signalr\".\r\n /// [Optional] Settings to use when creating the hubConnection.\r\n var settings = {\r\n qs: null,\r\n logging: false,\r\n useDefaultPath: true\r\n };\r\n\r\n $.extend(settings, options);\r\n\r\n if (!url || settings.useDefaultPath) {\r\n url = (url || \"\") + \"/signalr\";\r\n }\r\n return new hubConnection.fn.init(url, settings);\r\n }\r\n\r\n hubConnection.fn = hubConnection.prototype = $.connection();\r\n\r\n hubConnection.fn.init = function (url, options) {\r\n var settings = {\r\n qs: null,\r\n logging: false,\r\n useDefaultPath: true\r\n },\r\n connection = this;\r\n\r\n $.extend(settings, options);\r\n\r\n // Call the base constructor\r\n $.signalR.fn.init.call(connection, url, settings.qs, settings.logging);\r\n\r\n // Object to store hub proxies for this connection\r\n connection.proxies = {};\r\n\r\n connection._.invocationCallbackId = 0;\r\n connection._.invocationCallbacks = {};\r\n\r\n // Wire up the received handler\r\n connection.received(function (minData) {\r\n var data, proxy, dataCallbackId, callback, hubName, eventName;\r\n if (!minData) {\r\n return;\r\n }\r\n\r\n // We have to handle progress updates first in order to ensure old clients that receive\r\n // progress updates enter the return value branch and then no-op when they can't find\r\n // the callback in the map (because the minData.I value will not be a valid callback ID)\r\n if (typeof (minData.P) !== \"undefined\") {\r\n // Process progress notification\r\n dataCallbackId = minData.P.I.toString();\r\n callback = connection._.invocationCallbacks[dataCallbackId];\r\n if (callback) {\r\n callback.method.call(callback.scope, minData);\r\n }\r\n } else if (typeof (minData.I) !== \"undefined\") {\r\n // We received the return value from a server method invocation, look up callback by id and call it\r\n dataCallbackId = minData.I.toString();\r\n callback = connection._.invocationCallbacks[dataCallbackId];\r\n if (callback) {\r\n // Delete the callback from the proxy\r\n connection._.invocationCallbacks[dataCallbackId] = null;\r\n delete connection._.invocationCallbacks[dataCallbackId];\r\n\r\n // Invoke the callback\r\n callback.method.call(callback.scope, minData);\r\n }\r\n } else {\r\n data = this._maximizeClientHubInvocation(minData);\r\n\r\n // We received a client invocation request, i.e. broadcast from server hub\r\n connection.log(\"Triggering client hub event '\" + data.Method + \"' on hub '\" + data.Hub + \"'.\");\r\n\r\n // Normalize the names to lowercase\r\n hubName = data.Hub.toLowerCase();\r\n eventName = data.Method.toLowerCase();\r\n\r\n // Trigger the local invocation event\r\n proxy = this.proxies[hubName];\r\n\r\n // Update the hub state\r\n $.extend(proxy.state, data.State);\r\n $(proxy).triggerHandler(makeEventName(eventName), [data.Args]);\r\n }\r\n });\r\n\r\n connection.error(function (errData, origData) {\r\n var callbackId, callback;\r\n\r\n if (!origData) {\r\n // No original data passed so this is not a send error\r\n return;\r\n }\r\n\r\n callbackId = origData.I;\r\n callback = connection._.invocationCallbacks[callbackId];\r\n\r\n // Verify that there is a callback bound (could have been cleared)\r\n if (callback) {\r\n // Delete the callback\r\n connection._.invocationCallbacks[callbackId] = null;\r\n delete connection._.invocationCallbacks[callbackId];\r\n\r\n // Invoke the callback with an error to reject the promise\r\n callback.method.call(callback.scope, { E: errData });\r\n }\r\n });\r\n\r\n connection.reconnecting(function () {\r\n if (connection.transport && connection.transport.name === \"webSockets\") {\r\n clearInvocationCallbacks(connection, \"Connection started reconnecting before invocation result was received.\");\r\n }\r\n });\r\n\r\n connection.disconnected(function () {\r\n clearInvocationCallbacks(connection, \"Connection was disconnected before invocation result was received.\");\r\n });\r\n };\r\n\r\n hubConnection.fn._maximizeClientHubInvocation = function (minClientHubInvocation) {\r\n return {\r\n Hub: minClientHubInvocation.H,\r\n Method: minClientHubInvocation.M,\r\n Args: minClientHubInvocation.A,\r\n State: minClientHubInvocation.S\r\n };\r\n };\r\n\r\n hubConnection.fn._registerSubscribedHubs = function () {\r\n /// \r\n /// Sets the starting event to loop through the known hubs and register any new hubs \r\n /// that have been added to the proxy.\r\n /// \r\n var connection = this;\r\n\r\n if (!connection._subscribedToHubs) {\r\n connection._subscribedToHubs = true;\r\n connection.starting(function () {\r\n // Set the connection's data object with all the hub proxies with active subscriptions.\r\n // These proxies will receive notifications from the server.\r\n var subscribedHubs = [];\r\n\r\n $.each(connection.proxies, function (key) {\r\n if (this.hasSubscriptions()) {\r\n subscribedHubs.push({ name: key });\r\n connection.log(\"Client subscribed to hub '\" + key + \"'.\");\r\n }\r\n });\r\n\r\n if (subscribedHubs.length === 0) {\r\n connection.log(\"No hubs have been subscribed to. The client will not receive data from hubs. To fix, declare at least one client side function prior to connection start for each hub you wish to subscribe to.\");\r\n }\r\n\r\n connection.data = connection.json.stringify(subscribedHubs);\r\n });\r\n }\r\n };\r\n\r\n hubConnection.fn.createHubProxy = function (hubName) {\r\n /// \r\n /// Creates a new proxy object for the given hub connection that can be used to invoke\r\n /// methods on server hubs and handle client method invocation requests from the server.\r\n /// \r\n /// \r\n /// The name of the hub on the server to create the proxy for.\r\n /// \r\n\r\n // Normalize the name to lowercase\r\n hubName = hubName.toLowerCase();\r\n\r\n var proxy = this.proxies[hubName];\r\n if (!proxy) {\r\n proxy = hubProxy(this, hubName);\r\n this.proxies[hubName] = proxy;\r\n }\r\n\r\n this._registerSubscribedHubs();\r\n\r\n return proxy;\r\n };\r\n\r\n hubConnection.fn.init.prototype = hubConnection.fn;\r\n\r\n $.hubConnection = hubConnection;\r\n\r\n}(window.jQuery, window));\r\n/* jquery.signalR.version.js */\r\n// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.md in the project root for license information.\r\n\r\n/*global window:false */\r\n/// \r\n(function ($, undefined) {\r\n $.signalR.version = \"2.2.0\";\r\n}(window.jQuery));\r\n","/**!\r\n * Sortable\r\n * @author\tRubaXa \r\n * @license MIT\r\n */\r\n\r\n\r\n(function (factory) {\r\n\t\"use strict\";\r\n\r\n\tif (typeof define === \"function\" && define.amd) {\r\n\t\tdefine(factory);\r\n\t}\r\n\telse if (typeof module != \"undefined\" && typeof module.exports != \"undefined\") {\r\n\t\tmodule.exports = factory();\r\n\t}\r\n\telse if (typeof Package !== \"undefined\") {\r\n\t\tvar Sortable = factory(); // export for Meteor.js\r\n\t}\r\n\telse {\r\n\t\t/* jshint sub:true */\r\n\t\twindow[\"Sortable\"] = factory();\r\n\t}\r\n})(function () {\r\n\t\"use strict\";\r\n\r\n\tvar dragEl,\r\n\t\tparentEl,\r\n\t\tghostEl,\r\n\t\tcloneEl,\r\n\t\trootEl,\r\n\t\tnextEl,\r\n\r\n\t\tscrollEl,\r\n\t\tscrollParentEl,\r\n\r\n\t\tlastEl,\r\n\t\tlastCSS,\r\n\t\tlastParentCSS,\r\n\r\n\t\toldIndex,\r\n\t\tnewIndex,\r\n\r\n\t\tactiveGroup,\r\n\t\tautoScroll = {},\r\n\r\n\t\ttapEvt,\r\n\t\ttouchEvt,\r\n\r\n\t\tmoved,\r\n\r\n\t\t/** @const */\r\n\t\tRSPACE = /\\s+/g,\r\n\r\n\t\texpando = 'Sortable' + (new Date).getTime(),\r\n\r\n\t\twin = window,\r\n\t\tdocument = win.document,\r\n\t\tparseInt = win.parseInt,\r\n\r\n\t\tsupportDraggable = !!('draggable' in document.createElement('div')),\r\n\t\tsupportCssPointerEvents = (function (el) {\r\n\t\t\tel = document.createElement('x');\r\n\t\t\tel.style.cssText = 'pointer-events:auto';\r\n\t\t\treturn el.style.pointerEvents === 'auto';\r\n\t\t})(),\r\n\r\n\t\t_silent = false,\r\n\r\n\t\tabs = Math.abs,\r\n\t\tslice = [].slice,\r\n\r\n\t\ttouchDragOverListeners = [],\r\n\r\n\t\t_autoScroll = _throttle(function (/**Event*/evt, /**Object*/options, /**HTMLElement*/rootEl) {\r\n\t\t\t// Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\r\n\t\t\tif (rootEl && options.scroll) {\r\n\t\t\t\tvar el,\r\n\t\t\t\t\trect,\r\n\t\t\t\t\tsens = options.scrollSensitivity,\r\n\t\t\t\t\tspeed = options.scrollSpeed,\r\n\r\n\t\t\t\t\tx = evt.clientX,\r\n\t\t\t\t\ty = evt.clientY,\r\n\r\n\t\t\t\t\twinWidth = window.innerWidth,\r\n\t\t\t\t\twinHeight = window.innerHeight,\r\n\r\n\t\t\t\t\tvx,\r\n\t\t\t\t\tvy\r\n\t\t\t\t;\r\n\r\n\t\t\t\t// Delect scrollEl\r\n\t\t\t\tif (scrollParentEl !== rootEl) {\r\n\t\t\t\t\tscrollEl = options.scroll;\r\n\t\t\t\t\tscrollParentEl = rootEl;\r\n\r\n\t\t\t\t\tif (scrollEl === true) {\r\n\t\t\t\t\t\tscrollEl = rootEl;\r\n\r\n\t\t\t\t\t\tdo {\r\n\t\t\t\t\t\t\tif ((scrollEl.offsetWidth < scrollEl.scrollWidth) ||\r\n\t\t\t\t\t\t\t\t(scrollEl.offsetHeight < scrollEl.scrollHeight)\r\n\t\t\t\t\t\t\t) {\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t/* jshint boss:true */\r\n\t\t\t\t\t\t} while (scrollEl = scrollEl.parentNode);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (scrollEl) {\r\n\t\t\t\t\tel = scrollEl;\r\n\t\t\t\t\trect = scrollEl.getBoundingClientRect();\r\n\t\t\t\t\tvx = (abs(rect.right - x) <= sens) - (abs(rect.left - x) <= sens);\r\n\t\t\t\t\tvy = (abs(rect.bottom - y) <= sens) - (abs(rect.top - y) <= sens);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif (!(vx || vy)) {\r\n\t\t\t\t\tvx = (winWidth - x <= sens) - (x <= sens);\r\n\t\t\t\t\tvy = (winHeight - y <= sens) - (y <= sens);\r\n\r\n\t\t\t\t\t/* jshint expr:true */\r\n\t\t\t\t\t(vx || vy) && (el = win);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif (autoScroll.vx !== vx || autoScroll.vy !== vy || autoScroll.el !== el) {\r\n\t\t\t\t\tautoScroll.el = el;\r\n\t\t\t\t\tautoScroll.vx = vx;\r\n\t\t\t\t\tautoScroll.vy = vy;\r\n\r\n\t\t\t\t\tclearInterval(autoScroll.pid);\r\n\r\n\t\t\t\t\tif (el) {\r\n\t\t\t\t\t\tautoScroll.pid = setInterval(function () {\r\n\t\t\t\t\t\t\tif (el === win) {\r\n\t\t\t\t\t\t\t\twin.scrollTo(win.pageXOffset + vx * speed, win.pageYOffset + vy * speed);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvy && (el.scrollTop += vy * speed);\r\n\t\t\t\t\t\t\t\tvx && (el.scrollLeft += vx * speed);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}, 24);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, 30),\r\n\r\n\t\t_prepareGroup = function (options) {\r\n\t\t\tvar group = options.group;\r\n\r\n\t\t\tif (!group || typeof group != 'object') {\r\n\t\t\t\tgroup = options.group = {name: group};\r\n\t\t\t}\r\n\r\n\t\t\t['pull', 'put'].forEach(function (key) {\r\n\t\t\t\tif (!(key in group)) {\r\n\t\t\t\t\tgroup[key] = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\toptions.groups = ' ' + group.name + (group.put.join ? ' ' + group.put.join(' ') : '') + ' ';\r\n\t\t}\r\n\t;\r\n\r\n\r\n\r\n\t/**\r\n\t * @class Sortable\r\n\t * @param {HTMLElement} el\r\n\t * @param {Object} [options]\r\n\t */\r\n\tfunction Sortable(el, options) {\r\n\t\tif (!(el && el.nodeType && el.nodeType === 1)) {\r\n\t\t\tthrow 'Sortable: `el` must be HTMLElement, and not ' + {}.toString.call(el);\r\n\t\t}\r\n\r\n\t\tthis.el = el; // root element\r\n\t\tthis.options = options = _extend({}, options);\r\n\r\n\r\n\t\t// Export instance\r\n\t\tel[expando] = this;\r\n\r\n\r\n\t\t// Default options\r\n\t\tvar defaults = {\r\n\t\t\tgroup: Math.random(),\r\n\t\t\tsort: true,\r\n\t\t\tdisabled: false,\r\n\t\t\tstore: null,\r\n\t\t\thandle: null,\r\n\t\t\tscroll: true,\r\n\t\t\tscrollSensitivity: 30,\r\n\t\t\tscrollSpeed: 10,\r\n\t\t\tdraggable: /[uo]l/i.test(el.nodeName) ? 'li' : '>*',\r\n\t\t\tghostClass: 'sortable-ghost',\r\n\t\t\tchosenClass: 'sortable-chosen',\r\n\t\t\tignore: 'a, img',\r\n\t\t\tfilter: null,\r\n\t\t\tanimation: 0,\r\n\t\t\tsetData: function (dataTransfer, dragEl) {\r\n\t\t\t\tdataTransfer.setData('Text', dragEl.textContent);\r\n\t\t\t},\r\n\t\t\tdropBubble: false,\r\n\t\t\tdragoverBubble: false,\r\n\t\t\tdataIdAttr: 'data-id',\r\n\t\t\tdelay: 0,\r\n\t\t\tforceFallback: false,\r\n\t\t\tfallbackClass: 'sortable-fallback',\r\n\t\t\tfallbackOnBody: false\r\n\t\t};\r\n\r\n\r\n\t\t// Set default options\r\n\t\tfor (var name in defaults) {\r\n\t\t\t!(name in options) && (options[name] = defaults[name]);\r\n\t\t}\r\n\r\n\t\t_prepareGroup(options);\r\n\r\n\t\t// Bind all private methods\r\n\t\tfor (var fn in this) {\r\n\t\t\tif (fn.charAt(0) === '_') {\r\n\t\t\t\tthis[fn] = this[fn].bind(this);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Setup drag mode\r\n\t\tthis.nativeDraggable = options.forceFallback ? false : supportDraggable;\r\n\r\n\t\t// Bind events\r\n\t\t_on(el, 'mousedown', this._onTapStart);\r\n\t\t_on(el, 'touchstart', this._onTapStart);\r\n\r\n\t\tif (this.nativeDraggable) {\r\n\t\t\t_on(el, 'dragover', this);\r\n\t\t\t_on(el, 'dragenter', this);\r\n\t\t}\r\n\r\n\t\ttouchDragOverListeners.push(this._onDragOver);\r\n\r\n\t\t// Restore sorting\r\n\t\toptions.store && this.sort(options.store.get(this));\r\n\t}\r\n\r\n\r\n\tSortable.prototype = /** @lends Sortable.prototype */ {\r\n\t\tconstructor: Sortable,\r\n\r\n\t\t_onTapStart: function (/** Event|TouchEvent */evt) {\r\n\t\t\tvar _this = this,\r\n\t\t\t\tel = this.el,\r\n\t\t\t\toptions = this.options,\r\n\t\t\t\ttype = evt.type,\r\n\t\t\t\ttouch = evt.touches && evt.touches[0],\r\n\t\t\t\ttarget = (touch || evt).target,\r\n\t\t\t\toriginalTarget = target,\r\n\t\t\t\tfilter = options.filter;\r\n\r\n\r\n\t\t\tif (type === 'mousedown' && evt.button !== 0 || options.disabled) {\r\n\t\t\t\treturn; // only left button or enabled\r\n\t\t\t}\r\n\r\n\t\t\ttarget = _closest(target, options.draggable, el);\r\n\r\n\t\t\tif (!target) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// get the index of the dragged element within its parent\r\n\t\t\toldIndex = _index(target);\r\n\r\n\t\t\t// Check filter\r\n\t\t\tif (typeof filter === 'function') {\r\n\t\t\t\tif (filter.call(this, evt, target, this)) {\r\n\t\t\t\t\t_dispatchEvent(_this, originalTarget, 'filter', target, el, oldIndex);\r\n\t\t\t\t\tevt.preventDefault();\r\n\t\t\t\t\treturn; // cancel dnd\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (filter) {\r\n\t\t\t\tfilter = filter.split(',').some(function (criteria) {\r\n\t\t\t\t\tcriteria = _closest(originalTarget, criteria.trim(), el);\r\n\r\n\t\t\t\t\tif (criteria) {\r\n\t\t\t\t\t\t_dispatchEvent(_this, criteria, 'filter', target, el, oldIndex);\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (filter) {\r\n\t\t\t\t\tevt.preventDefault();\r\n\t\t\t\t\treturn; // cancel dnd\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif (options.handle && !_closest(originalTarget, options.handle, el)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Prepare `dragstart`\r\n\t\t\tthis._prepareDragStart(evt, touch, target);\r\n\t\t},\r\n\r\n\t\t_prepareDragStart: function (/** Event */evt, /** Touch */touch, /** HTMLElement */target) {\r\n\t\t\tvar _this = this,\r\n\t\t\t\tel = _this.el,\r\n\t\t\t\toptions = _this.options,\r\n\t\t\t\townerDocument = el.ownerDocument,\r\n\t\t\t\tdragStartFn;\r\n\r\n\t\t\tif (target && !dragEl && (target.parentNode === el)) {\r\n\t\t\t\ttapEvt = evt;\r\n\r\n\t\t\t\trootEl = el;\r\n\t\t\t\tdragEl = target;\r\n\t\t\t\tparentEl = dragEl.parentNode;\r\n\t\t\t\tnextEl = dragEl.nextSibling;\r\n\t\t\t\tactiveGroup = options.group;\r\n\r\n\t\t\t\tdragStartFn = function () {\r\n\t\t\t\t\t// Delayed drag has been triggered\r\n\t\t\t\t\t// we can re-enable the events: touchmove/mousemove\r\n\t\t\t\t\t_this._disableDelayedDrag();\r\n\r\n\t\t\t\t\t// Make the element draggable\r\n\t\t\t\t\tdragEl.draggable = true;\r\n\r\n\t\t\t\t\t// Chosen item\r\n\t\t\t\t\t_toggleClass(dragEl, _this.options.chosenClass, true);\r\n\r\n\t\t\t\t\t// Bind the events: dragstart/dragend\r\n\t\t\t\t\t_this._triggerDragStart(touch);\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Disable \"draggable\"\r\n\t\t\t\toptions.ignore.split(',').forEach(function (criteria) {\r\n\t\t\t\t\t_find(dragEl, criteria.trim(), _disableDraggable);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t_on(ownerDocument, 'mouseup', _this._onDrop);\r\n\t\t\t\t_on(ownerDocument, 'touchend', _this._onDrop);\r\n\t\t\t\t_on(ownerDocument, 'touchcancel', _this._onDrop);\r\n\r\n\t\t\t\tif (options.delay) {\r\n\t\t\t\t\t// If the user moves the pointer or let go the click or touch\r\n\t\t\t\t\t// before the delay has been reached:\r\n\t\t\t\t\t// disable the delayed drag\r\n\t\t\t\t\t_on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\r\n\t\t\t\t\t_on(ownerDocument, 'touchend', _this._disableDelayedDrag);\r\n\t\t\t\t\t_on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\r\n\t\t\t\t\t_on(ownerDocument, 'mousemove', _this._disableDelayedDrag);\r\n\t\t\t\t\t_on(ownerDocument, 'touchmove', _this._disableDelayedDrag);\r\n\r\n\t\t\t\t\t_this._dragStartTimer = setTimeout(dragStartFn, options.delay);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdragStartFn();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_disableDelayedDrag: function () {\r\n\t\t\tvar ownerDocument = this.el.ownerDocument;\r\n\r\n\t\t\tclearTimeout(this._dragStartTimer);\r\n\t\t\t_off(ownerDocument, 'mouseup', this._disableDelayedDrag);\r\n\t\t\t_off(ownerDocument, 'touchend', this._disableDelayedDrag);\r\n\t\t\t_off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\r\n\t\t\t_off(ownerDocument, 'mousemove', this._disableDelayedDrag);\r\n\t\t\t_off(ownerDocument, 'touchmove', this._disableDelayedDrag);\r\n\t\t},\r\n\r\n\t\t_triggerDragStart: function (/** Touch */touch) {\r\n\t\t\tif (touch) {\r\n\t\t\t\t// Touch device support\r\n\t\t\t\ttapEvt = {\r\n\t\t\t\t\ttarget: dragEl,\r\n\t\t\t\t\tclientX: touch.clientX,\r\n\t\t\t\t\tclientY: touch.clientY\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis._onDragStart(tapEvt, 'touch');\r\n\t\t\t}\r\n\t\t\telse if (!this.nativeDraggable) {\r\n\t\t\t\tthis._onDragStart(tapEvt, true);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t_on(dragEl, 'dragend', this);\r\n\t\t\t\t_on(rootEl, 'dragstart', this._onDragStart);\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tif (document.selection) {\r\n\t\t\t\t\tdocument.selection.empty();\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.getSelection().removeAllRanges();\r\n\t\t\t\t}\r\n\t\t\t} catch (err) {\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_dragStarted: function () {\r\n\t\t\tif (rootEl && dragEl) {\r\n\t\t\t\t// Apply effect\r\n\t\t\t\t_toggleClass(dragEl, this.options.ghostClass, true);\r\n\r\n\t\t\t\tSortable.active = this;\r\n\r\n\t\t\t\t// Drag start event\r\n\t\t\t\t_dispatchEvent(this, rootEl, 'start', dragEl, rootEl, oldIndex);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_emulateDragOver: function () {\r\n\t\t\tif (touchEvt) {\r\n\t\t\t\tif (this._lastX === touchEvt.clientX && this._lastY === touchEvt.clientY) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._lastX = touchEvt.clientX;\r\n\t\t\t\tthis._lastY = touchEvt.clientY;\r\n\r\n\t\t\t\tif (!supportCssPointerEvents) {\r\n\t\t\t\t\t_css(ghostEl, 'display', 'none');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY),\r\n\t\t\t\t\tparent = target,\r\n\t\t\t\t\tgroupName = ' ' + this.options.group.name + '',\r\n\t\t\t\t\ti = touchDragOverListeners.length;\r\n\r\n\t\t\t\tif (parent) {\r\n\t\t\t\t\tdo {\r\n\t\t\t\t\t\tif (parent[expando] && parent[expando].options.groups.indexOf(groupName) > -1) {\r\n\t\t\t\t\t\t\twhile (i--) {\r\n\t\t\t\t\t\t\t\ttouchDragOverListeners[i]({\r\n\t\t\t\t\t\t\t\t\tclientX: touchEvt.clientX,\r\n\t\t\t\t\t\t\t\t\tclientY: touchEvt.clientY,\r\n\t\t\t\t\t\t\t\t\ttarget: target,\r\n\t\t\t\t\t\t\t\t\trootEl: parent\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttarget = parent; // store last element\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/* jshint boss:true */\r\n\t\t\t\t\twhile (parent = parent.parentNode);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!supportCssPointerEvents) {\r\n\t\t\t\t\t_css(ghostEl, 'display', '');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t_onTouchMove: function (/**TouchEvent*/evt) {\r\n\t\t\tif (tapEvt) {\r\n\t\t\t\t// only set the status to dragging, when we are actually dragging\r\n\t\t\t\tif (!Sortable.active) {\r\n\t\t\t\t\tthis._dragStarted();\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// as well as creating the ghost element on the document body\r\n\t\t\t\tthis._appendGhost();\r\n\r\n\t\t\t\tvar touch = evt.touches ? evt.touches[0] : evt,\r\n\t\t\t\t\tdx = touch.clientX - tapEvt.clientX,\r\n\t\t\t\t\tdy = touch.clientY - tapEvt.clientY,\r\n\t\t\t\t\ttranslate3d = evt.touches ? 'translate3d(' + dx + 'px,' + dy + 'px,0)' : 'translate(' + dx + 'px,' + dy + 'px)';\r\n\r\n\t\t\t\tmoved = true;\r\n\t\t\t\ttouchEvt = touch;\r\n\r\n\t\t\t\t_css(ghostEl, 'webkitTransform', translate3d);\r\n\t\t\t\t_css(ghostEl, 'mozTransform', translate3d);\r\n\t\t\t\t_css(ghostEl, 'msTransform', translate3d);\r\n\t\t\t\t_css(ghostEl, 'transform', translate3d);\r\n\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_appendGhost: function () {\r\n\t\t\tif (!ghostEl) {\r\n\t\t\t\tvar rect = dragEl.getBoundingClientRect(),\r\n\t\t\t\t\tcss = _css(dragEl),\r\n\t\t\t\t\tghostRect;\r\n\r\n\t\t\t\tghostEl = dragEl.cloneNode(true);\r\n\r\n\t\t\t\t_toggleClass(ghostEl, this.options.ghostClass, false);\r\n\t\t\t\t_toggleClass(ghostEl, this.options.fallbackClass, true);\r\n\r\n\t\t\t\t_css(ghostEl, 'top', rect.top - parseInt(css.marginTop, 10));\r\n\t\t\t\t_css(ghostEl, 'left', rect.left - parseInt(css.marginLeft, 10));\r\n\t\t\t\t_css(ghostEl, 'width', rect.width);\r\n\t\t\t\t_css(ghostEl, 'height', rect.height);\r\n\t\t\t\t_css(ghostEl, 'opacity', '0.8');\r\n\t\t\t\t_css(ghostEl, 'position', 'fixed');\r\n\t\t\t\t_css(ghostEl, 'zIndex', '100000');\r\n\t\t\t\t_css(ghostEl, 'pointerEvents', 'none');\r\n\r\n\t\t\t\tthis.options.fallbackOnBody && document.body.appendChild(ghostEl) || rootEl.appendChild(ghostEl);\r\n\r\n\t\t\t\t// Fixing dimensions.\r\n\t\t\t\tghostRect = ghostEl.getBoundingClientRect();\r\n\t\t\t\t_css(ghostEl, 'width', rect.width * 2 - ghostRect.width);\r\n\t\t\t\t_css(ghostEl, 'height', rect.height * 2 - ghostRect.height);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_onDragStart: function (/**Event*/evt, /**boolean*/useFallback) {\r\n\t\t\tvar dataTransfer = evt.dataTransfer,\r\n\t\t\t\toptions = this.options;\r\n\r\n\t\t\tthis._offUpEvents();\r\n\r\n\t\t\tif (activeGroup.pull == 'clone') {\r\n\t\t\t\tcloneEl = dragEl.cloneNode(true);\r\n\t\t\t\t_css(cloneEl, 'display', 'none');\r\n\t\t\t\trootEl.insertBefore(cloneEl, dragEl);\r\n\t\t\t}\r\n\r\n\t\t\tif (useFallback) {\r\n\r\n\t\t\t\tif (useFallback === 'touch') {\r\n\t\t\t\t\t// Bind touch events\r\n\t\t\t\t\t_on(document, 'touchmove', this._onTouchMove);\r\n\t\t\t\t\t_on(document, 'touchend', this._onDrop);\r\n\t\t\t\t\t_on(document, 'touchcancel', this._onDrop);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Old brwoser\r\n\t\t\t\t\t_on(document, 'mousemove', this._onTouchMove);\r\n\t\t\t\t\t_on(document, 'mouseup', this._onDrop);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis._loopId = setInterval(this._emulateDragOver, 50);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (dataTransfer) {\r\n\t\t\t\t\tdataTransfer.effectAllowed = 'move';\r\n\t\t\t\t\toptions.setData && options.setData.call(this, dataTransfer, dragEl);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t_on(document, 'drop', this);\r\n\t\t\t\tsetTimeout(this._dragStarted, 0);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_onDragOver: function (/**Event*/evt) {\r\n\t\t\tvar el = this.el,\r\n\t\t\t\ttarget,\r\n\t\t\t\tdragRect,\r\n\t\t\t\trevert,\r\n\t\t\t\toptions = this.options,\r\n\t\t\t\tgroup = options.group,\r\n\t\t\t\tgroupPut = group.put,\r\n\t\t\t\tisOwner = (activeGroup === group),\r\n\t\t\t\tcanSort = options.sort;\r\n\r\n\t\t\tif (evt.preventDefault !== void 0) {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\t!options.dragoverBubble && evt.stopPropagation();\r\n\t\t\t}\r\n\r\n\t\t\tmoved = true;\r\n\r\n\t\t\tif (activeGroup && !options.disabled &&\r\n\t\t\t\t(isOwner\r\n\t\t\t\t\t? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\r\n\t\t\t\t\t: activeGroup.pull && groupPut && (\r\n\t\t\t\t\t\t(activeGroup.name === group.name) || // by Name\r\n\t\t\t\t\t\t(groupPut.indexOf && ~groupPut.indexOf(activeGroup.name)) // by Array\r\n\t\t\t\t\t)\r\n\t\t\t\t) &&\r\n\t\t\t\t(evt.rootEl === void 0 || evt.rootEl === this.el) // touch fallback\r\n\t\t\t) {\r\n\t\t\t\t// Smart auto-scrolling\r\n\t\t\t\t_autoScroll(evt, options, this.el);\r\n\r\n\t\t\t\tif (_silent) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttarget = _closest(evt.target, options.draggable, el);\r\n\t\t\t\tdragRect = dragEl.getBoundingClientRect();\r\n\r\n\t\t\t\tif (revert) {\r\n\t\t\t\t\t_cloneHide(true);\r\n\r\n\t\t\t\t\tif (cloneEl || nextEl) {\r\n\t\t\t\t\t\trootEl.insertBefore(dragEl, cloneEl || nextEl);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (!canSort) {\r\n\t\t\t\t\t\trootEl.appendChild(dragEl);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif ((el.children.length === 0) || (el.children[0] === ghostEl) ||\r\n\t\t\t\t\t(el === evt.target) && (target = _ghostIsLast(el, evt))\r\n\t\t\t\t) {\r\n\r\n\t\t\t\t\tif (target) {\r\n\t\t\t\t\t\tif (target.animated) {\r\n\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttargetRect = target.getBoundingClientRect();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_cloneHide(isOwner);\r\n\r\n\t\t\t\t\tif (_onMove(rootEl, el, dragEl, dragRect, target, targetRect) !== false) {\r\n\t\t\t\t\t\tif (!dragEl.contains(el)) {\r\n\t\t\t\t\t\t\tel.appendChild(dragEl);\r\n\t\t\t\t\t\t\tparentEl = el; // actualization\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\r\n\t\t\t\t\t\ttarget && this._animate(targetRect, target);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if (target && !target.animated && target !== dragEl && (target.parentNode[expando] !== void 0)) {\r\n\t\t\t\t\tif (lastEl !== target) {\r\n\t\t\t\t\t\tlastEl = target;\r\n\t\t\t\t\t\tlastCSS = _css(target);\r\n\t\t\t\t\t\tlastParentCSS = _css(target.parentNode);\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\tvar targetRect = target.getBoundingClientRect(),\r\n\t\t\t\t\t\twidth = targetRect.right - targetRect.left,\r\n\t\t\t\t\t\theight = targetRect.bottom - targetRect.top,\r\n\t\t\t\t\t\tfloating = /left|right|inline/.test(lastCSS.cssFloat + lastCSS.display)\r\n\t\t\t\t\t\t\t|| (lastParentCSS.display == 'flex' && lastParentCSS['flex-direction'].indexOf('row') === 0),\r\n\t\t\t\t\t\tisWide = (target.offsetWidth > dragEl.offsetWidth),\r\n\t\t\t\t\t\tisLong = (target.offsetHeight > dragEl.offsetHeight),\r\n\t\t\t\t\t\thalfway = (floating ? (evt.clientX - targetRect.left) / width : (evt.clientY - targetRect.top) / height) > 0.5,\r\n\t\t\t\t\t\tnextSibling = target.nextElementSibling,\r\n\t\t\t\t\t\tmoveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect),\r\n\t\t\t\t\t\tafter\r\n\t\t\t\t\t;\r\n\r\n\t\t\t\t\tif (moveVector !== false) {\r\n\t\t\t\t\t\t_silent = true;\r\n\t\t\t\t\t\tsetTimeout(_unsilent, 30);\r\n\r\n\t\t\t\t\t\t_cloneHide(isOwner);\r\n\r\n\t\t\t\t\t\tif (moveVector === 1 || moveVector === -1) {\r\n\t\t\t\t\t\t\tafter = (moveVector === 1);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if (floating) {\r\n\t\t\t\t\t\t\tvar elTop = dragEl.offsetTop,\r\n\t\t\t\t\t\t\t\ttgTop = target.offsetTop;\r\n\r\n\t\t\t\t\t\t\tif (elTop === tgTop) {\r\n\t\t\t\t\t\t\t\tafter = (target.previousElementSibling === dragEl) && !isWide || halfway && isWide;\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tafter = tgTop > elTop;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tafter = (nextSibling !== dragEl) && !isLong || halfway && isLong;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!dragEl.contains(el)) {\r\n\t\t\t\t\t\t\tif (after && !nextSibling) {\r\n\t\t\t\t\t\t\t\tel.appendChild(dragEl);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\ttarget.parentNode.insertBefore(dragEl, after ? nextSibling : target);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tparentEl = dragEl.parentNode; // actualization\r\n\r\n\t\t\t\t\t\tthis._animate(dragRect, dragEl);\r\n\t\t\t\t\t\tthis._animate(targetRect, target);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_animate: function (prevRect, target) {\r\n\t\t\tvar ms = this.options.animation;\r\n\r\n\t\t\tif (ms) {\r\n\t\t\t\tvar currentRect = target.getBoundingClientRect();\r\n\r\n\t\t\t\t_css(target, 'transition', 'none');\r\n\t\t\t\t_css(target, 'transform', 'translate3d('\r\n\t\t\t\t\t+ (prevRect.left - currentRect.left) + 'px,'\r\n\t\t\t\t\t+ (prevRect.top - currentRect.top) + 'px,0)'\r\n\t\t\t\t);\r\n\r\n\t\t\t\ttarget.offsetWidth; // repaint\r\n\r\n\t\t\t\t_css(target, 'transition', 'all ' + ms + 'ms');\r\n\t\t\t\t_css(target, 'transform', 'translate3d(0,0,0)');\r\n\r\n\t\t\t\tclearTimeout(target.animated);\r\n\t\t\t\ttarget.animated = setTimeout(function () {\r\n\t\t\t\t\t_css(target, 'transition', '');\r\n\t\t\t\t\t_css(target, 'transform', '');\r\n\t\t\t\t\ttarget.animated = false;\r\n\t\t\t\t}, ms);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t_offUpEvents: function () {\r\n\t\t\tvar ownerDocument = this.el.ownerDocument;\r\n\r\n\t\t\t_off(document, 'touchmove', this._onTouchMove);\r\n\t\t\t_off(ownerDocument, 'mouseup', this._onDrop);\r\n\t\t\t_off(ownerDocument, 'touchend', this._onDrop);\r\n\t\t\t_off(ownerDocument, 'touchcancel', this._onDrop);\r\n\t\t},\r\n\r\n\t\t_onDrop: function (/**Event*/evt) {\r\n\t\t\tvar el = this.el,\r\n\t\t\t\toptions = this.options;\r\n\r\n\t\t\tclearInterval(this._loopId);\r\n\t\t\tclearInterval(autoScroll.pid);\r\n\t\t\tclearTimeout(this._dragStartTimer);\r\n\r\n\t\t\t// Unbind events\r\n\t\t\t_off(document, 'mousemove', this._onTouchMove);\r\n\r\n\t\t\tif (this.nativeDraggable) {\r\n\t\t\t\t_off(document, 'drop', this);\r\n\t\t\t\t_off(el, 'dragstart', this._onDragStart);\r\n\t\t\t}\r\n\r\n\t\t\tthis._offUpEvents();\r\n\r\n\t\t\tif (evt) {\r\n\t\t\t\tif (moved) {\r\n\t\t\t\t\tevt.preventDefault();\r\n\t\t\t\t\t!options.dropBubble && evt.stopPropagation();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tghostEl && ghostEl.parentNode.removeChild(ghostEl);\r\n\r\n\t\t\t\tif (dragEl) {\r\n\t\t\t\t\tif (this.nativeDraggable) {\r\n\t\t\t\t\t\t_off(dragEl, 'dragend', this);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_disableDraggable(dragEl);\r\n\r\n\t\t\t\t\t// Remove class's\r\n\t\t\t\t\t_toggleClass(dragEl, this.options.ghostClass, false);\r\n\t\t\t\t\t_toggleClass(dragEl, this.options.chosenClass, false);\r\n\r\n\t\t\t\t\tif (rootEl !== parentEl) {\r\n\t\t\t\t\t\tnewIndex = _index(dragEl);\r\n\r\n\t\t\t\t\t\tif (newIndex >= 0) {\r\n\t\t\t\t\t\t\t// drag from one list and drop into another\r\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\r\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\r\n\r\n\t\t\t\t\t\t\t// Add event\r\n\t\t\t\t\t\t\t_dispatchEvent(null, parentEl, 'add', dragEl, rootEl, oldIndex, newIndex);\r\n\r\n\t\t\t\t\t\t\t// Remove event\r\n\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'remove', dragEl, rootEl, oldIndex, newIndex);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// Remove clone\r\n\t\t\t\t\t\tcloneEl && cloneEl.parentNode.removeChild(cloneEl);\r\n\r\n\t\t\t\t\t\tif (dragEl.nextSibling !== nextEl) {\r\n\t\t\t\t\t\t\t// Get the index of the dragged element within its parent\r\n\t\t\t\t\t\t\tnewIndex = _index(dragEl);\r\n\r\n\t\t\t\t\t\t\tif (newIndex >= 0) {\r\n\t\t\t\t\t\t\t\t// drag & drop within the same list\r\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'update', dragEl, rootEl, oldIndex, newIndex);\r\n\t\t\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'sort', dragEl, rootEl, oldIndex, newIndex);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (Sortable.active) {\r\n\t\t\t\t\t\tif (newIndex === null || newIndex === -1) {\r\n\t\t\t\t\t\t\tnewIndex = oldIndex;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t_dispatchEvent(this, rootEl, 'end', dragEl, rootEl, oldIndex, newIndex);\r\n\r\n\t\t\t\t\t\t// Save sorting\r\n\t\t\t\t\t\tthis.save();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Nulling\r\n\t\t\t\trootEl =\r\n\t\t\t\tdragEl =\r\n\t\t\t\tparentEl =\r\n\t\t\t\tghostEl =\r\n\t\t\t\tnextEl =\r\n\t\t\t\tcloneEl =\r\n\r\n\t\t\t\tscrollEl =\r\n\t\t\t\tscrollParentEl =\r\n\r\n\t\t\t\ttapEvt =\r\n\t\t\t\ttouchEvt =\r\n\r\n\t\t\t\tmoved =\r\n\t\t\t\tnewIndex =\r\n\r\n\t\t\t\tlastEl =\r\n\t\t\t\tlastCSS =\r\n\r\n\t\t\t\tactiveGroup =\r\n\t\t\t\tSortable.active = null;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\thandleEvent: function (/**Event*/evt) {\r\n\t\t\tvar type = evt.type;\r\n\r\n\t\t\tif (type === 'dragover' || type === 'dragenter') {\r\n\t\t\t\tif (dragEl) {\r\n\t\t\t\t\tthis._onDragOver(evt);\r\n\t\t\t\t\t_globalDragOver(evt);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if (type === 'drop' || type === 'dragend') {\r\n\t\t\t\tthis._onDrop(evt);\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t/**\r\n\t\t * Serializes the item into an array of string.\r\n\t\t * @returns {String[]}\r\n\t\t */\r\n\t\ttoArray: function () {\r\n\t\t\tvar order = [],\r\n\t\t\t\tel,\r\n\t\t\t\tchildren = this.el.children,\r\n\t\t\t\ti = 0,\r\n\t\t\t\tn = children.length,\r\n\t\t\t\toptions = this.options;\r\n\r\n\t\t\tfor (; i < n; i++) {\r\n\t\t\t\tel = children[i];\r\n\t\t\t\tif (_closest(el, options.draggable, this.el)) {\r\n\t\t\t\t\torder.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn order;\r\n\t\t},\r\n\r\n\r\n\t\t/**\r\n\t\t * Sorts the elements according to the array.\r\n\t\t * @param {String[]} order order of the items\r\n\t\t */\r\n\t\tsort: function (order) {\r\n\t\t\tvar items = {}, rootEl = this.el;\r\n\r\n\t\t\tthis.toArray().forEach(function (id, i) {\r\n\t\t\t\tvar el = rootEl.children[i];\r\n\r\n\t\t\t\tif (_closest(el, this.options.draggable, rootEl)) {\r\n\t\t\t\t\titems[id] = el;\r\n\t\t\t\t}\r\n\t\t\t}, this);\r\n\r\n\t\t\torder.forEach(function (id) {\r\n\t\t\t\tif (items[id]) {\r\n\t\t\t\t\trootEl.removeChild(items[id]);\r\n\t\t\t\t\trootEl.appendChild(items[id]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\r\n\t\t/**\r\n\t\t * Save the current sorting\r\n\t\t */\r\n\t\tsave: function () {\r\n\t\t\tvar store = this.options.store;\r\n\t\t\tstore && store.set(this);\r\n\t\t},\r\n\r\n\r\n\t\t/**\r\n\t\t * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\r\n\t\t * @param {HTMLElement} el\r\n\t\t * @param {String} [selector] default: `options.draggable`\r\n\t\t * @returns {HTMLElement|null}\r\n\t\t */\r\n\t\tclosest: function (el, selector) {\r\n\t\t\treturn _closest(el, selector || this.options.draggable, this.el);\r\n\t\t},\r\n\r\n\r\n\t\t/**\r\n\t\t * Set/get option\r\n\t\t * @param {string} name\r\n\t\t * @param {*} [value]\r\n\t\t * @returns {*}\r\n\t\t */\r\n\t\toption: function (name, value) {\r\n\t\t\tvar options = this.options;\r\n\r\n\t\t\tif (value === void 0) {\r\n\t\t\t\treturn options[name];\r\n\t\t\t} else {\r\n\t\t\t\toptions[name] = value;\r\n\r\n\t\t\t\tif (name === 'group') {\r\n\t\t\t\t\t_prepareGroup(options);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\r\n\t\t/**\r\n\t\t * Destroy\r\n\t\t */\r\n\t\tdestroy: function () {\r\n\t\t\tvar el = this.el;\r\n\r\n\t\t\tel[expando] = null;\r\n\r\n\t\t\t_off(el, 'mousedown', this._onTapStart);\r\n\t\t\t_off(el, 'touchstart', this._onTapStart);\r\n\r\n\t\t\tif (this.nativeDraggable) {\r\n\t\t\t\t_off(el, 'dragover', this);\r\n\t\t\t\t_off(el, 'dragenter', this);\r\n\t\t\t}\r\n\r\n\t\t\t// Remove draggable attributes\r\n\t\t\tArray.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\r\n\t\t\t\tel.removeAttribute('draggable');\r\n\t\t\t});\r\n\r\n\t\t\ttouchDragOverListeners.splice(touchDragOverListeners.indexOf(this._onDragOver), 1);\r\n\r\n\t\t\tthis._onDrop();\r\n\r\n\t\t\tthis.el = el = null;\r\n\t\t}\r\n\t};\r\n\r\n\r\n\tfunction _cloneHide(state) {\r\n\t\tif (cloneEl && (cloneEl.state !== state)) {\r\n\t\t\t_css(cloneEl, 'display', state ? 'none' : '');\r\n\t\t\t!state && cloneEl.state && rootEl.insertBefore(cloneEl, dragEl);\r\n\t\t\tcloneEl.state = state;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction _closest(/**HTMLElement*/el, /**String*/selector, /**HTMLElement*/ctx) {\r\n\t\tif (el) {\r\n\t\t\tctx = ctx || document;\r\n\t\t\tselector = selector.split('.');\r\n\r\n\t\t\tvar tag = selector.shift().toUpperCase(),\r\n\t\t\t\tre = new RegExp('\\\\s(' + selector.join('|') + ')(?=\\\\s)', 'g');\r\n\r\n\t\t\tdo {\r\n\t\t\t\tif (\r\n\t\t\t\t\t(tag === '>*' && el.parentNode === ctx) || (\r\n\t\t\t\t\t\t(tag === '' || el.nodeName.toUpperCase() == tag) &&\r\n\t\t\t\t\t\t(!selector.length || ((' ' + el.className + ' ').match(re) || []).length == selector.length)\r\n\t\t\t\t\t)\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn el;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\twhile (el !== ctx && (el = el.parentNode));\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\r\n\tfunction _globalDragOver(/**Event*/evt) {\r\n\t\tif (evt.dataTransfer) {\r\n\t\t\tevt.dataTransfer.dropEffect = 'move';\r\n\t\t}\r\n\t\tevt.preventDefault();\r\n\t}\r\n\r\n\r\n\tfunction _on(el, event, fn) {\r\n\t\tel.addEventListener(event, fn, false);\r\n\t}\r\n\r\n\r\n\tfunction _off(el, event, fn) {\r\n\t\tel.removeEventListener(event, fn, false);\r\n\t}\r\n\r\n\r\n\tfunction _toggleClass(el, name, state) {\r\n\t\tif (el) {\r\n\t\t\tif (el.classList) {\r\n\t\t\t\tel.classList[state ? 'add' : 'remove'](name);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvar className = (' ' + el.className + ' ').replace(RSPACE, ' ').replace(' ' + name + ' ', ' ');\r\n\t\t\t\tel.className = (className + (state ? ' ' + name : '')).replace(RSPACE, ' ');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction _css(el, prop, val) {\r\n\t\tvar style = el && el.style;\r\n\r\n\t\tif (style) {\r\n\t\t\tif (val === void 0) {\r\n\t\t\t\tif (document.defaultView && document.defaultView.getComputedStyle) {\r\n\t\t\t\t\tval = document.defaultView.getComputedStyle(el, '');\r\n\t\t\t\t}\r\n\t\t\t\telse if (el.currentStyle) {\r\n\t\t\t\t\tval = el.currentStyle;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn prop === void 0 ? val : val[prop];\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (!(prop in style)) {\r\n\t\t\t\t\tprop = '-webkit-' + prop;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstyle[prop] = val + (typeof val === 'string' ? '' : 'px');\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction _find(ctx, tagName, iterator) {\r\n\t\tif (ctx) {\r\n\t\t\tvar list = ctx.getElementsByTagName(tagName), i = 0, n = list.length;\r\n\r\n\t\t\tif (iterator) {\r\n\t\t\t\tfor (; i < n; i++) {\r\n\t\t\t\t\titerator(list[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn list;\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t}\r\n\r\n\r\n\r\n\tfunction _dispatchEvent(sortable, rootEl, name, targetEl, fromEl, startIndex, newIndex) {\r\n\t\tvar evt = document.createEvent('Event'),\r\n\t\t\toptions = (sortable || rootEl[expando]).options,\r\n\t\t\tonName = 'on' + name.charAt(0).toUpperCase() + name.substr(1);\r\n\r\n\t\tevt.initEvent(name, true, true);\r\n\r\n\t\tevt.to = rootEl;\r\n\t\tevt.from = fromEl || rootEl;\r\n\t\tevt.item = targetEl || rootEl;\r\n\t\tevt.clone = cloneEl;\r\n\r\n\t\tevt.oldIndex = startIndex;\r\n\t\tevt.newIndex = newIndex;\r\n\r\n\t\trootEl.dispatchEvent(evt);\r\n\r\n\t\tif (options[onName]) {\r\n\t\t\toptions[onName].call(sortable, evt);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect) {\r\n\t\tvar evt,\r\n\t\t\tsortable = fromEl[expando],\r\n\t\t\tonMoveFn = sortable.options.onMove,\r\n\t\t\tretVal;\r\n\r\n\t\tevt = document.createEvent('Event');\r\n\t\tevt.initEvent('move', true, true);\r\n\r\n\t\tevt.to = toEl;\r\n\t\tevt.from = fromEl;\r\n\t\tevt.dragged = dragEl;\r\n\t\tevt.draggedRect = dragRect;\r\n\t\tevt.related = targetEl || toEl;\r\n\t\tevt.relatedRect = targetRect || toEl.getBoundingClientRect();\r\n\r\n\t\tfromEl.dispatchEvent(evt);\r\n\r\n\t\tif (onMoveFn) {\r\n\t\t\tretVal = onMoveFn.call(sortable, evt);\r\n\t\t}\r\n\r\n\t\treturn retVal;\r\n\t}\r\n\r\n\r\n\tfunction _disableDraggable(el) {\r\n\t\tel.draggable = false;\r\n\t}\r\n\r\n\r\n\tfunction _unsilent() {\r\n\t\t_silent = false;\r\n\t}\r\n\r\n\r\n\t/** @returns {HTMLElement|false} */\r\n\tfunction _ghostIsLast(el, evt) {\r\n\t\tvar lastEl = el.lastElementChild,\r\n\t\t\t\trect = lastEl.getBoundingClientRect();\r\n\r\n\t\treturn ((evt.clientY - (rect.top + rect.height) > 5) || (evt.clientX - (rect.right + rect.width) > 5)) && lastEl; // min delta\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Generate id\r\n\t * @param {HTMLElement} el\r\n\t * @returns {String}\r\n\t * @private\r\n\t */\r\n\tfunction _generateId(el) {\r\n\t\tvar str = el.tagName + el.className + el.src + el.href + el.textContent,\r\n\t\t\ti = str.length,\r\n\t\t\tsum = 0;\r\n\r\n\t\twhile (i--) {\r\n\t\t\tsum += str.charCodeAt(i);\r\n\t\t}\r\n\r\n\t\treturn sum.toString(36);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the index of an element within its parent\r\n\t * @param {HTMLElement} el\r\n\t * @return {number}\r\n\t */\r\n\tfunction _index(el) {\r\n\t\tvar index = 0;\r\n\r\n\t\tif (!el || !el.parentNode) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\r\n\t\twhile (el && (el = el.previousElementSibling)) {\r\n\t\t\tif (el.nodeName.toUpperCase() !== 'TEMPLATE') {\r\n\t\t\t\tindex++;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\tfunction _throttle(callback, ms) {\r\n\t\tvar args, _this;\r\n\r\n\t\treturn function () {\r\n\t\t\tif (args === void 0) {\r\n\t\t\t\targs = arguments;\r\n\t\t\t\t_this = this;\r\n\r\n\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\tif (args.length === 1) {\r\n\t\t\t\t\t\tcallback.call(_this, args[0]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcallback.apply(_this, args);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\targs = void 0;\r\n\t\t\t\t}, ms);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tfunction _extend(dst, src) {\r\n\t\tif (dst && src) {\r\n\t\t\tfor (var key in src) {\r\n\t\t\t\tif (src.hasOwnProperty(key)) {\r\n\t\t\t\t\tdst[key] = src[key];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn dst;\r\n\t}\r\n\r\n\r\n\t// Export utils\r\n\tSortable.utils = {\r\n\t\ton: _on,\r\n\t\toff: _off,\r\n\t\tcss: _css,\r\n\t\tfind: _find,\r\n\t\tis: function (el, selector) {\r\n\t\t\treturn !!_closest(el, selector, el);\r\n\t\t},\r\n\t\textend: _extend,\r\n\t\tthrottle: _throttle,\r\n\t\tclosest: _closest,\r\n\t\ttoggleClass: _toggleClass,\r\n\t\tindex: _index\r\n\t};\r\n\r\n\r\n\t/**\r\n\t * Create sortable instance\r\n\t * @param {HTMLElement} el\r\n\t * @param {Object} [options]\r\n\t */\r\n\tSortable.create = function (el, options) {\r\n\t\treturn new Sortable(el, options);\r\n\t};\r\n\r\n\r\n\t// Export\r\n\tSortable.version = '1.3.0';\r\n\treturn Sortable;\r\n});\r\n","/*! tether-drop 1.4.1 */\r\n\r\n(function(root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define([\"tether\"], factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory(require('tether'));\r\n } else {\r\n root.Drop = factory(root.Tether);\r\n }\r\n}(this, function(Tether) {\r\n\r\n/* global Tether */\r\n'use strict';\r\n\r\nvar _bind = Function.prototype.bind;\r\n\r\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\r\n\r\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\r\n\r\nvar _get = function get(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x2 = parent; _x3 = property; _x4 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\r\n\r\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\r\n\r\nvar _Tether$Utils = Tether.Utils;\r\nvar extend = _Tether$Utils.extend;\r\nvar addClass = _Tether$Utils.addClass;\r\nvar removeClass = _Tether$Utils.removeClass;\r\nvar hasClass = _Tether$Utils.hasClass;\r\nvar Evented = _Tether$Utils.Evented;\r\n\r\nfunction sortAttach(str) {\r\n var _str$split = str.split(' ');\r\n\r\n var _str$split2 = _slicedToArray(_str$split, 2);\r\n\r\n var first = _str$split2[0];\r\n var second = _str$split2[1];\r\n\r\n if (['left', 'right'].indexOf(first) >= 0) {\r\n var _ref = [second, first];\r\n first = _ref[0];\r\n second = _ref[1];\r\n }\r\n return [first, second].join(' ');\r\n}\r\n\r\nfunction removeFromArray(arr, item) {\r\n var index = undefined;\r\n var results = [];\r\n while ((index = arr.indexOf(item)) !== -1) {\r\n results.push(arr.splice(index, 1));\r\n }\r\n return results;\r\n}\r\n\r\nvar clickEvents = ['click'];\r\nif ('ontouchstart' in document.documentElement) {\r\n clickEvents.push('touchstart');\r\n}\r\n\r\nvar transitionEndEvents = {\r\n 'WebkitTransition': 'webkitTransitionEnd',\r\n 'MozTransition': 'transitionend',\r\n 'OTransition': 'otransitionend',\r\n 'transition': 'transitionend'\r\n};\r\n\r\nvar transitionEndEvent = '';\r\nfor (var _name in transitionEndEvents) {\r\n if (({}).hasOwnProperty.call(transitionEndEvents, _name)) {\r\n var tempEl = document.createElement('p');\r\n if (typeof tempEl.style[_name] !== 'undefined') {\r\n transitionEndEvent = transitionEndEvents[_name];\r\n }\r\n }\r\n}\r\n\r\nvar MIRROR_ATTACH = {\r\n left: 'right',\r\n right: 'left',\r\n top: 'bottom',\r\n bottom: 'top',\r\n middle: 'middle',\r\n center: 'center'\r\n};\r\n\r\nvar allDrops = {};\r\n\r\n// Drop can be included in external libraries. Calling createContext gives you a fresh\r\n// copy of drop which won't interact with other copies on the page (beyond calling the document events).\r\n\r\nfunction createContext() {\r\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\r\n\r\n var drop = function drop() {\r\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key];\r\n }\r\n\r\n return new (_bind.apply(DropInstance, [null].concat(args)))();\r\n };\r\n\r\n extend(drop, {\r\n createContext: createContext,\r\n drops: [],\r\n defaults: {}\r\n });\r\n\r\n var defaultOptions = {\r\n classPrefix: 'drop',\r\n defaults: {\r\n position: 'bottom left',\r\n openOn: 'click',\r\n beforeClose: null,\r\n constrainToScrollParent: true,\r\n constrainToWindow: true,\r\n classes: '',\r\n remove: false,\r\n openDelay: 0,\r\n closeDelay: 50,\r\n // inherited from openDelay and closeDelay if not explicitly defined\r\n focusDelay: null,\r\n blurDelay: null,\r\n hoverOpenDelay: null,\r\n hoverCloseDelay: null,\r\n tetherOptions: {}\r\n }\r\n };\r\n\r\n extend(drop, defaultOptions, options);\r\n extend(drop.defaults, defaultOptions.defaults, options.defaults);\r\n\r\n if (typeof allDrops[drop.classPrefix] === 'undefined') {\r\n allDrops[drop.classPrefix] = [];\r\n }\r\n\r\n drop.updateBodyClasses = function () {\r\n // There is only one body, so despite the context concept, we still iterate through all\r\n // drops which share our classPrefix.\r\n\r\n var anyOpen = false;\r\n var drops = allDrops[drop.classPrefix];\r\n var len = drops.length;\r\n for (var i = 0; i < len; ++i) {\r\n if (drops[i].isOpened()) {\r\n anyOpen = true;\r\n break;\r\n }\r\n }\r\n\r\n if (anyOpen) {\r\n addClass(document.body, drop.classPrefix + '-open');\r\n } else {\r\n removeClass(document.body, drop.classPrefix + '-open');\r\n }\r\n };\r\n\r\n var DropInstance = (function (_Evented) {\r\n _inherits(DropInstance, _Evented);\r\n\r\n function DropInstance(opts) {\r\n _classCallCheck(this, DropInstance);\r\n\r\n _get(Object.getPrototypeOf(DropInstance.prototype), 'constructor', this).call(this);\r\n this.options = extend({}, drop.defaults, opts);\r\n this.target = this.options.target;\r\n\r\n if (typeof this.target === 'undefined') {\r\n throw new Error('Drop Error: You must provide a target.');\r\n }\r\n\r\n var dataPrefix = 'data-' + drop.classPrefix;\r\n\r\n var contentAttr = this.target.getAttribute(dataPrefix);\r\n if (contentAttr && this.options.content == null) {\r\n this.options.content = contentAttr;\r\n }\r\n\r\n var attrsOverride = ['position', 'openOn'];\r\n for (var i = 0; i < attrsOverride.length; ++i) {\r\n\r\n var override = this.target.getAttribute(dataPrefix + '-' + attrsOverride[i]);\r\n if (override && this.options[attrsOverride[i]] == null) {\r\n this.options[attrsOverride[i]] = override;\r\n }\r\n }\r\n\r\n if (this.options.classes && this.options.addTargetClasses !== false) {\r\n addClass(this.target, this.options.classes);\r\n }\r\n\r\n drop.drops.push(this);\r\n allDrops[drop.classPrefix].push(this);\r\n\r\n this._boundEvents = [];\r\n this.bindMethods();\r\n this.setupElements();\r\n this.setupEvents();\r\n this.setupTether();\r\n }\r\n\r\n _createClass(DropInstance, [{\r\n key: '_on',\r\n value: function _on(element, event, handler) {\r\n this._boundEvents.push({ element: element, event: event, handler: handler });\r\n element.addEventListener(event, handler);\r\n }\r\n }, {\r\n key: 'bindMethods',\r\n value: function bindMethods() {\r\n this.transitionEndHandler = this._transitionEndHandler.bind(this);\r\n }\r\n }, {\r\n key: 'setupElements',\r\n value: function setupElements() {\r\n var _this = this;\r\n\r\n this.drop = document.createElement('div');\r\n addClass(this.drop, drop.classPrefix);\r\n\r\n if (this.options.classes) {\r\n addClass(this.drop, this.options.classes);\r\n }\r\n\r\n this.content = document.createElement('div');\r\n addClass(this.content, drop.classPrefix + '-content');\r\n\r\n if (typeof this.options.content === 'function') {\r\n var generateAndSetContent = function generateAndSetContent() {\r\n // content function might return a string or an element\r\n var contentElementOrHTML = _this.options.content.call(_this, _this);\r\n\r\n if (typeof contentElementOrHTML === 'string') {\r\n _this.content.innerHTML = contentElementOrHTML;\r\n } else if (typeof contentElementOrHTML === 'object') {\r\n _this.content.innerHTML = '';\r\n _this.content.appendChild(contentElementOrHTML);\r\n } else {\r\n throw new Error('Drop Error: Content function should return a string or HTMLElement.');\r\n }\r\n };\r\n\r\n generateAndSetContent();\r\n this.on('open', generateAndSetContent.bind(this));\r\n } else if (typeof this.options.content === 'object') {\r\n this.content.appendChild(this.options.content);\r\n } else {\r\n this.content.innerHTML = this.options.content;\r\n }\r\n\r\n this.drop.appendChild(this.content);\r\n }\r\n }, {\r\n key: 'setupTether',\r\n value: function setupTether() {\r\n // Tether expects two attachment points, one in the target element, one in the\r\n // drop. We use a single one, and use the order as well, to allow us to put\r\n // the drop on either side of any of the four corners. This magic converts between\r\n // the two:\r\n var dropAttach = this.options.position.split(' ');\r\n dropAttach[0] = MIRROR_ATTACH[dropAttach[0]];\r\n dropAttach = dropAttach.join(' ');\r\n\r\n var constraints = [];\r\n if (this.options.constrainToScrollParent) {\r\n constraints.push({\r\n to: 'scrollParent',\r\n pin: 'top, bottom',\r\n attachment: 'together none'\r\n });\r\n } else {\r\n // To get 'out of bounds' classes\r\n constraints.push({\r\n to: 'scrollParent'\r\n });\r\n }\r\n\r\n if (this.options.constrainToWindow !== false) {\r\n constraints.push({\r\n to: 'window',\r\n attachment: 'together'\r\n });\r\n } else {\r\n // To get 'out of bounds' classes\r\n constraints.push({\r\n to: 'window'\r\n });\r\n }\r\n\r\n var opts = {\r\n element: this.drop,\r\n target: this.target,\r\n attachment: sortAttach(dropAttach),\r\n targetAttachment: sortAttach(this.options.position),\r\n classPrefix: drop.classPrefix,\r\n offset: '0 0',\r\n targetOffset: '0 0',\r\n enabled: false,\r\n constraints: constraints,\r\n addTargetClasses: this.options.addTargetClasses\r\n };\r\n\r\n if (this.options.tetherOptions !== false) {\r\n this.tether = new Tether(extend({}, opts, this.options.tetherOptions));\r\n }\r\n }\r\n }, {\r\n key: 'setupEvents',\r\n value: function setupEvents() {\r\n var _this2 = this;\r\n\r\n if (!this.options.openOn) {\r\n return;\r\n }\r\n\r\n if (this.options.openOn === 'always') {\r\n setTimeout(this.open.bind(this));\r\n return;\r\n }\r\n\r\n var events = this.options.openOn.split(' ');\r\n\r\n if (events.indexOf('click') >= 0) {\r\n var openHandler = function openHandler(event) {\r\n _this2.toggle(event);\r\n event.preventDefault();\r\n };\r\n\r\n var closeHandler = function closeHandler(event) {\r\n if (!_this2.isOpened()) {\r\n return;\r\n }\r\n\r\n // Clicking inside dropdown\r\n if (event.target === _this2.drop || _this2.drop.contains(event.target)) {\r\n return;\r\n }\r\n\r\n // Clicking target\r\n if (event.target === _this2.target || _this2.target.contains(event.target)) {\r\n return;\r\n }\r\n\r\n _this2.close(event);\r\n };\r\n\r\n for (var i = 0; i < clickEvents.length; ++i) {\r\n var clickEvent = clickEvents[i];\r\n this._on(this.target, clickEvent, openHandler);\r\n this._on(document, clickEvent, closeHandler);\r\n }\r\n }\r\n\r\n var inTimeout = null;\r\n var outTimeout = null;\r\n\r\n var inHandler = function inHandler(event) {\r\n if (outTimeout !== null) {\r\n clearTimeout(outTimeout);\r\n } else {\r\n inTimeout = setTimeout(function () {\r\n _this2.open(event);\r\n inTimeout = null;\r\n }, (event.type === 'focus' ? _this2.options.focusDelay : _this2.options.hoverOpenDelay) || _this2.options.openDelay);\r\n }\r\n };\r\n\r\n var outHandler = function outHandler(event) {\r\n if (inTimeout !== null) {\r\n clearTimeout(inTimeout);\r\n } else {\r\n outTimeout = setTimeout(function () {\r\n _this2.close(event);\r\n outTimeout = null;\r\n }, (event.type === 'blur' ? _this2.options.blurDelay : _this2.options.hoverCloseDelay) || _this2.options.closeDelay);\r\n }\r\n };\r\n\r\n if (events.indexOf('hover') >= 0) {\r\n this._on(this.target, 'mouseover', inHandler);\r\n this._on(this.drop, 'mouseover', inHandler);\r\n this._on(this.target, 'mouseout', outHandler);\r\n this._on(this.drop, 'mouseout', outHandler);\r\n }\r\n\r\n if (events.indexOf('focus') >= 0) {\r\n this._on(this.target, 'focus', inHandler);\r\n this._on(this.drop, 'focus', inHandler);\r\n this._on(this.target, 'blur', outHandler);\r\n this._on(this.drop, 'blur', outHandler);\r\n }\r\n }\r\n }, {\r\n key: 'isOpened',\r\n value: function isOpened() {\r\n if (this.drop) {\r\n return hasClass(this.drop, drop.classPrefix + '-open');\r\n }\r\n }\r\n }, {\r\n key: 'toggle',\r\n value: function toggle(event) {\r\n if (this.isOpened()) {\r\n this.close(event);\r\n } else {\r\n this.open(event);\r\n }\r\n }\r\n }, {\r\n key: 'open',\r\n value: function open(event) {\r\n var _this3 = this;\r\n\r\n /* eslint no-unused-vars: 0 */\r\n if (this.isOpened()) {\r\n return;\r\n }\r\n\r\n if (!this.drop.parentNode) {\r\n document.body.appendChild(this.drop);\r\n }\r\n\r\n if (typeof this.tether !== 'undefined') {\r\n this.tether.enable();\r\n }\r\n\r\n addClass(this.drop, drop.classPrefix + '-open');\r\n addClass(this.drop, drop.classPrefix + '-open-transitionend');\r\n\r\n setTimeout(function () {\r\n if (_this3.drop) {\r\n addClass(_this3.drop, drop.classPrefix + '-after-open');\r\n }\r\n });\r\n\r\n if (typeof this.tether !== 'undefined') {\r\n this.tether.position();\r\n }\r\n\r\n this.trigger('open');\r\n\r\n drop.updateBodyClasses();\r\n }\r\n }, {\r\n key: '_transitionEndHandler',\r\n value: function _transitionEndHandler(e) {\r\n if (e.target !== e.currentTarget) {\r\n return;\r\n }\r\n\r\n if (!hasClass(this.drop, drop.classPrefix + '-open')) {\r\n removeClass(this.drop, drop.classPrefix + '-open-transitionend');\r\n }\r\n this.drop.removeEventListener(transitionEndEvent, this.transitionEndHandler);\r\n }\r\n }, {\r\n key: 'beforeCloseHandler',\r\n value: function beforeCloseHandler(event) {\r\n var shouldClose = true;\r\n\r\n if (!this.isClosing && typeof this.options.beforeClose === 'function') {\r\n this.isClosing = true;\r\n shouldClose = this.options.beforeClose(event, this) !== false;\r\n }\r\n\r\n this.isClosing = false;\r\n\r\n return shouldClose;\r\n }\r\n }, {\r\n key: 'close',\r\n value: function close(event) {\r\n if (!this.isOpened()) {\r\n return;\r\n }\r\n\r\n if (!this.beforeCloseHandler(event)) {\r\n return;\r\n }\r\n\r\n removeClass(this.drop, drop.classPrefix + '-open');\r\n removeClass(this.drop, drop.classPrefix + '-after-open');\r\n\r\n this.drop.addEventListener(transitionEndEvent, this.transitionEndHandler);\r\n\r\n this.trigger('close');\r\n\r\n if (typeof this.tether !== 'undefined') {\r\n this.tether.disable();\r\n }\r\n\r\n drop.updateBodyClasses();\r\n\r\n if (this.options.remove) {\r\n this.remove(event);\r\n }\r\n }\r\n }, {\r\n key: 'remove',\r\n value: function remove(event) {\r\n this.close(event);\r\n if (this.drop.parentNode) {\r\n this.drop.parentNode.removeChild(this.drop);\r\n }\r\n }\r\n }, {\r\n key: 'position',\r\n value: function position() {\r\n if (this.isOpened() && typeof this.tether !== 'undefined') {\r\n this.tether.position();\r\n }\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n this.remove();\r\n\r\n if (typeof this.tether !== 'undefined') {\r\n this.tether.destroy();\r\n }\r\n\r\n for (var i = 0; i < this._boundEvents.length; ++i) {\r\n var _boundEvents$i = this._boundEvents[i];\r\n var element = _boundEvents$i.element;\r\n var _event = _boundEvents$i.event;\r\n var handler = _boundEvents$i.handler;\r\n\r\n element.removeEventListener(_event, handler);\r\n }\r\n\r\n this._boundEvents = [];\r\n\r\n this.tether = null;\r\n this.drop = null;\r\n this.content = null;\r\n this.target = null;\r\n\r\n removeFromArray(allDrops[drop.classPrefix], this);\r\n removeFromArray(drop.drops, this);\r\n }\r\n }]);\r\n\r\n return DropInstance;\r\n })(Evented);\r\n\r\n return drop;\r\n}\r\n\r\nvar Drop = createContext();\r\n\r\ndocument.addEventListener('DOMContentLoaded', function () {\r\n Drop.updateBodyClasses();\r\n});\r\nreturn Drop;\r\n\r\n}));\r\n","/*! tether 1.2.0 */\r\n\r\n(function(root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n define(factory);\r\n } else if (typeof exports === 'object') {\r\n module.exports = factory(require, exports, module);\r\n } else {\r\n root.Tether = factory();\r\n }\r\n}(this, function(require, exports, module) {\r\n\r\n'use strict';\r\n\r\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\r\n\r\nvar TetherBase = undefined;\r\nif (typeof TetherBase === 'undefined') {\r\n TetherBase = { modules: [] };\r\n}\r\n\r\nfunction getScrollParent(el) {\r\n // In firefox if the el is inside an iframe with display: none; window.getComputedStyle() will return null;\r\n // https://bugzilla.mozilla.org/show_bug.cgi?id=548397\r\n var computedStyle = getComputedStyle(el) || {};\r\n var position = computedStyle.position;\r\n\r\n if (position === 'fixed') {\r\n return el;\r\n }\r\n\r\n var parent = el;\r\n while (parent = parent.parentNode) {\r\n var style = undefined;\r\n try {\r\n style = getComputedStyle(parent);\r\n } catch (err) {}\r\n\r\n if (typeof style === 'undefined' || style === null) {\r\n return parent;\r\n }\r\n\r\n var _style = style;\r\n var overflow = _style.overflow;\r\n var overflowX = _style.overflowX;\r\n var overflowY = _style.overflowY;\r\n\r\n if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {\r\n if (position !== 'absolute' || ['relative', 'absolute', 'fixed'].indexOf(style.position) >= 0) {\r\n return parent;\r\n }\r\n }\r\n }\r\n\r\n return document.body;\r\n}\r\n\r\nvar uniqueId = (function () {\r\n var id = 0;\r\n return function () {\r\n return ++id;\r\n };\r\n})();\r\n\r\nvar zeroPosCache = {};\r\nvar getOrigin = function getOrigin(doc) {\r\n // getBoundingClientRect is unfortunately too accurate. It introduces a pixel or two of\r\n // jitter as the user scrolls that messes with our ability to detect if two positions\r\n // are equivilant or not. We place an element at the top left of the page that will\r\n // get the same jitter, so we can cancel the two out.\r\n var node = doc._tetherZeroElement;\r\n if (typeof node === 'undefined') {\r\n node = doc.createElement('div');\r\n node.setAttribute('data-tether-id', uniqueId());\r\n extend(node.style, {\r\n top: 0,\r\n left: 0,\r\n position: 'absolute'\r\n });\r\n\r\n doc.body.appendChild(node);\r\n\r\n doc._tetherZeroElement = node;\r\n }\r\n\r\n var id = node.getAttribute('data-tether-id');\r\n if (typeof zeroPosCache[id] === 'undefined') {\r\n zeroPosCache[id] = {};\r\n\r\n var rect = node.getBoundingClientRect();\r\n for (var k in rect) {\r\n // Can't use extend, as on IE9, elements don't resolve to be hasOwnProperty\r\n zeroPosCache[id][k] = rect[k];\r\n }\r\n\r\n // Clear the cache when this position call is done\r\n defer(function () {\r\n delete zeroPosCache[id];\r\n });\r\n }\r\n\r\n return zeroPosCache[id];\r\n};\r\n\r\nfunction getBounds(el) {\r\n var doc = undefined;\r\n if (el === document) {\r\n doc = document;\r\n el = document.documentElement;\r\n } else {\r\n doc = el.ownerDocument;\r\n }\r\n\r\n var docEl = doc.documentElement;\r\n\r\n var box = {};\r\n // The original object returned by getBoundingClientRect is immutable, so we clone it\r\n // We can't use extend because the properties are not considered part of the object by hasOwnProperty in IE9\r\n var rect = el.getBoundingClientRect();\r\n for (var k in rect) {\r\n box[k] = rect[k];\r\n }\r\n\r\n var origin = getOrigin(doc);\r\n\r\n box.top -= origin.top;\r\n box.left -= origin.left;\r\n\r\n if (typeof box.width === 'undefined') {\r\n box.width = document.body.scrollWidth - box.left - box.right;\r\n }\r\n if (typeof box.height === 'undefined') {\r\n box.height = document.body.scrollHeight - box.top - box.bottom;\r\n }\r\n\r\n box.top = box.top - docEl.clientTop;\r\n box.left = box.left - docEl.clientLeft;\r\n box.right = doc.body.clientWidth - box.width - box.left;\r\n box.bottom = doc.body.clientHeight - box.height - box.top;\r\n\r\n return box;\r\n}\r\n\r\nfunction getOffsetParent(el) {\r\n return el.offsetParent || document.documentElement;\r\n}\r\n\r\nfunction getScrollBarSize() {\r\n var inner = document.createElement('div');\r\n inner.style.width = '100%';\r\n inner.style.height = '200px';\r\n\r\n var outer = document.createElement('div');\r\n extend(outer.style, {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n pointerEvents: 'none',\r\n visibility: 'hidden',\r\n width: '200px',\r\n height: '150px',\r\n overflow: 'hidden'\r\n });\r\n\r\n outer.appendChild(inner);\r\n\r\n document.body.appendChild(outer);\r\n\r\n var widthContained = inner.offsetWidth;\r\n outer.style.overflow = 'scroll';\r\n var widthScroll = inner.offsetWidth;\r\n\r\n if (widthContained === widthScroll) {\r\n widthScroll = outer.clientWidth;\r\n }\r\n\r\n document.body.removeChild(outer);\r\n\r\n var width = widthContained - widthScroll;\r\n\r\n return { width: width, height: width };\r\n}\r\n\r\nfunction extend() {\r\n var out = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\r\n\r\n var args = [];\r\n\r\n Array.prototype.push.apply(args, arguments);\r\n\r\n args.slice(1).forEach(function (obj) {\r\n if (obj) {\r\n for (var key in obj) {\r\n if (({}).hasOwnProperty.call(obj, key)) {\r\n out[key] = obj[key];\r\n }\r\n }\r\n }\r\n });\r\n\r\n return out;\r\n}\r\n\r\nfunction removeClass(el, name) {\r\n if (typeof el.classList !== 'undefined') {\r\n name.split(' ').forEach(function (cls) {\r\n if (cls.trim()) {\r\n el.classList.remove(cls);\r\n }\r\n });\r\n } else {\r\n var regex = new RegExp('(^| )' + name.split(' ').join('|') + '( |$)', 'gi');\r\n var className = getClassName(el).replace(regex, ' ');\r\n setClassName(el, className);\r\n }\r\n}\r\n\r\nfunction addClass(el, name) {\r\n if (typeof el.classList !== 'undefined') {\r\n name.split(' ').forEach(function (cls) {\r\n if (cls.trim()) {\r\n el.classList.add(cls);\r\n }\r\n });\r\n } else {\r\n removeClass(el, name);\r\n var cls = getClassName(el) + (' ' + name);\r\n setClassName(el, cls);\r\n }\r\n}\r\n\r\nfunction hasClass(el, name) {\r\n if (typeof el.classList !== 'undefined') {\r\n return el.classList.contains(name);\r\n }\r\n var className = getClassName(el);\r\n return new RegExp('(^| )' + name + '( |$)', 'gi').test(className);\r\n}\r\n\r\nfunction getClassName(el) {\r\n if (el.className instanceof SVGAnimatedString) {\r\n return el.className.baseVal;\r\n }\r\n return el.className;\r\n}\r\n\r\nfunction setClassName(el, className) {\r\n el.setAttribute('class', className);\r\n}\r\n\r\nfunction updateClasses(el, add, all) {\r\n // Of the set of 'all' classes, we need the 'add' classes, and only the\r\n // 'add' classes to be set.\r\n all.forEach(function (cls) {\r\n if (add.indexOf(cls) === -1 && hasClass(el, cls)) {\r\n removeClass(el, cls);\r\n }\r\n });\r\n\r\n add.forEach(function (cls) {\r\n if (!hasClass(el, cls)) {\r\n addClass(el, cls);\r\n }\r\n });\r\n}\r\n\r\nvar deferred = [];\r\n\r\nvar defer = function defer(fn) {\r\n deferred.push(fn);\r\n};\r\n\r\nvar flush = function flush() {\r\n var fn = undefined;\r\n while (fn = deferred.pop()) {\r\n fn();\r\n }\r\n};\r\n\r\nvar Evented = (function () {\r\n function Evented() {\r\n _classCallCheck(this, Evented);\r\n }\r\n\r\n _createClass(Evented, [{\r\n key: 'on',\r\n value: function on(event, handler, ctx) {\r\n var once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];\r\n\r\n if (typeof this.bindings === 'undefined') {\r\n this.bindings = {};\r\n }\r\n if (typeof this.bindings[event] === 'undefined') {\r\n this.bindings[event] = [];\r\n }\r\n this.bindings[event].push({ handler: handler, ctx: ctx, once: once });\r\n }\r\n }, {\r\n key: 'once',\r\n value: function once(event, handler, ctx) {\r\n this.on(event, handler, ctx, true);\r\n }\r\n }, {\r\n key: 'off',\r\n value: function off(event, handler) {\r\n if (typeof this.bindings !== 'undefined' && typeof this.bindings[event] !== 'undefined') {\r\n return;\r\n }\r\n\r\n if (typeof handler === 'undefined') {\r\n delete this.bindings[event];\r\n } else {\r\n var i = 0;\r\n while (i < this.bindings[event].length) {\r\n if (this.bindings[event][i].handler === handler) {\r\n this.bindings[event].splice(i, 1);\r\n } else {\r\n ++i;\r\n }\r\n }\r\n }\r\n }\r\n }, {\r\n key: 'trigger',\r\n value: function trigger(event) {\r\n if (typeof this.bindings !== 'undefined' && this.bindings[event]) {\r\n var i = 0;\r\n\r\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\r\n args[_key - 1] = arguments[_key];\r\n }\r\n\r\n while (i < this.bindings[event].length) {\r\n var _bindings$event$i = this.bindings[event][i];\r\n var handler = _bindings$event$i.handler;\r\n var ctx = _bindings$event$i.ctx;\r\n var once = _bindings$event$i.once;\r\n\r\n var context = ctx;\r\n if (typeof context === 'undefined') {\r\n context = this;\r\n }\r\n\r\n handler.apply(context, args);\r\n\r\n if (once) {\r\n this.bindings[event].splice(i, 1);\r\n } else {\r\n ++i;\r\n }\r\n }\r\n }\r\n }\r\n }]);\r\n\r\n return Evented;\r\n})();\r\n\r\nTetherBase.Utils = {\r\n getScrollParent: getScrollParent,\r\n getBounds: getBounds,\r\n getOffsetParent: getOffsetParent,\r\n extend: extend,\r\n addClass: addClass,\r\n removeClass: removeClass,\r\n hasClass: hasClass,\r\n updateClasses: updateClasses,\r\n defer: defer,\r\n flush: flush,\r\n uniqueId: uniqueId,\r\n Evented: Evented,\r\n getScrollBarSize: getScrollBarSize\r\n};\r\n/* globals TetherBase, performance */\r\n\r\n'use strict';\r\n\r\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\r\n\r\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\r\n\r\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\r\n\r\nif (typeof TetherBase === 'undefined') {\r\n throw new Error('You must include the utils.js file before tether.js');\r\n}\r\n\r\nvar _TetherBase$Utils = TetherBase.Utils;\r\nvar getScrollParent = _TetherBase$Utils.getScrollParent;\r\nvar getBounds = _TetherBase$Utils.getBounds;\r\nvar getOffsetParent = _TetherBase$Utils.getOffsetParent;\r\nvar extend = _TetherBase$Utils.extend;\r\nvar addClass = _TetherBase$Utils.addClass;\r\nvar removeClass = _TetherBase$Utils.removeClass;\r\nvar updateClasses = _TetherBase$Utils.updateClasses;\r\nvar defer = _TetherBase$Utils.defer;\r\nvar flush = _TetherBase$Utils.flush;\r\nvar getScrollBarSize = _TetherBase$Utils.getScrollBarSize;\r\n\r\nfunction within(a, b) {\r\n var diff = arguments.length <= 2 || arguments[2] === undefined ? 1 : arguments[2];\r\n\r\n return a + diff >= b && b >= a - diff;\r\n}\r\n\r\nvar transformKey = (function () {\r\n if (typeof document === 'undefined') {\r\n return '';\r\n }\r\n var el = document.createElement('div');\r\n\r\n var transforms = ['transform', 'webkitTransform', 'OTransform', 'MozTransform', 'msTransform'];\r\n for (var i = 0; i < transforms.length; ++i) {\r\n var key = transforms[i];\r\n if (el.style[key] !== undefined) {\r\n return key;\r\n }\r\n }\r\n})();\r\n\r\nvar tethers = [];\r\n\r\nvar position = function position() {\r\n tethers.forEach(function (tether) {\r\n tether.position(false);\r\n });\r\n flush();\r\n};\r\n\r\nfunction now() {\r\n if (typeof performance !== 'undefined' && typeof performance.now !== 'undefined') {\r\n return performance.now();\r\n }\r\n return +new Date();\r\n}\r\n\r\n(function () {\r\n var lastCall = null;\r\n var lastDuration = null;\r\n var pendingTimeout = null;\r\n\r\n var tick = function tick() {\r\n if (typeof lastDuration !== 'undefined' && lastDuration > 16) {\r\n // We voluntarily throttle ourselves if we can't manage 60fps\r\n lastDuration = Math.min(lastDuration - 16, 250);\r\n\r\n // Just in case this is the last event, remember to position just once more\r\n pendingTimeout = setTimeout(tick, 250);\r\n return;\r\n }\r\n\r\n if (typeof lastCall !== 'undefined' && now() - lastCall < 10) {\r\n // Some browsers call events a little too frequently, refuse to run more than is reasonable\r\n return;\r\n }\r\n\r\n if (typeof pendingTimeout !== 'undefined') {\r\n clearTimeout(pendingTimeout);\r\n pendingTimeout = null;\r\n }\r\n\r\n lastCall = now();\r\n position();\r\n lastDuration = now() - lastCall;\r\n };\r\n\r\n if (typeof window !== 'undefined') {\r\n ['resize', 'scroll', 'touchmove'].forEach(function (event) {\r\n window.addEventListener(event, tick);\r\n });\r\n }\r\n})();\r\n\r\nvar MIRROR_LR = {\r\n center: 'center',\r\n left: 'right',\r\n right: 'left'\r\n};\r\n\r\nvar MIRROR_TB = {\r\n middle: 'middle',\r\n top: 'bottom',\r\n bottom: 'top'\r\n};\r\n\r\nvar OFFSET_MAP = {\r\n top: 0,\r\n left: 0,\r\n middle: '50%',\r\n center: '50%',\r\n bottom: '100%',\r\n right: '100%'\r\n};\r\n\r\nvar autoToFixedAttachment = function autoToFixedAttachment(attachment, relativeToAttachment) {\r\n var left = attachment.left;\r\n var top = attachment.top;\r\n\r\n if (left === 'auto') {\r\n left = MIRROR_LR[relativeToAttachment.left];\r\n }\r\n\r\n if (top === 'auto') {\r\n top = MIRROR_TB[relativeToAttachment.top];\r\n }\r\n\r\n return { left: left, top: top };\r\n};\r\n\r\nvar attachmentToOffset = function attachmentToOffset(attachment) {\r\n var left = attachment.left;\r\n var top = attachment.top;\r\n\r\n if (typeof OFFSET_MAP[attachment.left] !== 'undefined') {\r\n left = OFFSET_MAP[attachment.left];\r\n }\r\n\r\n if (typeof OFFSET_MAP[attachment.top] !== 'undefined') {\r\n top = OFFSET_MAP[attachment.top];\r\n }\r\n\r\n return { left: left, top: top };\r\n};\r\n\r\nfunction addOffset() {\r\n var out = { top: 0, left: 0 };\r\n\r\n for (var _len = arguments.length, offsets = Array(_len), _key = 0; _key < _len; _key++) {\r\n offsets[_key] = arguments[_key];\r\n }\r\n\r\n offsets.forEach(function (_ref) {\r\n var top = _ref.top;\r\n var left = _ref.left;\r\n\r\n if (typeof top === 'string') {\r\n top = parseFloat(top, 10);\r\n }\r\n if (typeof left === 'string') {\r\n left = parseFloat(left, 10);\r\n }\r\n\r\n out.top += top;\r\n out.left += left;\r\n });\r\n\r\n return out;\r\n}\r\n\r\nfunction offsetToPx(offset, size) {\r\n if (typeof offset.left === 'string' && offset.left.indexOf('%') !== -1) {\r\n offset.left = parseFloat(offset.left, 10) / 100 * size.width;\r\n }\r\n if (typeof offset.top === 'string' && offset.top.indexOf('%') !== -1) {\r\n offset.top = parseFloat(offset.top, 10) / 100 * size.height;\r\n }\r\n\r\n return offset;\r\n}\r\n\r\nvar parseOffset = function parseOffset(value) {\r\n var _value$split = value.split(' ');\r\n\r\n var _value$split2 = _slicedToArray(_value$split, 2);\r\n\r\n var top = _value$split2[0];\r\n var left = _value$split2[1];\r\n\r\n return { top: top, left: left };\r\n};\r\nvar parseAttachment = parseOffset;\r\n\r\nvar TetherClass = (function () {\r\n function TetherClass(options) {\r\n var _this = this;\r\n\r\n _classCallCheck(this, TetherClass);\r\n\r\n this.position = this.position.bind(this);\r\n\r\n tethers.push(this);\r\n\r\n this.history = [];\r\n\r\n this.setOptions(options, false);\r\n\r\n TetherBase.modules.forEach(function (module) {\r\n if (typeof module.initialize !== 'undefined') {\r\n module.initialize.call(_this);\r\n }\r\n });\r\n\r\n this.position();\r\n }\r\n\r\n _createClass(TetherClass, [{\r\n key: 'getClass',\r\n value: function getClass() {\r\n var key = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];\r\n var classes = this.options.classes;\r\n\r\n if (typeof classes !== 'undefined' && classes[key]) {\r\n return this.options.classes[key];\r\n } else if (this.options.classPrefix) {\r\n return this.options.classPrefix + '-' + key;\r\n } else {\r\n return key;\r\n }\r\n }\r\n }, {\r\n key: 'setOptions',\r\n value: function setOptions(options) {\r\n var _this2 = this;\r\n\r\n var pos = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];\r\n\r\n var defaults = {\r\n offset: '0 0',\r\n targetOffset: '0 0',\r\n targetAttachment: 'auto auto',\r\n classPrefix: 'tether'\r\n };\r\n\r\n this.options = extend(defaults, options);\r\n\r\n var _options = this.options;\r\n var element = _options.element;\r\n var target = _options.target;\r\n var targetModifier = _options.targetModifier;\r\n\r\n this.element = element;\r\n this.target = target;\r\n this.targetModifier = targetModifier;\r\n\r\n if (this.target === 'viewport') {\r\n this.target = document.body;\r\n this.targetModifier = 'visible';\r\n } else if (this.target === 'scroll-handle') {\r\n this.target = document.body;\r\n this.targetModifier = 'scroll-handle';\r\n }\r\n\r\n ['element', 'target'].forEach(function (key) {\r\n if (typeof _this2[key] === 'undefined') {\r\n throw new Error('Tether Error: Both element and target must be defined');\r\n }\r\n\r\n if (typeof _this2[key].jquery !== 'undefined') {\r\n _this2[key] = _this2[key][0];\r\n } else if (typeof _this2[key] === 'string') {\r\n _this2[key] = document.querySelector(_this2[key]);\r\n }\r\n });\r\n\r\n addClass(this.element, this.getClass('element'));\r\n if (!(this.options.addTargetClasses === false)) {\r\n addClass(this.target, this.getClass('target'));\r\n }\r\n\r\n if (!this.options.attachment) {\r\n throw new Error('Tether Error: You must provide an attachment');\r\n }\r\n\r\n this.targetAttachment = parseAttachment(this.options.targetAttachment);\r\n this.attachment = parseAttachment(this.options.attachment);\r\n this.offset = parseOffset(this.options.offset);\r\n this.targetOffset = parseOffset(this.options.targetOffset);\r\n\r\n if (typeof this.scrollParent !== 'undefined') {\r\n this.disable();\r\n }\r\n\r\n if (this.targetModifier === 'scroll-handle') {\r\n this.scrollParent = this.target;\r\n } else {\r\n this.scrollParent = getScrollParent(this.target);\r\n }\r\n\r\n if (!(this.options.enabled === false)) {\r\n this.enable(pos);\r\n }\r\n }\r\n }, {\r\n key: 'getTargetBounds',\r\n value: function getTargetBounds() {\r\n if (typeof this.targetModifier !== 'undefined') {\r\n if (this.targetModifier === 'visible') {\r\n if (this.target === document.body) {\r\n return { top: pageYOffset, left: pageXOffset, height: innerHeight, width: innerWidth };\r\n } else {\r\n var bounds = getBounds(this.target);\r\n\r\n var out = {\r\n height: bounds.height,\r\n width: bounds.width,\r\n top: bounds.top,\r\n left: bounds.left\r\n };\r\n\r\n out.height = Math.min(out.height, bounds.height - (pageYOffset - bounds.top));\r\n out.height = Math.min(out.height, bounds.height - (bounds.top + bounds.height - (pageYOffset + innerHeight)));\r\n out.height = Math.min(innerHeight, out.height);\r\n out.height -= 2;\r\n\r\n out.width = Math.min(out.width, bounds.width - (pageXOffset - bounds.left));\r\n out.width = Math.min(out.width, bounds.width - (bounds.left + bounds.width - (pageXOffset + innerWidth)));\r\n out.width = Math.min(innerWidth, out.width);\r\n out.width -= 2;\r\n\r\n if (out.top < pageYOffset) {\r\n out.top = pageYOffset;\r\n }\r\n if (out.left < pageXOffset) {\r\n out.left = pageXOffset;\r\n }\r\n\r\n return out;\r\n }\r\n } else if (this.targetModifier === 'scroll-handle') {\r\n var bounds = undefined;\r\n var target = this.target;\r\n if (target === document.body) {\r\n target = document.documentElement;\r\n\r\n bounds = {\r\n left: pageXOffset,\r\n top: pageYOffset,\r\n height: innerHeight,\r\n width: innerWidth\r\n };\r\n } else {\r\n bounds = getBounds(target);\r\n }\r\n\r\n var style = getComputedStyle(target);\r\n\r\n var hasBottomScroll = target.scrollWidth > target.clientWidth || [style.overflow, style.overflowX].indexOf('scroll') >= 0 || this.target !== document.body;\r\n\r\n var scrollBottom = 0;\r\n if (hasBottomScroll) {\r\n scrollBottom = 15;\r\n }\r\n\r\n var height = bounds.height - parseFloat(style.borderTopWidth) - parseFloat(style.borderBottomWidth) - scrollBottom;\r\n\r\n var out = {\r\n width: 15,\r\n height: height * 0.975 * (height / target.scrollHeight),\r\n left: bounds.left + bounds.width - parseFloat(style.borderLeftWidth) - 15\r\n };\r\n\r\n var fitAdj = 0;\r\n if (height < 408 && this.target === document.body) {\r\n fitAdj = -0.00011 * Math.pow(height, 2) - 0.00727 * height + 22.58;\r\n }\r\n\r\n if (this.target !== document.body) {\r\n out.height = Math.max(out.height, 24);\r\n }\r\n\r\n var scrollPercentage = this.target.scrollTop / (target.scrollHeight - height);\r\n out.top = scrollPercentage * (height - out.height - fitAdj) + bounds.top + parseFloat(style.borderTopWidth);\r\n\r\n if (this.target === document.body) {\r\n out.height = Math.max(out.height, 24);\r\n }\r\n\r\n return out;\r\n }\r\n } else {\r\n return getBounds(this.target);\r\n }\r\n }\r\n }, {\r\n key: 'clearCache',\r\n value: function clearCache() {\r\n this._cache = {};\r\n }\r\n }, {\r\n key: 'cache',\r\n value: function cache(k, getter) {\r\n // More than one module will often need the same DOM info, so\r\n // we keep a cache which is cleared on each position call\r\n if (typeof this._cache === 'undefined') {\r\n this._cache = {};\r\n }\r\n\r\n if (typeof this._cache[k] === 'undefined') {\r\n this._cache[k] = getter.call(this);\r\n }\r\n\r\n return this._cache[k];\r\n }\r\n }, {\r\n key: 'enable',\r\n value: function enable() {\r\n var pos = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\r\n\r\n if (!(this.options.addTargetClasses === false)) {\r\n addClass(this.target, this.getClass('enabled'));\r\n }\r\n addClass(this.element, this.getClass('enabled'));\r\n this.enabled = true;\r\n\r\n if (this.scrollParent !== document) {\r\n this.scrollParent.addEventListener('scroll', this.position);\r\n }\r\n\r\n if (pos) {\r\n this.position();\r\n }\r\n }\r\n }, {\r\n key: 'disable',\r\n value: function disable() {\r\n removeClass(this.target, this.getClass('enabled'));\r\n removeClass(this.element, this.getClass('enabled'));\r\n this.enabled = false;\r\n\r\n if (typeof this.scrollParent !== 'undefined') {\r\n this.scrollParent.removeEventListener('scroll', this.position);\r\n }\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n var _this3 = this;\r\n\r\n this.disable();\r\n\r\n tethers.forEach(function (tether, i) {\r\n if (tether === _this3) {\r\n tethers.splice(i, 1);\r\n return;\r\n }\r\n });\r\n }\r\n }, {\r\n key: 'updateAttachClasses',\r\n value: function updateAttachClasses(elementAttach, targetAttach) {\r\n var _this4 = this;\r\n\r\n elementAttach = elementAttach || this.attachment;\r\n targetAttach = targetAttach || this.targetAttachment;\r\n var sides = ['left', 'top', 'bottom', 'right', 'middle', 'center'];\r\n\r\n if (typeof this._addAttachClasses !== 'undefined' && this._addAttachClasses.length) {\r\n // updateAttachClasses can be called more than once in a position call, so\r\n // we need to clean up after ourselves such that when the last defer gets\r\n // ran it doesn't add any extra classes from previous calls.\r\n this._addAttachClasses.splice(0, this._addAttachClasses.length);\r\n }\r\n\r\n if (typeof this._addAttachClasses === 'undefined') {\r\n this._addAttachClasses = [];\r\n }\r\n var add = this._addAttachClasses;\r\n\r\n if (elementAttach.top) {\r\n add.push(this.getClass('element-attached') + '-' + elementAttach.top);\r\n }\r\n if (elementAttach.left) {\r\n add.push(this.getClass('element-attached') + '-' + elementAttach.left);\r\n }\r\n if (targetAttach.top) {\r\n add.push(this.getClass('target-attached') + '-' + targetAttach.top);\r\n }\r\n if (targetAttach.left) {\r\n add.push(this.getClass('target-attached') + '-' + targetAttach.left);\r\n }\r\n\r\n var all = [];\r\n sides.forEach(function (side) {\r\n all.push(_this4.getClass('element-attached') + '-' + side);\r\n all.push(_this4.getClass('target-attached') + '-' + side);\r\n });\r\n\r\n defer(function () {\r\n if (!(typeof _this4._addAttachClasses !== 'undefined')) {\r\n return;\r\n }\r\n\r\n updateClasses(_this4.element, _this4._addAttachClasses, all);\r\n if (!(_this4.options.addTargetClasses === false)) {\r\n updateClasses(_this4.target, _this4._addAttachClasses, all);\r\n }\r\n\r\n delete _this4._addAttachClasses;\r\n });\r\n }\r\n }, {\r\n key: 'position',\r\n value: function position() {\r\n var _this5 = this;\r\n\r\n var flushChanges = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\r\n\r\n // flushChanges commits the changes immediately, leave true unless you are positioning multiple\r\n // tethers (in which case call Tether.Utils.flush yourself when you're done)\r\n\r\n if (!this.enabled) {\r\n return;\r\n }\r\n\r\n this.clearCache();\r\n\r\n // Turn 'auto' attachments into the appropriate corner or edge\r\n var targetAttachment = autoToFixedAttachment(this.targetAttachment, this.attachment);\r\n\r\n this.updateAttachClasses(this.attachment, targetAttachment);\r\n\r\n var elementPos = this.cache('element-bounds', function () {\r\n return getBounds(_this5.element);\r\n });\r\n\r\n var width = elementPos.width;\r\n var height = elementPos.height;\r\n\r\n if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {\r\n var _lastSize = this.lastSize;\r\n\r\n // We cache the height and width to make it possible to position elements that are\r\n // getting hidden.\r\n width = _lastSize.width;\r\n height = _lastSize.height;\r\n } else {\r\n this.lastSize = { width: width, height: height };\r\n }\r\n\r\n var targetPos = this.cache('target-bounds', function () {\r\n return _this5.getTargetBounds();\r\n });\r\n var targetSize = targetPos;\r\n\r\n // Get an actual px offset from the attachment\r\n var offset = offsetToPx(attachmentToOffset(this.attachment), { width: width, height: height });\r\n var targetOffset = offsetToPx(attachmentToOffset(targetAttachment), targetSize);\r\n\r\n var manualOffset = offsetToPx(this.offset, { width: width, height: height });\r\n var manualTargetOffset = offsetToPx(this.targetOffset, targetSize);\r\n\r\n // Add the manually provided offset\r\n offset = addOffset(offset, manualOffset);\r\n targetOffset = addOffset(targetOffset, manualTargetOffset);\r\n\r\n // It's now our goal to make (element position + offset) == (target position + target offset)\r\n var left = targetPos.left + targetOffset.left - offset.left;\r\n var top = targetPos.top + targetOffset.top - offset.top;\r\n\r\n for (var i = 0; i < TetherBase.modules.length; ++i) {\r\n var _module2 = TetherBase.modules[i];\r\n var ret = _module2.position.call(this, {\r\n left: left,\r\n top: top,\r\n targetAttachment: targetAttachment,\r\n targetPos: targetPos,\r\n elementPos: elementPos,\r\n offset: offset,\r\n targetOffset: targetOffset,\r\n manualOffset: manualOffset,\r\n manualTargetOffset: manualTargetOffset,\r\n scrollbarSize: scrollbarSize,\r\n attachment: this.attachment\r\n });\r\n\r\n if (ret === false) {\r\n return false;\r\n } else if (typeof ret === 'undefined' || typeof ret !== 'object') {\r\n continue;\r\n } else {\r\n top = ret.top;\r\n left = ret.left;\r\n }\r\n }\r\n\r\n // We describe the position three different ways to give the optimizer\r\n // a chance to decide the best possible way to position the element\r\n // with the fewest repaints.\r\n var next = {\r\n // It's position relative to the page (absolute positioning when\r\n // the element is a child of the body)\r\n page: {\r\n top: top,\r\n left: left\r\n },\r\n\r\n // It's position relative to the viewport (fixed positioning)\r\n viewport: {\r\n top: top - pageYOffset,\r\n bottom: pageYOffset - top - height + innerHeight,\r\n left: left - pageXOffset,\r\n right: pageXOffset - left - width + innerWidth\r\n }\r\n };\r\n\r\n var scrollbarSize = undefined;\r\n if (document.body.scrollWidth > window.innerWidth) {\r\n scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);\r\n next.viewport.bottom -= scrollbarSize.height;\r\n }\r\n\r\n if (document.body.scrollHeight > window.innerHeight) {\r\n scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);\r\n next.viewport.right -= scrollbarSize.width;\r\n }\r\n\r\n if (['', 'static'].indexOf(document.body.style.position) === -1 || ['', 'static'].indexOf(document.body.parentElement.style.position) === -1) {\r\n // Absolute positioning in the body will be relative to the page, not the 'initial containing block'\r\n next.page.bottom = document.body.scrollHeight - top - height;\r\n next.page.right = document.body.scrollWidth - left - width;\r\n }\r\n\r\n if (typeof this.options.optimizations !== 'undefined' && this.options.optimizations.moveElement !== false && !(typeof this.targetModifier !== 'undefined')) {\r\n (function () {\r\n var offsetParent = _this5.cache('target-offsetparent', function () {\r\n return getOffsetParent(_this5.target);\r\n });\r\n var offsetPosition = _this5.cache('target-offsetparent-bounds', function () {\r\n return getBounds(offsetParent);\r\n });\r\n var offsetParentStyle = getComputedStyle(offsetParent);\r\n var offsetParentSize = offsetPosition;\r\n\r\n var offsetBorder = {};\r\n ['Top', 'Left', 'Bottom', 'Right'].forEach(function (side) {\r\n offsetBorder[side.toLowerCase()] = parseFloat(offsetParentStyle['border' + side + 'Width']);\r\n });\r\n\r\n offsetPosition.right = document.body.scrollWidth - offsetPosition.left - offsetParentSize.width + offsetBorder.right;\r\n offsetPosition.bottom = document.body.scrollHeight - offsetPosition.top - offsetParentSize.height + offsetBorder.bottom;\r\n\r\n if (next.page.top >= offsetPosition.top + offsetBorder.top && next.page.bottom >= offsetPosition.bottom) {\r\n if (next.page.left >= offsetPosition.left + offsetBorder.left && next.page.right >= offsetPosition.right) {\r\n // We're within the visible part of the target's scroll parent\r\n var scrollTop = offsetParent.scrollTop;\r\n var scrollLeft = offsetParent.scrollLeft;\r\n\r\n // It's position relative to the target's offset parent (absolute positioning when\r\n // the element is moved to be a child of the target's offset parent).\r\n next.offset = {\r\n top: next.page.top - offsetPosition.top + scrollTop - offsetBorder.top,\r\n left: next.page.left - offsetPosition.left + scrollLeft - offsetBorder.left\r\n };\r\n }\r\n }\r\n })();\r\n }\r\n\r\n // We could also travel up the DOM and try each containing context, rather than only\r\n // looking at the body, but we're gonna get diminishing returns.\r\n\r\n this.move(next);\r\n\r\n this.history.unshift(next);\r\n\r\n if (this.history.length > 3) {\r\n this.history.pop();\r\n }\r\n\r\n if (flushChanges) {\r\n flush();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // THE ISSUE\r\n }, {\r\n key: 'move',\r\n value: function move(pos) {\r\n var _this6 = this;\r\n\r\n if (!(typeof this.element.parentNode !== 'undefined')) {\r\n return;\r\n }\r\n\r\n var same = {};\r\n\r\n for (var type in pos) {\r\n same[type] = {};\r\n\r\n for (var key in pos[type]) {\r\n var found = false;\r\n\r\n for (var i = 0; i < this.history.length; ++i) {\r\n var point = this.history[i];\r\n if (typeof point[type] !== 'undefined' && !within(point[type][key], pos[type][key])) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!found) {\r\n same[type][key] = true;\r\n }\r\n }\r\n }\r\n\r\n var css = { top: '', left: '', right: '', bottom: '' };\r\n\r\n var transcribe = function transcribe(_same, _pos) {\r\n var hasOptimizations = typeof _this6.options.optimizations !== 'undefined';\r\n var gpu = hasOptimizations ? _this6.options.optimizations.gpu : null;\r\n if (gpu !== false) {\r\n var yPos = undefined,\r\n xPos = undefined;\r\n if (_same.top) {\r\n css.top = 0;\r\n yPos = _pos.top;\r\n } else {\r\n css.bottom = 0;\r\n yPos = -_pos.bottom;\r\n }\r\n\r\n if (_same.left) {\r\n css.left = 0;\r\n xPos = _pos.left;\r\n } else {\r\n css.right = 0;\r\n xPos = -_pos.right;\r\n }\r\n\r\n css[transformKey] = 'translateX(' + Math.round(xPos) + 'px) translateY(' + Math.round(yPos) + 'px)';\r\n\r\n if (transformKey !== 'msTransform') {\r\n // The Z transform will keep this in the GPU (faster, and prevents artifacts),\r\n // but IE9 doesn't support 3d transforms and will choke.\r\n css[transformKey] += \" translateZ(0)\";\r\n }\r\n } else {\r\n if (_same.top) {\r\n css.top = _pos.top + 'px';\r\n } else {\r\n css.bottom = _pos.bottom + 'px';\r\n }\r\n\r\n if (_same.left) {\r\n css.left = _pos.left + 'px';\r\n } else {\r\n css.right = _pos.right + 'px';\r\n }\r\n }\r\n };\r\n\r\n var moved = false;\r\n if ((same.page.top || same.page.bottom) && (same.page.left || same.page.right)) {\r\n css.position = 'absolute';\r\n transcribe(same.page, pos.page);\r\n } else if ((same.viewport.top || same.viewport.bottom) && (same.viewport.left || same.viewport.right)) {\r\n css.position = 'fixed';\r\n transcribe(same.viewport, pos.viewport);\r\n } else if (typeof same.offset !== 'undefined' && same.offset.top && same.offset.left) {\r\n (function () {\r\n css.position = 'absolute';\r\n var offsetParent = _this6.cache('target-offsetparent', function () {\r\n return getOffsetParent(_this6.target);\r\n });\r\n\r\n if (getOffsetParent(_this6.element) !== offsetParent) {\r\n defer(function () {\r\n _this6.element.parentNode.removeChild(_this6.element);\r\n offsetParent.appendChild(_this6.element);\r\n });\r\n }\r\n\r\n transcribe(same.offset, pos.offset);\r\n moved = true;\r\n })();\r\n } else {\r\n css.position = 'absolute';\r\n transcribe({ top: true, left: true }, pos.page);\r\n }\r\n\r\n if (!moved) {\r\n var offsetParentIsBody = true;\r\n var currentNode = this.element.parentNode;\r\n while (currentNode && currentNode.tagName !== 'BODY') {\r\n if (getComputedStyle(currentNode).position !== 'static') {\r\n offsetParentIsBody = false;\r\n break;\r\n }\r\n\r\n currentNode = currentNode.parentNode;\r\n }\r\n\r\n if (!offsetParentIsBody) {\r\n this.element.parentNode.removeChild(this.element);\r\n document.body.appendChild(this.element);\r\n }\r\n }\r\n\r\n // Any css change will trigger a repaint, so let's avoid one if nothing changed\r\n var writeCSS = {};\r\n var write = false;\r\n for (var key in css) {\r\n var val = css[key];\r\n var elVal = this.element.style[key];\r\n\r\n if (elVal !== '' && val !== '' && ['top', 'left', 'bottom', 'right'].indexOf(key) >= 0) {\r\n elVal = parseFloat(elVal);\r\n val = parseFloat(val);\r\n }\r\n\r\n if (elVal !== val) {\r\n write = true;\r\n writeCSS[key] = val;\r\n }\r\n }\r\n\r\n if (write) {\r\n defer(function () {\r\n extend(_this6.element.style, writeCSS);\r\n });\r\n }\r\n }\r\n }]);\r\n\r\n return TetherClass;\r\n})();\r\n\r\nTetherClass.modules = [];\r\n\r\nTetherBase.position = position;\r\n\r\nvar Tether = extend(TetherClass, TetherBase);\r\n/* globals TetherBase */\r\n\r\n'use strict';\r\n\r\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\r\n\r\nvar _TetherBase$Utils = TetherBase.Utils;\r\nvar getBounds = _TetherBase$Utils.getBounds;\r\nvar extend = _TetherBase$Utils.extend;\r\nvar updateClasses = _TetherBase$Utils.updateClasses;\r\nvar defer = _TetherBase$Utils.defer;\r\n\r\nvar BOUNDS_FORMAT = ['left', 'top', 'right', 'bottom'];\r\n\r\nfunction getBoundingRect(tether, to) {\r\n if (to === 'scrollParent') {\r\n to = tether.scrollParent;\r\n } else if (to === 'window') {\r\n to = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset];\r\n }\r\n\r\n if (to === document) {\r\n to = to.documentElement;\r\n }\r\n\r\n if (typeof to.nodeType !== 'undefined') {\r\n (function () {\r\n var size = getBounds(to);\r\n var pos = size;\r\n var style = getComputedStyle(to);\r\n\r\n to = [pos.left, pos.top, size.width + pos.left, size.height + pos.top];\r\n\r\n BOUNDS_FORMAT.forEach(function (side, i) {\r\n side = side[0].toUpperCase() + side.substr(1);\r\n if (side === 'Top' || side === 'Left') {\r\n to[i] += parseFloat(style['border' + side + 'Width']);\r\n } else {\r\n to[i] -= parseFloat(style['border' + side + 'Width']);\r\n }\r\n });\r\n })();\r\n }\r\n\r\n return to;\r\n}\r\n\r\nTetherBase.modules.push({\r\n position: function position(_ref) {\r\n var _this = this;\r\n\r\n var top = _ref.top;\r\n var left = _ref.left;\r\n var targetAttachment = _ref.targetAttachment;\r\n\r\n if (!this.options.constraints) {\r\n return true;\r\n }\r\n\r\n var _cache = this.cache('element-bounds', function () {\r\n return getBounds(_this.element);\r\n });\r\n\r\n var height = _cache.height;\r\n var width = _cache.width;\r\n\r\n if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {\r\n var _lastSize = this.lastSize;\r\n\r\n // Handle the item getting hidden as a result of our positioning without glitching\r\n // the classes in and out\r\n width = _lastSize.width;\r\n height = _lastSize.height;\r\n }\r\n\r\n var targetSize = this.cache('target-bounds', function () {\r\n return _this.getTargetBounds();\r\n });\r\n\r\n var targetHeight = targetSize.height;\r\n var targetWidth = targetSize.width;\r\n\r\n var allClasses = [this.getClass('pinned'), this.getClass('out-of-bounds')];\r\n\r\n this.options.constraints.forEach(function (constraint) {\r\n var outOfBoundsClass = constraint.outOfBoundsClass;\r\n var pinnedClass = constraint.pinnedClass;\r\n\r\n if (outOfBoundsClass) {\r\n allClasses.push(outOfBoundsClass);\r\n }\r\n if (pinnedClass) {\r\n allClasses.push(pinnedClass);\r\n }\r\n });\r\n\r\n allClasses.forEach(function (cls) {\r\n ['left', 'top', 'right', 'bottom'].forEach(function (side) {\r\n allClasses.push(cls + '-' + side);\r\n });\r\n });\r\n\r\n var addClasses = [];\r\n\r\n var tAttachment = extend({}, targetAttachment);\r\n var eAttachment = extend({}, this.attachment);\r\n\r\n this.options.constraints.forEach(function (constraint) {\r\n var to = constraint.to;\r\n var attachment = constraint.attachment;\r\n var pin = constraint.pin;\r\n\r\n if (typeof attachment === 'undefined') {\r\n attachment = '';\r\n }\r\n\r\n var changeAttachX = undefined,\r\n changeAttachY = undefined;\r\n if (attachment.indexOf(' ') >= 0) {\r\n var _attachment$split = attachment.split(' ');\r\n\r\n var _attachment$split2 = _slicedToArray(_attachment$split, 2);\r\n\r\n changeAttachY = _attachment$split2[0];\r\n changeAttachX = _attachment$split2[1];\r\n } else {\r\n changeAttachX = changeAttachY = attachment;\r\n }\r\n\r\n var bounds = getBoundingRect(_this, to);\r\n\r\n if (changeAttachY === 'target' || changeAttachY === 'both') {\r\n if (top < bounds[1] && tAttachment.top === 'top') {\r\n top += targetHeight;\r\n tAttachment.top = 'bottom';\r\n }\r\n\r\n if (top + height > bounds[3] && tAttachment.top === 'bottom') {\r\n top -= targetHeight;\r\n tAttachment.top = 'top';\r\n }\r\n }\r\n\r\n if (changeAttachY === 'together') {\r\n if (top < bounds[1] && tAttachment.top === 'top') {\r\n if (eAttachment.top === 'bottom') {\r\n top += targetHeight;\r\n tAttachment.top = 'bottom';\r\n\r\n top += height;\r\n eAttachment.top = 'top';\r\n } else if (eAttachment.top === 'top') {\r\n top += targetHeight;\r\n tAttachment.top = 'bottom';\r\n\r\n top -= height;\r\n eAttachment.top = 'bottom';\r\n }\r\n }\r\n\r\n if (top + height > bounds[3] && tAttachment.top === 'bottom') {\r\n if (eAttachment.top === 'top') {\r\n top -= targetHeight;\r\n tAttachment.top = 'top';\r\n\r\n top -= height;\r\n eAttachment.top = 'bottom';\r\n } else if (eAttachment.top === 'bottom') {\r\n top -= targetHeight;\r\n tAttachment.top = 'top';\r\n\r\n top += height;\r\n eAttachment.top = 'top';\r\n }\r\n }\r\n\r\n if (tAttachment.top === 'middle') {\r\n if (top + height > bounds[3] && eAttachment.top === 'top') {\r\n top -= height;\r\n eAttachment.top = 'bottom';\r\n } else if (top < bounds[1] && eAttachment.top === 'bottom') {\r\n top += height;\r\n eAttachment.top = 'top';\r\n }\r\n }\r\n }\r\n\r\n if (changeAttachX === 'target' || changeAttachX === 'both') {\r\n if (left < bounds[0] && tAttachment.left === 'left') {\r\n left += targetWidth;\r\n tAttachment.left = 'right';\r\n }\r\n\r\n if (left + width > bounds[2] && tAttachment.left === 'right') {\r\n left -= targetWidth;\r\n tAttachment.left = 'left';\r\n }\r\n }\r\n\r\n if (changeAttachX === 'together') {\r\n if (left < bounds[0] && tAttachment.left === 'left') {\r\n if (eAttachment.left === 'right') {\r\n left += targetWidth;\r\n tAttachment.left = 'right';\r\n\r\n left += width;\r\n eAttachment.left = 'left';\r\n } else if (eAttachment.left === 'left') {\r\n left += targetWidth;\r\n tAttachment.left = 'right';\r\n\r\n left -= width;\r\n eAttachment.left = 'right';\r\n }\r\n } else if (left + width > bounds[2] && tAttachment.left === 'right') {\r\n if (eAttachment.left === 'left') {\r\n left -= targetWidth;\r\n tAttachment.left = 'left';\r\n\r\n left -= width;\r\n eAttachment.left = 'right';\r\n } else if (eAttachment.left === 'right') {\r\n left -= targetWidth;\r\n tAttachment.left = 'left';\r\n\r\n left += width;\r\n eAttachment.left = 'left';\r\n }\r\n } else if (tAttachment.left === 'center') {\r\n if (left + width > bounds[2] && eAttachment.left === 'left') {\r\n left -= width;\r\n eAttachment.left = 'right';\r\n } else if (left < bounds[0] && eAttachment.left === 'right') {\r\n left += width;\r\n eAttachment.left = 'left';\r\n }\r\n }\r\n }\r\n\r\n if (changeAttachY === 'element' || changeAttachY === 'both') {\r\n if (top < bounds[1] && eAttachment.top === 'bottom') {\r\n top += height;\r\n eAttachment.top = 'top';\r\n }\r\n\r\n if (top + height > bounds[3] && eAttachment.top === 'top') {\r\n top -= height;\r\n eAttachment.top = 'bottom';\r\n }\r\n }\r\n\r\n if (changeAttachX === 'element' || changeAttachX === 'both') {\r\n if (left < bounds[0]) {\r\n if (eAttachment.left === 'right') {\r\n left += width;\r\n eAttachment.left = 'left';\r\n } else if (eAttachment.left === 'center') {\r\n left += width / 2;\r\n eAttachment.left = 'left';\r\n }\r\n }\r\n\r\n if (left + width > bounds[2]) {\r\n if (eAttachment.left === 'left') {\r\n left -= width;\r\n eAttachment.left = 'right';\r\n } else if (eAttachment.left === 'center') {\r\n left -= width / 2;\r\n eAttachment.left = 'right';\r\n }\r\n }\r\n }\r\n\r\n if (typeof pin === 'string') {\r\n pin = pin.split(',').map(function (p) {\r\n return p.trim();\r\n });\r\n } else if (pin === true) {\r\n pin = ['top', 'left', 'right', 'bottom'];\r\n }\r\n\r\n pin = pin || [];\r\n\r\n var pinned = [];\r\n var oob = [];\r\n\r\n if (top < bounds[1]) {\r\n if (pin.indexOf('top') >= 0) {\r\n top = bounds[1];\r\n pinned.push('top');\r\n } else {\r\n oob.push('top');\r\n }\r\n }\r\n\r\n if (top + height > bounds[3]) {\r\n if (pin.indexOf('bottom') >= 0) {\r\n top = bounds[3] - height;\r\n pinned.push('bottom');\r\n } else {\r\n oob.push('bottom');\r\n }\r\n }\r\n\r\n if (left < bounds[0]) {\r\n if (pin.indexOf('left') >= 0) {\r\n left = bounds[0];\r\n pinned.push('left');\r\n } else {\r\n oob.push('left');\r\n }\r\n }\r\n\r\n if (left + width > bounds[2]) {\r\n if (pin.indexOf('right') >= 0) {\r\n left = bounds[2] - width;\r\n pinned.push('right');\r\n } else {\r\n oob.push('right');\r\n }\r\n }\r\n\r\n if (pinned.length) {\r\n (function () {\r\n var pinnedClass = undefined;\r\n if (typeof _this.options.pinnedClass !== 'undefined') {\r\n pinnedClass = _this.options.pinnedClass;\r\n } else {\r\n pinnedClass = _this.getClass('pinned');\r\n }\r\n\r\n addClasses.push(pinnedClass);\r\n pinned.forEach(function (side) {\r\n addClasses.push(pinnedClass + '-' + side);\r\n });\r\n })();\r\n }\r\n\r\n if (oob.length) {\r\n (function () {\r\n var oobClass = undefined;\r\n if (typeof _this.options.outOfBoundsClass !== 'undefined') {\r\n oobClass = _this.options.outOfBoundsClass;\r\n } else {\r\n oobClass = _this.getClass('out-of-bounds');\r\n }\r\n\r\n addClasses.push(oobClass);\r\n oob.forEach(function (side) {\r\n addClasses.push(oobClass + '-' + side);\r\n });\r\n })();\r\n }\r\n\r\n if (pinned.indexOf('left') >= 0 || pinned.indexOf('right') >= 0) {\r\n eAttachment.left = tAttachment.left = false;\r\n }\r\n if (pinned.indexOf('top') >= 0 || pinned.indexOf('bottom') >= 0) {\r\n eAttachment.top = tAttachment.top = false;\r\n }\r\n\r\n if (tAttachment.top !== targetAttachment.top || tAttachment.left !== targetAttachment.left || eAttachment.top !== _this.attachment.top || eAttachment.left !== _this.attachment.left) {\r\n _this.updateAttachClasses(eAttachment, tAttachment);\r\n }\r\n });\r\n\r\n defer(function () {\r\n if (!(_this.options.addTargetClasses === false)) {\r\n updateClasses(_this.target, addClasses, allClasses);\r\n }\r\n updateClasses(_this.element, addClasses, allClasses);\r\n });\r\n\r\n return { top: top, left: left };\r\n }\r\n});\r\n/* globals TetherBase */\r\n\r\n'use strict';\r\n\r\nvar _TetherBase$Utils = TetherBase.Utils;\r\nvar getBounds = _TetherBase$Utils.getBounds;\r\nvar updateClasses = _TetherBase$Utils.updateClasses;\r\nvar defer = _TetherBase$Utils.defer;\r\n\r\nTetherBase.modules.push({\r\n position: function position(_ref) {\r\n var _this = this;\r\n\r\n var top = _ref.top;\r\n var left = _ref.left;\r\n\r\n var _cache = this.cache('element-bounds', function () {\r\n return getBounds(_this.element);\r\n });\r\n\r\n var height = _cache.height;\r\n var width = _cache.width;\r\n\r\n var targetPos = this.getTargetBounds();\r\n\r\n var bottom = top + height;\r\n var right = left + width;\r\n\r\n var abutted = [];\r\n if (top <= targetPos.bottom && bottom >= targetPos.top) {\r\n ['left', 'right'].forEach(function (side) {\r\n var targetPosSide = targetPos[side];\r\n if (targetPosSide === left || targetPosSide === right) {\r\n abutted.push(side);\r\n }\r\n });\r\n }\r\n\r\n if (left <= targetPos.right && right >= targetPos.left) {\r\n ['top', 'bottom'].forEach(function (side) {\r\n var targetPosSide = targetPos[side];\r\n if (targetPosSide === top || targetPosSide === bottom) {\r\n abutted.push(side);\r\n }\r\n });\r\n }\r\n\r\n var allClasses = [];\r\n var addClasses = [];\r\n\r\n var sides = ['left', 'top', 'right', 'bottom'];\r\n allClasses.push(this.getClass('abutted'));\r\n sides.forEach(function (side) {\r\n allClasses.push(_this.getClass('abutted') + '-' + side);\r\n });\r\n\r\n if (abutted.length) {\r\n addClasses.push(this.getClass('abutted'));\r\n }\r\n\r\n abutted.forEach(function (side) {\r\n addClasses.push(_this.getClass('abutted') + '-' + side);\r\n });\r\n\r\n defer(function () {\r\n if (!(_this.options.addTargetClasses === false)) {\r\n updateClasses(_this.target, addClasses, allClasses);\r\n }\r\n updateClasses(_this.element, addClasses, allClasses);\r\n });\r\n\r\n return true;\r\n }\r\n});\r\n/* globals TetherBase */\r\n\r\n'use strict';\r\n\r\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\r\n\r\nTetherBase.modules.push({\r\n position: function position(_ref) {\r\n var top = _ref.top;\r\n var left = _ref.left;\r\n\r\n if (!this.options.shift) {\r\n return;\r\n }\r\n\r\n var shift = this.options.shift;\r\n if (typeof this.options.shift === 'function') {\r\n shift = this.options.shift.call(this, { top: top, left: left });\r\n }\r\n\r\n var shiftTop = undefined,\r\n shiftLeft = undefined;\r\n if (typeof shift === 'string') {\r\n shift = shift.split(' ');\r\n shift[1] = shift[1] || shift[0];\r\n\r\n var _shift = shift;\r\n\r\n var _shift2 = _slicedToArray(_shift, 2);\r\n\r\n shiftTop = _shift2[0];\r\n shiftLeft = _shift2[1];\r\n\r\n shiftTop = parseFloat(shiftTop, 10);\r\n shiftLeft = parseFloat(shiftLeft, 10);\r\n } else {\r\n shiftTop = shift.top;\r\n shiftLeft = shift.left;\r\n }\r\n\r\n top += shiftTop;\r\n left += shiftLeft;\r\n\r\n return { top: top, left: left };\r\n }\r\n});\r\nreturn Tether;\r\n\r\n}));\r\n","/*\r\n * Toastr\r\n * Copyright 2012-2015\r\n * Authors: John Papa, Hans Fjällemark, and Tim Ferrell.\r\n * All Rights Reserved.\r\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\r\n * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php\r\n *\r\n * ARIA Support: Greta Krafsig\r\n *\r\n * Project: https://github.com/CodeSeven/toastr\r\n */\r\n/* global define */\r\n; (function (define) {\r\n define(['jquery'], function ($) {\r\n return (function () {\r\n var $container;\r\n var listener;\r\n var toastId = 0;\r\n var toastType = {\r\n error: 'error',\r\n info: 'info',\r\n success: 'success',\r\n warning: 'warning'\r\n };\r\n\r\n var toastr = {\r\n clear: clear,\r\n remove: remove,\r\n error: error,\r\n getContainer: getContainer,\r\n info: info,\r\n options: {},\r\n subscribe: subscribe,\r\n success: success,\r\n version: '2.1.2',\r\n warning: warning\r\n };\r\n\r\n var previousToast;\r\n\r\n return toastr;\r\n\r\n ////////////////\r\n\r\n function error(message, title, optionsOverride) {\r\n return notify({\r\n type: toastType.error,\r\n iconClass: getOptions().iconClasses.error,\r\n message: message,\r\n optionsOverride: optionsOverride,\r\n title: title\r\n });\r\n }\r\n\r\n function getContainer(options, create) {\r\n if (!options) { options = getOptions(); }\r\n $container = $('#' + options.containerId);\r\n if ($container.length) {\r\n return $container;\r\n }\r\n if (create) {\r\n $container = createContainer(options);\r\n }\r\n return $container;\r\n }\r\n\r\n function info(message, title, optionsOverride) {\r\n return notify({\r\n type: toastType.info,\r\n iconClass: getOptions().iconClasses.info,\r\n message: message,\r\n optionsOverride: optionsOverride,\r\n title: title\r\n });\r\n }\r\n\r\n function subscribe(callback) {\r\n listener = callback;\r\n }\r\n\r\n function success(message, title, optionsOverride) {\r\n return notify({\r\n type: toastType.success,\r\n iconClass: getOptions().iconClasses.success,\r\n message: message,\r\n optionsOverride: optionsOverride,\r\n title: title\r\n });\r\n }\r\n\r\n function warning(message, title, optionsOverride) {\r\n return notify({\r\n type: toastType.warning,\r\n iconClass: getOptions().iconClasses.warning,\r\n message: message,\r\n optionsOverride: optionsOverride,\r\n title: title\r\n });\r\n }\r\n\r\n function clear($toastElement, clearOptions) {\r\n var options = getOptions();\r\n if (!$container) { getContainer(options); }\r\n if (!clearToast($toastElement, options, clearOptions)) {\r\n clearContainer(options);\r\n }\r\n }\r\n\r\n function remove($toastElement) {\r\n var options = getOptions();\r\n if (!$container) { getContainer(options); }\r\n if ($toastElement && $(':focus', $toastElement).length === 0) {\r\n removeToast($toastElement);\r\n return;\r\n }\r\n if ($container.children().length) {\r\n $container.remove();\r\n }\r\n }\r\n\r\n // internal functions\r\n\r\n function clearContainer (options) {\r\n var toastsToClear = $container.children();\r\n for (var i = toastsToClear.length - 1; i >= 0; i--) {\r\n clearToast($(toastsToClear[i]), options);\r\n }\r\n }\r\n\r\n function clearToast ($toastElement, options, clearOptions) {\r\n var force = clearOptions && clearOptions.force ? clearOptions.force : false;\r\n if ($toastElement && (force || $(':focus', $toastElement).length === 0)) {\r\n $toastElement[options.hideMethod]({\r\n duration: options.hideDuration,\r\n easing: options.hideEasing,\r\n complete: function () { removeToast($toastElement); }\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n function createContainer(options) {\r\n $container = $('
          ')\r\n .attr('id', options.containerId)\r\n .addClass(options.positionClass)\r\n .attr('aria-live', 'polite')\r\n .attr('role', 'alert');\r\n\r\n $container.appendTo($(options.target));\r\n return $container;\r\n }\r\n\r\n function getDefaults() {\r\n return {\r\n tapToDismiss: true,\r\n toastClass: 'toast',\r\n containerId: 'toast-container',\r\n debug: false,\r\n\r\n showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery\r\n showDuration: 300,\r\n showEasing: 'swing', //swing and linear are built into jQuery\r\n onShown: undefined,\r\n hideMethod: 'fadeOut',\r\n hideDuration: 1000,\r\n hideEasing: 'swing',\r\n onHidden: undefined,\r\n closeMethod: false,\r\n closeDuration: false,\r\n closeEasing: false,\r\n\r\n extendedTimeOut: 1000,\r\n iconClasses: {\r\n error: 'toast-error',\r\n info: 'toast-info',\r\n success: 'toast-success',\r\n warning: 'toast-warning'\r\n },\r\n iconClass: 'toast-info',\r\n positionClass: 'toast-top-right',\r\n timeOut: 5000, // Set timeOut and extendedTimeOut to 0 to make it sticky\r\n titleClass: 'toast-title',\r\n messageClass: 'toast-message',\r\n escapeHtml: false,\r\n target: 'body',\r\n closeHtml: '',\r\n newestOnTop: true,\r\n preventDuplicates: false,\r\n progressBar: false\r\n };\r\n }\r\n\r\n function publish(args) {\r\n if (!listener) { return; }\r\n listener(args);\r\n }\r\n\r\n function notify(map) {\r\n var options = getOptions();\r\n var iconClass = map.iconClass || options.iconClass;\r\n\r\n if (typeof (map.optionsOverride) !== 'undefined') {\r\n options = $.extend(options, map.optionsOverride);\r\n iconClass = map.optionsOverride.iconClass || iconClass;\r\n }\r\n\r\n if (shouldExit(options, map)) { return; }\r\n\r\n toastId++;\r\n\r\n $container = getContainer(options, true);\r\n\r\n var intervalId = null;\r\n var $toastElement = $('
          ');\r\n var $titleElement = $('
          ');\r\n var $messageElement = $('
          ');\r\n var $progressElement = $('
          ');\r\n var $closeElement = $(options.closeHtml);\r\n var progressBar = {\r\n intervalId: null,\r\n hideEta: null,\r\n maxHideTime: null\r\n };\r\n var response = {\r\n toastId: toastId,\r\n state: 'visible',\r\n startTime: new Date(),\r\n options: options,\r\n map: map\r\n };\r\n\r\n personalizeToast();\r\n\r\n displayToast();\r\n\r\n handleEvents();\r\n\r\n publish(response);\r\n\r\n if (options.debug && console) {\r\n console.log(response);\r\n }\r\n\r\n return $toastElement;\r\n\r\n function escapeHtml(source) {\r\n if (source == null)\r\n source = \"\";\r\n\r\n return new String(source)\r\n .replace(/&/g, '&')\r\n .replace(/\"/g, '"')\r\n .replace(/'/g, ''')\r\n .replace(//g, '>');\r\n }\r\n\r\n function personalizeToast() {\r\n setIcon();\r\n setTitle();\r\n setMessage();\r\n setCloseButton();\r\n setProgressBar();\r\n setSequence();\r\n }\r\n\r\n function handleEvents() {\r\n $toastElement.hover(stickAround, delayedHideToast);\r\n if (!options.onclick && options.tapToDismiss) {\r\n $toastElement.click(hideToast);\r\n }\r\n\r\n if (options.closeButton && $closeElement) {\r\n $closeElement.click(function (event) {\r\n if (event.stopPropagation) {\r\n event.stopPropagation();\r\n } else if (event.cancelBubble !== undefined && event.cancelBubble !== true) {\r\n event.cancelBubble = true;\r\n }\r\n hideToast(true);\r\n });\r\n }\r\n\r\n if (options.onclick) {\r\n $toastElement.click(function (event) {\r\n options.onclick(event);\r\n hideToast();\r\n });\r\n }\r\n }\r\n\r\n function displayToast() {\r\n $toastElement.hide();\r\n\r\n $toastElement[options.showMethod](\r\n {duration: options.showDuration, easing: options.showEasing, complete: options.onShown}\r\n );\r\n\r\n if (options.timeOut > 0) {\r\n intervalId = setTimeout(hideToast, options.timeOut);\r\n progressBar.maxHideTime = parseFloat(options.timeOut);\r\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\r\n if (options.progressBar) {\r\n progressBar.intervalId = setInterval(updateProgress, 10);\r\n }\r\n }\r\n }\r\n\r\n function setIcon() {\r\n if (map.iconClass) {\r\n $toastElement.addClass(options.toastClass).addClass(iconClass);\r\n }\r\n }\r\n\r\n function setSequence() {\r\n if (options.newestOnTop) {\r\n $container.prepend($toastElement);\r\n } else {\r\n $container.append($toastElement);\r\n }\r\n }\r\n\r\n function setTitle() {\r\n if (map.title) {\r\n $titleElement.append(!options.escapeHtml ? map.title : escapeHtml(map.title)).addClass(options.titleClass);\r\n $toastElement.append($titleElement);\r\n }\r\n }\r\n\r\n function setMessage() {\r\n if (map.message) {\r\n $messageElement.append(!options.escapeHtml ? map.message : escapeHtml(map.message)).addClass(options.messageClass);\r\n $toastElement.append($messageElement);\r\n }\r\n }\r\n\r\n function setCloseButton() {\r\n if (options.closeButton) {\r\n $closeElement.addClass('toast-close-button').attr('role', 'button');\r\n $toastElement.prepend($closeElement);\r\n }\r\n }\r\n\r\n function setProgressBar() {\r\n if (options.progressBar) {\r\n $progressElement.addClass('toast-progress');\r\n $toastElement.prepend($progressElement);\r\n }\r\n }\r\n\r\n function shouldExit(options, map) {\r\n if (options.preventDuplicates) {\r\n if (map.message === previousToast) {\r\n return true;\r\n } else {\r\n previousToast = map.message;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n function hideToast(override) {\r\n var method = override && options.closeMethod !== false ? options.closeMethod : options.hideMethod;\r\n var duration = override && options.closeDuration !== false ?\r\n options.closeDuration : options.hideDuration;\r\n var easing = override && options.closeEasing !== false ? options.closeEasing : options.hideEasing;\r\n if ($(':focus', $toastElement).length && !override) {\r\n return;\r\n }\r\n clearTimeout(progressBar.intervalId);\r\n return $toastElement[method]({\r\n duration: duration,\r\n easing: easing,\r\n complete: function () {\r\n removeToast($toastElement);\r\n if (options.onHidden && response.state !== 'hidden') {\r\n options.onHidden();\r\n }\r\n response.state = 'hidden';\r\n response.endTime = new Date();\r\n publish(response);\r\n }\r\n });\r\n }\r\n\r\n function delayedHideToast() {\r\n if (options.timeOut > 0 || options.extendedTimeOut > 0) {\r\n intervalId = setTimeout(hideToast, options.extendedTimeOut);\r\n progressBar.maxHideTime = parseFloat(options.extendedTimeOut);\r\n progressBar.hideEta = new Date().getTime() + progressBar.maxHideTime;\r\n }\r\n }\r\n\r\n function stickAround() {\r\n clearTimeout(intervalId);\r\n progressBar.hideEta = 0;\r\n $toastElement.stop(true, true)[options.showMethod](\r\n {duration: options.showDuration, easing: options.showEasing}\r\n );\r\n }\r\n\r\n function updateProgress() {\r\n var percentage = ((progressBar.hideEta - (new Date().getTime())) / progressBar.maxHideTime) * 100;\r\n $progressElement.width(percentage + '%');\r\n }\r\n }\r\n\r\n function getOptions() {\r\n return $.extend({}, getDefaults(), toastr.options);\r\n }\r\n\r\n function removeToast($toastElement) {\r\n if (!$container) { $container = getContainer(); }\r\n if ($toastElement.is(':visible')) {\r\n return;\r\n }\r\n $toastElement.remove();\r\n $toastElement = null;\r\n if ($container.children().length === 0) {\r\n $container.remove();\r\n previousToast = undefined;\r\n }\r\n }\r\n\r\n })();\r\n });\r\n}(typeof define === 'function' && define.amd ? define : function (deps, factory) {\r\n if (typeof module !== 'undefined' && module.exports) { //Node\r\n module.exports = factory(require('jquery'));\r\n } else {\r\n window.toastr = factory(window.jQuery);\r\n }\r\n}));\r\n","/**\r\n* @version: 2.1.30\r\n* @author: Dan Grossman http://www.dangrossman.info/\r\n* @copyright: Copyright (c) 2012-2017 Dan Grossman. All rights reserved.\r\n* @license: Licensed under the MIT license. See http://www.opensource.org/licenses/mit-license.php\r\n* @website: http://www.daterangepicker.com/\r\n*/\r\n// Follow the UMD template https://github.com/umdjs/umd/blob/master/templates/returnExportsGlobal.js\r\n(function (root, factory) {\r\n if (typeof define === 'function' && define.amd) {\r\n // AMD. Make globaly available as well\r\n define(['moment', 'jquery'], function (moment, jquery) {\r\n if (!jquery.fn) jquery.fn = {}; // webpack server rendering\r\n return factory(moment, jquery);\r\n });\r\n } else if (typeof module === 'object' && module.exports) {\r\n // Node / Browserify\r\n //isomorphic issue\r\n var jQuery = (typeof window != 'undefined') ? window.jQuery : undefined;\r\n if (!jQuery) {\r\n jQuery = require('jquery');\r\n if (!jQuery.fn) jQuery.fn = {};\r\n }\r\n var moment = (typeof window != 'undefined' && typeof window.moment != 'undefined') ? window.moment : require('moment');\r\n module.exports = factory(moment, jQuery);\r\n } else {\r\n // Browser globals\r\n root.daterangepicker = factory(root.moment, root.jQuery);\r\n }\r\n}(this, function(moment, $) {\r\n var DateRangePicker = function(element, options, cb) {\r\n\r\n //default settings for options\r\n this.parentEl = 'body';\r\n this.element = $(element);\r\n this.startDate = moment().startOf('day');\r\n this.endDate = moment().endOf('day');\r\n this.minDate = false;\r\n this.maxDate = false;\r\n this.dateLimit = false;\r\n this.autoApply = false;\r\n this.singleDatePicker = false;\r\n this.showDropdowns = false;\r\n this.showWeekNumbers = false;\r\n this.showISOWeekNumbers = false;\r\n this.showCustomRangeLabel = true;\r\n this.timePicker = false;\r\n this.timePicker24Hour = false;\r\n this.timePickerIncrement = 1;\r\n this.timePickerSeconds = false;\r\n this.linkedCalendars = true;\r\n this.autoUpdateInput = true;\r\n this.alwaysShowCalendars = false;\r\n this.ranges = {};\r\n\r\n this.opens = 'right';\r\n if (this.element.hasClass('pull-right'))\r\n this.opens = 'left';\r\n\r\n this.drops = 'down';\r\n if (this.element.hasClass('dropup'))\r\n this.drops = 'up';\r\n\r\n this.buttonClasses = 'btn btn-sm';\r\n this.applyClass = 'btn-success';\r\n this.cancelClass = 'btn-default';\r\n\r\n this.locale = {\r\n direction: 'ltr',\r\n format: moment.localeData().longDateFormat('L'),\r\n separator: ' - ',\r\n applyLabel: 'Apply',\r\n cancelLabel: 'Cancel',\r\n weekLabel: 'W',\r\n customRangeLabel: 'Custom Range',\r\n daysOfWeek: moment.weekdaysMin(),\r\n monthNames: moment.monthsShort(),\r\n firstDay: moment.localeData().firstDayOfWeek()\r\n };\r\n\r\n this.callback = function() { };\r\n\r\n //some state information\r\n this.isShowing = false;\r\n this.leftCalendar = {};\r\n this.rightCalendar = {};\r\n\r\n //custom options from user\r\n if (typeof options !== 'object' || options === null)\r\n options = {};\r\n\r\n //allow setting options with data attributes\r\n //data-api options will be overwritten with custom javascript options\r\n options = $.extend(this.element.data(), options);\r\n\r\n //html template for the picker UI\r\n if (typeof options.template !== 'string' && !(options.template instanceof $))\r\n options.template = '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n '' +\r\n '' +\r\n '
          ' +\r\n '
          ' +\r\n '' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n '' +\r\n '' +\r\n '
          ' +\r\n '
          ' +\r\n '' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ' +\r\n ' ' +\r\n '' +\r\n '
          ' +\r\n '
          ' +\r\n '
          ';\r\n\r\n this.parentEl = (options.parentEl && $(options.parentEl).length) ? $(options.parentEl) : $(this.parentEl);\r\n this.container = $(options.template).appendTo(this.parentEl);\r\n\r\n //\r\n // handle all the possible options overriding defaults\r\n //\r\n\r\n if (typeof options.locale === 'object') {\r\n\r\n if (typeof options.locale.direction === 'string')\r\n this.locale.direction = options.locale.direction;\r\n\r\n if (typeof options.locale.format === 'string')\r\n this.locale.format = options.locale.format;\r\n\r\n if (typeof options.locale.separator === 'string')\r\n this.locale.separator = options.locale.separator;\r\n\r\n if (typeof options.locale.daysOfWeek === 'object')\r\n this.locale.daysOfWeek = options.locale.daysOfWeek.slice();\r\n\r\n if (typeof options.locale.monthNames === 'object')\r\n this.locale.monthNames = options.locale.monthNames.slice();\r\n\r\n if (typeof options.locale.firstDay === 'number')\r\n this.locale.firstDay = options.locale.firstDay;\r\n\r\n if (typeof options.locale.applyLabel === 'string')\r\n this.locale.applyLabel = options.locale.applyLabel;\r\n\r\n if (typeof options.locale.cancelLabel === 'string')\r\n this.locale.cancelLabel = options.locale.cancelLabel;\r\n\r\n if (typeof options.locale.weekLabel === 'string')\r\n this.locale.weekLabel = options.locale.weekLabel;\r\n\r\n if (typeof options.locale.customRangeLabel === 'string'){\r\n //Support unicode chars in the custom range name.\r\n var elem = document.createElement('textarea');\r\n elem.innerHTML = options.locale.customRangeLabel;\r\n var rangeHtml = elem.value;\r\n this.locale.customRangeLabel = rangeHtml;\r\n }\r\n }\r\n this.container.addClass(this.locale.direction);\r\n\r\n if (typeof options.startDate === 'string')\r\n this.startDate = moment(options.startDate, this.locale.format);\r\n\r\n if (typeof options.endDate === 'string')\r\n this.endDate = moment(options.endDate, this.locale.format);\r\n\r\n if (typeof options.minDate === 'string')\r\n this.minDate = moment(options.minDate, this.locale.format);\r\n\r\n if (typeof options.maxDate === 'string')\r\n this.maxDate = moment(options.maxDate, this.locale.format);\r\n\r\n if (typeof options.startDate === 'object')\r\n this.startDate = moment(options.startDate);\r\n\r\n if (typeof options.endDate === 'object')\r\n this.endDate = moment(options.endDate);\r\n\r\n if (typeof options.minDate === 'object')\r\n this.minDate = moment(options.minDate);\r\n\r\n if (typeof options.maxDate === 'object')\r\n this.maxDate = moment(options.maxDate);\r\n\r\n // sanity check for bad options\r\n if (this.minDate && this.startDate.isBefore(this.minDate))\r\n this.startDate = this.minDate.clone();\r\n\r\n // sanity check for bad options\r\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\r\n this.endDate = this.maxDate.clone();\r\n\r\n if (typeof options.applyClass === 'string')\r\n this.applyClass = options.applyClass;\r\n\r\n if (typeof options.cancelClass === 'string')\r\n this.cancelClass = options.cancelClass;\r\n\r\n if (typeof options.dateLimit === 'object')\r\n this.dateLimit = options.dateLimit;\r\n\r\n if (typeof options.opens === 'string')\r\n this.opens = options.opens;\r\n\r\n if (typeof options.drops === 'string')\r\n this.drops = options.drops;\r\n\r\n if (typeof options.showWeekNumbers === 'boolean')\r\n this.showWeekNumbers = options.showWeekNumbers;\r\n\r\n if (typeof options.showISOWeekNumbers === 'boolean')\r\n this.showISOWeekNumbers = options.showISOWeekNumbers;\r\n\r\n if (typeof options.buttonClasses === 'string')\r\n this.buttonClasses = options.buttonClasses;\r\n\r\n if (typeof options.buttonClasses === 'object')\r\n this.buttonClasses = options.buttonClasses.join(' ');\r\n\r\n if (typeof options.showDropdowns === 'boolean')\r\n this.showDropdowns = options.showDropdowns;\r\n\r\n if (typeof options.showCustomRangeLabel === 'boolean')\r\n this.showCustomRangeLabel = options.showCustomRangeLabel;\r\n\r\n if (typeof options.singleDatePicker === 'boolean') {\r\n this.singleDatePicker = options.singleDatePicker;\r\n if (this.singleDatePicker)\r\n this.endDate = this.startDate.clone();\r\n }\r\n\r\n if (typeof options.timePicker === 'boolean')\r\n this.timePicker = options.timePicker;\r\n\r\n if (typeof options.timePickerSeconds === 'boolean')\r\n this.timePickerSeconds = options.timePickerSeconds;\r\n\r\n if (typeof options.timePickerIncrement === 'number')\r\n this.timePickerIncrement = options.timePickerIncrement;\r\n\r\n if (typeof options.timePicker24Hour === 'boolean')\r\n this.timePicker24Hour = options.timePicker24Hour;\r\n\r\n if (typeof options.autoApply === 'boolean')\r\n this.autoApply = options.autoApply;\r\n\r\n if (typeof options.autoUpdateInput === 'boolean')\r\n this.autoUpdateInput = options.autoUpdateInput;\r\n\r\n if (typeof options.linkedCalendars === 'boolean')\r\n this.linkedCalendars = options.linkedCalendars;\r\n\r\n if (typeof options.isInvalidDate === 'function')\r\n this.isInvalidDate = options.isInvalidDate;\r\n\r\n if (typeof options.isCustomDate === 'function')\r\n this.isCustomDate = options.isCustomDate;\r\n\r\n if (typeof options.alwaysShowCalendars === 'boolean')\r\n this.alwaysShowCalendars = options.alwaysShowCalendars;\r\n\r\n // update day names order to firstDay\r\n if (this.locale.firstDay != 0) {\r\n var iterator = this.locale.firstDay;\r\n while (iterator > 0) {\r\n this.locale.daysOfWeek.push(this.locale.daysOfWeek.shift());\r\n iterator--;\r\n }\r\n }\r\n\r\n var start, end, range;\r\n\r\n //if no start/end dates set, check if an input element contains initial values\r\n if (typeof options.startDate === 'undefined' && typeof options.endDate === 'undefined') {\r\n if ($(this.element).is('input[type=text]')) {\r\n var val = $(this.element).val(),\r\n split = val.split(this.locale.separator);\r\n\r\n start = end = null;\r\n\r\n if (split.length == 2) {\r\n start = moment(split[0], this.locale.format);\r\n end = moment(split[1], this.locale.format);\r\n } else if (this.singleDatePicker && val !== \"\") {\r\n start = moment(val, this.locale.format);\r\n end = moment(val, this.locale.format);\r\n }\r\n if (start !== null && end !== null) {\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n }\r\n }\r\n }\r\n\r\n if (typeof options.ranges === 'object') {\r\n for (range in options.ranges) {\r\n\r\n if (typeof options.ranges[range][0] === 'string')\r\n start = moment(options.ranges[range][0], this.locale.format);\r\n else\r\n start = moment(options.ranges[range][0]);\r\n\r\n if (typeof options.ranges[range][1] === 'string')\r\n end = moment(options.ranges[range][1], this.locale.format);\r\n else\r\n end = moment(options.ranges[range][1]);\r\n\r\n // If the start or end date exceed those allowed by the minDate or dateLimit\r\n // options, shorten the range to the allowable period.\r\n if (this.minDate && start.isBefore(this.minDate))\r\n start = this.minDate.clone();\r\n\r\n var maxDate = this.maxDate;\r\n if (this.dateLimit && maxDate && start.clone().add(this.dateLimit).isAfter(maxDate))\r\n maxDate = start.clone().add(this.dateLimit);\r\n if (maxDate && end.isAfter(maxDate))\r\n end = maxDate.clone();\r\n\r\n // If the end of the range is before the minimum or the start of the range is\r\n // after the maximum, don't display this range option at all.\r\n if ((this.minDate && end.isBefore(this.minDate, this.timepicker ? 'minute' : 'day')) \r\n || (maxDate && start.isAfter(maxDate, this.timepicker ? 'minute' : 'day')))\r\n continue;\r\n\r\n //Support unicode chars in the range names.\r\n var elem = document.createElement('textarea');\r\n elem.innerHTML = range;\r\n var rangeHtml = elem.value;\r\n\r\n this.ranges[rangeHtml] = [start, end];\r\n }\r\n\r\n var list = '
            ';\r\n for (range in this.ranges) {\r\n list += '
          • ' + range + '
          • ';\r\n }\r\n if (this.showCustomRangeLabel) {\r\n list += '
          • ' + this.locale.customRangeLabel + '
          • ';\r\n }\r\n list += '
          ';\r\n this.container.find('.ranges').prepend(list);\r\n }\r\n\r\n if (typeof cb === 'function') {\r\n this.callback = cb;\r\n }\r\n\r\n if (!this.timePicker) {\r\n this.startDate = this.startDate.startOf('day');\r\n this.endDate = this.endDate.endOf('day');\r\n this.container.find('.calendar-time').hide();\r\n }\r\n\r\n //can't be used together for now\r\n if (this.timePicker && this.autoApply)\r\n this.autoApply = false;\r\n\r\n if (this.autoApply && typeof options.ranges !== 'object') {\r\n this.container.find('.ranges').hide();\r\n } else if (this.autoApply) {\r\n this.container.find('.applyBtn, .cancelBtn').addClass('hide');\r\n }\r\n\r\n if (this.singleDatePicker) {\r\n this.container.addClass('single');\r\n this.container.find('.calendar.left').addClass('single');\r\n this.container.find('.calendar.left').show();\r\n this.container.find('.calendar.right').hide();\r\n this.container.find('.daterangepicker_input input, .daterangepicker_input > i').hide();\r\n if (this.timePicker) {\r\n this.container.find('.ranges ul').hide();\r\n } else {\r\n this.container.find('.ranges').hide();\r\n }\r\n }\r\n\r\n if ((typeof options.ranges === 'undefined' && !this.singleDatePicker) || this.alwaysShowCalendars) {\r\n this.container.addClass('show-calendar');\r\n }\r\n\r\n this.container.addClass('opens' + this.opens);\r\n\r\n //swap the position of the predefined ranges if opens right\r\n if (typeof options.ranges !== 'undefined' && this.opens == 'right') {\r\n this.container.find('.ranges').prependTo( this.container.find('.calendar.left').parent() );\r\n }\r\n\r\n //apply CSS classes and labels to buttons\r\n this.container.find('.applyBtn, .cancelBtn').addClass(this.buttonClasses);\r\n if (this.applyClass.length)\r\n this.container.find('.applyBtn').addClass(this.applyClass);\r\n if (this.cancelClass.length)\r\n this.container.find('.cancelBtn').addClass(this.cancelClass);\r\n this.container.find('.applyBtn').html(this.locale.applyLabel);\r\n this.container.find('.cancelBtn').html(this.locale.cancelLabel);\r\n\r\n //\r\n // event listeners\r\n //\r\n\r\n this.container.find('.calendar')\r\n .on('click.daterangepicker', '.prev', $.proxy(this.clickPrev, this))\r\n .on('click.daterangepicker', '.next', $.proxy(this.clickNext, this))\r\n .on('mousedown.daterangepicker', 'td.available', $.proxy(this.clickDate, this))\r\n .on('mouseenter.daterangepicker', 'td.available', $.proxy(this.hoverDate, this))\r\n .on('mouseleave.daterangepicker', 'td.available', $.proxy(this.updateFormInputs, this))\r\n .on('change.daterangepicker', 'select.yearselect', $.proxy(this.monthOrYearChanged, this))\r\n .on('change.daterangepicker', 'select.monthselect', $.proxy(this.monthOrYearChanged, this))\r\n .on('change.daterangepicker', 'select.hourselect,select.minuteselect,select.secondselect,select.ampmselect', $.proxy(this.timeChanged, this))\r\n .on('click.daterangepicker', '.daterangepicker_input input', $.proxy(this.showCalendars, this))\r\n .on('focus.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsFocused, this))\r\n .on('blur.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsBlurred, this))\r\n .on('change.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsChanged, this))\r\n .on('keydown.daterangepicker', '.daterangepicker_input input', $.proxy(this.formInputsKeydown, this));\r\n\r\n this.container.find('.ranges')\r\n .on('click.daterangepicker', 'button.applyBtn', $.proxy(this.clickApply, this))\r\n .on('click.daterangepicker', 'button.cancelBtn', $.proxy(this.clickCancel, this))\r\n .on('click.daterangepicker', 'li', $.proxy(this.clickRange, this))\r\n .on('mouseenter.daterangepicker', 'li', $.proxy(this.hoverRange, this))\r\n .on('mouseleave.daterangepicker', 'li', $.proxy(this.updateFormInputs, this));\r\n\r\n if (this.element.is('input') || this.element.is('button')) {\r\n this.element.on({\r\n 'click.daterangepicker': $.proxy(this.show, this),\r\n 'focus.daterangepicker': $.proxy(this.show, this),\r\n 'keyup.daterangepicker': $.proxy(this.elementChanged, this),\r\n 'keydown.daterangepicker': $.proxy(this.keydown, this) //IE 11 compatibility\r\n });\r\n } else {\r\n this.element.on('click.daterangepicker', $.proxy(this.toggle, this));\r\n this.element.on('keydown.daterangepicker', $.proxy(this.toggle, this));\r\n }\r\n\r\n //\r\n // if attached to a text input, set the initial value\r\n //\r\n\r\n if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {\r\n this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\r\n this.element.trigger('change');\r\n } else if (this.element.is('input') && this.autoUpdateInput) {\r\n this.element.val(this.startDate.format(this.locale.format));\r\n this.element.trigger('change');\r\n }\r\n\r\n };\r\n\r\n DateRangePicker.prototype = {\r\n\r\n constructor: DateRangePicker,\r\n\r\n setStartDate: function(startDate) {\r\n if (typeof startDate === 'string')\r\n this.startDate = moment(startDate, this.locale.format);\r\n\r\n if (typeof startDate === 'object')\r\n this.startDate = moment(startDate);\r\n\r\n if (!this.timePicker)\r\n this.startDate = this.startDate.startOf('day');\r\n\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n\r\n if (this.minDate && this.startDate.isBefore(this.minDate)) {\r\n this.startDate = this.minDate.clone();\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.round(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n }\r\n\r\n if (this.maxDate && this.startDate.isAfter(this.maxDate)) {\r\n this.startDate = this.maxDate.clone();\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.startDate.minute(Math.floor(this.startDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n }\r\n\r\n if (!this.isShowing)\r\n this.updateElement();\r\n\r\n this.updateMonthsInView();\r\n },\r\n\r\n setEndDate: function(endDate) {\r\n if (typeof endDate === 'string')\r\n this.endDate = moment(endDate, this.locale.format);\r\n\r\n if (typeof endDate === 'object')\r\n this.endDate = moment(endDate);\r\n\r\n if (!this.timePicker)\r\n this.endDate = this.endDate.add(1,'d').startOf('day').subtract(1,'second');\r\n\r\n if (this.timePicker && this.timePickerIncrement)\r\n this.endDate.minute(Math.round(this.endDate.minute() / this.timePickerIncrement) * this.timePickerIncrement);\r\n\r\n if (this.endDate.isBefore(this.startDate))\r\n this.endDate = this.startDate.clone();\r\n\r\n if (this.maxDate && this.endDate.isAfter(this.maxDate))\r\n this.endDate = this.maxDate.clone();\r\n\r\n if (this.dateLimit && this.startDate.clone().add(this.dateLimit).isBefore(this.endDate))\r\n this.endDate = this.startDate.clone().add(this.dateLimit);\r\n\r\n this.previousRightTime = this.endDate.clone();\r\n\r\n if (!this.isShowing)\r\n this.updateElement();\r\n\r\n this.updateMonthsInView();\r\n },\r\n\r\n isInvalidDate: function() {\r\n return false;\r\n },\r\n\r\n isCustomDate: function() {\r\n return false;\r\n },\r\n\r\n updateView: function() {\r\n if (this.timePicker) {\r\n this.renderTimePicker('left');\r\n this.renderTimePicker('right');\r\n if (!this.endDate) {\r\n this.container.find('.right .calendar-time select').attr('disabled', 'disabled').addClass('disabled');\r\n } else {\r\n this.container.find('.right .calendar-time select').removeAttr('disabled').removeClass('disabled');\r\n }\r\n }\r\n if (this.endDate) {\r\n this.container.find('input[name=\"daterangepicker_end\"]').removeClass('active');\r\n this.container.find('input[name=\"daterangepicker_start\"]').addClass('active');\r\n } else {\r\n this.container.find('input[name=\"daterangepicker_end\"]').addClass('active');\r\n this.container.find('input[name=\"daterangepicker_start\"]').removeClass('active');\r\n }\r\n this.updateMonthsInView();\r\n this.updateCalendars();\r\n this.updateFormInputs();\r\n },\r\n\r\n updateMonthsInView: function() {\r\n if (this.endDate) {\r\n\r\n //if both dates are visible already, do nothing\r\n if (!this.singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\r\n (this.startDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.startDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\r\n &&\r\n (this.endDate.format('YYYY-MM') == this.leftCalendar.month.format('YYYY-MM') || this.endDate.format('YYYY-MM') == this.rightCalendar.month.format('YYYY-MM'))\r\n ) {\r\n return;\r\n }\r\n\r\n this.leftCalendar.month = this.startDate.clone().date(2);\r\n if (!this.linkedCalendars && (this.endDate.month() != this.startDate.month() || this.endDate.year() != this.startDate.year())) {\r\n this.rightCalendar.month = this.endDate.clone().date(2);\r\n } else {\r\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n }\r\n\r\n } else {\r\n if (this.leftCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM') && this.rightCalendar.month.format('YYYY-MM') != this.startDate.format('YYYY-MM')) {\r\n this.leftCalendar.month = this.startDate.clone().date(2);\r\n this.rightCalendar.month = this.startDate.clone().date(2).add(1, 'month');\r\n }\r\n }\r\n if (this.maxDate && this.linkedCalendars && !this.singleDatePicker && this.rightCalendar.month > this.maxDate) {\r\n this.rightCalendar.month = this.maxDate.clone().date(2);\r\n this.leftCalendar.month = this.maxDate.clone().date(2).subtract(1, 'month');\r\n }\r\n },\r\n\r\n updateCalendars: function() {\r\n\r\n if (this.timePicker) {\r\n var hour, minute, second;\r\n if (this.endDate) {\r\n hour = parseInt(this.container.find('.left .hourselect').val(), 10);\r\n minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\r\n second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.left .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n } else {\r\n hour = parseInt(this.container.find('.right .hourselect').val(), 10);\r\n minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\r\n second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.right .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n }\r\n this.leftCalendar.month.hour(hour).minute(minute).second(second);\r\n this.rightCalendar.month.hour(hour).minute(minute).second(second);\r\n }\r\n\r\n this.renderCalendar('left');\r\n this.renderCalendar('right');\r\n\r\n //highlight any predefined range matching the current start and end dates\r\n this.container.find('.ranges li').removeClass('active');\r\n if (this.endDate == null) return;\r\n\r\n this.calculateChosenLabel();\r\n },\r\n\r\n renderCalendar: function(side) {\r\n\r\n //\r\n // Build the matrix of dates that will populate the calendar\r\n //\r\n\r\n var calendar = side == 'left' ? this.leftCalendar : this.rightCalendar;\r\n var month = calendar.month.month();\r\n var year = calendar.month.year();\r\n var hour = calendar.month.hour();\r\n var minute = calendar.month.minute();\r\n var second = calendar.month.second();\r\n var daysInMonth = moment([year, month]).daysInMonth();\r\n var firstDay = moment([year, month, 1]);\r\n var lastDay = moment([year, month, daysInMonth]);\r\n var lastMonth = moment(firstDay).subtract(1, 'month').month();\r\n var lastYear = moment(firstDay).subtract(1, 'month').year();\r\n var daysInLastMonth = moment([lastYear, lastMonth]).daysInMonth();\r\n var dayOfWeek = firstDay.day();\r\n\r\n //initialize a 6 rows x 7 columns array for the calendar\r\n var calendar = [];\r\n calendar.firstDay = firstDay;\r\n calendar.lastDay = lastDay;\r\n\r\n for (var i = 0; i < 6; i++) {\r\n calendar[i] = [];\r\n }\r\n\r\n //populate the calendar with date objects\r\n var startDay = daysInLastMonth - dayOfWeek + this.locale.firstDay + 1;\r\n if (startDay > daysInLastMonth)\r\n startDay -= 7;\r\n\r\n if (dayOfWeek == this.locale.firstDay)\r\n startDay = daysInLastMonth - 6;\r\n\r\n var curDate = moment([lastYear, lastMonth, startDay, 12, minute, second]);\r\n\r\n var col, row;\r\n for (var i = 0, col = 0, row = 0; i < 42; i++, col++, curDate = moment(curDate).add(24, 'hour')) {\r\n if (i > 0 && col % 7 === 0) {\r\n col = 0;\r\n row++;\r\n }\r\n calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\r\n curDate.hour(12);\r\n\r\n if (this.minDate && calendar[row][col].format('YYYY-MM-DD') == this.minDate.format('YYYY-MM-DD') && calendar[row][col].isBefore(this.minDate) && side == 'left') {\r\n calendar[row][col] = this.minDate.clone();\r\n }\r\n\r\n if (this.maxDate && calendar[row][col].format('YYYY-MM-DD') == this.maxDate.format('YYYY-MM-DD') && calendar[row][col].isAfter(this.maxDate) && side == 'right') {\r\n calendar[row][col] = this.maxDate.clone();\r\n }\r\n\r\n }\r\n\r\n //make the calendar object available to hoverDate/clickDate\r\n if (side == 'left') {\r\n this.leftCalendar.calendar = calendar;\r\n } else {\r\n this.rightCalendar.calendar = calendar;\r\n }\r\n\r\n //\r\n // Display the calendar\r\n //\r\n\r\n var minDate = side == 'left' ? this.minDate : this.startDate;\r\n var maxDate = this.maxDate;\r\n var selected = side == 'left' ? this.startDate : this.endDate;\r\n var arrow = this.locale.direction == 'ltr' ? {left: 'chevron-left', right: 'chevron-right'} : {left: 'chevron-right', right: 'chevron-left'};\r\n\r\n var html = '';\r\n html += '';\r\n html += '';\r\n\r\n // add empty cell for week number\r\n if (this.showWeekNumbers || this.showISOWeekNumbers)\r\n html += '';\r\n\r\n if ((!minDate || minDate.isBefore(calendar.firstDay)) && (!this.linkedCalendars || side == 'left')) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n\r\n var dateHtml = this.locale.monthNames[calendar[1][1].month()] + calendar[1][1].format(\" YYYY\");\r\n\r\n if (this.showDropdowns) {\r\n var currentMonth = calendar[1][1].month();\r\n var currentYear = calendar[1][1].year();\r\n var maxYear = (maxDate && maxDate.year()) || (currentYear + 5);\r\n var minYear = (minDate && minDate.year()) || (currentYear - 50);\r\n var inMinYear = currentYear == minYear;\r\n var inMaxYear = currentYear == maxYear;\r\n\r\n var monthHtml = '\";\r\n\r\n var yearHtml = '';\r\n\r\n dateHtml = monthHtml + yearHtml;\r\n }\r\n\r\n html += '';\r\n if ((!maxDate || maxDate.isAfter(calendar.lastDay)) && (!this.linkedCalendars || side == 'right' || this.singleDatePicker)) {\r\n html += '';\r\n } else {\r\n html += '';\r\n }\r\n\r\n html += '';\r\n html += '';\r\n\r\n // add week number label\r\n if (this.showWeekNumbers || this.showISOWeekNumbers)\r\n html += '';\r\n\r\n $.each(this.locale.daysOfWeek, function(index, dayOfWeek) {\r\n html += '';\r\n });\r\n\r\n html += '';\r\n html += '';\r\n html += '';\r\n\r\n //adjust maxDate to reflect the dateLimit setting in order to\r\n //grey out end dates beyond the dateLimit\r\n if (this.endDate == null && this.dateLimit) {\r\n var maxLimit = this.startDate.clone().add(this.dateLimit).endOf('day');\r\n if (!maxDate || maxLimit.isBefore(maxDate)) {\r\n maxDate = maxLimit;\r\n }\r\n }\r\n\r\n for (var row = 0; row < 6; row++) {\r\n html += '';\r\n\r\n // add week number\r\n if (this.showWeekNumbers)\r\n html += '';\r\n else if (this.showISOWeekNumbers)\r\n html += '';\r\n\r\n for (var col = 0; col < 7; col++) {\r\n\r\n var classes = [];\r\n\r\n //highlight today's date\r\n if (calendar[row][col].isSame(new Date(), \"day\"))\r\n classes.push('today');\r\n\r\n //highlight weekends\r\n if (calendar[row][col].isoWeekday() > 5)\r\n classes.push('weekend');\r\n\r\n //grey out the dates in other months displayed at beginning and end of this calendar\r\n if (calendar[row][col].month() != calendar[1][1].month())\r\n classes.push('off');\r\n\r\n //don't allow selection of dates before the minimum date\r\n if (this.minDate && calendar[row][col].isBefore(this.minDate, 'day'))\r\n classes.push('off', 'disabled');\r\n\r\n //don't allow selection of dates after the maximum date\r\n if (maxDate && calendar[row][col].isAfter(maxDate, 'day'))\r\n classes.push('off', 'disabled');\r\n\r\n //don't allow selection of date if a custom function decides it's invalid\r\n if (this.isInvalidDate(calendar[row][col]))\r\n classes.push('off', 'disabled');\r\n\r\n //highlight the currently selected start date\r\n if (calendar[row][col].format('YYYY-MM-DD') == this.startDate.format('YYYY-MM-DD'))\r\n classes.push('active', 'start-date');\r\n\r\n //highlight the currently selected end date\r\n if (this.endDate != null && calendar[row][col].format('YYYY-MM-DD') == this.endDate.format('YYYY-MM-DD'))\r\n classes.push('active', 'end-date');\r\n\r\n //highlight dates in-between the selected dates\r\n if (this.endDate != null && calendar[row][col] > this.startDate && calendar[row][col] < this.endDate)\r\n classes.push('in-range');\r\n\r\n //apply custom classes for this date\r\n var isCustom = this.isCustomDate(calendar[row][col]);\r\n if (isCustom !== false) {\r\n if (typeof isCustom === 'string')\r\n classes.push(isCustom);\r\n else\r\n Array.prototype.push.apply(classes, isCustom);\r\n }\r\n\r\n var cname = '', disabled = false;\r\n for (var i = 0; i < classes.length; i++) {\r\n cname += classes[i] + ' ';\r\n if (classes[i] == 'disabled')\r\n disabled = true;\r\n }\r\n if (!disabled)\r\n cname += 'available';\r\n\r\n html += '';\r\n\r\n }\r\n html += '';\r\n }\r\n\r\n html += '';\r\n html += '
          ' + dateHtml + '
          ' + this.locale.weekLabel + '' + dayOfWeek + '
          ' + calendar[row][0].week() + '' + calendar[row][0].isoWeek() + '' + calendar[row][col].date() + '
          ';\r\n\r\n this.container.find('.calendar.' + side + ' .calendar-table').html(html);\r\n\r\n },\r\n\r\n renderTimePicker: function(side) {\r\n\r\n // Don't bother updating the time picker if it's currently disabled\r\n // because an end date hasn't been clicked yet\r\n if (side == 'right' && !this.endDate) return;\r\n\r\n var html, selected, minDate, maxDate = this.maxDate;\r\n\r\n if (this.dateLimit && (!this.maxDate || this.startDate.clone().add(this.dateLimit).isAfter(this.maxDate)))\r\n maxDate = this.startDate.clone().add(this.dateLimit);\r\n\r\n if (side == 'left') {\r\n selected = this.startDate.clone();\r\n minDate = this.minDate;\r\n } else if (side == 'right') {\r\n selected = this.endDate.clone();\r\n minDate = this.startDate;\r\n\r\n //Preserve the time already selected\r\n var timeSelector = this.container.find('.calendar.right .calendar-time div');\r\n if (timeSelector.html() != '') {\r\n\r\n selected.hour(timeSelector.find('.hourselect option:selected').val() || selected.hour());\r\n selected.minute(timeSelector.find('.minuteselect option:selected').val() || selected.minute());\r\n selected.second(timeSelector.find('.secondselect option:selected').val() || selected.second());\r\n\r\n if (!this.timePicker24Hour) {\r\n var ampm = timeSelector.find('.ampmselect option:selected').val();\r\n if (ampm === 'PM' && selected.hour() < 12)\r\n selected.hour(selected.hour() + 12);\r\n if (ampm === 'AM' && selected.hour() === 12)\r\n selected.hour(0);\r\n }\r\n\r\n }\r\n\r\n if (selected.isBefore(this.startDate))\r\n selected = this.startDate.clone();\r\n\r\n if (maxDate && selected.isAfter(maxDate))\r\n selected = maxDate.clone();\r\n\r\n }\r\n\r\n //\r\n // hours\r\n //\r\n\r\n html = ' ';\r\n\r\n //\r\n // minutes\r\n //\r\n\r\n html += ': ';\r\n\r\n //\r\n // seconds\r\n //\r\n\r\n if (this.timePickerSeconds) {\r\n html += ': ';\r\n }\r\n\r\n //\r\n // AM/PM\r\n //\r\n\r\n if (!this.timePicker24Hour) {\r\n html += '';\r\n }\r\n\r\n this.container.find('.calendar.' + side + ' .calendar-time div').html(html);\r\n\r\n },\r\n\r\n updateFormInputs: function() {\r\n\r\n //ignore mouse movements while an above-calendar text input has focus\r\n if (this.container.find('input[name=daterangepicker_start]').is(\":focus\") || this.container.find('input[name=daterangepicker_end]').is(\":focus\"))\r\n return;\r\n\r\n this.container.find('input[name=daterangepicker_start]').val(this.startDate.format(this.locale.format));\r\n if (this.endDate)\r\n this.container.find('input[name=daterangepicker_end]').val(this.endDate.format(this.locale.format));\r\n\r\n if (this.singleDatePicker || (this.endDate && (this.startDate.isBefore(this.endDate) || this.startDate.isSame(this.endDate)))) {\r\n this.container.find('button.applyBtn').removeAttr('disabled');\r\n } else {\r\n this.container.find('button.applyBtn').attr('disabled', 'disabled');\r\n }\r\n\r\n },\r\n\r\n move: function() {\r\n var parentOffset = { top: 0, left: 0 },\r\n containerTop;\r\n var parentRightEdge = $(window).width();\r\n if (!this.parentEl.is('body')) {\r\n parentOffset = {\r\n top: this.parentEl.offset().top - this.parentEl.scrollTop(),\r\n left: this.parentEl.offset().left - this.parentEl.scrollLeft()\r\n };\r\n parentRightEdge = this.parentEl[0].clientWidth + this.parentEl.offset().left;\r\n }\r\n\r\n if (this.drops == 'up')\r\n containerTop = this.element.offset().top - this.container.outerHeight() - parentOffset.top;\r\n else\r\n containerTop = this.element.offset().top + this.element.outerHeight() - parentOffset.top;\r\n this.container[this.drops == 'up' ? 'addClass' : 'removeClass']('dropup');\r\n\r\n if (this.opens == 'left') {\r\n this.container.css({\r\n top: containerTop,\r\n right: parentRightEdge - this.element.offset().left - this.element.outerWidth(),\r\n left: 'auto'\r\n });\r\n if (this.container.offset().left < 0) {\r\n this.container.css({\r\n right: 'auto',\r\n left: 9\r\n });\r\n }\r\n } else if (this.opens == 'center') {\r\n this.container.css({\r\n top: containerTop,\r\n left: this.element.offset().left - parentOffset.left + this.element.outerWidth() / 2\r\n - this.container.outerWidth() / 2,\r\n right: 'auto'\r\n });\r\n if (this.container.offset().left < 0) {\r\n this.container.css({\r\n right: 'auto',\r\n left: 9\r\n });\r\n }\r\n } else {\r\n this.container.css({\r\n top: containerTop,\r\n left: this.element.offset().left - parentOffset.left,\r\n right: 'auto'\r\n });\r\n if (this.container.offset().left + this.container.outerWidth() > $(window).width()) {\r\n this.container.css({\r\n left: 'auto',\r\n right: 0\r\n });\r\n }\r\n }\r\n },\r\n\r\n show: function(e) {\r\n if (this.isShowing) return;\r\n\r\n // Create a click proxy that is private to this instance of datepicker, for unbinding\r\n this._outsideClickProxy = $.proxy(function(e) { this.outsideClick(e); }, this);\r\n\r\n // Bind global datepicker mousedown for hiding and\r\n $(document)\r\n .on('mousedown.daterangepicker', this._outsideClickProxy)\r\n // also support mobile devices\r\n .on('touchend.daterangepicker', this._outsideClickProxy)\r\n // also explicitly play nice with Bootstrap dropdowns, which stopPropagation when clicking them\r\n .on('click.daterangepicker', '[data-toggle=dropdown]', this._outsideClickProxy)\r\n // and also close when focus changes to outside the picker (eg. tabbing between controls)\r\n .on('focusin.daterangepicker', this._outsideClickProxy);\r\n\r\n // Reposition the picker if the window is resized while it's open\r\n $(window).on('resize.daterangepicker', $.proxy(function(e) { this.move(e); }, this));\r\n\r\n this.oldStartDate = this.startDate.clone();\r\n this.oldEndDate = this.endDate.clone();\r\n this.previousRightTime = this.endDate.clone();\r\n\r\n this.updateView();\r\n this.container.show();\r\n this.move();\r\n this.element.trigger('show.daterangepicker', this);\r\n this.isShowing = true;\r\n },\r\n\r\n hide: function(e) {\r\n if (!this.isShowing) return;\r\n\r\n //incomplete date selection, revert to last values\r\n if (!this.endDate) {\r\n this.startDate = this.oldStartDate.clone();\r\n this.endDate = this.oldEndDate.clone();\r\n }\r\n\r\n //if a new date range was selected, invoke the user callback function\r\n if (!this.startDate.isSame(this.oldStartDate) || !this.endDate.isSame(this.oldEndDate))\r\n this.callback(this.startDate, this.endDate, this.chosenLabel);\r\n\r\n //if picker is attached to a text input, update it\r\n this.updateElement();\r\n\r\n $(document).off('.daterangepicker');\r\n $(window).off('.daterangepicker');\r\n this.container.hide();\r\n this.element.trigger('hide.daterangepicker', this);\r\n this.isShowing = false;\r\n },\r\n\r\n toggle: function(e) {\r\n if (this.isShowing) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n },\r\n\r\n outsideClick: function(e) {\r\n var target = $(e.target);\r\n // if the page is clicked anywhere except within the daterangerpicker/button\r\n // itself then call this.hide()\r\n if (\r\n // ie modal dialog fix\r\n e.type == \"focusin\" ||\r\n target.closest(this.element).length ||\r\n target.closest(this.container).length ||\r\n target.closest('.calendar-table').length\r\n ) return;\r\n this.hide();\r\n this.element.trigger('outsideClick.daterangepicker', this);\r\n },\r\n\r\n showCalendars: function() {\r\n this.container.addClass('show-calendar');\r\n this.move();\r\n this.element.trigger('showCalendar.daterangepicker', this);\r\n },\r\n\r\n hideCalendars: function() {\r\n this.container.removeClass('show-calendar');\r\n this.element.trigger('hideCalendar.daterangepicker', this);\r\n },\r\n\r\n hoverRange: function(e) {\r\n\r\n //ignore mouse movements while an above-calendar text input has focus\r\n if (this.container.find('input[name=daterangepicker_start]').is(\":focus\") || this.container.find('input[name=daterangepicker_end]').is(\":focus\"))\r\n return;\r\n\r\n var label = e.target.getAttribute('data-range-key');\r\n\r\n if (label == this.locale.customRangeLabel) {\r\n this.updateView();\r\n } else {\r\n var dates = this.ranges[label];\r\n this.container.find('input[name=daterangepicker_start]').val(dates[0].format(this.locale.format));\r\n this.container.find('input[name=daterangepicker_end]').val(dates[1].format(this.locale.format));\r\n }\r\n\r\n },\r\n\r\n clickRange: function(e) {\r\n var label = e.target.getAttribute('data-range-key');\r\n this.chosenLabel = label;\r\n if (label == this.locale.customRangeLabel) {\r\n this.showCalendars();\r\n } else {\r\n var dates = this.ranges[label];\r\n this.startDate = dates[0];\r\n this.endDate = dates[1];\r\n\r\n if (!this.timePicker) {\r\n this.startDate.startOf('day');\r\n this.endDate.endOf('day');\r\n }\r\n\r\n if (!this.alwaysShowCalendars)\r\n this.hideCalendars();\r\n this.clickApply();\r\n }\r\n },\r\n\r\n clickPrev: function(e) {\r\n var cal = $(e.target).parents('.calendar');\r\n if (cal.hasClass('left')) {\r\n this.leftCalendar.month.subtract(1, 'month');\r\n if (this.linkedCalendars)\r\n this.rightCalendar.month.subtract(1, 'month');\r\n } else {\r\n this.rightCalendar.month.subtract(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n clickNext: function(e) {\r\n var cal = $(e.target).parents('.calendar');\r\n if (cal.hasClass('left')) {\r\n this.leftCalendar.month.add(1, 'month');\r\n } else {\r\n this.rightCalendar.month.add(1, 'month');\r\n if (this.linkedCalendars)\r\n this.leftCalendar.month.add(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n hoverDate: function(e) {\r\n\r\n //ignore mouse movements while an above-calendar text input has focus\r\n //if (this.container.find('input[name=daterangepicker_start]').is(\":focus\") || this.container.find('input[name=daterangepicker_end]').is(\":focus\"))\r\n // return;\r\n\r\n //ignore dates that can't be selected\r\n if (!$(e.target).hasClass('available')) return;\r\n\r\n //have the text inputs above calendars reflect the date being hovered over\r\n var title = $(e.target).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(e.target).parents('.calendar');\r\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n\r\n if (this.endDate && !this.container.find('input[name=daterangepicker_start]').is(\":focus\")) {\r\n this.container.find('input[name=daterangepicker_start]').val(date.format(this.locale.format));\r\n } else if (!this.endDate && !this.container.find('input[name=daterangepicker_end]').is(\":focus\")) {\r\n this.container.find('input[name=daterangepicker_end]').val(date.format(this.locale.format));\r\n }\r\n\r\n //highlight the dates between the start date and the date being hovered as a potential end date\r\n var leftCalendar = this.leftCalendar;\r\n var rightCalendar = this.rightCalendar;\r\n var startDate = this.startDate;\r\n if (!this.endDate) {\r\n this.container.find('.calendar tbody td').each(function(index, el) {\r\n\r\n //skip week numbers, only look at dates\r\n if ($(el).hasClass('week')) return;\r\n\r\n var title = $(el).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(el).parents('.calendar');\r\n var dt = cal.hasClass('left') ? leftCalendar.calendar[row][col] : rightCalendar.calendar[row][col];\r\n\r\n if ((dt.isAfter(startDate) && dt.isBefore(date)) || dt.isSame(date, 'day')) {\r\n $(el).addClass('in-range');\r\n } else {\r\n $(el).removeClass('in-range');\r\n }\r\n\r\n });\r\n }\r\n\r\n },\r\n\r\n clickDate: function(e) {\r\n\r\n if (!$(e.target).hasClass('available')) return;\r\n\r\n var title = $(e.target).attr('data-title');\r\n var row = title.substr(1, 1);\r\n var col = title.substr(3, 1);\r\n var cal = $(e.target).parents('.calendar');\r\n var date = cal.hasClass('left') ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n\r\n //\r\n // this function needs to do a few things:\r\n // * alternate between selecting a start and end date for the range,\r\n // * if the time picker is enabled, apply the hour/minute/second from the select boxes to the clicked date\r\n // * if autoapply is enabled, and an end date was chosen, apply the selection\r\n // * if single date picker mode, and time picker isn't enabled, apply the selection immediately\r\n // * if one of the inputs above the calendars was focused, cancel that manual input\r\n //\r\n\r\n if (this.endDate || date.isBefore(this.startDate, 'day')) { //picking start\r\n if (this.timePicker) {\r\n var hour = parseInt(this.container.find('.left .hourselect').val(), 10);\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.left .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n var minute = parseInt(this.container.find('.left .minuteselect').val(), 10);\r\n var second = this.timePickerSeconds ? parseInt(this.container.find('.left .secondselect').val(), 10) : 0;\r\n date = date.clone().hour(hour).minute(minute).second(second);\r\n }\r\n this.endDate = null;\r\n this.setStartDate(date.clone());\r\n } else if (!this.endDate && date.isBefore(this.startDate)) {\r\n //special case: clicking the same date for start/end,\r\n //but the time of the end date is before the start date\r\n this.setEndDate(this.startDate.clone());\r\n } else { // picking end\r\n if (this.timePicker) {\r\n var hour = parseInt(this.container.find('.right .hourselect').val(), 10);\r\n if (!this.timePicker24Hour) {\r\n var ampm = this.container.find('.right .ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n var minute = parseInt(this.container.find('.right .minuteselect').val(), 10);\r\n var second = this.timePickerSeconds ? parseInt(this.container.find('.right .secondselect').val(), 10) : 0;\r\n date = date.clone().hour(hour).minute(minute).second(second);\r\n }\r\n this.setEndDate(date.clone());\r\n if (this.autoApply) {\r\n this.calculateChosenLabel();\r\n this.clickApply();\r\n }\r\n }\r\n\r\n if (this.singleDatePicker) {\r\n this.setEndDate(this.startDate);\r\n if (!this.timePicker)\r\n this.clickApply();\r\n }\r\n\r\n this.updateView();\r\n\r\n //This is to cancel the blur event handler if the mouse was in one of the inputs\r\n e.stopPropagation();\r\n\r\n },\r\n\r\n calculateChosenLabel: function () {\r\n var customRange = true;\r\n var i = 0;\r\n for (var range in this.ranges) {\r\n if (this.timePicker) {\r\n var format = this.timePickerSeconds ? \"YYYY-MM-DD hh:mm:ss\" : \"YYYY-MM-DD hh:mm\";\r\n //ignore times when comparing dates if time picker seconds is not enabled\r\n if (this.startDate.format(format) == this.ranges[range][0].format(format) && this.endDate.format(format) == this.ranges[range][1].format(format)) {\r\n customRange = false;\r\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();\r\n break;\r\n }\r\n } else {\r\n //ignore times when comparing dates if time picker is not enabled\r\n if (this.startDate.format('YYYY-MM-DD') == this.ranges[range][0].format('YYYY-MM-DD') && this.endDate.format('YYYY-MM-DD') == this.ranges[range][1].format('YYYY-MM-DD')) {\r\n customRange = false;\r\n this.chosenLabel = this.container.find('.ranges li:eq(' + i + ')').addClass('active').html();\r\n break;\r\n }\r\n }\r\n i++;\r\n }\r\n if (customRange) {\r\n if (this.showCustomRangeLabel) {\r\n this.chosenLabel = this.container.find('.ranges li:last').addClass('active').html();\r\n } else {\r\n this.chosenLabel = null;\r\n }\r\n this.showCalendars();\r\n }\r\n },\r\n\r\n clickApply: function(e) {\r\n this.hide();\r\n this.element.trigger('apply.daterangepicker', this);\r\n },\r\n\r\n clickCancel: function(e) {\r\n this.startDate = this.oldStartDate;\r\n this.endDate = this.oldEndDate;\r\n this.hide();\r\n this.element.trigger('cancel.daterangepicker', this);\r\n },\r\n\r\n monthOrYearChanged: function(e) {\r\n var isLeft = $(e.target).closest('.calendar').hasClass('left'),\r\n leftOrRight = isLeft ? 'left' : 'right',\r\n cal = this.container.find('.calendar.'+leftOrRight);\r\n\r\n // Month must be Number for new moment versions\r\n var month = parseInt(cal.find('.monthselect').val(), 10);\r\n var year = cal.find('.yearselect').val();\r\n\r\n if (!isLeft) {\r\n if (year < this.startDate.year() || (year == this.startDate.year() && month < this.startDate.month())) {\r\n month = this.startDate.month();\r\n year = this.startDate.year();\r\n }\r\n }\r\n\r\n if (this.minDate) {\r\n if (year < this.minDate.year() || (year == this.minDate.year() && month < this.minDate.month())) {\r\n month = this.minDate.month();\r\n year = this.minDate.year();\r\n }\r\n }\r\n\r\n if (this.maxDate) {\r\n if (year > this.maxDate.year() || (year == this.maxDate.year() && month > this.maxDate.month())) {\r\n month = this.maxDate.month();\r\n year = this.maxDate.year();\r\n }\r\n }\r\n\r\n if (isLeft) {\r\n this.leftCalendar.month.month(month).year(year);\r\n if (this.linkedCalendars)\r\n this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\r\n } else {\r\n this.rightCalendar.month.month(month).year(year);\r\n if (this.linkedCalendars)\r\n this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\r\n }\r\n this.updateCalendars();\r\n },\r\n\r\n timeChanged: function(e) {\r\n\r\n var cal = $(e.target).closest('.calendar'),\r\n isLeft = cal.hasClass('left');\r\n\r\n var hour = parseInt(cal.find('.hourselect').val(), 10);\r\n var minute = parseInt(cal.find('.minuteselect').val(), 10);\r\n var second = this.timePickerSeconds ? parseInt(cal.find('.secondselect').val(), 10) : 0;\r\n\r\n if (!this.timePicker24Hour) {\r\n var ampm = cal.find('.ampmselect').val();\r\n if (ampm === 'PM' && hour < 12)\r\n hour += 12;\r\n if (ampm === 'AM' && hour === 12)\r\n hour = 0;\r\n }\r\n\r\n if (isLeft) {\r\n var start = this.startDate.clone();\r\n start.hour(hour);\r\n start.minute(minute);\r\n start.second(second);\r\n this.setStartDate(start);\r\n if (this.singleDatePicker) {\r\n this.endDate = this.startDate.clone();\r\n } else if (this.endDate && this.endDate.format('YYYY-MM-DD') == start.format('YYYY-MM-DD') && this.endDate.isBefore(start)) {\r\n this.setEndDate(start.clone());\r\n }\r\n } else if (this.endDate) {\r\n var end = this.endDate.clone();\r\n end.hour(hour);\r\n end.minute(minute);\r\n end.second(second);\r\n this.setEndDate(end);\r\n }\r\n\r\n //update the calendars so all clickable dates reflect the new time component\r\n this.updateCalendars();\r\n\r\n //update the form inputs above the calendars with the new time\r\n this.updateFormInputs();\r\n\r\n //re-render the time pickers because changing one selection can affect what's enabled in another\r\n this.renderTimePicker('left');\r\n this.renderTimePicker('right');\r\n\r\n },\r\n\r\n formInputsChanged: function(e) {\r\n var isRight = $(e.target).closest('.calendar').hasClass('right');\r\n var start = moment(this.container.find('input[name=\"daterangepicker_start\"]').val(), this.locale.format);\r\n var end = moment(this.container.find('input[name=\"daterangepicker_end\"]').val(), this.locale.format);\r\n\r\n if (start.isValid() && end.isValid()) {\r\n\r\n if (isRight && end.isBefore(start))\r\n start = end.clone();\r\n\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n\r\n if (isRight) {\r\n this.container.find('input[name=\"daterangepicker_start\"]').val(this.startDate.format(this.locale.format));\r\n } else {\r\n this.container.find('input[name=\"daterangepicker_end\"]').val(this.endDate.format(this.locale.format));\r\n }\r\n\r\n }\r\n\r\n this.updateView();\r\n },\r\n\r\n formInputsFocused: function(e) {\r\n\r\n // Highlight the focused input\r\n this.container.find('input[name=\"daterangepicker_start\"], input[name=\"daterangepicker_end\"]').removeClass('active');\r\n $(e.target).addClass('active');\r\n\r\n // Set the state such that if the user goes back to using a mouse, \r\n // the calendars are aware we're selecting the end of the range, not\r\n // the start. This allows someone to edit the end of a date range without\r\n // re-selecting the beginning, by clicking on the end date input then\r\n // using the calendar.\r\n var isRight = $(e.target).closest('.calendar').hasClass('right');\r\n if (isRight) {\r\n this.endDate = null;\r\n this.setStartDate(this.startDate.clone());\r\n this.updateView();\r\n }\r\n\r\n },\r\n\r\n formInputsBlurred: function(e) {\r\n\r\n // this function has one purpose right now: if you tab from the first\r\n // text input to the second in the UI, the endDate is nulled so that\r\n // you can click another, but if you tab out without clicking anything\r\n // or changing the input value, the old endDate should be retained\r\n\r\n if (!this.endDate) {\r\n var val = this.container.find('input[name=\"daterangepicker_end\"]').val();\r\n var end = moment(val, this.locale.format);\r\n if (end.isValid()) {\r\n this.setEndDate(end);\r\n this.updateView();\r\n }\r\n }\r\n\r\n },\r\n\r\n formInputsKeydown: function(e) {\r\n // This function ensures that if the 'enter' key was pressed in the input, then the calendars\r\n // are updated with the startDate and endDate.\r\n // This behaviour is automatic in Chrome/Firefox/Edge but not in IE 11 hence why this exists.\r\n // Other browsers and versions of IE are untested and the behaviour is unknown.\r\n if (e.keyCode === 13) {\r\n // Prevent the calendar from being updated twice on Chrome/Firefox/Edge\r\n e.preventDefault(); \r\n this.formInputsChanged(e);\r\n }\r\n },\r\n\r\n\r\n elementChanged: function() {\r\n if (!this.element.is('input')) return;\r\n if (!this.element.val().length) return;\r\n\r\n var dateString = this.element.val().split(this.locale.separator),\r\n start = null,\r\n end = null;\r\n\r\n if (dateString.length === 2) {\r\n start = moment(dateString[0], this.locale.format);\r\n end = moment(dateString[1], this.locale.format);\r\n }\r\n\r\n if (this.singleDatePicker || start === null || end === null) {\r\n start = moment(this.element.val(), this.locale.format);\r\n end = start;\r\n }\r\n\r\n if (!start.isValid() || !end.isValid()) return;\r\n\r\n this.setStartDate(start);\r\n this.setEndDate(end);\r\n this.updateView();\r\n },\r\n\r\n keydown: function(e) {\r\n //hide on tab or enter\r\n if ((e.keyCode === 9) || (e.keyCode === 13)) {\r\n this.hide();\r\n }\r\n\r\n //hide on esc and prevent propagation\r\n if (e.keyCode === 27) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.hide();\r\n }\r\n },\r\n\r\n updateElement: function() {\r\n if (this.element.is('input') && !this.singleDatePicker && this.autoUpdateInput) {\r\n this.element.val(this.startDate.format(this.locale.format) + this.locale.separator + this.endDate.format(this.locale.format));\r\n this.element.trigger('change');\r\n } else if (this.element.is('input') && this.autoUpdateInput) {\r\n this.element.val(this.startDate.format(this.locale.format));\r\n this.element.trigger('change');\r\n }\r\n },\r\n\r\n remove: function() {\r\n this.container.remove();\r\n this.element.off('.daterangepicker');\r\n this.element.removeData();\r\n }\r\n\r\n };\r\n\r\n $.fn.daterangepicker = function(options, callback) {\r\n var implementOptions = $.extend(true, {}, $.fn.daterangepicker.defaultOptions, options);\r\n this.each(function() {\r\n var el = $(this);\r\n if (el.data('daterangepicker'))\r\n el.data('daterangepicker').remove();\r\n el.data('daterangepicker', new DateRangePicker(el, implementOptions, callback));\r\n });\r\n return this;\r\n };\r\n\r\n return DateRangePicker;\r\n\r\n}));\r\n","(function (global, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(['module', 'select'], factory);\r\n } else if (typeof exports !== \"undefined\") {\r\n factory(module, require('select'));\r\n } else {\r\n var mod = {\r\n exports: {}\r\n };\r\n factory(mod, global.select);\r\n global.clipboardAction = mod.exports;\r\n }\r\n})(this, function (module, _select) {\r\n 'use strict';\r\n\r\n var _select2 = _interopRequireDefault(_select);\r\n\r\n function _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n default: obj\r\n };\r\n }\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\r\n return typeof obj;\r\n } : function (obj) {\r\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\r\n };\r\n\r\n function _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n }\r\n }\r\n\r\n var _createClass = function () {\r\n function defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) descriptor.writable = true;\r\n Object.defineProperty(target, descriptor.key, descriptor);\r\n }\r\n }\r\n\r\n return function (Constructor, protoProps, staticProps) {\r\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\r\n if (staticProps) defineProperties(Constructor, staticProps);\r\n return Constructor;\r\n };\r\n }();\r\n\r\n var ClipboardAction = function () {\r\n /**\r\n * @param {Object} options\r\n */\r\n function ClipboardAction(options) {\r\n _classCallCheck(this, ClipboardAction);\r\n\r\n this.resolveOptions(options);\r\n this.initSelection();\r\n }\r\n\r\n /**\r\n * Defines base properties passed from constructor.\r\n * @param {Object} options\r\n */\r\n\r\n\r\n _createClass(ClipboardAction, [{\r\n key: 'resolveOptions',\r\n value: function resolveOptions() {\r\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n\r\n this.action = options.action;\r\n this.container = options.container;\r\n this.emitter = options.emitter;\r\n this.target = options.target;\r\n this.text = options.text;\r\n this.trigger = options.trigger;\r\n\r\n this.selectedText = '';\r\n }\r\n }, {\r\n key: 'initSelection',\r\n value: function initSelection() {\r\n if (this.text) {\r\n this.selectFake();\r\n } else if (this.target) {\r\n this.selectTarget();\r\n }\r\n }\r\n }, {\r\n key: 'selectFake',\r\n value: function selectFake() {\r\n var _this = this;\r\n\r\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\r\n\r\n this.removeFake();\r\n\r\n this.fakeHandlerCallback = function () {\r\n return _this.removeFake();\r\n };\r\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\r\n\r\n this.fakeElem = document.createElement('textarea');\r\n // Prevent zooming on iOS\r\n this.fakeElem.style.fontSize = '12pt';\r\n // Reset box model\r\n this.fakeElem.style.border = '0';\r\n this.fakeElem.style.padding = '0';\r\n this.fakeElem.style.margin = '0';\r\n // Move element out of screen horizontally\r\n this.fakeElem.style.position = 'absolute';\r\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\r\n // Move element to the same position vertically\r\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\r\n this.fakeElem.style.top = yPosition + 'px';\r\n\r\n this.fakeElem.setAttribute('readonly', '');\r\n this.fakeElem.value = this.text;\r\n\r\n this.container.appendChild(this.fakeElem);\r\n\r\n this.selectedText = (0, _select2.default)(this.fakeElem);\r\n this.copyText();\r\n }\r\n }, {\r\n key: 'removeFake',\r\n value: function removeFake() {\r\n if (this.fakeHandler) {\r\n this.container.removeEventListener('click', this.fakeHandlerCallback);\r\n this.fakeHandler = null;\r\n this.fakeHandlerCallback = null;\r\n }\r\n\r\n if (this.fakeElem) {\r\n this.container.removeChild(this.fakeElem);\r\n this.fakeElem = null;\r\n }\r\n }\r\n }, {\r\n key: 'selectTarget',\r\n value: function selectTarget() {\r\n this.selectedText = (0, _select2.default)(this.target);\r\n this.copyText();\r\n }\r\n }, {\r\n key: 'copyText',\r\n value: function copyText() {\r\n var succeeded = void 0;\r\n\r\n try {\r\n succeeded = document.execCommand(this.action);\r\n } catch (err) {\r\n succeeded = false;\r\n }\r\n\r\n this.handleResult(succeeded);\r\n }\r\n }, {\r\n key: 'handleResult',\r\n value: function handleResult(succeeded) {\r\n this.emitter.emit(succeeded ? 'success' : 'error', {\r\n action: this.action,\r\n text: this.selectedText,\r\n trigger: this.trigger,\r\n clearSelection: this.clearSelection.bind(this)\r\n });\r\n }\r\n }, {\r\n key: 'clearSelection',\r\n value: function clearSelection() {\r\n if (this.trigger) {\r\n this.trigger.focus();\r\n }\r\n\r\n window.getSelection().removeAllRanges();\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n this.removeFake();\r\n }\r\n }, {\r\n key: 'action',\r\n set: function set() {\r\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\r\n\r\n this._action = action;\r\n\r\n if (this._action !== 'copy' && this._action !== 'cut') {\r\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\r\n }\r\n },\r\n get: function get() {\r\n return this._action;\r\n }\r\n }, {\r\n key: 'target',\r\n set: function set(target) {\r\n if (target !== undefined) {\r\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\r\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\r\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\r\n }\r\n\r\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\r\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\r\n }\r\n\r\n this._target = target;\r\n } else {\r\n throw new Error('Invalid \"target\" value, use a valid Element');\r\n }\r\n }\r\n },\r\n get: function get() {\r\n return this._target;\r\n }\r\n }]);\r\n\r\n return ClipboardAction;\r\n }();\r\n\r\n module.exports = ClipboardAction;\r\n});","(function (global, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define(['module', './clipboard-action', 'tiny-emitter', 'good-listener'], factory);\r\n } else if (typeof exports !== \"undefined\") {\r\n factory(module, require('./clipboard-action'), require('tiny-emitter'), require('good-listener'));\r\n } else {\r\n var mod = {\r\n exports: {}\r\n };\r\n factory(mod, global.clipboardAction, global.tinyEmitter, global.goodListener);\r\n global.clipboard = mod.exports;\r\n }\r\n})(this, function (module, _clipboardAction, _tinyEmitter, _goodListener) {\r\n 'use strict';\r\n\r\n var _clipboardAction2 = _interopRequireDefault(_clipboardAction);\r\n\r\n var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\r\n\r\n var _goodListener2 = _interopRequireDefault(_goodListener);\r\n\r\n function _interopRequireDefault(obj) {\r\n return obj && obj.__esModule ? obj : {\r\n default: obj\r\n };\r\n }\r\n\r\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\r\n return typeof obj;\r\n } : function (obj) {\r\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\r\n };\r\n\r\n function _classCallCheck(instance, Constructor) {\r\n if (!(instance instanceof Constructor)) {\r\n throw new TypeError(\"Cannot call a class as a function\");\r\n }\r\n }\r\n\r\n var _createClass = function () {\r\n function defineProperties(target, props) {\r\n for (var i = 0; i < props.length; i++) {\r\n var descriptor = props[i];\r\n descriptor.enumerable = descriptor.enumerable || false;\r\n descriptor.configurable = true;\r\n if (\"value\" in descriptor) descriptor.writable = true;\r\n Object.defineProperty(target, descriptor.key, descriptor);\r\n }\r\n }\r\n\r\n return function (Constructor, protoProps, staticProps) {\r\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\r\n if (staticProps) defineProperties(Constructor, staticProps);\r\n return Constructor;\r\n };\r\n }();\r\n\r\n function _possibleConstructorReturn(self, call) {\r\n if (!self) {\r\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\r\n }\r\n\r\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\r\n }\r\n\r\n function _inherits(subClass, superClass) {\r\n if (typeof superClass !== \"function\" && superClass !== null) {\r\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\r\n }\r\n\r\n subClass.prototype = Object.create(superClass && superClass.prototype, {\r\n constructor: {\r\n value: subClass,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true\r\n }\r\n });\r\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\r\n }\r\n\r\n var Clipboard = function (_Emitter) {\r\n _inherits(Clipboard, _Emitter);\r\n\r\n /**\r\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\r\n * @param {Object} options\r\n */\r\n function Clipboard(trigger, options) {\r\n _classCallCheck(this, Clipboard);\r\n\r\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\r\n\r\n _this.resolveOptions(options);\r\n _this.listenClick(trigger);\r\n return _this;\r\n }\r\n\r\n /**\r\n * Defines if attributes would be resolved using internal setter functions\r\n * or custom functions that were passed in the constructor.\r\n * @param {Object} options\r\n */\r\n\r\n\r\n _createClass(Clipboard, [{\r\n key: 'resolveOptions',\r\n value: function resolveOptions() {\r\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\r\n\r\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\r\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\r\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\r\n this.container = _typeof(options.container) === 'object' ? options.container : document.body;\r\n }\r\n }, {\r\n key: 'listenClick',\r\n value: function listenClick(trigger) {\r\n var _this2 = this;\r\n\r\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\r\n return _this2.onClick(e);\r\n });\r\n }\r\n }, {\r\n key: 'onClick',\r\n value: function onClick(e) {\r\n var trigger = e.delegateTarget || e.currentTarget;\r\n\r\n if (this.clipboardAction) {\r\n this.clipboardAction = null;\r\n }\r\n\r\n this.clipboardAction = new _clipboardAction2.default({\r\n action: this.action(trigger),\r\n target: this.target(trigger),\r\n text: this.text(trigger),\r\n container: this.container,\r\n trigger: trigger,\r\n emitter: this\r\n });\r\n }\r\n }, {\r\n key: 'defaultAction',\r\n value: function defaultAction(trigger) {\r\n return getAttributeValue('action', trigger);\r\n }\r\n }, {\r\n key: 'defaultTarget',\r\n value: function defaultTarget(trigger) {\r\n var selector = getAttributeValue('target', trigger);\r\n\r\n if (selector) {\r\n return document.querySelector(selector);\r\n }\r\n }\r\n }, {\r\n key: 'defaultText',\r\n value: function defaultText(trigger) {\r\n return getAttributeValue('text', trigger);\r\n }\r\n }, {\r\n key: 'destroy',\r\n value: function destroy() {\r\n this.listener.destroy();\r\n\r\n if (this.clipboardAction) {\r\n this.clipboardAction.destroy();\r\n this.clipboardAction = null;\r\n }\r\n }\r\n }], [{\r\n key: 'isSupported',\r\n value: function isSupported() {\r\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\r\n\r\n var actions = typeof action === 'string' ? [action] : action;\r\n var support = !!document.queryCommandSupported;\r\n\r\n actions.forEach(function (action) {\r\n support = support && !!document.queryCommandSupported(action);\r\n });\r\n\r\n return support;\r\n }\r\n }]);\r\n\r\n return Clipboard;\r\n }(_tinyEmitter2.default);\r\n\r\n /**\r\n * Helper function to retrieve attribute value.\r\n * @param {String} suffix\r\n * @param {Element} element\r\n */\r\n function getAttributeValue(suffix, element) {\r\n var attribute = 'data-clipboard-' + suffix;\r\n\r\n if (!element.hasAttribute(attribute)) {\r\n return;\r\n }\r\n\r\n return element.getAttribute(attribute);\r\n }\r\n\r\n module.exports = Clipboard;\r\n});","var DOCUMENT_NODE_TYPE = 9;\r\n\r\n/**\r\n * A polyfill for Element.matches()\r\n */\r\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\r\n var proto = Element.prototype;\r\n\r\n proto.matches = proto.matchesSelector ||\r\n proto.mozMatchesSelector ||\r\n proto.msMatchesSelector ||\r\n proto.oMatchesSelector ||\r\n proto.webkitMatchesSelector;\r\n}\r\n\r\n/**\r\n * Finds the closest parent that matches a selector.\r\n *\r\n * @param {Element} element\r\n * @param {String} selector\r\n * @return {Function}\r\n */\r\nfunction closest (element, selector) {\r\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\r\n if (typeof element.matches === 'function' &&\r\n element.matches(selector)) {\r\n return element;\r\n }\r\n element = element.parentNode;\r\n }\r\n}\r\n\r\nmodule.exports = closest;\r\n","var closest = require('./closest');\r\n\r\n/**\r\n * Delegates event to a selector.\r\n *\r\n * @param {Element} element\r\n * @param {String} selector\r\n * @param {String} type\r\n * @param {Function} callback\r\n * @param {Boolean} useCapture\r\n * @return {Object}\r\n */\r\nfunction _delegate(element, selector, type, callback, useCapture) {\r\n var listenerFn = listener.apply(this, arguments);\r\n\r\n element.addEventListener(type, listenerFn, useCapture);\r\n\r\n return {\r\n destroy: function() {\r\n element.removeEventListener(type, listenerFn, useCapture);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Delegates event to a selector.\r\n *\r\n * @param {Element|String|Array} [elements]\r\n * @param {String} selector\r\n * @param {String} type\r\n * @param {Function} callback\r\n * @param {Boolean} useCapture\r\n * @return {Object}\r\n */\r\nfunction delegate(elements, selector, type, callback, useCapture) {\r\n // Handle the regular Element usage\r\n if (typeof elements.addEventListener === 'function') {\r\n return _delegate.apply(null, arguments);\r\n }\r\n\r\n // Handle Element-less usage, it defaults to global delegation\r\n if (typeof type === 'function') {\r\n // Use `document` as the first parameter, then apply arguments\r\n // This is a short way to .unshift `arguments` without running into deoptimizations\r\n return _delegate.bind(null, document).apply(null, arguments);\r\n }\r\n\r\n // Handle Selector-based usage\r\n if (typeof elements === 'string') {\r\n elements = document.querySelectorAll(elements);\r\n }\r\n\r\n // Handle Array-like based usage\r\n return Array.prototype.map.call(elements, function (element) {\r\n return _delegate(element, selector, type, callback, useCapture);\r\n });\r\n}\r\n\r\n/**\r\n * Finds closest match and invokes callback.\r\n *\r\n * @param {Element} element\r\n * @param {String} selector\r\n * @param {String} type\r\n * @param {Function} callback\r\n * @return {Function}\r\n */\r\nfunction listener(element, selector, type, callback) {\r\n return function(e) {\r\n e.delegateTarget = closest(e.target, selector);\r\n\r\n if (e.delegateTarget) {\r\n callback.call(element, e);\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = delegate;\r\n","/**\r\n * matchesSelector v2.0.2\r\n * matchesSelector( element, '.selector' )\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, strict: true, undef: true, unused: true */\r\n\r\n( function( window, factory ) {\r\n /*global define: false, module: false */\r\n 'use strict';\r\n // universal module definition\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // browser global\r\n window.matchesSelector = factory();\r\n }\r\n\r\n}( window, function factory() {\r\n 'use strict';\r\n\r\n var matchesMethod = ( function() {\r\n var ElemProto = window.Element.prototype;\r\n // check for the standard method name first\r\n if ( ElemProto.matches ) {\r\n return 'matches';\r\n }\r\n // check un-prefixed\r\n if ( ElemProto.matchesSelector ) {\r\n return 'matchesSelector';\r\n }\r\n // check vendor prefixes\r\n var prefixes = [ 'webkit', 'moz', 'ms', 'o' ];\r\n\r\n for ( var i=0; i < prefixes.length; i++ ) {\r\n var prefix = prefixes[i];\r\n var method = prefix + 'MatchesSelector';\r\n if ( ElemProto[ method ] ) {\r\n return method;\r\n }\r\n }\r\n })();\r\n\r\n return function matchesSelector( elem, selector ) {\r\n return elem[ matchesMethod ]( selector );\r\n };\r\n\r\n}));\r\n","/**\r\n * EvEmitter v1.1.0\r\n * Lil' event emitter\r\n * MIT License\r\n */\r\n\r\n/* jshint unused: true, undef: true, strict: true */\r\n\r\n( function( global, factory ) {\r\n // universal module definition\r\n /* jshint strict: false */ /* globals define, module, window */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD - RequireJS\r\n define( factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS - Browserify, Webpack\r\n module.exports = factory();\r\n } else {\r\n // Browser globals\r\n global.EvEmitter = factory();\r\n }\r\n\r\n}( typeof window != 'undefined' ? window : this, function() {\r\n\r\n\"use strict\";\r\n\r\nfunction EvEmitter() {}\r\n\r\nvar proto = EvEmitter.prototype;\r\n\r\nproto.on = function( eventName, listener ) {\r\n if ( !eventName || !listener ) {\r\n return;\r\n }\r\n // set events hash\r\n var events = this._events = this._events || {};\r\n // set listeners array\r\n var listeners = events[ eventName ] = events[ eventName ] || [];\r\n // only add once\r\n if ( listeners.indexOf( listener ) == -1 ) {\r\n listeners.push( listener );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.once = function( eventName, listener ) {\r\n if ( !eventName || !listener ) {\r\n return;\r\n }\r\n // add event\r\n this.on( eventName, listener );\r\n // set once flag\r\n // set onceEvents hash\r\n var onceEvents = this._onceEvents = this._onceEvents || {};\r\n // set onceListeners object\r\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\r\n // set flag\r\n onceListeners[ listener ] = true;\r\n\r\n return this;\r\n};\r\n\r\nproto.off = function( eventName, listener ) {\r\n var listeners = this._events && this._events[ eventName ];\r\n if ( !listeners || !listeners.length ) {\r\n return;\r\n }\r\n var index = listeners.indexOf( listener );\r\n if ( index != -1 ) {\r\n listeners.splice( index, 1 );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.emitEvent = function( eventName, args ) {\r\n var listeners = this._events && this._events[ eventName ];\r\n if ( !listeners || !listeners.length ) {\r\n return;\r\n }\r\n // copy over to avoid interference if .off() in listener\r\n listeners = listeners.slice(0);\r\n args = args || [];\r\n // once stuff\r\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\r\n\r\n for ( var i=0; i < listeners.length; i++ ) {\r\n var listener = listeners[i]\r\n var isOnce = onceListeners && onceListeners[ listener ];\r\n if ( isOnce ) {\r\n // remove listener\r\n // remove before trigger to prevent recursion\r\n this.off( eventName, listener );\r\n // unset once flag\r\n delete onceListeners[ listener ];\r\n }\r\n // trigger listener\r\n listener.apply( this, args );\r\n }\r\n\r\n return this;\r\n};\r\n\r\nproto.allOff = function() {\r\n delete this._events;\r\n delete this._onceEvents;\r\n};\r\n\r\nreturn EvEmitter;\r\n\r\n}));\r\n","/**\r\n * Fizzy UI utils v2.0.7\r\n * MIT license\r\n */\r\n\r\n/*jshint browser: true, undef: true, unused: true, strict: true */\r\n\r\n( function( window, factory ) {\r\n // universal module definition\r\n /*jshint strict: false */ /*globals define, module, require */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( [\r\n 'desandro-matches-selector/matches-selector'\r\n ], function( matchesSelector ) {\r\n return factory( window, matchesSelector );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('desandro-matches-selector')\r\n );\r\n } else {\r\n // browser global\r\n window.fizzyUIUtils = factory(\r\n window,\r\n window.matchesSelector\r\n );\r\n }\r\n\r\n}( window, function factory( window, matchesSelector ) {\r\n\r\n'use strict';\r\n\r\nvar utils = {};\r\n\r\n// ----- extend ----- //\r\n\r\n// extends objects\r\nutils.extend = function( a, b ) {\r\n for ( var prop in b ) {\r\n a[ prop ] = b[ prop ];\r\n }\r\n return a;\r\n};\r\n\r\n// ----- modulo ----- //\r\n\r\nutils.modulo = function( num, div ) {\r\n return ( ( num % div ) + div ) % div;\r\n};\r\n\r\n// ----- makeArray ----- //\r\n\r\nvar arraySlice = Array.prototype.slice;\r\n\r\n// turn element or nodeList into an array\r\nutils.makeArray = function( obj ) {\r\n if ( Array.isArray( obj ) ) {\r\n // use object if already an array\r\n return obj;\r\n }\r\n // return empty array if undefined or null. #6\r\n if ( obj === null || obj === undefined ) {\r\n return [];\r\n }\r\n\r\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\r\n if ( isArrayLike ) {\r\n // convert nodeList to array\r\n return arraySlice.call( obj );\r\n }\r\n\r\n // array of single index\r\n return [ obj ];\r\n};\r\n\r\n// ----- removeFrom ----- //\r\n\r\nutils.removeFrom = function( ary, obj ) {\r\n var index = ary.indexOf( obj );\r\n if ( index != -1 ) {\r\n ary.splice( index, 1 );\r\n }\r\n};\r\n\r\n// ----- getParent ----- //\r\n\r\nutils.getParent = function( elem, selector ) {\r\n while ( elem.parentNode && elem != document.body ) {\r\n elem = elem.parentNode;\r\n if ( matchesSelector( elem, selector ) ) {\r\n return elem;\r\n }\r\n }\r\n};\r\n\r\n// ----- getQueryElement ----- //\r\n\r\n// use element as selector string\r\nutils.getQueryElement = function( elem ) {\r\n if ( typeof elem == 'string' ) {\r\n return document.querySelector( elem );\r\n }\r\n return elem;\r\n};\r\n\r\n// ----- handleEvent ----- //\r\n\r\n// enable .ontype to trigger from .addEventListener( elem, 'type' )\r\nutils.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\n// ----- filterFindElements ----- //\r\n\r\nutils.filterFindElements = function( elems, selector ) {\r\n // make array of elems\r\n elems = utils.makeArray( elems );\r\n var ffElems = [];\r\n\r\n elems.forEach( function( elem ) {\r\n // check that elem is an actual element\r\n if ( !( elem instanceof HTMLElement ) ) {\r\n return;\r\n }\r\n // add elem if no selector\r\n if ( !selector ) {\r\n ffElems.push( elem );\r\n return;\r\n }\r\n // filter & find items if we have a selector\r\n // filter\r\n if ( matchesSelector( elem, selector ) ) {\r\n ffElems.push( elem );\r\n }\r\n // find children\r\n var childElems = elem.querySelectorAll( selector );\r\n // concat childElems to filterFound array\r\n for ( var i=0; i < childElems.length; i++ ) {\r\n ffElems.push( childElems[i] );\r\n }\r\n });\r\n\r\n return ffElems;\r\n};\r\n\r\n// ----- debounceMethod ----- //\r\n\r\nutils.debounceMethod = function( _class, methodName, threshold ) {\r\n threshold = threshold || 100;\r\n // original method\r\n var method = _class.prototype[ methodName ];\r\n var timeoutName = methodName + 'Timeout';\r\n\r\n _class.prototype[ methodName ] = function() {\r\n var timeout = this[ timeoutName ];\r\n clearTimeout( timeout );\r\n\r\n var args = arguments;\r\n var _this = this;\r\n this[ timeoutName ] = setTimeout( function() {\r\n method.apply( _this, args );\r\n delete _this[ timeoutName ];\r\n }, threshold );\r\n };\r\n};\r\n\r\n// ----- docReady ----- //\r\n\r\nutils.docReady = function( callback ) {\r\n var readyState = document.readyState;\r\n if ( readyState == 'complete' || readyState == 'interactive' ) {\r\n // do async to allow for other scripts to run. metafizzy/flickity#441\r\n setTimeout( callback );\r\n } else {\r\n document.addEventListener( 'DOMContentLoaded', callback );\r\n }\r\n};\r\n\r\n// ----- htmlInit ----- //\r\n\r\n// http://jamesroberts.name/blog/2010/02/22/string-functions-for-javascript-trim-to-camel-case-to-dashed-and-to-underscore/\r\nutils.toDashed = function( str ) {\r\n return str.replace( /(.)([A-Z])/g, function( match, $1, $2 ) {\r\n return $1 + '-' + $2;\r\n }).toLowerCase();\r\n};\r\n\r\nvar console = window.console;\r\n/**\r\n * allow user to initialize classes via [data-namespace] or .js-namespace class\r\n * htmlInit( Widget, 'widgetName' )\r\n * options are parsed from data-namespace-options\r\n */\r\nutils.htmlInit = function( WidgetClass, namespace ) {\r\n utils.docReady( function() {\r\n var dashedNamespace = utils.toDashed( namespace );\r\n var dataAttr = 'data-' + dashedNamespace;\r\n var dataAttrElems = document.querySelectorAll( '[' + dataAttr + ']' );\r\n var jsDashElems = document.querySelectorAll( '.js-' + dashedNamespace );\r\n var elems = utils.makeArray( dataAttrElems )\r\n .concat( utils.makeArray( jsDashElems ) );\r\n var dataOptionsAttr = dataAttr + '-options';\r\n var jQuery = window.jQuery;\r\n\r\n elems.forEach( function( elem ) {\r\n var attr = elem.getAttribute( dataAttr ) ||\r\n elem.getAttribute( dataOptionsAttr );\r\n var options;\r\n try {\r\n options = attr && JSON.parse( attr );\r\n } catch ( error ) {\r\n // log error, do not initialize\r\n if ( console ) {\r\n console.error( 'Error parsing ' + dataAttr + ' on ' + elem.className +\r\n ': ' + error );\r\n }\r\n return;\r\n }\r\n // initialize\r\n var instance = new WidgetClass( elem, options );\r\n // make available via $().data('namespace')\r\n if ( jQuery ) {\r\n jQuery.data( elem, namespace, instance );\r\n }\r\n });\r\n\r\n });\r\n};\r\n\r\n// ----- ----- //\r\n\r\nreturn utils;\r\n\r\n}));\r\n","/*!\r\n * getSize v2.0.3\r\n * measure size of elements\r\n * MIT license\r\n */\r\n\r\n/* jshint browser: true, strict: true, undef: true, unused: true */\r\n/* globals console: false */\r\n\r\n( function( window, factory ) {\r\n /* jshint strict: false */ /* globals define, module */\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( factory );\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory();\r\n } else {\r\n // browser global\r\n window.getSize = factory();\r\n }\r\n\r\n})( window, function factory() {\r\n'use strict';\r\n\r\n// -------------------------- helpers -------------------------- //\r\n\r\n// get a number from a string, not a percentage\r\nfunction getStyleSize( value ) {\r\n var num = parseFloat( value );\r\n // not a percent like '100%', and a number\r\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\r\n return isValid && num;\r\n}\r\n\r\nfunction noop() {}\r\n\r\nvar logError = typeof console == 'undefined' ? noop :\r\n function( message ) {\r\n console.error( message );\r\n };\r\n\r\n// -------------------------- measurements -------------------------- //\r\n\r\nvar measurements = [\r\n 'paddingLeft',\r\n 'paddingRight',\r\n 'paddingTop',\r\n 'paddingBottom',\r\n 'marginLeft',\r\n 'marginRight',\r\n 'marginTop',\r\n 'marginBottom',\r\n 'borderLeftWidth',\r\n 'borderRightWidth',\r\n 'borderTopWidth',\r\n 'borderBottomWidth'\r\n];\r\n\r\nvar measurementsLength = measurements.length;\r\n\r\nfunction getZeroSize() {\r\n var size = {\r\n width: 0,\r\n height: 0,\r\n innerWidth: 0,\r\n innerHeight: 0,\r\n outerWidth: 0,\r\n outerHeight: 0\r\n };\r\n for ( var i=0; i < measurementsLength; i++ ) {\r\n var measurement = measurements[i];\r\n size[ measurement ] = 0;\r\n }\r\n return size;\r\n}\r\n\r\n// -------------------------- getStyle -------------------------- //\r\n\r\n/**\r\n * getStyle, get style of element, check for Firefox bug\r\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\r\n */\r\nfunction getStyle( elem ) {\r\n var style = getComputedStyle( elem );\r\n if ( !style ) {\r\n logError( 'Style returned ' + style +\r\n '. Are you running this code in a hidden iframe on Firefox? ' +\r\n 'See https://bit.ly/getsizebug1' );\r\n }\r\n return style;\r\n}\r\n\r\n// -------------------------- setup -------------------------- //\r\n\r\nvar isSetup = false;\r\n\r\nvar isBoxSizeOuter;\r\n\r\n/**\r\n * setup\r\n * check isBoxSizerOuter\r\n * do on first getSize() rather than on page load for Firefox bug\r\n */\r\nfunction setup() {\r\n // setup once\r\n if ( isSetup ) {\r\n return;\r\n }\r\n isSetup = true;\r\n\r\n // -------------------------- box sizing -------------------------- //\r\n\r\n /**\r\n * Chrome & Safari measure the outer-width on style.width on border-box elems\r\n * IE11 & Firefox<29 measures the inner-width\r\n */\r\n var div = document.createElement('div');\r\n div.style.width = '200px';\r\n div.style.padding = '1px 2px 3px 4px';\r\n div.style.borderStyle = 'solid';\r\n div.style.borderWidth = '1px 2px 3px 4px';\r\n div.style.boxSizing = 'border-box';\r\n\r\n var body = document.body || document.documentElement;\r\n body.appendChild( div );\r\n var style = getStyle( div );\r\n // round value for browser zoom. desandro/masonry#928\r\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\r\n getSize.isBoxSizeOuter = isBoxSizeOuter;\r\n\r\n body.removeChild( div );\r\n}\r\n\r\n// -------------------------- getSize -------------------------- //\r\n\r\nfunction getSize( elem ) {\r\n setup();\r\n\r\n // use querySeletor if elem is string\r\n if ( typeof elem == 'string' ) {\r\n elem = document.querySelector( elem );\r\n }\r\n\r\n // do not proceed on non-objects\r\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\r\n return;\r\n }\r\n\r\n var style = getStyle( elem );\r\n\r\n // if hidden, everything is 0\r\n if ( style.display == 'none' ) {\r\n return getZeroSize();\r\n }\r\n\r\n var size = {};\r\n size.width = elem.offsetWidth;\r\n size.height = elem.offsetHeight;\r\n\r\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\r\n\r\n // get all measurements\r\n for ( var i=0; i < measurementsLength; i++ ) {\r\n var measurement = measurements[i];\r\n var value = style[ measurement ];\r\n var num = parseFloat( value );\r\n // any 'auto', 'medium' value will be 0\r\n size[ measurement ] = !isNaN( num ) ? num : 0;\r\n }\r\n\r\n var paddingWidth = size.paddingLeft + size.paddingRight;\r\n var paddingHeight = size.paddingTop + size.paddingBottom;\r\n var marginWidth = size.marginLeft + size.marginRight;\r\n var marginHeight = size.marginTop + size.marginBottom;\r\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\r\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\r\n\r\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\r\n\r\n // overwrite width and height if we can get it from style\r\n var styleWidth = getStyleSize( style.width );\r\n if ( styleWidth !== false ) {\r\n size.width = styleWidth +\r\n // add padding and border unless it's already including it\r\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\r\n }\r\n\r\n var styleHeight = getStyleSize( style.height );\r\n if ( styleHeight !== false ) {\r\n size.height = styleHeight +\r\n // add padding and border unless it's already including it\r\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\r\n }\r\n\r\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\r\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\r\n\r\n size.outerWidth = size.width + marginWidth;\r\n size.outerHeight = size.height + marginHeight;\r\n\r\n return size;\r\n}\r\n\r\nreturn getSize;\r\n\r\n});\r\n","/**\r\n * Check if argument is a HTML element.\r\n *\r\n * @param {Object} value\r\n * @return {Boolean}\r\n */\r\nexports.node = function(value) {\r\n return value !== undefined\r\n && value instanceof HTMLElement\r\n && value.nodeType === 1;\r\n};\r\n\r\n/**\r\n * Check if argument is a list of HTML elements.\r\n *\r\n * @param {Object} value\r\n * @return {Boolean}\r\n */\r\nexports.nodeList = function(value) {\r\n var type = Object.prototype.toString.call(value);\r\n\r\n return value !== undefined\r\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\r\n && ('length' in value)\r\n && (value.length === 0 || exports.node(value[0]));\r\n};\r\n\r\n/**\r\n * Check if argument is a string.\r\n *\r\n * @param {Object} value\r\n * @return {Boolean}\r\n */\r\nexports.string = function(value) {\r\n return typeof value === 'string'\r\n || value instanceof String;\r\n};\r\n\r\n/**\r\n * Check if argument is a function.\r\n *\r\n * @param {Object} value\r\n * @return {Boolean}\r\n */\r\nexports.fn = function(value) {\r\n var type = Object.prototype.toString.call(value);\r\n\r\n return type === '[object Function]';\r\n};\r\n","var is = require('./is');\r\nvar delegate = require('delegate');\r\n\r\n/**\r\n * Validates all params and calls the right\r\n * listener function based on its target type.\r\n *\r\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\r\n * @param {String} type\r\n * @param {Function} callback\r\n * @return {Object}\r\n */\r\nfunction listen(target, type, callback) {\r\n if (!target && !type && !callback) {\r\n throw new Error('Missing required arguments');\r\n }\r\n\r\n if (!is.string(type)) {\r\n throw new TypeError('Second argument must be a String');\r\n }\r\n\r\n if (!is.fn(callback)) {\r\n throw new TypeError('Third argument must be a Function');\r\n }\r\n\r\n if (is.node(target)) {\r\n return listenNode(target, type, callback);\r\n }\r\n else if (is.nodeList(target)) {\r\n return listenNodeList(target, type, callback);\r\n }\r\n else if (is.string(target)) {\r\n return listenSelector(target, type, callback);\r\n }\r\n else {\r\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\r\n }\r\n}\r\n\r\n/**\r\n * Adds an event listener to a HTML element\r\n * and returns a remove listener function.\r\n *\r\n * @param {HTMLElement} node\r\n * @param {String} type\r\n * @param {Function} callback\r\n * @return {Object}\r\n */\r\nfunction listenNode(node, type, callback) {\r\n node.addEventListener(type, callback);\r\n\r\n return {\r\n destroy: function() {\r\n node.removeEventListener(type, callback);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Add an event listener to a list of HTML elements\r\n * and returns a remove listener function.\r\n *\r\n * @param {NodeList|HTMLCollection} nodeList\r\n * @param {String} type\r\n * @param {Function} callback\r\n * @return {Object}\r\n */\r\nfunction listenNodeList(nodeList, type, callback) {\r\n Array.prototype.forEach.call(nodeList, function(node) {\r\n node.addEventListener(type, callback);\r\n });\r\n\r\n return {\r\n destroy: function() {\r\n Array.prototype.forEach.call(nodeList, function(node) {\r\n node.removeEventListener(type, callback);\r\n });\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Add an event listener to a selector\r\n * and returns a remove listener function.\r\n *\r\n * @param {String} selector\r\n * @param {String} type\r\n * @param {Function} callback\r\n * @return {Object}\r\n */\r\nfunction listenSelector(selector, type, callback) {\r\n return delegate(document.body, selector, type, callback);\r\n}\r\n\r\nmodule.exports = listen;\r\n","/*!\r\n * imagesLoaded v4.1.4\r\n * JavaScript is all like \"You images are done yet or what?\"\r\n * MIT License\r\n */\r\n\r\n( function( window, factory ) { 'use strict';\r\n // universal module definition\r\n\r\n /*global define: false, module: false, require: false */\r\n\r\n if ( typeof define == 'function' && define.amd ) {\r\n // AMD\r\n define( [\r\n 'ev-emitter/ev-emitter'\r\n ], function( EvEmitter ) {\r\n return factory( window, EvEmitter );\r\n });\r\n } else if ( typeof module == 'object' && module.exports ) {\r\n // CommonJS\r\n module.exports = factory(\r\n window,\r\n require('ev-emitter')\r\n );\r\n } else {\r\n // browser global\r\n window.imagesLoaded = factory(\r\n window,\r\n window.EvEmitter\r\n );\r\n }\r\n\r\n})( typeof window !== 'undefined' ? window : this,\r\n\r\n// -------------------------- factory -------------------------- //\r\n\r\nfunction factory( window, EvEmitter ) {\r\n\r\n'use strict';\r\n\r\nvar $ = window.jQuery;\r\nvar console = window.console;\r\n\r\n// -------------------------- helpers -------------------------- //\r\n\r\n// extend objects\r\nfunction extend( a, b ) {\r\n for ( var prop in b ) {\r\n a[ prop ] = b[ prop ];\r\n }\r\n return a;\r\n}\r\n\r\nvar arraySlice = Array.prototype.slice;\r\n\r\n// turn element or nodeList into an array\r\nfunction makeArray( obj ) {\r\n if ( Array.isArray( obj ) ) {\r\n // use object if already an array\r\n return obj;\r\n }\r\n\r\n var isArrayLike = typeof obj == 'object' && typeof obj.length == 'number';\r\n if ( isArrayLike ) {\r\n // convert nodeList to array\r\n return arraySlice.call( obj );\r\n }\r\n\r\n // array of single index\r\n return [ obj ];\r\n}\r\n\r\n// -------------------------- imagesLoaded -------------------------- //\r\n\r\n/**\r\n * @param {Array, Element, NodeList, String} elem\r\n * @param {Object or Function} options - if function, use as callback\r\n * @param {Function} onAlways - callback function\r\n */\r\nfunction ImagesLoaded( elem, options, onAlways ) {\r\n // coerce ImagesLoaded() without new, to be new ImagesLoaded()\r\n if ( !( this instanceof ImagesLoaded ) ) {\r\n return new ImagesLoaded( elem, options, onAlways );\r\n }\r\n // use elem as selector string\r\n var queryElem = elem;\r\n if ( typeof elem == 'string' ) {\r\n queryElem = document.querySelectorAll( elem );\r\n }\r\n // bail if bad element\r\n if ( !queryElem ) {\r\n console.error( 'Bad element for imagesLoaded ' + ( queryElem || elem ) );\r\n return;\r\n }\r\n\r\n this.elements = makeArray( queryElem );\r\n this.options = extend( {}, this.options );\r\n // shift arguments if no options set\r\n if ( typeof options == 'function' ) {\r\n onAlways = options;\r\n } else {\r\n extend( this.options, options );\r\n }\r\n\r\n if ( onAlways ) {\r\n this.on( 'always', onAlways );\r\n }\r\n\r\n this.getImages();\r\n\r\n if ( $ ) {\r\n // add jQuery Deferred object\r\n this.jqDeferred = new $.Deferred();\r\n }\r\n\r\n // HACK check async to allow time to bind listeners\r\n setTimeout( this.check.bind( this ) );\r\n}\r\n\r\nImagesLoaded.prototype = Object.create( EvEmitter.prototype );\r\n\r\nImagesLoaded.prototype.options = {};\r\n\r\nImagesLoaded.prototype.getImages = function() {\r\n this.images = [];\r\n\r\n // filter & find items if we have an item selector\r\n this.elements.forEach( this.addElementImages, this );\r\n};\r\n\r\n/**\r\n * @param {Node} element\r\n */\r\nImagesLoaded.prototype.addElementImages = function( elem ) {\r\n // filter siblings\r\n if ( elem.nodeName == 'IMG' ) {\r\n this.addImage( elem );\r\n }\r\n // get background image on element\r\n if ( this.options.background === true ) {\r\n this.addElementBackgroundImages( elem );\r\n }\r\n\r\n // find children\r\n // no non-element nodes, #143\r\n var nodeType = elem.nodeType;\r\n if ( !nodeType || !elementNodeTypes[ nodeType ] ) {\r\n return;\r\n }\r\n var childImgs = elem.querySelectorAll('img');\r\n // concat childElems to filterFound array\r\n for ( var i=0; i < childImgs.length; i++ ) {\r\n var img = childImgs[i];\r\n this.addImage( img );\r\n }\r\n\r\n // get child background images\r\n if ( typeof this.options.background == 'string' ) {\r\n var children = elem.querySelectorAll( this.options.background );\r\n for ( i=0; i < children.length; i++ ) {\r\n var child = children[i];\r\n this.addElementBackgroundImages( child );\r\n }\r\n }\r\n};\r\n\r\nvar elementNodeTypes = {\r\n 1: true,\r\n 9: true,\r\n 11: true\r\n};\r\n\r\nImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {\r\n var style = getComputedStyle( elem );\r\n if ( !style ) {\r\n // Firefox returns null if in a hidden iframe https://bugzil.la/548397\r\n return;\r\n }\r\n // get url inside url(\"...\")\r\n var reURL = /url\\((['\"])?(.*?)\\1\\)/gi;\r\n var matches = reURL.exec( style.backgroundImage );\r\n while ( matches !== null ) {\r\n var url = matches && matches[2];\r\n if ( url ) {\r\n this.addBackground( url, elem );\r\n }\r\n matches = reURL.exec( style.backgroundImage );\r\n }\r\n};\r\n\r\n/**\r\n * @param {Image} img\r\n */\r\nImagesLoaded.prototype.addImage = function( img ) {\r\n var loadingImage = new LoadingImage( img );\r\n this.images.push( loadingImage );\r\n};\r\n\r\nImagesLoaded.prototype.addBackground = function( url, elem ) {\r\n var background = new Background( url, elem );\r\n this.images.push( background );\r\n};\r\n\r\nImagesLoaded.prototype.check = function() {\r\n var _this = this;\r\n this.progressedCount = 0;\r\n this.hasAnyBroken = false;\r\n // complete if no images\r\n if ( !this.images.length ) {\r\n this.complete();\r\n return;\r\n }\r\n\r\n function onProgress( image, elem, message ) {\r\n // HACK - Chrome triggers event before object properties have changed. #83\r\n setTimeout( function() {\r\n _this.progress( image, elem, message );\r\n });\r\n }\r\n\r\n this.images.forEach( function( loadingImage ) {\r\n loadingImage.once( 'progress', onProgress );\r\n loadingImage.check();\r\n });\r\n};\r\n\r\nImagesLoaded.prototype.progress = function( image, elem, message ) {\r\n this.progressedCount++;\r\n this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;\r\n // progress event\r\n this.emitEvent( 'progress', [ this, image, elem ] );\r\n if ( this.jqDeferred && this.jqDeferred.notify ) {\r\n this.jqDeferred.notify( this, image );\r\n }\r\n // check if completed\r\n if ( this.progressedCount == this.images.length ) {\r\n this.complete();\r\n }\r\n\r\n if ( this.options.debug && console ) {\r\n console.log( 'progress: ' + message, image, elem );\r\n }\r\n};\r\n\r\nImagesLoaded.prototype.complete = function() {\r\n var eventName = this.hasAnyBroken ? 'fail' : 'done';\r\n this.isComplete = true;\r\n this.emitEvent( eventName, [ this ] );\r\n this.emitEvent( 'always', [ this ] );\r\n if ( this.jqDeferred ) {\r\n var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';\r\n this.jqDeferred[ jqMethod ]( this );\r\n }\r\n};\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nfunction LoadingImage( img ) {\r\n this.img = img;\r\n}\r\n\r\nLoadingImage.prototype = Object.create( EvEmitter.prototype );\r\n\r\nLoadingImage.prototype.check = function() {\r\n // If complete is true and browser supports natural sizes,\r\n // try to check for image status manually.\r\n var isComplete = this.getIsImageComplete();\r\n if ( isComplete ) {\r\n // report based on naturalWidth\r\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n return;\r\n }\r\n\r\n // If none of the checks above matched, simulate loading on detached element.\r\n this.proxyImage = new Image();\r\n this.proxyImage.addEventListener( 'load', this );\r\n this.proxyImage.addEventListener( 'error', this );\r\n // bind to image as well for Firefox. #191\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n this.proxyImage.src = this.img.src;\r\n};\r\n\r\nLoadingImage.prototype.getIsImageComplete = function() {\r\n // check for non-zero, non-undefined naturalWidth\r\n // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671\r\n return this.img.complete && this.img.naturalWidth;\r\n};\r\n\r\nLoadingImage.prototype.confirm = function( isLoaded, message ) {\r\n this.isLoaded = isLoaded;\r\n this.emitEvent( 'progress', [ this, this.img, message ] );\r\n};\r\n\r\n// ----- events ----- //\r\n\r\n// trigger specified handler for event type\r\nLoadingImage.prototype.handleEvent = function( event ) {\r\n var method = 'on' + event.type;\r\n if ( this[ method ] ) {\r\n this[ method ]( event );\r\n }\r\n};\r\n\r\nLoadingImage.prototype.onload = function() {\r\n this.confirm( true, 'onload' );\r\n this.unbindEvents();\r\n};\r\n\r\nLoadingImage.prototype.onerror = function() {\r\n this.confirm( false, 'onerror' );\r\n this.unbindEvents();\r\n};\r\n\r\nLoadingImage.prototype.unbindEvents = function() {\r\n this.proxyImage.removeEventListener( 'load', this );\r\n this.proxyImage.removeEventListener( 'error', this );\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n};\r\n\r\n// -------------------------- Background -------------------------- //\r\n\r\nfunction Background( url, element ) {\r\n this.url = url;\r\n this.element = element;\r\n this.img = new Image();\r\n}\r\n\r\n// inherit LoadingImage prototype\r\nBackground.prototype = Object.create( LoadingImage.prototype );\r\n\r\nBackground.prototype.check = function() {\r\n this.img.addEventListener( 'load', this );\r\n this.img.addEventListener( 'error', this );\r\n this.img.src = this.url;\r\n // check if image is already complete\r\n var isComplete = this.getIsImageComplete();\r\n if ( isComplete ) {\r\n this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );\r\n this.unbindEvents();\r\n }\r\n};\r\n\r\nBackground.prototype.unbindEvents = function() {\r\n this.img.removeEventListener( 'load', this );\r\n this.img.removeEventListener( 'error', this );\r\n};\r\n\r\nBackground.prototype.confirm = function( isLoaded, message ) {\r\n this.isLoaded = isLoaded;\r\n this.emitEvent( 'progress', [ this, this.element, message ] );\r\n};\r\n\r\n// -------------------------- jQuery -------------------------- //\r\n\r\nImagesLoaded.makeJQueryPlugin = function( jQuery ) {\r\n jQuery = jQuery || window.jQuery;\r\n if ( !jQuery ) {\r\n return;\r\n }\r\n // set local variable\r\n $ = jQuery;\r\n // $().imagesLoaded()\r\n $.fn.imagesLoaded = function( options, callback ) {\r\n var instance = new ImagesLoaded( this, options, callback );\r\n return instance.jqDeferred.promise( $(this) );\r\n };\r\n};\r\n// try making plugin\r\nImagesLoaded.makeJQueryPlugin();\r\n\r\n// -------------------------- -------------------------- //\r\n\r\nreturn ImagesLoaded;\r\n\r\n});\r\n","/*!\r\n * jQuery Mousewheel 3.1.13\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n */\r\n\r\n(function (factory) {\r\n if ( typeof define === 'function' && define.amd ) {\r\n // AMD. Register as an anonymous module.\r\n define(['jquery'], factory);\r\n } else if (typeof exports === 'object') {\r\n // Node/CommonJS style for Browserify\r\n module.exports = factory;\r\n } else {\r\n // Browser globals\r\n factory(jQuery);\r\n }\r\n}(function ($) {\r\n\r\n var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],\r\n toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?\r\n ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],\r\n slice = Array.prototype.slice,\r\n nullLowestDeltaTimeout, lowestDelta;\r\n\r\n if ( $.event.fixHooks ) {\r\n for ( var i = toFix.length; i; ) {\r\n $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;\r\n }\r\n }\r\n\r\n var special = $.event.special.mousewheel = {\r\n version: '3.1.12',\r\n\r\n setup: function() {\r\n if ( this.addEventListener ) {\r\n for ( var i = toBind.length; i; ) {\r\n this.addEventListener( toBind[--i], handler, false );\r\n }\r\n } else {\r\n this.onmousewheel = handler;\r\n }\r\n // Store the line height and page height for this particular element\r\n $.data(this, 'mousewheel-line-height', special.getLineHeight(this));\r\n $.data(this, 'mousewheel-page-height', special.getPageHeight(this));\r\n },\r\n\r\n teardown: function() {\r\n if ( this.removeEventListener ) {\r\n for ( var i = toBind.length; i; ) {\r\n this.removeEventListener( toBind[--i], handler, false );\r\n }\r\n } else {\r\n this.onmousewheel = null;\r\n }\r\n // Clean up the data we added to the element\r\n $.removeData(this, 'mousewheel-line-height');\r\n $.removeData(this, 'mousewheel-page-height');\r\n },\r\n\r\n getLineHeight: function(elem) {\r\n var $elem = $(elem),\r\n $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();\r\n if (!$parent.length) {\r\n $parent = $('body');\r\n }\r\n return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;\r\n },\r\n\r\n getPageHeight: function(elem) {\r\n return $(elem).height();\r\n },\r\n\r\n settings: {\r\n adjustOldDeltas: true, // see shouldAdjustOldDeltas() below\r\n normalizeOffset: true // calls getBoundingClientRect for each event\r\n }\r\n };\r\n\r\n $.fn.extend({\r\n mousewheel: function(fn) {\r\n return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');\r\n },\r\n\r\n unmousewheel: function(fn) {\r\n return this.unbind('mousewheel', fn);\r\n }\r\n });\r\n\r\n\r\n function handler(event) {\r\n var orgEvent = event || window.event,\r\n args = slice.call(arguments, 1),\r\n delta = 0,\r\n deltaX = 0,\r\n deltaY = 0,\r\n absDelta = 0,\r\n offsetX = 0,\r\n offsetY = 0;\r\n event = $.event.fix(orgEvent);\r\n event.type = 'mousewheel';\r\n\r\n // Old school scrollwheel delta\r\n if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; }\r\n if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; }\r\n if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; }\r\n if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }\r\n\r\n // Firefox < 17 horizontal scrolling related to DOMMouseScroll event\r\n if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {\r\n deltaX = deltaY * -1;\r\n deltaY = 0;\r\n }\r\n\r\n // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy\r\n delta = deltaY === 0 ? deltaX : deltaY;\r\n\r\n // New school wheel delta (wheel event)\r\n if ( 'deltaY' in orgEvent ) {\r\n deltaY = orgEvent.deltaY * -1;\r\n delta = deltaY;\r\n }\r\n if ( 'deltaX' in orgEvent ) {\r\n deltaX = orgEvent.deltaX;\r\n if ( deltaY === 0 ) { delta = deltaX * -1; }\r\n }\r\n\r\n // No change actually happened, no reason to go any further\r\n if ( deltaY === 0 && deltaX === 0 ) { return; }\r\n\r\n // Need to convert lines and pages to pixels if we aren't already in pixels\r\n // There are three delta modes:\r\n // * deltaMode 0 is by pixels, nothing to do\r\n // * deltaMode 1 is by lines\r\n // * deltaMode 2 is by pages\r\n if ( orgEvent.deltaMode === 1 ) {\r\n var lineHeight = $.data(this, 'mousewheel-line-height');\r\n delta *= lineHeight;\r\n deltaY *= lineHeight;\r\n deltaX *= lineHeight;\r\n } else if ( orgEvent.deltaMode === 2 ) {\r\n var pageHeight = $.data(this, 'mousewheel-page-height');\r\n delta *= pageHeight;\r\n deltaY *= pageHeight;\r\n deltaX *= pageHeight;\r\n }\r\n\r\n // Store lowest absolute delta to normalize the delta values\r\n absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );\r\n\r\n if ( !lowestDelta || absDelta < lowestDelta ) {\r\n lowestDelta = absDelta;\r\n\r\n // Adjust older deltas if necessary\r\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\r\n lowestDelta /= 40;\r\n }\r\n }\r\n\r\n // Adjust older deltas if necessary\r\n if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {\r\n // Divide all the things by 40!\r\n delta /= 40;\r\n deltaX /= 40;\r\n deltaY /= 40;\r\n }\r\n\r\n // Get a whole, normalized value for the deltas\r\n delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta);\r\n deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);\r\n deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);\r\n\r\n // Normalise offsetX and offsetY properties\r\n if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {\r\n var boundingRect = this.getBoundingClientRect();\r\n offsetX = event.clientX - boundingRect.left;\r\n offsetY = event.clientY - boundingRect.top;\r\n }\r\n\r\n // Add information to the event object\r\n event.deltaX = deltaX;\r\n event.deltaY = deltaY;\r\n event.deltaFactor = lowestDelta;\r\n event.offsetX = offsetX;\r\n event.offsetY = offsetY;\r\n // Go ahead and set deltaMode to 0 since we converted to pixels\r\n // Although this is a little odd since we overwrite the deltaX/Y\r\n // properties with normalized deltas.\r\n event.deltaMode = 0;\r\n\r\n // Add event and delta to the front of the arguments\r\n args.unshift(event, delta, deltaX, deltaY);\r\n\r\n // Clearout lowestDelta after sometime to better\r\n // handle multiple device types that give different\r\n // a different lowestDelta\r\n // Ex: trackpad = 3 and mouse wheel = 120\r\n if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }\r\n nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);\r\n\r\n return ($.event.dispatch || $.event.handle).apply(this, args);\r\n }\r\n\r\n function nullLowestDelta() {\r\n lowestDelta = null;\r\n }\r\n\r\n function shouldAdjustOldDeltas(orgEvent, absDelta) {\r\n // If this is an older event and the delta is divisable by 120,\r\n // then we are assuming that the browser is treating this as an\r\n // older mouse wheel event and that we should divide the deltas\r\n // by 40 to try and get a more usable deltaFactor.\r\n // Side note, this actually impacts the reported scroll distance\r\n // in older browsers and can cause scrolling to be slower than native.\r\n // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.\r\n return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;\r\n }\r\n\r\n}));\r\n","/*!\r\n * jQuery JavaScript Library v2.2.4\r\n * http://jquery.com/\r\n *\r\n * Includes Sizzle.js\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2016-05-20T17:23Z\r\n */\r\n\r\n(function( global, factory ) {\r\n\r\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\r\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\r\n\t\t// is present, execute the factory and get jQuery.\r\n\t\t// For environments that do not have a `window` with a `document`\r\n\t\t// (such as Node.js), expose a factory as module.exports.\r\n\t\t// This accentuates the need for the creation of a real `window`.\r\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\r\n\t\t// See ticket #14549 for more info.\r\n\t\tmodule.exports = global.document ?\r\n\t\t\tfactory( global, true ) :\r\n\t\t\tfunction( w ) {\r\n\t\t\t\tif ( !w.document ) {\r\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\r\n\t\t\t\t}\r\n\t\t\t\treturn factory( w );\r\n\t\t\t};\r\n\t} else {\r\n\t\tfactory( global );\r\n\t}\r\n\r\n// Pass this if window is not defined yet\r\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\r\n\r\n// Support: Firefox 18+\r\n// Can't be in strict mode, several libs including ASP.NET trace\r\n// the stack via arguments.caller.callee and Firefox dies if\r\n// you try to trace through \"use strict\" call chains. (#13335)\r\n//\"use strict\";\r\nvar arr = [];\r\n\r\nvar document = window.document;\r\n\r\nvar slice = arr.slice;\r\n\r\nvar concat = arr.concat;\r\n\r\nvar push = arr.push;\r\n\r\nvar indexOf = arr.indexOf;\r\n\r\nvar class2type = {};\r\n\r\nvar toString = class2type.toString;\r\n\r\nvar hasOwn = class2type.hasOwnProperty;\r\n\r\nvar support = {};\r\n\r\n\r\n\r\nvar\r\n\tversion = \"2.2.4\",\r\n\r\n\t// Define a local copy of jQuery\r\n\tjQuery = function( selector, context ) {\r\n\r\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\r\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\r\n\t\treturn new jQuery.fn.init( selector, context );\r\n\t},\r\n\r\n\t// Support: Android<4.1\r\n\t// Make sure we trim BOM and NBSP\r\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\r\n\r\n\t// Matches dashed string for camelizing\r\n\trmsPrefix = /^-ms-/,\r\n\trdashAlpha = /-([\\da-z])/gi,\r\n\r\n\t// Used by jQuery.camelCase as callback to replace()\r\n\tfcamelCase = function( all, letter ) {\r\n\t\treturn letter.toUpperCase();\r\n\t};\r\n\r\njQuery.fn = jQuery.prototype = {\r\n\r\n\t// The current version of jQuery being used\r\n\tjquery: version,\r\n\r\n\tconstructor: jQuery,\r\n\r\n\t// Start with an empty selector\r\n\tselector: \"\",\r\n\r\n\t// The default length of a jQuery object is 0\r\n\tlength: 0,\r\n\r\n\ttoArray: function() {\r\n\t\treturn slice.call( this );\r\n\t},\r\n\r\n\t// Get the Nth element in the matched element set OR\r\n\t// Get the whole matched element set as a clean array\r\n\tget: function( num ) {\r\n\t\treturn num != null ?\r\n\r\n\t\t\t// Return just the one element from the set\r\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\r\n\r\n\t\t\t// Return all the elements in a clean array\r\n\t\t\tslice.call( this );\r\n\t},\r\n\r\n\t// Take an array of elements and push it onto the stack\r\n\t// (returning the new matched element set)\r\n\tpushStack: function( elems ) {\r\n\r\n\t\t// Build a new jQuery matched element set\r\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\r\n\r\n\t\t// Add the old object onto the stack (as a reference)\r\n\t\tret.prevObject = this;\r\n\t\tret.context = this.context;\r\n\r\n\t\t// Return the newly-formed element set\r\n\t\treturn ret;\r\n\t},\r\n\r\n\t// Execute a callback for every element in the matched set.\r\n\teach: function( callback ) {\r\n\t\treturn jQuery.each( this, callback );\r\n\t},\r\n\r\n\tmap: function( callback ) {\r\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\r\n\t\t\treturn callback.call( elem, i, elem );\r\n\t\t} ) );\r\n\t},\r\n\r\n\tslice: function() {\r\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\r\n\t},\r\n\r\n\tfirst: function() {\r\n\t\treturn this.eq( 0 );\r\n\t},\r\n\r\n\tlast: function() {\r\n\t\treturn this.eq( -1 );\r\n\t},\r\n\r\n\teq: function( i ) {\r\n\t\tvar len = this.length,\r\n\t\t\tj = +i + ( i < 0 ? len : 0 );\r\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\r\n\t},\r\n\r\n\tend: function() {\r\n\t\treturn this.prevObject || this.constructor();\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t// Behaves like an Array's method, not like a jQuery method.\r\n\tpush: push,\r\n\tsort: arr.sort,\r\n\tsplice: arr.splice\r\n};\r\n\r\njQuery.extend = jQuery.fn.extend = function() {\r\n\tvar options, name, src, copy, copyIsArray, clone,\r\n\t\ttarget = arguments[ 0 ] || {},\r\n\t\ti = 1,\r\n\t\tlength = arguments.length,\r\n\t\tdeep = false;\r\n\r\n\t// Handle a deep copy situation\r\n\tif ( typeof target === \"boolean\" ) {\r\n\t\tdeep = target;\r\n\r\n\t\t// Skip the boolean and the target\r\n\t\ttarget = arguments[ i ] || {};\r\n\t\ti++;\r\n\t}\r\n\r\n\t// Handle case when target is a string or something (possible in deep copy)\r\n\tif ( typeof target !== \"object\" && !jQuery.isFunction( target ) ) {\r\n\t\ttarget = {};\r\n\t}\r\n\r\n\t// Extend jQuery itself if only one argument is passed\r\n\tif ( i === length ) {\r\n\t\ttarget = this;\r\n\t\ti--;\r\n\t}\r\n\r\n\tfor ( ; i < length; i++ ) {\r\n\r\n\t\t// Only deal with non-null/undefined values\r\n\t\tif ( ( options = arguments[ i ] ) != null ) {\r\n\r\n\t\t\t// Extend the base object\r\n\t\t\tfor ( name in options ) {\r\n\t\t\t\tsrc = target[ name ];\r\n\t\t\t\tcopy = options[ name ];\r\n\r\n\t\t\t\t// Prevent never-ending loop\r\n\t\t\t\tif ( target === copy ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Recurse if we're merging plain objects or arrays\r\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\r\n\t\t\t\t\t( copyIsArray = jQuery.isArray( copy ) ) ) ) {\r\n\r\n\t\t\t\t\tif ( copyIsArray ) {\r\n\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Never move original objects, clone them\r\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\r\n\r\n\t\t\t\t// Don't bring in undefined values\r\n\t\t\t\t} else if ( copy !== undefined ) {\r\n\t\t\t\t\ttarget[ name ] = copy;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the modified object\r\n\treturn target;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Unique for each copy of jQuery on the page\r\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\r\n\r\n\t// Assume jQuery is ready without the ready module\r\n\tisReady: true,\r\n\r\n\terror: function( msg ) {\r\n\t\tthrow new Error( msg );\r\n\t},\r\n\r\n\tnoop: function() {},\r\n\r\n\tisFunction: function( obj ) {\r\n\t\treturn jQuery.type( obj ) === \"function\";\r\n\t},\r\n\r\n\tisArray: Array.isArray,\r\n\r\n\tisWindow: function( obj ) {\r\n\t\treturn obj != null && obj === obj.window;\r\n\t},\r\n\r\n\tisNumeric: function( obj ) {\r\n\r\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\r\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\r\n\t\t// subtraction forces infinities to NaN\r\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\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\tisPlainObject: function( obj ) {\r\n\t\tvar key;\r\n\r\n\t\t// Not plain objects:\r\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\r\n\t\t// - DOM nodes\r\n\t\t// - window\r\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Not own constructor property must be Object\r\n\t\tif ( obj.constructor &&\r\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\r\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\t// Own properties are enumerated firstly, so to speed up,\r\n\t\t// if last one is own, then all properties are own\r\n\t\tfor ( key in obj ) {}\r\n\r\n\t\treturn key === undefined || hasOwn.call( obj, key );\r\n\t},\r\n\r\n\tisEmptyObject: function( obj ) {\r\n\t\tvar name;\r\n\t\tfor ( name in obj ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\ttype: function( obj ) {\r\n\t\tif ( obj == null ) {\r\n\t\t\treturn obj + \"\";\r\n\t\t}\r\n\r\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\r\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\r\n\t\t\ttypeof obj;\r\n\t},\r\n\r\n\t// Evaluates a script in a global context\r\n\tglobalEval: function( code ) {\r\n\t\tvar script,\r\n\t\t\tindirect = eval;\r\n\r\n\t\tcode = jQuery.trim( code );\r\n\r\n\t\tif ( code ) {\r\n\r\n\t\t\t// If the code includes a valid, prologue position\r\n\t\t\t// strict mode pragma, execute code by injecting a\r\n\t\t\t// script tag into the document.\r\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\r\n\t\t\t\tscript = document.createElement( \"script\" );\r\n\t\t\t\tscript.text = code;\r\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\r\n\t\t\t\t// and removal by using an indirect global eval\r\n\r\n\t\t\t\tindirect( code );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// Convert dashed to camelCase; used by the css and data modules\r\n\t// Support: IE9-11+\r\n\t// Microsoft forgot to hump their vendor prefix (#9572)\r\n\tcamelCase: function( string ) {\r\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\r\n\t},\r\n\r\n\tnodeName: function( elem, name ) {\r\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\r\n\t},\r\n\r\n\teach: function( obj, callback ) {\r\n\t\tvar length, i = 0;\r\n\r\n\t\tif ( isArrayLike( obj ) ) {\r\n\t\t\tlength = obj.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor ( i in obj ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t},\r\n\r\n\t// Support: Android<4.1\r\n\ttrim: function( text ) {\r\n\t\treturn text == null ?\r\n\t\t\t\"\" :\r\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\r\n\t},\r\n\r\n\t// results is for internal usage only\r\n\tmakeArray: function( arr, results ) {\r\n\t\tvar ret = results || [];\r\n\r\n\t\tif ( arr != null ) {\r\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\r\n\t\t\t\tjQuery.merge( ret,\r\n\t\t\t\t\ttypeof arr === \"string\" ?\r\n\t\t\t\t\t[ arr ] : arr\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tpush.call( ret, arr );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\tinArray: function( elem, arr, i ) {\r\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\r\n\t},\r\n\r\n\tmerge: function( first, second ) {\r\n\t\tvar len = +second.length,\r\n\t\t\tj = 0,\r\n\t\t\ti = first.length;\r\n\r\n\t\tfor ( ; j < len; j++ ) {\r\n\t\t\tfirst[ i++ ] = second[ j ];\r\n\t\t}\r\n\r\n\t\tfirst.length = i;\r\n\r\n\t\treturn first;\r\n\t},\r\n\r\n\tgrep: function( elems, callback, invert ) {\r\n\t\tvar callbackInverse,\r\n\t\t\tmatches = [],\r\n\t\t\ti = 0,\r\n\t\t\tlength = elems.length,\r\n\t\t\tcallbackExpect = !invert;\r\n\r\n\t\t// Go through the array, only saving the items\r\n\t\t// that pass the validator function\r\n\t\tfor ( ; i < length; i++ ) {\r\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\r\n\t\t\tif ( callbackInverse !== callbackExpect ) {\r\n\t\t\t\tmatches.push( elems[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\t// arg is for internal usage only\r\n\tmap: function( elems, callback, arg ) {\r\n\t\tvar length, value,\r\n\t\t\ti = 0,\r\n\t\t\tret = [];\r\n\r\n\t\t// Go through the array, translating each of the items to their new values\r\n\t\tif ( isArrayLike( elems ) ) {\r\n\t\t\tlength = elems.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Go through every key on the object,\r\n\t\t} else {\r\n\t\t\tfor ( i in elems ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Flatten any nested arrays\r\n\t\treturn concat.apply( [], ret );\r\n\t},\r\n\r\n\t// A global GUID counter for objects\r\n\tguid: 1,\r\n\r\n\t// Bind a function to a context, optionally partially applying any\r\n\t// arguments.\r\n\tproxy: function( fn, context ) {\r\n\t\tvar tmp, args, proxy;\r\n\r\n\t\tif ( typeof context === \"string\" ) {\r\n\t\t\ttmp = fn[ context ];\r\n\t\t\tcontext = fn;\r\n\t\t\tfn = tmp;\r\n\t\t}\r\n\r\n\t\t// Quick check to determine if target is callable, in the spec\r\n\t\t// this throws a TypeError, but we will just return undefined.\r\n\t\tif ( !jQuery.isFunction( fn ) ) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\t// Simulated bind\r\n\t\targs = slice.call( arguments, 2 );\r\n\t\tproxy = function() {\r\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\r\n\t\t};\r\n\r\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\r\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\r\n\r\n\t\treturn proxy;\r\n\t},\r\n\r\n\tnow: Date.now,\r\n\r\n\t// jQuery.support is not used in Core but other projects attach their\r\n\t// properties to it so it needs to exist.\r\n\tsupport: support\r\n} );\r\n\r\n// JSHint would error on this code due to the Symbol not being defined in ES5.\r\n// Defining this global in .jshintrc would create a danger of using the global\r\n// unguarded in another place, it seems safer to just disable JSHint for these\r\n// three lines.\r\n/* jshint ignore: start */\r\nif ( typeof Symbol === \"function\" ) {\r\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\r\n}\r\n/* jshint ignore: end */\r\n\r\n// Populate the class2type map\r\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\r\nfunction( i, name ) {\r\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\r\n} );\r\n\r\nfunction isArrayLike( obj ) {\r\n\r\n\t// Support: iOS 8.2 (not reproducible in simulator)\r\n\t// `in` check used to prevent JIT error (gh-2145)\r\n\t// hasOwn isn't used here due to false negatives\r\n\t// regarding Nodelist length in IE\r\n\tvar length = !!obj && \"length\" in obj && obj.length,\r\n\t\ttype = jQuery.type( obj );\r\n\r\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn type === \"array\" || length === 0 ||\r\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\r\n}\r\nvar Sizzle =\r\n/*!\r\n * Sizzle CSS Selector Engine v2.2.1\r\n * http://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2015-10-17\r\n */\r\n(function( window ) {\r\n\r\nvar i,\r\n\tsupport,\r\n\tExpr,\r\n\tgetText,\r\n\tisXML,\r\n\ttokenize,\r\n\tcompile,\r\n\tselect,\r\n\toutermostContext,\r\n\tsortInput,\r\n\thasDuplicate,\r\n\r\n\t// Local document vars\r\n\tsetDocument,\r\n\tdocument,\r\n\tdocElem,\r\n\tdocumentIsHTML,\r\n\trbuggyQSA,\r\n\trbuggyMatches,\r\n\tmatches,\r\n\tcontains,\r\n\r\n\t// Instance-specific data\r\n\texpando = \"sizzle\" + 1 * new Date(),\r\n\tpreferredDoc = window.document,\r\n\tdirruns = 0,\r\n\tdone = 0,\r\n\tclassCache = createCache(),\r\n\ttokenCache = createCache(),\r\n\tcompilerCache = createCache(),\r\n\tsortOrder = function( a, b ) {\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// General-purpose constants\r\n\tMAX_NEGATIVE = 1 << 31,\r\n\r\n\t// Instance methods\r\n\thasOwn = ({}).hasOwnProperty,\r\n\tarr = [],\r\n\tpop = arr.pop,\r\n\tpush_native = arr.push,\r\n\tpush = arr.push,\r\n\tslice = arr.slice,\r\n\t// Use a stripped-down indexOf as it's faster than native\r\n\t// http://jsperf.com/thor-indexof-vs-for/5\r\n\tindexOf = function( list, elem ) {\r\n\t\tvar i = 0,\r\n\t\t\tlen = list.length;\r\n\t\tfor ( ; i < len; i++ ) {\r\n\t\t\tif ( list[i] === elem ) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\r\n\r\n\t// Regular expressions\r\n\r\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\r\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\r\n\r\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\r\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\r\n\r\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\r\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\r\n\t\t// Operator (capture 2)\r\n\t\t\"*([*^$|!~]?=)\" + whitespace +\r\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\r\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\r\n\t\t\"*\\\\]\",\r\n\r\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\r\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\r\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\r\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\r\n\t\t// 2. simple (capture 6)\r\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\r\n\t\t// 3. anything else (capture 2)\r\n\t\t\".*\" +\r\n\t\t\")\\\\)|)\",\r\n\r\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\r\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\r\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\r\n\r\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\r\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\r\n\r\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\r\n\r\n\trpseudo = new RegExp( pseudos ),\r\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\r\n\r\n\tmatchExpr = {\r\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\r\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\r\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\r\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\r\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\r\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\r\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\r\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\r\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\r\n\t\t// For use in libraries implementing .is()\r\n\t\t// We use this for POS matching in `select`\r\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\r\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\r\n\t},\r\n\r\n\trinputs = /^(?:input|select|textarea|button)$/i,\r\n\trheader = /^h\\d$/i,\r\n\r\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\r\n\r\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\r\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\r\n\r\n\trsibling = /[+~]/,\r\n\trescape = /'|\\\\/g,\r\n\r\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\r\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\r\n\tfunescape = function( _, escaped, escapedWhitespace ) {\r\n\t\tvar high = \"0x\" + escaped - 0x10000;\r\n\t\t// NaN means non-codepoint\r\n\t\t// Support: Firefox<24\r\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\r\n\t\treturn high !== high || escapedWhitespace ?\r\n\t\t\tescaped :\r\n\t\t\thigh < 0 ?\r\n\t\t\t\t// BMP codepoint\r\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\r\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\r\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\r\n\t},\r\n\r\n\t// Used for iframes\r\n\t// See setDocument()\r\n\t// Removing the function wrapper causes a \"Permission Denied\"\r\n\t// error in IE\r\n\tunloadHandler = function() {\r\n\t\tsetDocument();\r\n\t};\r\n\r\n// Optimize for push.apply( _, NodeList )\r\ntry {\r\n\tpush.apply(\r\n\t\t(arr = slice.call( preferredDoc.childNodes )),\r\n\t\tpreferredDoc.childNodes\r\n\t);\r\n\t// Support: Android<4.0\r\n\t// Detect silently failing push.apply\r\n\tarr[ preferredDoc.childNodes.length ].nodeType;\r\n} catch ( e ) {\r\n\tpush = { apply: arr.length ?\r\n\r\n\t\t// Leverage slice if possible\r\n\t\tfunction( target, els ) {\r\n\t\t\tpush_native.apply( target, slice.call(els) );\r\n\t\t} :\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Otherwise append directly\r\n\t\tfunction( target, els ) {\r\n\t\t\tvar j = target.length,\r\n\t\t\t\ti = 0;\r\n\t\t\t// Can't trust NodeList.length\r\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\r\n\t\t\ttarget.length = j - 1;\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction Sizzle( selector, context, results, seed ) {\r\n\tvar m, i, elem, nid, nidselect, match, groups, newSelector,\r\n\t\tnewContext = context && context.ownerDocument,\r\n\r\n\t\t// nodeType defaults to 9, since context defaults to document\r\n\t\tnodeType = context ? context.nodeType : 9;\r\n\r\n\tresults = results || [];\r\n\r\n\t// Return early from calls with invalid selector or context\r\n\tif ( typeof selector !== \"string\" || !selector ||\r\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\r\n\tif ( !seed ) {\r\n\r\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\r\n\t\t\tsetDocument( context );\r\n\t\t}\r\n\t\tcontext = context || document;\r\n\r\n\t\tif ( documentIsHTML ) {\r\n\r\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\r\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\r\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\r\n\r\n\t\t\t\t// ID selector\r\n\t\t\t\tif ( (m = match[1]) ) {\r\n\r\n\t\t\t\t\t// Document context\r\n\t\t\t\t\tif ( nodeType === 9 ) {\r\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\r\n\r\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\t\tif ( elem.id === m ) {\r\n\t\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Element context\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\r\n\t\t\t\t\t\t\tcontains( context, elem ) &&\r\n\t\t\t\t\t\t\telem.id === m ) {\r\n\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t// Type selector\r\n\t\t\t\t} else if ( match[2] ) {\r\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\r\n\t\t\t\t\treturn results;\r\n\r\n\t\t\t\t// Class selector\r\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\r\n\t\t\t\t\tcontext.getElementsByClassName ) {\r\n\r\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Take advantage of querySelectorAll\r\n\t\t\tif ( support.qsa &&\r\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\r\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\r\n\r\n\t\t\t\tif ( nodeType !== 1 ) {\r\n\t\t\t\t\tnewContext = context;\r\n\t\t\t\t\tnewSelector = selector;\r\n\r\n\t\t\t\t// qSA looks outside Element context, which is not what we want\r\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\r\n\t\t\t\t// Support: IE <=8\r\n\t\t\t\t// Exclude object elements\r\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\r\n\r\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\r\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\r\n\t\t\t\t\t\tnid = nid.replace( rescape, \"\\\\$&\" );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prefix every selector in the list\r\n\t\t\t\t\tgroups = tokenize( selector );\r\n\t\t\t\t\ti = groups.length;\r\n\t\t\t\t\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + toSelector( groups[i] );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewSelector = groups.join( \",\" );\r\n\r\n\t\t\t\t\t// Expand context for sibling selectors\r\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\r\n\t\t\t\t\t\tcontext;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( newSelector ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tpush.apply( results,\r\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t} catch ( qsaError ) {\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tif ( nid === expando ) {\r\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// All others\r\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\r\n}\r\n\r\n/**\r\n * Create key-value caches of limited size\r\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\r\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\r\n *\tdeleting the oldest entry\r\n */\r\nfunction createCache() {\r\n\tvar keys = [];\r\n\r\n\tfunction cache( key, value ) {\r\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\r\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\r\n\t\t\t// Only keep the most recent entries\r\n\t\t\tdelete cache[ keys.shift() ];\r\n\t\t}\r\n\t\treturn (cache[ key + \" \" ] = value);\r\n\t}\r\n\treturn cache;\r\n}\r\n\r\n/**\r\n * Mark a function for special use by Sizzle\r\n * @param {Function} fn The function to mark\r\n */\r\nfunction markFunction( fn ) {\r\n\tfn[ expando ] = true;\r\n\treturn fn;\r\n}\r\n\r\n/**\r\n * Support testing using an element\r\n * @param {Function} fn Passed the created div and expects a boolean result\r\n */\r\nfunction assert( fn ) {\r\n\tvar div = document.createElement(\"div\");\r\n\r\n\ttry {\r\n\t\treturn !!fn( div );\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t} finally {\r\n\t\t// Remove from its parent by default\r\n\t\tif ( div.parentNode ) {\r\n\t\t\tdiv.parentNode.removeChild( div );\r\n\t\t}\r\n\t\t// release memory in IE\r\n\t\tdiv = null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds the same handler for all of the specified attrs\r\n * @param {String} attrs Pipe-separated list of attributes\r\n * @param {Function} handler The method that will be applied\r\n */\r\nfunction addHandle( attrs, handler ) {\r\n\tvar arr = attrs.split(\"|\"),\r\n\t\ti = arr.length;\r\n\r\n\twhile ( i-- ) {\r\n\t\tExpr.attrHandle[ arr[i] ] = handler;\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks document order of two siblings\r\n * @param {Element} a\r\n * @param {Element} b\r\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\r\n */\r\nfunction siblingCheck( a, b ) {\r\n\tvar cur = b && a,\r\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\r\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\r\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\r\n\r\n\t// Use IE sourceIndex if available on both nodes\r\n\tif ( diff ) {\r\n\t\treturn diff;\r\n\t}\r\n\r\n\t// Check if b follows a\r\n\tif ( cur ) {\r\n\t\twhile ( (cur = cur.nextSibling) ) {\r\n\t\t\tif ( cur === b ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn a ? 1 : -1;\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for input types\r\n * @param {String} type\r\n */\r\nfunction createInputPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn name === \"input\" && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for buttons\r\n * @param {String} type\r\n */\r\nfunction createButtonPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for positionals\r\n * @param {Function} fn\r\n */\r\nfunction createPositionalPseudo( fn ) {\r\n\treturn markFunction(function( argument ) {\r\n\t\targument = +argument;\r\n\t\treturn markFunction(function( seed, matches ) {\r\n\t\t\tvar j,\r\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\r\n\t\t\t\ti = matchIndexes.length;\r\n\r\n\t\t\t// Match elements found at the specified indexes\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\r\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Checks a node for validity as a Sizzle context\r\n * @param {Element|Object=} context\r\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\r\n */\r\nfunction testContext( context ) {\r\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\r\n}\r\n\r\n// Expose support vars for convenience\r\nsupport = Sizzle.support = {};\r\n\r\n/**\r\n * Detects XML nodes\r\n * @param {Element|Object} elem An element or a document\r\n * @returns {Boolean} True iff elem is a non-HTML XML node\r\n */\r\nisXML = Sizzle.isXML = function( elem ) {\r\n\t// documentElement is verified for cases where it doesn't yet exist\r\n\t// (such as loading iframes in IE - #4833)\r\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\r\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\r\n};\r\n\r\n/**\r\n * Sets document-related variables once based on the current document\r\n * @param {Element|Object} [doc] An element or document object to use to set the document\r\n * @returns {Object} Returns the current document\r\n */\r\nsetDocument = Sizzle.setDocument = function( node ) {\r\n\tvar hasCompare, parent,\r\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\r\n\r\n\t// Return early if doc is invalid or already selected\r\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\r\n\t\treturn document;\r\n\t}\r\n\r\n\t// Update global variables\r\n\tdocument = doc;\r\n\tdocElem = document.documentElement;\r\n\tdocumentIsHTML = !isXML( document );\r\n\r\n\t// Support: IE 9-11, Edge\r\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\r\n\tif ( (parent = document.defaultView) && parent.top !== parent ) {\r\n\t\t// Support: IE 11\r\n\t\tif ( parent.addEventListener ) {\r\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\r\n\r\n\t\t// Support: IE 9 - 10 only\r\n\t\t} else if ( parent.attachEvent ) {\r\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\r\n\t\t}\r\n\t}\r\n\r\n\t/* Attributes\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Support: IE<8\r\n\t// Verify that getAttribute really returns attributes and not properties\r\n\t// (excepting IE8 booleans)\r\n\tsupport.attributes = assert(function( div ) {\r\n\t\tdiv.className = \"i\";\r\n\t\treturn !div.getAttribute(\"className\");\r\n\t});\r\n\r\n\t/* getElement(s)By*\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Check if getElementsByTagName(\"*\") returns only elements\r\n\tsupport.getElementsByTagName = assert(function( div ) {\r\n\t\tdiv.appendChild( document.createComment(\"\") );\r\n\t\treturn !div.getElementsByTagName(\"*\").length;\r\n\t});\r\n\r\n\t// Support: IE<9\r\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\r\n\r\n\t// Support: IE<10\r\n\t// Check if getElementById returns elements by name\r\n\t// The broken getElementById methods don't pick up programatically-set names,\r\n\t// so use a roundabout getElementsByName test\r\n\tsupport.getById = assert(function( div ) {\r\n\t\tdocElem.appendChild( div ).id = expando;\r\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\r\n\t});\r\n\r\n\t// ID find and filter\r\n\tif ( support.getById ) {\r\n\t\tExpr.find[\"ID\"] = function( id, context ) {\r\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\r\n\t\t\t\tvar m = context.getElementById( id );\r\n\t\t\t\treturn m ? [ m ] : [];\r\n\t\t\t}\r\n\t\t};\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t} else {\r\n\t\t// Support: IE6/7\r\n\t\t// getElementById is not reliable as a find shortcut\r\n\t\tdelete Expr.find[\"ID\"];\r\n\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\r\n\t\t\t\t\telem.getAttributeNode(\"id\");\r\n\t\t\t\treturn node && node.value === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t}\r\n\r\n\t// Tag\r\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\r\n\t\tfunction( tag, context ) {\r\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\r\n\t\t\t\treturn context.getElementsByTagName( tag );\r\n\r\n\t\t\t// DocumentFragment nodes don't have gEBTN\r\n\t\t\t} else if ( support.qsa ) {\r\n\t\t\t\treturn context.querySelectorAll( tag );\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\tfunction( tag, context ) {\r\n\t\t\tvar elem,\r\n\t\t\t\ttmp = [],\r\n\t\t\t\ti = 0,\r\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\r\n\t\t\t\tresults = context.getElementsByTagName( tag );\r\n\r\n\t\t\t// Filter out possible comments\r\n\t\t\tif ( tag === \"*\" ) {\r\n\t\t\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\ttmp.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn tmp;\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t// Class\r\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\r\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\r\n\t\t\treturn context.getElementsByClassName( className );\r\n\t\t}\r\n\t};\r\n\r\n\t/* QSA/matchesSelector\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// QSA and matchesSelector support\r\n\r\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\r\n\trbuggyMatches = [];\r\n\r\n\t// qSa(:focus) reports false when true (Chrome 21)\r\n\t// We allow this because of a bug in IE8/9 that throws an error\r\n\t// whenever `document.activeElement` is accessed on an iframe\r\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\r\n\t// See http://bugs.jquery.com/ticket/13378\r\n\trbuggyQSA = [];\r\n\r\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\r\n\t\t// Build QSA regex\r\n\t\t// Regex strategy adopted from Diego Perini\r\n\t\tassert(function( div ) {\r\n\t\t\t// Select is set to empty string on purpose\r\n\t\t\t// This is to test IE's treatment of not explicitly\r\n\t\t\t// setting a boolean content attribute,\r\n\t\t\t// since its presence should be enough\r\n\t\t\t// http://bugs.jquery.com/ticket/12359\r\n\t\t\tdocElem.appendChild( div ).innerHTML = \"
          \" +\r\n\t\t\t\t\"\";\r\n\r\n\t\t\t// Support: IE8, Opera 11-12.16\r\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\r\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\r\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\r\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\r\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\r\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\"~=\");\r\n\t\t\t}\r\n\r\n\t\t\t// Webkit/Opera - :checked should return selected option elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\r\n\t\t\t\trbuggyQSA.push(\":checked\");\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Safari 8+, iOS 8+\r\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\r\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\r\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Support: Windows 8 Native Apps\r\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\r\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Enforce case-sensitivity of name attribute\r\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\r\n\t\t\t}\r\n\r\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\r\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\r\n\t\t\tdiv.querySelectorAll(\"*,:x\");\r\n\t\t\trbuggyQSA.push(\",.*:\");\r\n\t\t});\r\n\t}\r\n\r\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\r\n\t\tdocElem.webkitMatchesSelector ||\r\n\t\tdocElem.mozMatchesSelector ||\r\n\t\tdocElem.oMatchesSelector ||\r\n\t\tdocElem.msMatchesSelector) )) ) {\r\n\r\n\t\tassert(function( div ) {\r\n\t\t\t// Check to see if it's possible to do matchesSelector\r\n\t\t\t// on a disconnected node (IE 9)\r\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\r\n\r\n\t\t\t// This should fail with an exception\r\n\t\t\t// Gecko does not error, returns false instead\r\n\t\t\tmatches.call( div, \"[s!='']:x\" );\r\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\r\n\t\t});\r\n\t}\r\n\r\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\r\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\r\n\r\n\t/* Contains\r\n\t---------------------------------------------------------------------- */\r\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\r\n\r\n\t// Element contains another\r\n\t// Purposefully self-exclusive\r\n\t// As in, an element does not contain itself\r\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\r\n\t\tfunction( a, b ) {\r\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\r\n\t\t\t\tbup = b && b.parentNode;\r\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\r\n\t\t\t\tadown.contains ?\r\n\t\t\t\t\tadown.contains( bup ) :\r\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\r\n\t\t\t));\r\n\t\t} :\r\n\t\tfunction( a, b ) {\r\n\t\t\tif ( b ) {\r\n\t\t\t\twhile ( (b = b.parentNode) ) {\r\n\t\t\t\t\tif ( b === a ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t/* Sorting\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Document order sorting\r\n\tsortOrder = hasCompare ?\r\n\tfunction( a, b ) {\r\n\r\n\t\t// Flag for duplicate removal\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Sort on method existence if only one input has compareDocumentPosition\r\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\r\n\t\tif ( compare ) {\r\n\t\t\treturn compare;\r\n\t\t}\r\n\r\n\t\t// Calculate position if both inputs belong to the same document\r\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\r\n\t\t\ta.compareDocumentPosition( b ) :\r\n\r\n\t\t\t// Otherwise we know they are disconnected\r\n\t\t\t1;\r\n\r\n\t\t// Disconnected nodes\r\n\t\tif ( compare & 1 ||\r\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\r\n\r\n\t\t\t// Choose the first element that is related to our preferred document\r\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\t// Maintain original order\r\n\t\t\treturn sortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\t\t}\r\n\r\n\t\treturn compare & 4 ? -1 : 1;\r\n\t} :\r\n\tfunction( a, b ) {\r\n\t\t// Exit early if the nodes are identical\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\taup = a.parentNode,\r\n\t\t\tbup = b.parentNode,\r\n\t\t\tap = [ a ],\r\n\t\t\tbp = [ b ];\r\n\r\n\t\t// Parentless nodes are either documents or disconnected\r\n\t\tif ( !aup || !bup ) {\r\n\t\t\treturn a === document ? -1 :\r\n\t\t\t\tb === document ? 1 :\r\n\t\t\t\taup ? -1 :\r\n\t\t\t\tbup ? 1 :\r\n\t\t\t\tsortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\r\n\t\t// If the nodes are siblings, we can do a quick check\r\n\t\t} else if ( aup === bup ) {\r\n\t\t\treturn siblingCheck( a, b );\r\n\t\t}\r\n\r\n\t\t// Otherwise we need full lists of their ancestors for comparison\r\n\t\tcur = a;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tap.unshift( cur );\r\n\t\t}\r\n\t\tcur = b;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tbp.unshift( cur );\r\n\t\t}\r\n\r\n\t\t// Walk down the tree looking for a discrepancy\r\n\t\twhile ( ap[i] === bp[i] ) {\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\treturn i ?\r\n\t\t\t// Do a sibling check if the nodes have a common ancestor\r\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\r\n\r\n\t\t\t// Otherwise nodes in our document sort first\r\n\t\t\tap[i] === preferredDoc ? -1 :\r\n\t\t\tbp[i] === preferredDoc ? 1 :\r\n\t\t\t0;\r\n\t};\r\n\r\n\treturn document;\r\n};\r\n\r\nSizzle.matches = function( expr, elements ) {\r\n\treturn Sizzle( expr, null, null, elements );\r\n};\r\n\r\nSizzle.matchesSelector = function( elem, expr ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\t// Make sure that attribute selectors are quoted\r\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\r\n\r\n\tif ( support.matchesSelector && documentIsHTML &&\r\n\t\t!compilerCache[ expr + \" \" ] &&\r\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\r\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\r\n\r\n\t\ttry {\r\n\t\t\tvar ret = matches.call( elem, expr );\r\n\r\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\r\n\t\t\tif ( ret || support.disconnectedMatch ||\r\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\r\n\t\t\t\t\t// fragment in IE 9\r\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t} catch (e) {}\r\n\t}\r\n\r\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\r\n};\r\n\r\nSizzle.contains = function( context, elem ) {\r\n\t// Set document vars if needed\r\n\tif ( ( context.ownerDocument || context ) !== document ) {\r\n\t\tsetDocument( context );\r\n\t}\r\n\treturn contains( context, elem );\r\n};\r\n\r\nSizzle.attr = function( elem, name ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\r\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\r\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\r\n\t\t\tfn( elem, name, !documentIsHTML ) :\r\n\t\t\tundefined;\r\n\r\n\treturn val !== undefined ?\r\n\t\tval :\r\n\t\tsupport.attributes || !documentIsHTML ?\r\n\t\t\telem.getAttribute( name ) :\r\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\r\n\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n};\r\n\r\nSizzle.error = function( msg ) {\r\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\r\n};\r\n\r\n/**\r\n * Document sorting and removing duplicates\r\n * @param {ArrayLike} results\r\n */\r\nSizzle.uniqueSort = function( results ) {\r\n\tvar elem,\r\n\t\tduplicates = [],\r\n\t\tj = 0,\r\n\t\ti = 0;\r\n\r\n\t// Unless we *know* we can detect duplicates, assume their presence\r\n\thasDuplicate = !support.detectDuplicates;\r\n\tsortInput = !support.sortStable && results.slice( 0 );\r\n\tresults.sort( sortOrder );\r\n\r\n\tif ( hasDuplicate ) {\r\n\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\tif ( elem === results[ i ] ) {\r\n\t\t\t\tj = duplicates.push( i );\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile ( j-- ) {\r\n\t\t\tresults.splice( duplicates[ j ], 1 );\r\n\t\t}\r\n\t}\r\n\r\n\t// Clear input after sorting to release objects\r\n\t// See https://github.com/jquery/sizzle/pull/225\r\n\tsortInput = null;\r\n\r\n\treturn results;\r\n};\r\n\r\n/**\r\n * Utility function for retrieving the text value of an array of DOM nodes\r\n * @param {Array|Element} elem\r\n */\r\ngetText = Sizzle.getText = function( elem ) {\r\n\tvar node,\r\n\t\tret = \"\",\r\n\t\ti = 0,\r\n\t\tnodeType = elem.nodeType;\r\n\r\n\tif ( !nodeType ) {\r\n\t\t// If no nodeType, this is expected to be an array\r\n\t\twhile ( (node = elem[i++]) ) {\r\n\t\t\t// Do not traverse comment nodes\r\n\t\t\tret += getText( node );\r\n\t\t}\r\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\r\n\t\t// Use textContent for elements\r\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\r\n\t\tif ( typeof elem.textContent === \"string\" ) {\r\n\t\t\treturn elem.textContent;\r\n\t\t} else {\r\n\t\t\t// Traverse its children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tret += getText( elem );\r\n\t\t\t}\r\n\t\t}\r\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\r\n\t\treturn elem.nodeValue;\r\n\t}\r\n\t// Do not include comment or processing instruction nodes\r\n\r\n\treturn ret;\r\n};\r\n\r\nExpr = Sizzle.selectors = {\r\n\r\n\t// Can be adjusted by the user\r\n\tcacheLength: 50,\r\n\r\n\tcreatePseudo: markFunction,\r\n\r\n\tmatch: matchExpr,\r\n\r\n\tattrHandle: {},\r\n\r\n\tfind: {},\r\n\r\n\trelative: {\r\n\t\t\">\": { dir: \"parentNode\", first: true },\r\n\t\t\" \": { dir: \"parentNode\" },\r\n\t\t\"+\": { dir: \"previousSibling\", first: true },\r\n\t\t\"~\": { dir: \"previousSibling\" }\r\n\t},\r\n\r\n\tpreFilter: {\r\n\t\t\"ATTR\": function( match ) {\r\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\r\n\r\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\r\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\r\n\r\n\t\t\tif ( match[2] === \"~=\" ) {\r\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\r\n\t\t\t}\r\n\r\n\t\t\treturn match.slice( 0, 4 );\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( match ) {\r\n\t\t\t/* matches from matchExpr[\"CHILD\"]\r\n\t\t\t\t1 type (only|nth|...)\r\n\t\t\t\t2 what (child|of-type)\r\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\r\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\r\n\t\t\t\t5 sign of xn-component\r\n\t\t\t\t6 x of xn-component\r\n\t\t\t\t7 sign of y-component\r\n\t\t\t\t8 y of y-component\r\n\t\t\t*/\r\n\t\t\tmatch[1] = match[1].toLowerCase();\r\n\r\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\r\n\t\t\t\t// nth-* requires argument\r\n\t\t\t\tif ( !match[3] ) {\r\n\t\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\r\n\t\t\t\t// remember that false/true cast respectively to 0/1\r\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\r\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\r\n\r\n\t\t\t// other types prohibit arguments\r\n\t\t\t} else if ( match[3] ) {\r\n\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t}\r\n\r\n\t\t\treturn match;\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( match ) {\r\n\t\t\tvar excess,\r\n\t\t\t\tunquoted = !match[6] && match[2];\r\n\r\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// Accept quoted arguments as-is\r\n\t\t\tif ( match[3] ) {\r\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\r\n\r\n\t\t\t// Strip excess characters from unquoted arguments\r\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\r\n\t\t\t\t// Get excess from tokenize (recursively)\r\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\r\n\t\t\t\t// advance to the next closing parenthesis\r\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\r\n\r\n\t\t\t\t// excess is a negative index\r\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\r\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\r\n\t\t\t}\r\n\r\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\r\n\t\t\treturn match.slice( 0, 3 );\r\n\t\t}\r\n\t},\r\n\r\n\tfilter: {\r\n\r\n\t\t\"TAG\": function( nodeNameSelector ) {\r\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn nodeNameSelector === \"*\" ?\r\n\t\t\t\tfunction() { return true; } :\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CLASS\": function( className ) {\r\n\t\t\tvar pattern = classCache[ className + \" \" ];\r\n\r\n\t\t\treturn pattern ||\r\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\r\n\t\t\t\tclassCache( className, function( elem ) {\r\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\r\n\t\t\t\t});\r\n\t\t},\r\n\r\n\t\t\"ATTR\": function( name, operator, check ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar result = Sizzle.attr( elem, name );\r\n\r\n\t\t\t\tif ( result == null ) {\r\n\t\t\t\t\treturn operator === \"!=\";\r\n\t\t\t\t}\r\n\t\t\t\tif ( !operator ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult += \"\";\r\n\r\n\t\t\t\treturn operator === \"=\" ? result === check :\r\n\t\t\t\t\toperator === \"!=\" ? result !== check :\r\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\r\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\r\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\r\n\t\t\t\t\tfalse;\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\r\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\r\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\r\n\t\t\t\tofType = what === \"of-type\";\r\n\r\n\t\t\treturn first === 1 && last === 0 ?\r\n\r\n\t\t\t\t// Shortcut for :nth-*(n)\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn !!elem.parentNode;\r\n\t\t\t\t} :\r\n\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\r\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\r\n\t\t\t\t\t\tparent = elem.parentNode,\r\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\r\n\t\t\t\t\t\tuseCache = !xml && !ofType,\r\n\t\t\t\t\t\tdiff = false;\r\n\r\n\t\t\t\t\tif ( parent ) {\r\n\r\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\r\n\t\t\t\t\t\tif ( simple ) {\r\n\t\t\t\t\t\t\twhile ( dir ) {\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\r\n\t\t\t\t\t\t\t\t\tif ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\r\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\r\n\r\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\r\n\t\t\t\t\t\tif ( forward && useCache ) {\r\n\r\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\r\n\r\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\tnode = parent;\r\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\r\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\r\n\r\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\r\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\r\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\r\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\r\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Use previously-cached element index if available\r\n\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// xml :nth-child(...)\r\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\r\n\t\t\t\t\t\t\tif ( diff === false ) {\r\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\r\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\r\n\t\t\t\t\t\t\t\t\t\t++diff ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\r\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\r\n\t\t\t\t\t\tdiff -= last;\r\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( pseudo, argument ) {\r\n\t\t\t// pseudo-class names are case-insensitive\r\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\r\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\r\n\t\t\t// Remember that setFilters inherits from pseudos\r\n\t\t\tvar args,\r\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\r\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\r\n\r\n\t\t\t// The user may use createPseudo to indicate that\r\n\t\t\t// arguments are needed to create the filter function\r\n\t\t\t// just as Sizzle does\r\n\t\t\tif ( fn[ expando ] ) {\r\n\t\t\t\treturn fn( argument );\r\n\t\t\t}\r\n\r\n\t\t\t// But maintain support for old signatures\r\n\t\t\tif ( fn.length > 1 ) {\r\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\r\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\r\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\r\n\t\t\t\t\t\tvar idx,\r\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\r\n\t\t\t\t\t\t\ti = matched.length;\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\r\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}) :\r\n\t\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\t\treturn fn( elem, 0, args );\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn fn;\r\n\t\t}\r\n\t},\r\n\r\n\tpseudos: {\r\n\t\t// Potentially complex pseudos\r\n\t\t\"not\": markFunction(function( selector ) {\r\n\t\t\t// Trim the selector passed to compile\r\n\t\t\t// to avoid treating leading and trailing\r\n\t\t\t// spaces as combinators\r\n\t\t\tvar input = [],\r\n\t\t\t\tresults = [],\r\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\r\n\r\n\t\t\treturn matcher[ expando ] ?\r\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\r\n\t\t\t\t\tvar elem,\r\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\r\n\t\t\t\t\t\ti = seed.length;\r\n\r\n\t\t\t\t\t// Match elements unmatched by `matcher`\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\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\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tinput[0] = elem;\r\n\t\t\t\t\tmatcher( input, null, xml, results );\r\n\t\t\t\t\t// Don't keep the element (issue #299)\r\n\t\t\t\t\tinput[0] = null;\r\n\t\t\t\t\treturn !results.pop();\r\n\t\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"has\": markFunction(function( selector ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"contains\": markFunction(function( text ) {\r\n\t\t\ttext = text.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// \"Whether an element is represented by a :lang() selector\r\n\t\t// is based solely on the element's language value\r\n\t\t// being equal to the identifier C,\r\n\t\t// or beginning with the identifier C immediately followed by \"-\".\r\n\t\t// The matching of C against the element's language value is performed case-insensitively.\r\n\t\t// The identifier C does not have to be a valid language name.\"\r\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\r\n\t\t\"lang\": markFunction( function( lang ) {\r\n\t\t\t// lang value must be a valid identifier\r\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\r\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\r\n\t\t\t}\r\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar elemLang;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\r\n\t\t\t\t\t\telem.lang :\r\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\r\n\r\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\r\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// Miscellaneous\r\n\t\t\"target\": function( elem ) {\r\n\t\t\tvar hash = window.location && window.location.hash;\r\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\r\n\t\t},\r\n\r\n\t\t\"root\": function( elem ) {\r\n\t\t\treturn elem === docElem;\r\n\t\t},\r\n\r\n\t\t\"focus\": function( elem ) {\r\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n\t\t},\r\n\r\n\t\t// Boolean properties\r\n\t\t\"enabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === false;\r\n\t\t},\r\n\r\n\t\t\"disabled\": function( elem ) {\r\n\t\t\treturn elem.disabled === true;\r\n\t\t},\r\n\r\n\t\t\"checked\": function( elem ) {\r\n\t\t\t// In CSS3, :checked should return both checked and selected elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\r\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\r\n\t\t},\r\n\r\n\t\t\"selected\": function( elem ) {\r\n\t\t\t// Accessing this property makes selected-by-default\r\n\t\t\t// options in Safari work properly\r\n\t\t\tif ( elem.parentNode ) {\r\n\t\t\t\telem.parentNode.selectedIndex;\r\n\t\t\t}\r\n\r\n\t\t\treturn elem.selected === true;\r\n\t\t},\r\n\r\n\t\t// Contents\r\n\t\t\"empty\": function( elem ) {\r\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\r\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\r\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\r\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tif ( elem.nodeType < 6 ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t\"parent\": function( elem ) {\r\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\r\n\t\t},\r\n\r\n\t\t// Element/input types\r\n\t\t\"header\": function( elem ) {\r\n\t\t\treturn rheader.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"input\": function( elem ) {\r\n\t\t\treturn rinputs.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"button\": function( elem ) {\r\n\t\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\r\n\t\t},\r\n\r\n\t\t\"text\": function( elem ) {\r\n\t\t\tvar attr;\r\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\r\n\t\t\t\telem.type === \"text\" &&\r\n\r\n\t\t\t\t// Support: IE<8\r\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\r\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\r\n\t\t},\r\n\r\n\t\t// Position-in-collection\r\n\t\t\"first\": createPositionalPseudo(function() {\r\n\t\t\treturn [ 0 ];\r\n\t\t}),\r\n\r\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\treturn [ length - 1 ];\r\n\t\t}),\r\n\r\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\r\n\t\t}),\r\n\r\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 1;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; --i >= 0; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; ++i < length; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t})\r\n\t}\r\n};\r\n\r\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\r\n\r\n// Add button/input type pseudos\r\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\r\n\tExpr.pseudos[ i ] = createInputPseudo( i );\r\n}\r\nfor ( i in { submit: true, reset: true } ) {\r\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\r\n}\r\n\r\n// Easy API for creating new setFilters\r\nfunction setFilters() {}\r\nsetFilters.prototype = Expr.filters = Expr.pseudos;\r\nExpr.setFilters = new setFilters();\r\n\r\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\r\n\tvar matched, match, tokens, type,\r\n\t\tsoFar, groups, preFilters,\r\n\t\tcached = tokenCache[ selector + \" \" ];\r\n\r\n\tif ( cached ) {\r\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\r\n\t}\r\n\r\n\tsoFar = selector;\r\n\tgroups = [];\r\n\tpreFilters = Expr.preFilter;\r\n\r\n\twhile ( soFar ) {\r\n\r\n\t\t// Comma and first run\r\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\r\n\t\t\tif ( match ) {\r\n\t\t\t\t// Don't consume trailing commas as valid\r\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\r\n\t\t\t}\r\n\t\t\tgroups.push( (tokens = []) );\r\n\t\t}\r\n\r\n\t\tmatched = false;\r\n\r\n\t\t// Combinators\r\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\r\n\t\t\tmatched = match.shift();\r\n\t\t\ttokens.push({\r\n\t\t\t\tvalue: matched,\r\n\t\t\t\t// Cast descendant combinators to space\r\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\r\n\t\t\t});\r\n\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t}\r\n\r\n\t\t// Filters\r\n\t\tfor ( type in Expr.filter ) {\r\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\r\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\r\n\t\t\t\tmatched = match.shift();\r\n\t\t\t\ttokens.push({\r\n\t\t\t\t\tvalue: matched,\r\n\t\t\t\t\ttype: type,\r\n\t\t\t\t\tmatches: match\r\n\t\t\t\t});\r\n\t\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( !matched ) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the length of the invalid excess\r\n\t// if we're just parsing\r\n\t// Otherwise, throw an error or return tokens\r\n\treturn parseOnly ?\r\n\t\tsoFar.length :\r\n\t\tsoFar ?\r\n\t\t\tSizzle.error( selector ) :\r\n\t\t\t// Cache the tokens\r\n\t\t\ttokenCache( selector, groups ).slice( 0 );\r\n};\r\n\r\nfunction toSelector( tokens ) {\r\n\tvar i = 0,\r\n\t\tlen = tokens.length,\r\n\t\tselector = \"\";\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tselector += tokens[i].value;\r\n\t}\r\n\treturn selector;\r\n}\r\n\r\nfunction addCombinator( matcher, combinator, base ) {\r\n\tvar dir = combinator.dir,\r\n\t\tcheckNonElements = base && dir === \"parentNode\",\r\n\t\tdoneName = done++;\r\n\r\n\treturn combinator.first ?\r\n\t\t// Check against closest ancestor/preceding element\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\treturn matcher( elem, context, xml );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\t// Check against all ancestor/preceding elements\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar oldCache, uniqueCache, outerCache,\r\n\t\t\t\tnewCache = [ dirruns, doneName ];\r\n\r\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\r\n\t\t\tif ( xml ) {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n\t\t\t\t\t\t\treturn true;\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} else {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\r\n\r\n\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\tif ( (oldCache = uniqueCache[ dir ]) &&\r\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\r\n\r\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\tuniqueCache[ dir ] = newCache;\r\n\r\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\r\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n}\r\n\r\nfunction elementMatcher( matchers ) {\r\n\treturn matchers.length > 1 ?\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar i = matchers.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} :\r\n\t\tmatchers[0];\r\n}\r\n\r\nfunction multipleContexts( selector, contexts, results ) {\r\n\tvar i = 0,\r\n\t\tlen = contexts.length;\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tSizzle( selector, contexts[i], results );\r\n\t}\r\n\treturn results;\r\n}\r\n\r\nfunction condense( unmatched, map, filter, context, xml ) {\r\n\tvar elem,\r\n\t\tnewUnmatched = [],\r\n\t\ti = 0,\r\n\t\tlen = unmatched.length,\r\n\t\tmapped = map != null;\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\r\n\t\t\t\tnewUnmatched.push( elem );\r\n\t\t\t\tif ( mapped ) {\r\n\t\t\t\t\tmap.push( i );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn newUnmatched;\r\n}\r\n\r\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\r\n\tif ( postFilter && !postFilter[ expando ] ) {\r\n\t\tpostFilter = setMatcher( postFilter );\r\n\t}\r\n\tif ( postFinder && !postFinder[ expando ] ) {\r\n\t\tpostFinder = setMatcher( postFinder, postSelector );\r\n\t}\r\n\treturn markFunction(function( seed, results, context, xml ) {\r\n\t\tvar temp, i, elem,\r\n\t\t\tpreMap = [],\r\n\t\t\tpostMap = [],\r\n\t\t\tpreexisting = results.length,\r\n\r\n\t\t\t// Get initial elements from seed or context\r\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\r\n\r\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\r\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\r\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\r\n\t\t\t\telems,\r\n\r\n\t\t\tmatcherOut = matcher ?\r\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\r\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\r\n\r\n\t\t\t\t\t// ...intermediate processing is necessary\r\n\t\t\t\t\t[] :\r\n\r\n\t\t\t\t\t// ...otherwise use results directly\r\n\t\t\t\t\tresults :\r\n\t\t\t\tmatcherIn;\r\n\r\n\t\t// Find primary matches\r\n\t\tif ( matcher ) {\r\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\r\n\t\t}\r\n\r\n\t\t// Apply postFilter\r\n\t\tif ( postFilter ) {\r\n\t\t\ttemp = condense( matcherOut, postMap );\r\n\t\t\tpostFilter( temp, [], context, xml );\r\n\r\n\t\t\t// Un-match failing elements by moving them back to matcherIn\r\n\t\t\ti = temp.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( (elem = temp[i]) ) {\r\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( seed ) {\r\n\t\t\tif ( postFinder || preFilter ) {\r\n\t\t\t\tif ( postFinder ) {\r\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\r\n\t\t\t\t\ttemp = [];\r\n\t\t\t\t\ti = matcherOut.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\r\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\r\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\r\n\t\t\t\ti = matcherOut.length;\r\n\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\r\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\r\n\r\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Add elements to results, through postFinder if defined\r\n\t\t} else {\r\n\t\t\tmatcherOut = condense(\r\n\t\t\t\tmatcherOut === results ?\r\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\r\n\t\t\t\t\tmatcherOut\r\n\t\t\t);\r\n\t\t\tif ( postFinder ) {\r\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\r\n\t\t\t} else {\r\n\t\t\t\tpush.apply( results, matcherOut );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction matcherFromTokens( tokens ) {\r\n\tvar checkContext, matcher, j,\r\n\t\tlen = tokens.length,\r\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\r\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\r\n\t\ti = leadingRelative ? 1 : 0,\r\n\r\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\r\n\t\tmatchContext = addCombinator( function( elem ) {\r\n\t\t\treturn elem === checkContext;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchAnyContext = addCombinator( function( elem ) {\r\n\t\t\treturn indexOf( checkContext, elem ) > -1;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchers = [ function( elem, context, xml ) {\r\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\r\n\t\t\t\t(checkContext = context).nodeType ?\r\n\t\t\t\t\tmatchContext( elem, context, xml ) :\r\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\r\n\t\t\t// Avoid hanging onto element (issue #299)\r\n\t\t\tcheckContext = null;\r\n\t\t\treturn ret;\r\n\t\t} ];\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\r\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\r\n\t\t} else {\r\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\r\n\r\n\t\t\t// Return special upon seeing a positional matcher\r\n\t\t\tif ( matcher[ expando ] ) {\r\n\t\t\t\t// Find the next relative operator (if any) for proper handling\r\n\t\t\t\tj = ++i;\r\n\t\t\t\tfor ( ; j < len; j++ ) {\r\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn setMatcher(\r\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\r\n\t\t\t\t\ti > 1 && toSelector(\r\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\r\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\r\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\r\n\t\t\t\t\tmatcher,\r\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\r\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\r\n\t\t\t\t\tj < len && toSelector( tokens )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tmatchers.push( matcher );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementMatcher( matchers );\r\n}\r\n\r\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\r\n\tvar bySet = setMatchers.length > 0,\r\n\t\tbyElement = elementMatchers.length > 0,\r\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\r\n\t\t\tvar elem, j, matcher,\r\n\t\t\t\tmatchedCount = 0,\r\n\t\t\t\ti = \"0\",\r\n\t\t\t\tunmatched = seed && [],\r\n\t\t\t\tsetMatched = [],\r\n\t\t\t\tcontextBackup = outermostContext,\r\n\t\t\t\t// We must always have either seed elements or outermost context\r\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\r\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\r\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\r\n\t\t\t\tlen = elems.length;\r\n\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\toutermostContext = context === document || context || outermost;\r\n\t\t\t}\r\n\r\n\t\t\t// Add elements passing elementMatchers directly to results\r\n\t\t\t// Support: IE<9, Safari\r\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\r\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\r\n\t\t\t\tif ( byElement && elem ) {\r\n\t\t\t\t\tj = 0;\r\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\r\n\t\t\t\t\t\tsetDocument( elem );\r\n\t\t\t\t\t\txml = !documentIsHTML;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( outermost ) {\r\n\t\t\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Track unmatched elements for set filters\r\n\t\t\t\tif ( bySet ) {\r\n\t\t\t\t\t// They will have gone through all possible matchers\r\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\r\n\t\t\t\t\t\tmatchedCount--;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Lengthen the array for every element, matched or not\r\n\t\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t\tunmatched.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\r\n\t\t\t// makes the latter nonnegative.\r\n\t\t\tmatchedCount += i;\r\n\r\n\t\t\t// Apply set filters to unmatched elements\r\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\r\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\r\n\t\t\t// no element matchers and no seed.\r\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\r\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\r\n\t\t\t// numerically zero.\r\n\t\t\tif ( bySet && i !== matchedCount ) {\r\n\t\t\t\tj = 0;\r\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\r\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\r\n\t\t\t\t\tif ( matchedCount > 0 ) {\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\r\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\r\n\t\t\t\t\tsetMatched = condense( setMatched );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add matches to results\r\n\t\t\t\tpush.apply( results, setMatched );\r\n\r\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\r\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\r\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\r\n\r\n\t\t\t\t\tSizzle.uniqueSort( results );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Override manipulation of globals by nested matchers\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\toutermostContext = contextBackup;\r\n\t\t\t}\r\n\r\n\t\t\treturn unmatched;\r\n\t\t};\r\n\r\n\treturn bySet ?\r\n\t\tmarkFunction( superMatcher ) :\r\n\t\tsuperMatcher;\r\n}\r\n\r\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\r\n\tvar i,\r\n\t\tsetMatchers = [],\r\n\t\telementMatchers = [],\r\n\t\tcached = compilerCache[ selector + \" \" ];\r\n\r\n\tif ( !cached ) {\r\n\t\t// Generate a function of recursive functions that can be used to check each element\r\n\t\tif ( !match ) {\r\n\t\t\tmatch = tokenize( selector );\r\n\t\t}\r\n\t\ti = match.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tcached = matcherFromTokens( match[i] );\r\n\t\t\tif ( cached[ expando ] ) {\r\n\t\t\t\tsetMatchers.push( cached );\r\n\t\t\t} else {\r\n\t\t\t\telementMatchers.push( cached );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Cache the compiled function\r\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\r\n\r\n\t\t// Save selector and tokenization\r\n\t\tcached.selector = selector;\r\n\t}\r\n\treturn cached;\r\n};\r\n\r\n/**\r\n * A low-level selection function that works with Sizzle's compiled\r\n * selector functions\r\n * @param {String|Function} selector A selector or a pre-compiled\r\n * selector function built with Sizzle.compile\r\n * @param {Element} context\r\n * @param {Array} [results]\r\n * @param {Array} [seed] A set of elements to match against\r\n */\r\nselect = Sizzle.select = function( selector, context, results, seed ) {\r\n\tvar i, tokens, token, type, find,\r\n\t\tcompiled = typeof selector === \"function\" && selector,\r\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\r\n\r\n\tresults = results || [];\r\n\r\n\t// Try to minimize operations if there is only one selector in the list and no seed\r\n\t// (the latter of which guarantees us context)\r\n\tif ( match.length === 1 ) {\r\n\r\n\t\t// Reduce context if the leading compound selector is an ID\r\n\t\ttokens = match[0] = match[0].slice( 0 );\r\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\r\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\r\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\r\n\r\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\r\n\t\t\tif ( !context ) {\r\n\t\t\t\treturn results;\r\n\r\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\r\n\t\t\t} else if ( compiled ) {\r\n\t\t\t\tcontext = context.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tselector = selector.slice( tokens.shift().value.length );\r\n\t\t}\r\n\r\n\t\t// Fetch a seed set for right-to-left matching\r\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\ttoken = tokens[i];\r\n\r\n\t\t\t// Abort if we hit a combinator\r\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif ( (find = Expr.find[ type ]) ) {\r\n\t\t\t\t// Search, expanding context for leading sibling combinators\r\n\t\t\t\tif ( (seed = find(\r\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\r\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\r\n\t\t\t\t)) ) {\r\n\r\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\r\n\t\t\t\t\ttokens.splice( i, 1 );\r\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\r\n\t\t\t\t\tif ( !selector ) {\r\n\t\t\t\t\t\tpush.apply( results, seed );\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Compile and execute a filtering function if one is not provided\r\n\t// Provide `match` to avoid retokenization if we modified the selector above\r\n\t( compiled || compile( selector, match ) )(\r\n\t\tseed,\r\n\t\tcontext,\r\n\t\t!documentIsHTML,\r\n\t\tresults,\r\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\r\n\t);\r\n\treturn results;\r\n};\r\n\r\n// One-time assignments\r\n\r\n// Sort stability\r\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\r\n\r\n// Support: Chrome 14-35+\r\n// Always assume duplicates if they aren't passed to the comparison function\r\nsupport.detectDuplicates = !!hasDuplicate;\r\n\r\n// Initialize against the default document\r\nsetDocument();\r\n\r\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\r\n// Detached nodes confoundingly follow *each other*\r\nsupport.sortDetached = assert(function( div1 ) {\r\n\t// Should return 1, but returns 4 (following)\r\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\r\n});\r\n\r\n// Support: IE<8\r\n// Prevent attribute/property \"interpolation\"\r\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\r\nif ( !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\r\n}) ) {\r\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use defaultValue in place of getAttribute(\"value\")\r\nif ( !support.attributes || !assert(function( div ) {\r\n\tdiv.innerHTML = \"\";\r\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\r\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\r\n}) ) {\r\n\taddHandle( \"value\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\r\n\t\t\treturn elem.defaultValue;\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use getAttributeNode to fetch booleans when getAttribute lies\r\nif ( !assert(function( div ) {\r\n\treturn div.getAttribute(\"disabled\") == null;\r\n}) ) {\r\n\taddHandle( booleans, function( elem, name, isXML ) {\r\n\t\tvar val;\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\r\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\r\n\t\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nreturn Sizzle;\r\n\r\n})( window );\r\n\r\n\r\n\r\njQuery.find = Sizzle;\r\njQuery.expr = Sizzle.selectors;\r\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\r\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\r\njQuery.text = Sizzle.getText;\r\njQuery.isXMLDoc = Sizzle.isXML;\r\njQuery.contains = Sizzle.contains;\r\n\r\n\r\n\r\nvar dir = function( elem, dir, until ) {\r\n\tvar matched = [],\r\n\t\ttruncate = until !== undefined;\r\n\r\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\r\n\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tmatched.push( elem );\r\n\t\t}\r\n\t}\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar siblings = function( n, elem ) {\r\n\tvar matched = [];\r\n\r\n\tfor ( ; n; n = n.nextSibling ) {\r\n\t\tif ( n.nodeType === 1 && n !== elem ) {\r\n\t\t\tmatched.push( n );\r\n\t\t}\r\n\t}\r\n\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar rneedsContext = jQuery.expr.match.needsContext;\r\n\r\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\r\n\r\n\r\n\r\nvar risSimple = /^.[^:#\\[\\.,]*$/;\r\n\r\n// Implement the identical functionality for filter and not\r\nfunction winnow( elements, qualifier, not ) {\r\n\tif ( jQuery.isFunction( qualifier ) ) {\r\n\t\treturn jQuery.grep( elements, function( elem, i ) {\r\n\t\t\t/* jshint -W018 */\r\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( qualifier.nodeType ) {\r\n\t\treturn jQuery.grep( elements, function( elem ) {\r\n\t\t\treturn ( elem === qualifier ) !== not;\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tif ( typeof qualifier === \"string\" ) {\r\n\t\tif ( risSimple.test( qualifier ) ) {\r\n\t\t\treturn jQuery.filter( qualifier, elements, not );\r\n\t\t}\r\n\r\n\t\tqualifier = jQuery.filter( qualifier, elements );\r\n\t}\r\n\r\n\treturn jQuery.grep( elements, function( elem ) {\r\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\r\n\t} );\r\n}\r\n\r\njQuery.filter = function( expr, elems, not ) {\r\n\tvar elem = elems[ 0 ];\r\n\r\n\tif ( not ) {\r\n\t\texpr = \":not(\" + expr + \")\";\r\n\t}\r\n\r\n\treturn elems.length === 1 && elem.nodeType === 1 ?\r\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\r\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\r\n\t\t\treturn elem.nodeType === 1;\r\n\t\t} ) );\r\n};\r\n\r\njQuery.fn.extend( {\r\n\tfind: function( selector ) {\r\n\t\tvar i,\r\n\t\t\tlen = this.length,\r\n\t\t\tret = [],\r\n\t\t\tself = this;\r\n\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\r\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\tjQuery.find( selector, self[ i ], ret );\r\n\t\t}\r\n\r\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\r\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\r\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\r\n\t\treturn ret;\r\n\t},\r\n\tfilter: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\r\n\t},\r\n\tnot: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\r\n\t},\r\n\tis: function( selector ) {\r\n\t\treturn !!winnow(\r\n\t\t\tthis,\r\n\r\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\r\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\r\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\r\n\t\t\t\tjQuery( selector ) :\r\n\t\t\t\tselector || [],\r\n\t\t\tfalse\r\n\t\t).length;\r\n\t}\r\n} );\r\n\r\n\r\n// Initialize a jQuery object\r\n\r\n\r\n// A central reference to the root jQuery(document)\r\nvar rootjQuery,\r\n\r\n\t// A simple way to check for HTML strings\r\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\r\n\t// Strict HTML recognition (#11290: must start with <)\r\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\r\n\r\n\tinit = jQuery.fn.init = function( selector, context, root ) {\r\n\t\tvar match, elem;\r\n\r\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\r\n\t\tif ( !selector ) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// Method init() accepts an alternate rootjQuery\r\n\t\t// so migrate can support jQuery.sub (gh-2101)\r\n\t\troot = root || rootjQuery;\r\n\r\n\t\t// Handle HTML strings\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\t\t\tif ( selector[ 0 ] === \"<\" &&\r\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\r\n\t\t\t\tselector.length >= 3 ) {\r\n\r\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\r\n\t\t\t\tmatch = [ null, selector, null ];\r\n\r\n\t\t\t} else {\r\n\t\t\t\tmatch = rquickExpr.exec( selector );\r\n\t\t\t}\r\n\r\n\t\t\t// Match html or make sure no context is specified for #id\r\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\r\n\r\n\t\t\t\t// HANDLE: $(html) -> $(array)\r\n\t\t\t\tif ( match[ 1 ] ) {\r\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\r\n\r\n\t\t\t\t\t// Option to run scripts is true for back-compat\r\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\r\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\r\n\t\t\t\t\t\tmatch[ 1 ],\r\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t) );\r\n\r\n\t\t\t\t\t// HANDLE: $(html, props)\r\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\r\n\t\t\t\t\t\tfor ( match in context ) {\r\n\r\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\r\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\r\n\r\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this;\r\n\r\n\t\t\t\t// HANDLE: $(#id)\r\n\t\t\t\t} else {\r\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\r\n\r\n\t\t\t\t\t// Support: Blackberry 4.6\r\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\r\n\t\t\t\t\tif ( elem && elem.parentNode ) {\r\n\r\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\r\n\t\t\t\t\t\tthis.length = 1;\r\n\t\t\t\t\t\tthis[ 0 ] = elem;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.context = document;\r\n\t\t\t\t\tthis.selector = selector;\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\r\n\t\t\t// HANDLE: $(expr, $(...))\r\n\t\t\t} else if ( !context || context.jquery ) {\r\n\t\t\t\treturn ( context || root ).find( selector );\r\n\r\n\t\t\t// HANDLE: $(expr, context)\r\n\t\t\t// (which is just equivalent to: $(context).find(expr)\r\n\t\t\t} else {\r\n\t\t\t\treturn this.constructor( context ).find( selector );\r\n\t\t\t}\r\n\r\n\t\t// HANDLE: $(DOMElement)\r\n\t\t} else if ( selector.nodeType ) {\r\n\t\t\tthis.context = this[ 0 ] = selector;\r\n\t\t\tthis.length = 1;\r\n\t\t\treturn this;\r\n\r\n\t\t// HANDLE: $(function)\r\n\t\t// Shortcut for document ready\r\n\t\t} else if ( jQuery.isFunction( selector ) ) {\r\n\t\t\treturn root.ready !== undefined ?\r\n\t\t\t\troot.ready( selector ) :\r\n\r\n\t\t\t\t// Execute immediately if ready is not present\r\n\t\t\t\tselector( jQuery );\r\n\t\t}\r\n\r\n\t\tif ( selector.selector !== undefined ) {\r\n\t\t\tthis.selector = selector.selector;\r\n\t\t\tthis.context = selector.context;\r\n\t\t}\r\n\r\n\t\treturn jQuery.makeArray( selector, this );\r\n\t};\r\n\r\n// Give the init function the jQuery prototype for later instantiation\r\ninit.prototype = jQuery.fn;\r\n\r\n// Initialize central reference\r\nrootjQuery = jQuery( document );\r\n\r\n\r\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\r\n\r\n\t// Methods guaranteed to produce a unique set when starting from a unique set\r\n\tguaranteedUnique = {\r\n\t\tchildren: true,\r\n\t\tcontents: true,\r\n\t\tnext: true,\r\n\t\tprev: true\r\n\t};\r\n\r\njQuery.fn.extend( {\r\n\thas: function( target ) {\r\n\t\tvar targets = jQuery( target, this ),\r\n\t\t\tl = targets.length;\r\n\r\n\t\treturn this.filter( function() {\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tclosest: function( selectors, context ) {\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\tl = this.length,\r\n\t\t\tmatched = [],\r\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\r\n\t\t\t\tjQuery( selectors, context || this.context ) :\r\n\t\t\t\t0;\r\n\r\n\t\tfor ( ; i < l; i++ ) {\r\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\r\n\r\n\t\t\t\t// Always skip document fragments\r\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\r\n\t\t\t\t\tpos.index( cur ) > -1 :\r\n\r\n\t\t\t\t\t// Don't pass non-elements to Sizzle\r\n\t\t\t\t\tcur.nodeType === 1 &&\r\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\r\n\r\n\t\t\t\t\tmatched.push( cur );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\r\n\t},\r\n\r\n\t// Determine the position of an element within the set\r\n\tindex: function( elem ) {\r\n\r\n\t\t// No argument, return index in parent\r\n\t\tif ( !elem ) {\r\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\r\n\t\t}\r\n\r\n\t\t// Index in selector\r\n\t\tif ( typeof elem === \"string\" ) {\r\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\r\n\t\t}\r\n\r\n\t\t// Locate the position of the desired element\r\n\t\treturn indexOf.call( this,\r\n\r\n\t\t\t// If it receives a jQuery object, the first element is used\r\n\t\t\telem.jquery ? elem[ 0 ] : elem\r\n\t\t);\r\n\t},\r\n\r\n\tadd: function( selector, context ) {\r\n\t\treturn this.pushStack(\r\n\t\t\tjQuery.uniqueSort(\r\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\r\n\t\t\t)\r\n\t\t);\r\n\t},\r\n\r\n\taddBack: function( selector ) {\r\n\t\treturn this.add( selector == null ?\r\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\r\n\t\t);\r\n\t}\r\n} );\r\n\r\nfunction sibling( cur, dir ) {\r\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\r\n\treturn cur;\r\n}\r\n\r\njQuery.each( {\r\n\tparent: function( elem ) {\r\n\t\tvar parent = elem.parentNode;\r\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\r\n\t},\r\n\tparents: function( elem ) {\r\n\t\treturn dir( elem, \"parentNode\" );\r\n\t},\r\n\tparentsUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"parentNode\", until );\r\n\t},\r\n\tnext: function( elem ) {\r\n\t\treturn sibling( elem, \"nextSibling\" );\r\n\t},\r\n\tprev: function( elem ) {\r\n\t\treturn sibling( elem, \"previousSibling\" );\r\n\t},\r\n\tnextAll: function( elem ) {\r\n\t\treturn dir( elem, \"nextSibling\" );\r\n\t},\r\n\tprevAll: function( elem ) {\r\n\t\treturn dir( elem, \"previousSibling\" );\r\n\t},\r\n\tnextUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"nextSibling\", until );\r\n\t},\r\n\tprevUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"previousSibling\", until );\r\n\t},\r\n\tsiblings: function( elem ) {\r\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\r\n\t},\r\n\tchildren: function( elem ) {\r\n\t\treturn siblings( elem.firstChild );\r\n\t},\r\n\tcontents: function( elem ) {\r\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\r\n\t}\r\n}, function( name, fn ) {\r\n\tjQuery.fn[ name ] = function( until, selector ) {\r\n\t\tvar matched = jQuery.map( this, fn, until );\r\n\r\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\r\n\t\t\tselector = until;\r\n\t\t}\r\n\r\n\t\tif ( selector && typeof selector === \"string\" ) {\r\n\t\t\tmatched = jQuery.filter( selector, matched );\r\n\t\t}\r\n\r\n\t\tif ( this.length > 1 ) {\r\n\r\n\t\t\t// Remove duplicates\r\n\t\t\tif ( !guaranteedUnique[ name ] ) {\r\n\t\t\t\tjQuery.uniqueSort( matched );\r\n\t\t\t}\r\n\r\n\t\t\t// Reverse order for parents* and prev-derivatives\r\n\t\t\tif ( rparentsprev.test( name ) ) {\r\n\t\t\t\tmatched.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( matched );\r\n\t};\r\n} );\r\nvar rnotwhite = ( /\\S+/g );\r\n\r\n\r\n\r\n// Convert String-formatted options into Object-formatted ones\r\nfunction createOptions( options ) {\r\n\tvar object = {};\r\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\r\n\t\tobject[ flag ] = true;\r\n\t} );\r\n\treturn object;\r\n}\r\n\r\n/*\r\n * Create a callback list using the following parameters:\r\n *\r\n *\toptions: an optional list of space-separated options that will change how\r\n *\t\t\tthe callback list behaves or a more traditional option object\r\n *\r\n * By default a callback list will act like an event callback list and can be\r\n * \"fired\" multiple times.\r\n *\r\n * Possible options:\r\n *\r\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\r\n *\r\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\r\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\r\n *\t\t\t\t\tvalues (like a Deferred)\r\n *\r\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\r\n *\r\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\r\n *\r\n */\r\njQuery.Callbacks = function( options ) {\r\n\r\n\t// Convert options from String-formatted to Object-formatted if needed\r\n\t// (we check in cache first)\r\n\toptions = typeof options === \"string\" ?\r\n\t\tcreateOptions( options ) :\r\n\t\tjQuery.extend( {}, options );\r\n\r\n\tvar // Flag to know if list is currently firing\r\n\t\tfiring,\r\n\r\n\t\t// Last fire value for non-forgettable lists\r\n\t\tmemory,\r\n\r\n\t\t// Flag to know if list was already fired\r\n\t\tfired,\r\n\r\n\t\t// Flag to prevent firing\r\n\t\tlocked,\r\n\r\n\t\t// Actual callback list\r\n\t\tlist = [],\r\n\r\n\t\t// Queue of execution data for repeatable lists\r\n\t\tqueue = [],\r\n\r\n\t\t// Index of currently firing callback (modified by add/remove as needed)\r\n\t\tfiringIndex = -1,\r\n\r\n\t\t// Fire callbacks\r\n\t\tfire = function() {\r\n\r\n\t\t\t// Enforce single-firing\r\n\t\t\tlocked = options.once;\r\n\r\n\t\t\t// Execute callbacks for all pending executions,\r\n\t\t\t// respecting firingIndex overrides and runtime changes\r\n\t\t\tfired = firing = true;\r\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\r\n\t\t\t\tmemory = queue.shift();\r\n\t\t\t\twhile ( ++firingIndex < list.length ) {\r\n\r\n\t\t\t\t\t// Run callback and check for early termination\r\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\r\n\t\t\t\t\t\toptions.stopOnFalse ) {\r\n\r\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\r\n\t\t\t\t\t\tfiringIndex = list.length;\r\n\t\t\t\t\t\tmemory = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Forget the data if we're done with it\r\n\t\t\tif ( !options.memory ) {\r\n\t\t\t\tmemory = false;\r\n\t\t\t}\r\n\r\n\t\t\tfiring = false;\r\n\r\n\t\t\t// Clean up if we're done firing for good\r\n\t\t\tif ( locked ) {\r\n\r\n\t\t\t\t// Keep an empty list if we have data for future add calls\r\n\t\t\t\tif ( memory ) {\r\n\t\t\t\t\tlist = [];\r\n\r\n\t\t\t\t// Otherwise, this object is spent\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Actual Callbacks object\r\n\t\tself = {\r\n\r\n\t\t\t// Add a callback or a collection of callbacks to the list\r\n\t\t\tadd: function() {\r\n\t\t\t\tif ( list ) {\r\n\r\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfiringIndex = list.length - 1;\r\n\t\t\t\t\t\tqueue.push( memory );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t( function add( args ) {\r\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\r\n\t\t\t\t\t\t\tif ( jQuery.isFunction( arg ) ) {\r\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\r\n\t\t\t\t\t\t\t\t\tlist.push( arg );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if ( arg && arg.length && jQuery.type( arg ) !== \"string\" ) {\r\n\r\n\t\t\t\t\t\t\t\t// Inspect recursively\r\n\t\t\t\t\t\t\t\tadd( arg );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t} )( arguments );\r\n\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove a callback from the list\r\n\t\t\tremove: function() {\r\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\r\n\t\t\t\t\tvar index;\r\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\r\n\t\t\t\t\t\tlist.splice( index, 1 );\r\n\r\n\t\t\t\t\t\t// Handle firing indexes\r\n\t\t\t\t\t\tif ( index <= firingIndex ) {\r\n\t\t\t\t\t\t\tfiringIndex--;\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\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Check if a given callback is in the list.\r\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\r\n\t\t\thas: function( fn ) {\r\n\t\t\t\treturn fn ?\r\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\r\n\t\t\t\t\tlist.length > 0;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove all callbacks from the list\r\n\t\t\tempty: function() {\r\n\t\t\t\tif ( list ) {\r\n\t\t\t\t\tlist = [];\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire and .add\r\n\t\t\t// Abort any current/pending executions\r\n\t\t\t// Clear all callbacks and values\r\n\t\t\tdisable: function() {\r\n\t\t\t\tlocked = queue = [];\r\n\t\t\t\tlist = memory = \"\";\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tdisabled: function() {\r\n\t\t\t\treturn !list;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire\r\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\r\n\t\t\t// Abort any pending executions\r\n\t\t\tlock: function() {\r\n\t\t\t\tlocked = queue = [];\r\n\t\t\t\tif ( !memory ) {\r\n\t\t\t\t\tlist = memory = \"\";\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tlocked: function() {\r\n\t\t\t\treturn !!locked;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all callbacks with the given context and arguments\r\n\t\t\tfireWith: function( context, args ) {\r\n\t\t\t\tif ( !locked ) {\r\n\t\t\t\t\targs = args || [];\r\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\r\n\t\t\t\t\tqueue.push( args );\r\n\t\t\t\t\tif ( !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all the callbacks with the given arguments\r\n\t\t\tfire: function() {\r\n\t\t\t\tself.fireWith( this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// To know if the callbacks have already been called at least once\r\n\t\t\tfired: function() {\r\n\t\t\t\treturn !!fired;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\treturn self;\r\n};\r\n\r\n\r\njQuery.extend( {\r\n\r\n\tDeferred: function( func ) {\r\n\t\tvar tuples = [\r\n\r\n\t\t\t\t// action, add listener, listener list, final state\r\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\r\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\r\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\r\n\t\t\t],\r\n\t\t\tstate = \"pending\",\r\n\t\t\tpromise = {\r\n\t\t\t\tstate: function() {\r\n\t\t\t\t\treturn state;\r\n\t\t\t\t},\r\n\t\t\t\talways: function() {\r\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\r\n\t\t\t\t\tvar fns = arguments;\r\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\r\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\r\n\r\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\r\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\r\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\r\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\r\n\t\t\t\t\t\t\t\t\treturned.promise()\r\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\r\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\r\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\r\n\t\t\t\t\t\t\t\t\t\tthis === promise ? newDefer.promise() : this,\r\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t\tfns = null;\r\n\t\t\t\t\t} ).promise();\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Get a promise for this deferred\r\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\r\n\t\t\t\tpromise: function( obj ) {\r\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdeferred = {};\r\n\r\n\t\t// Keep pipe for back-compat\r\n\t\tpromise.pipe = promise.then;\r\n\r\n\t\t// Add list-specific methods\r\n\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\tvar list = tuple[ 2 ],\r\n\t\t\t\tstateString = tuple[ 3 ];\r\n\r\n\t\t\t// promise[ done | fail | progress ] = list.add\r\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\r\n\r\n\t\t\t// Handle state\r\n\t\t\tif ( stateString ) {\r\n\t\t\t\tlist.add( function() {\r\n\r\n\t\t\t\t\t// state = [ resolved | rejected ]\r\n\t\t\t\t\tstate = stateString;\r\n\r\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\r\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\r\n\t\t\t}\r\n\r\n\t\t\t// deferred[ resolve | reject | notify ]\r\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\r\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\r\n\t\t} );\r\n\r\n\t\t// Make the deferred a promise\r\n\t\tpromise.promise( deferred );\r\n\r\n\t\t// Call given func if any\r\n\t\tif ( func ) {\r\n\t\t\tfunc.call( deferred, deferred );\r\n\t\t}\r\n\r\n\t\t// All done!\r\n\t\treturn deferred;\r\n\t},\r\n\r\n\t// Deferred helper\r\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\r\n\t\tvar i = 0,\r\n\t\t\tresolveValues = slice.call( arguments ),\r\n\t\t\tlength = resolveValues.length,\r\n\r\n\t\t\t// the count of uncompleted subordinates\r\n\t\t\tremaining = length !== 1 ||\r\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\r\n\r\n\t\t\t// the master Deferred.\r\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\r\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\r\n\r\n\t\t\t// Update function for both resolve and progress values\r\n\t\t\tupdateFunc = function( i, contexts, values ) {\r\n\t\t\t\treturn function( value ) {\r\n\t\t\t\t\tcontexts[ i ] = this;\r\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\r\n\t\t\t\t\tif ( values === progressValues ) {\r\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\r\n\t\t\t\t\t} else if ( !( --remaining ) ) {\r\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t},\r\n\r\n\t\t\tprogressValues, progressContexts, resolveContexts;\r\n\r\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\r\n\t\tif ( length > 1 ) {\r\n\t\t\tprogressValues = new Array( length );\r\n\t\t\tprogressContexts = new Array( length );\r\n\t\t\tresolveContexts = new Array( length );\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\r\n\t\t\t\t\tresolveValues[ i ].promise()\r\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\r\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\r\n\t\t\t\t\t\t.fail( deferred.reject );\r\n\t\t\t\t} else {\r\n\t\t\t\t\t--remaining;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// If we're not waiting on anything, resolve the master\r\n\t\tif ( !remaining ) {\r\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\r\n\t\t}\r\n\r\n\t\treturn deferred.promise();\r\n\t}\r\n} );\r\n\r\n\r\n// The deferred used on DOM ready\r\nvar readyList;\r\n\r\njQuery.fn.ready = function( fn ) {\r\n\r\n\t// Add the callback\r\n\tjQuery.ready.promise().done( fn );\r\n\r\n\treturn this;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Is the DOM ready to be used? Set to true once it occurs.\r\n\tisReady: false,\r\n\r\n\t// A counter to track how many items to wait for before\r\n\t// the ready event fires. See #6781\r\n\treadyWait: 1,\r\n\r\n\t// Hold (or release) the ready event\r\n\tholdReady: function( hold ) {\r\n\t\tif ( hold ) {\r\n\t\t\tjQuery.readyWait++;\r\n\t\t} else {\r\n\t\t\tjQuery.ready( true );\r\n\t\t}\r\n\t},\r\n\r\n\t// Handle when the DOM is ready\r\n\tready: function( wait ) {\r\n\r\n\t\t// Abort if there are pending holds or we're already ready\r\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remember that the DOM is ready\r\n\t\tjQuery.isReady = true;\r\n\r\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\r\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If there are functions bound, to execute\r\n\t\treadyList.resolveWith( document, [ jQuery ] );\r\n\r\n\t\t// Trigger any bound ready events\r\n\t\tif ( jQuery.fn.triggerHandler ) {\r\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\r\n\t\t\tjQuery( document ).off( \"ready\" );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n/**\r\n * The ready event handler and self cleanup method\r\n */\r\nfunction completed() {\r\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\r\n\twindow.removeEventListener( \"load\", completed );\r\n\tjQuery.ready();\r\n}\r\n\r\njQuery.ready.promise = function( obj ) {\r\n\tif ( !readyList ) {\r\n\r\n\t\treadyList = jQuery.Deferred();\r\n\r\n\t\t// Catch cases where $(document).ready() is called\r\n\t\t// after the browser event has already occurred.\r\n\t\t// Support: IE9-10 only\r\n\t\t// Older IE sometimes signals \"interactive\" too soon\r\n\t\tif ( document.readyState === \"complete\" ||\r\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\r\n\r\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\r\n\t\t\twindow.setTimeout( jQuery.ready );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Use the handy event callback\r\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\r\n\r\n\t\t\t// A fallback to window.onload, that will always work\r\n\t\t\twindow.addEventListener( \"load\", completed );\r\n\t\t}\r\n\t}\r\n\treturn readyList.promise( obj );\r\n};\r\n\r\n// Kick off the DOM ready check even if the user does not\r\njQuery.ready.promise();\r\n\r\n\r\n\r\n\r\n// Multifunctional method to get and set values of a collection\r\n// The value/s can optionally be executed if it's a function\r\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\r\n\tvar i = 0,\r\n\t\tlen = elems.length,\r\n\t\tbulk = key == null;\r\n\r\n\t// Sets many values\r\n\tif ( jQuery.type( key ) === \"object\" ) {\r\n\t\tchainable = true;\r\n\t\tfor ( i in key ) {\r\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\r\n\t\t}\r\n\r\n\t// Sets one value\r\n\t} else if ( value !== undefined ) {\r\n\t\tchainable = true;\r\n\r\n\t\tif ( !jQuery.isFunction( value ) ) {\r\n\t\t\traw = true;\r\n\t\t}\r\n\r\n\t\tif ( bulk ) {\r\n\r\n\t\t\t// Bulk operations run against the entire set\r\n\t\t\tif ( raw ) {\r\n\t\t\t\tfn.call( elems, value );\r\n\t\t\t\tfn = null;\r\n\r\n\t\t\t// ...except when executing function values\r\n\t\t\t} else {\r\n\t\t\t\tbulk = fn;\r\n\t\t\t\tfn = function( elem, key, value ) {\r\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\t\t\tfor ( ; i < len; i++ ) {\r\n\t\t\t\tfn(\r\n\t\t\t\t\telems[ i ], key, raw ?\r\n\t\t\t\t\tvalue :\r\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn chainable ?\r\n\t\telems :\r\n\r\n\t\t// Gets\r\n\t\tbulk ?\r\n\t\t\tfn.call( elems ) :\r\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\r\n};\r\nvar acceptData = function( owner ) {\r\n\r\n\t// Accepts only:\r\n\t// - Node\r\n\t// - Node.ELEMENT_NODE\r\n\t// - Node.DOCUMENT_NODE\r\n\t// - Object\r\n\t// - Any\r\n\t/* jshint -W018 */\r\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\r\n};\r\n\r\n\r\n\r\n\r\nfunction Data() {\r\n\tthis.expando = jQuery.expando + Data.uid++;\r\n}\r\n\r\nData.uid = 1;\r\n\r\nData.prototype = {\r\n\r\n\tregister: function( owner, initial ) {\r\n\t\tvar value = initial || {};\r\n\r\n\t\t// If it is a node unlikely to be stringify-ed or looped over\r\n\t\t// use plain assignment\r\n\t\tif ( owner.nodeType ) {\r\n\t\t\towner[ this.expando ] = value;\r\n\r\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\r\n\t\t// configurability must be true to allow the property to be\r\n\t\t// deleted with the delete operator\r\n\t\t} else {\r\n\t\t\tObject.defineProperty( owner, this.expando, {\r\n\t\t\t\tvalue: value,\r\n\t\t\t\twritable: true,\r\n\t\t\t\tconfigurable: true\r\n\t\t\t} );\r\n\t\t}\r\n\t\treturn owner[ this.expando ];\r\n\t},\r\n\tcache: function( owner ) {\r\n\r\n\t\t// We can accept data for non-element nodes in modern browsers,\r\n\t\t// but we should not, see #8335.\r\n\t\t// Always return an empty object.\r\n\t\tif ( !acceptData( owner ) ) {\r\n\t\t\treturn {};\r\n\t\t}\r\n\r\n\t\t// Check if the owner object already has a cache\r\n\t\tvar value = owner[ this.expando ];\r\n\r\n\t\t// If not, create one\r\n\t\tif ( !value ) {\r\n\t\t\tvalue = {};\r\n\r\n\t\t\t// We can accept data for non-element nodes in modern browsers,\r\n\t\t\t// but we should not, see #8335.\r\n\t\t\t// Always return an empty object.\r\n\t\t\tif ( acceptData( owner ) ) {\r\n\r\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\r\n\t\t\t\t// use plain assignment\r\n\t\t\t\tif ( owner.nodeType ) {\r\n\t\t\t\t\towner[ this.expando ] = value;\r\n\r\n\t\t\t\t// Otherwise secure it in a non-enumerable property\r\n\t\t\t\t// configurable must be true to allow the property to be\r\n\t\t\t\t// deleted when data is removed\r\n\t\t\t\t} else {\r\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\r\n\t\t\t\t\t\tvalue: value,\r\n\t\t\t\t\t\tconfigurable: true\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t},\r\n\tset: function( owner, data, value ) {\r\n\t\tvar prop,\r\n\t\t\tcache = this.cache( owner );\r\n\r\n\t\t// Handle: [ owner, key, value ] args\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\tcache[ data ] = value;\r\n\r\n\t\t// Handle: [ owner, { properties } ] args\r\n\t\t} else {\r\n\r\n\t\t\t// Copy the properties one-by-one to the cache object\r\n\t\t\tfor ( prop in data ) {\r\n\t\t\t\tcache[ prop ] = data[ prop ];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn cache;\r\n\t},\r\n\tget: function( owner, key ) {\r\n\t\treturn key === undefined ?\r\n\t\t\tthis.cache( owner ) :\r\n\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\r\n\t},\r\n\taccess: function( owner, key, value ) {\r\n\t\tvar stored;\r\n\r\n\t\t// In cases where either:\r\n\t\t//\r\n\t\t// 1. No key was specified\r\n\t\t// 2. A string key was specified, but no value provided\r\n\t\t//\r\n\t\t// Take the \"read\" path and allow the get method to determine\r\n\t\t// which value to return, respectively either:\r\n\t\t//\r\n\t\t// 1. The entire cache object\r\n\t\t// 2. The data stored at the key\r\n\t\t//\r\n\t\tif ( key === undefined ||\r\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\r\n\r\n\t\t\tstored = this.get( owner, key );\r\n\r\n\t\t\treturn stored !== undefined ?\r\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( key ) );\r\n\t\t}\r\n\r\n\t\t// When the key is not a string, or both a key and value\r\n\t\t// are specified, set or extend (existing objects) with either:\r\n\t\t//\r\n\t\t// 1. An object of properties\r\n\t\t// 2. A key and value\r\n\t\t//\r\n\t\tthis.set( owner, key, value );\r\n\r\n\t\t// Since the \"set\" path can have two possible entry points\r\n\t\t// return the expected data based on which path was taken[*]\r\n\t\treturn value !== undefined ? value : key;\r\n\t},\r\n\tremove: function( owner, key ) {\r\n\t\tvar i, name, camel,\r\n\t\t\tcache = owner[ this.expando ];\r\n\r\n\t\tif ( cache === undefined ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( key === undefined ) {\r\n\t\t\tthis.register( owner );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Support array or space separated string of keys\r\n\t\t\tif ( jQuery.isArray( key ) ) {\r\n\r\n\t\t\t\t// If \"name\" is an array of keys...\r\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\r\n\t\t\t\t// keys will be converted to camelCase.\r\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\r\n\t\t\t\t// both plain key and camelCase key. #12786\r\n\t\t\t\t// This will only penalize the array argument path.\r\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\r\n\t\t\t} else {\r\n\t\t\t\tcamel = jQuery.camelCase( key );\r\n\r\n\t\t\t\t// Try the string as a key before any manipulation\r\n\t\t\t\tif ( key in cache ) {\r\n\t\t\t\t\tname = [ key, camel ];\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// If a key with the spaces exists, use it.\r\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\r\n\t\t\t\t\tname = camel;\r\n\t\t\t\t\tname = name in cache ?\r\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\ti = name.length;\r\n\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tdelete cache[ name[ i ] ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove the expando if there's no more data\r\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\r\n\r\n\t\t\t// Support: Chrome <= 35-45+\r\n\t\t\t// Webkit & Blink performance suffers when deleting properties\r\n\t\t\t// from DOM nodes, so set to undefined instead\r\n\t\t\t// https://code.google.com/p/chromium/issues/detail?id=378607\r\n\t\t\tif ( owner.nodeType ) {\r\n\t\t\t\towner[ this.expando ] = undefined;\r\n\t\t\t} else {\r\n\t\t\t\tdelete owner[ this.expando ];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\thasData: function( owner ) {\r\n\t\tvar cache = owner[ this.expando ];\r\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\r\n\t}\r\n};\r\nvar dataPriv = new Data();\r\n\r\nvar dataUser = new Data();\r\n\r\n\r\n\r\n//\tImplementation Summary\r\n//\r\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\r\n//\t2. Improve the module's maintainability by reducing the storage\r\n//\t\tpaths to a single mechanism.\r\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\r\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\r\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\r\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\r\n\r\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\r\n\trmultiDash = /[A-Z]/g;\r\n\r\nfunction dataAttr( elem, key, data ) {\r\n\tvar name;\r\n\r\n\t// If nothing was found internally, try to fetch any\r\n\t// data from the HTML5 data-* attribute\r\n\tif ( data === undefined && elem.nodeType === 1 ) {\r\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\r\n\t\tdata = elem.getAttribute( name );\r\n\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\ttry {\r\n\t\t\t\tdata = data === \"true\" ? true :\r\n\t\t\t\t\tdata === \"false\" ? false :\r\n\t\t\t\t\tdata === \"null\" ? null :\r\n\r\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\r\n\t\t\t\t\t+data + \"\" === data ? +data :\r\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\r\n\t\t\t\t\tdata;\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\t// Make sure we set the data so it isn't changed later\r\n\t\t\tdataUser.set( elem, key, data );\r\n\t\t} else {\r\n\t\t\tdata = undefined;\r\n\t\t}\r\n\t}\r\n\treturn data;\r\n}\r\n\r\njQuery.extend( {\r\n\thasData: function( elem ) {\r\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\r\n\t},\r\n\r\n\tdata: function( elem, name, data ) {\r\n\t\treturn dataUser.access( elem, name, data );\r\n\t},\r\n\r\n\tremoveData: function( elem, name ) {\r\n\t\tdataUser.remove( elem, name );\r\n\t},\r\n\r\n\t// TODO: Now that all calls to _data and _removeData have been replaced\r\n\t// with direct calls to dataPriv methods, these can be deprecated.\r\n\t_data: function( elem, name, data ) {\r\n\t\treturn dataPriv.access( elem, name, data );\r\n\t},\r\n\r\n\t_removeData: function( elem, name ) {\r\n\t\tdataPriv.remove( elem, name );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tdata: function( key, value ) {\r\n\t\tvar i, name, data,\r\n\t\t\telem = this[ 0 ],\r\n\t\t\tattrs = elem && elem.attributes;\r\n\r\n\t\t// Gets all values\r\n\t\tif ( key === undefined ) {\r\n\t\t\tif ( this.length ) {\r\n\t\t\t\tdata = dataUser.get( elem );\r\n\r\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\r\n\t\t\t\t\ti = attrs.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\r\n\t\t\t\t\t\t// Support: IE11+\r\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\r\n\t\t\t\t\t\tif ( attrs[ i ] ) {\r\n\t\t\t\t\t\t\tname = attrs[ i ].name;\r\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\r\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice( 5 ) );\r\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\t// Sets multiple values\r\n\t\tif ( typeof key === \"object\" ) {\r\n\t\t\treturn this.each( function() {\r\n\t\t\t\tdataUser.set( this, key );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn access( this, function( value ) {\r\n\t\t\tvar data, camelKey;\r\n\r\n\t\t\t// The calling jQuery object (element matches) is not empty\r\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\r\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\r\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\r\n\t\t\t// throw an exception if an attempt to read a data cache is made.\r\n\t\t\tif ( elem && value === undefined ) {\r\n\r\n\t\t\t\t// Attempt to get data from the cache\r\n\t\t\t\t// with the key as-is\r\n\t\t\t\tdata = dataUser.get( elem, key ) ||\r\n\r\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\r\n\t\t\t\t\t// This is for 2.2.x only\r\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\r\n\r\n\t\t\t\tif ( data !== undefined ) {\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcamelKey = jQuery.camelCase( key );\r\n\r\n\t\t\t\t// Attempt to get data from the cache\r\n\t\t\t\t// with the key camelized\r\n\t\t\t\tdata = dataUser.get( elem, camelKey );\r\n\t\t\t\tif ( data !== undefined ) {\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Attempt to \"discover\" the data in\r\n\t\t\t\t// HTML5 custom data-* attrs\r\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\r\n\t\t\t\tif ( data !== undefined ) {\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// We tried really hard, but the data doesn't exist.\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Set the data...\r\n\t\t\tcamelKey = jQuery.camelCase( key );\r\n\t\t\tthis.each( function() {\r\n\r\n\t\t\t\t// First, attempt to store a copy or reference of any\r\n\t\t\t\t// data that might've been store with a camelCased key.\r\n\t\t\t\tvar data = dataUser.get( this, camelKey );\r\n\r\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\r\n\t\t\t\t// store property names with dashes in a camelCase form.\r\n\t\t\t\t// This might not apply to all properties...*\r\n\t\t\t\tdataUser.set( this, camelKey, value );\r\n\r\n\t\t\t\t// *... In the case of properties that might _actually_\r\n\t\t\t\t// have dashes, we need to also store a copy of that\r\n\t\t\t\t// unchanged property.\r\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\r\n\t\t\t\t\tdataUser.set( this, key, value );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}, null, value, arguments.length > 1, null, true );\r\n\t},\r\n\r\n\tremoveData: function( key ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tdataUser.remove( this, key );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\njQuery.extend( {\r\n\tqueue: function( elem, type, data ) {\r\n\t\tvar queue;\r\n\r\n\t\tif ( elem ) {\r\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\r\n\t\t\tqueue = dataPriv.get( elem, type );\r\n\r\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\r\n\t\t\tif ( data ) {\r\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\r\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tqueue.push( data );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn queue || [];\r\n\t\t}\r\n\t},\r\n\r\n\tdequeue: function( elem, type ) {\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\tvar queue = jQuery.queue( elem, type ),\r\n\t\t\tstartLength = queue.length,\r\n\t\t\tfn = queue.shift(),\r\n\t\t\thooks = jQuery._queueHooks( elem, type ),\r\n\t\t\tnext = function() {\r\n\t\t\t\tjQuery.dequeue( elem, type );\r\n\t\t\t};\r\n\r\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\r\n\t\tif ( fn === \"inprogress\" ) {\r\n\t\t\tfn = queue.shift();\r\n\t\t\tstartLength--;\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\r\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\r\n\t\t\t// automatically dequeued\r\n\t\t\tif ( type === \"fx\" ) {\r\n\t\t\t\tqueue.unshift( \"inprogress\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Clear up the last queue stop function\r\n\t\t\tdelete hooks.stop;\r\n\t\t\tfn.call( elem, next, hooks );\r\n\t\t}\r\n\r\n\t\tif ( !startLength && hooks ) {\r\n\t\t\thooks.empty.fire();\r\n\t\t}\r\n\t},\r\n\r\n\t// Not public - generate a queueHooks object, or return the current one\r\n\t_queueHooks: function( elem, type ) {\r\n\t\tvar key = type + \"queueHooks\";\r\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\r\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\r\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\r\n\t\t\t} )\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tqueue: function( type, data ) {\r\n\t\tvar setter = 2;\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tdata = type;\r\n\t\t\ttype = \"fx\";\r\n\t\t\tsetter--;\r\n\t\t}\r\n\r\n\t\tif ( arguments.length < setter ) {\r\n\t\t\treturn jQuery.queue( this[ 0 ], type );\r\n\t\t}\r\n\r\n\t\treturn data === undefined ?\r\n\t\t\tthis :\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\r\n\r\n\t\t\t\t// Ensure a hooks for this queue\r\n\t\t\t\tjQuery._queueHooks( this, type );\r\n\r\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\r\n\t\t\t\t\tjQuery.dequeue( this, type );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t},\r\n\tdequeue: function( type ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.dequeue( this, type );\r\n\t\t} );\r\n\t},\r\n\tclearQueue: function( type ) {\r\n\t\treturn this.queue( type || \"fx\", [] );\r\n\t},\r\n\r\n\t// Get a promise resolved when queues of a certain type\r\n\t// are emptied (fx is the type by default)\r\n\tpromise: function( type, obj ) {\r\n\t\tvar tmp,\r\n\t\t\tcount = 1,\r\n\t\t\tdefer = jQuery.Deferred(),\r\n\t\t\telements = this,\r\n\t\t\ti = this.length,\r\n\t\t\tresolve = function() {\r\n\t\t\t\tif ( !( --count ) ) {\r\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tobj = type;\r\n\t\t\ttype = undefined;\r\n\t\t}\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\twhile ( i-- ) {\r\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\r\n\t\t\tif ( tmp && tmp.empty ) {\r\n\t\t\t\tcount++;\r\n\t\t\t\ttmp.empty.add( resolve );\r\n\t\t\t}\r\n\t\t}\r\n\t\tresolve();\r\n\t\treturn defer.promise( obj );\r\n\t}\r\n} );\r\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\r\n\r\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\r\n\r\n\r\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\r\n\r\nvar isHidden = function( elem, el ) {\r\n\r\n\t\t// isHidden might be called from jQuery#filter function;\r\n\t\t// in that case, element will be second argument\r\n\t\telem = el || elem;\r\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\r\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\r\n\t};\r\n\r\n\r\n\r\nfunction adjustCSS( elem, prop, valueParts, tween ) {\r\n\tvar adjusted,\r\n\t\tscale = 1,\r\n\t\tmaxIterations = 20,\r\n\t\tcurrentValue = tween ?\r\n\t\t\tfunction() { return tween.cur(); } :\r\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\r\n\t\tinitial = currentValue(),\r\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\r\n\r\n\t\t// Starting value computation is required for potential unit mismatches\r\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\r\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\r\n\r\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\r\n\r\n\t\t// Trust units reported by jQuery.css\r\n\t\tunit = unit || initialInUnit[ 3 ];\r\n\r\n\t\t// Make sure we update the tween properties later on\r\n\t\tvalueParts = valueParts || [];\r\n\r\n\t\t// Iteratively approximate from a nonzero starting point\r\n\t\tinitialInUnit = +initial || 1;\r\n\r\n\t\tdo {\r\n\r\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\r\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\r\n\t\t\tscale = scale || \".5\";\r\n\r\n\t\t\t// Adjust and apply\r\n\t\t\tinitialInUnit = initialInUnit / scale;\r\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\r\n\r\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\r\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\r\n\t\t} while (\r\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\r\n\t\t);\r\n\t}\r\n\r\n\tif ( valueParts ) {\r\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\r\n\r\n\t\t// Apply relative offset (+=/-=) if specified\r\n\t\tadjusted = valueParts[ 1 ] ?\r\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\r\n\t\t\t+valueParts[ 2 ];\r\n\t\tif ( tween ) {\r\n\t\t\ttween.unit = unit;\r\n\t\t\ttween.start = initialInUnit;\r\n\t\t\ttween.end = adjusted;\r\n\t\t}\r\n\t}\r\n\treturn adjusted;\r\n}\r\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\r\n\r\nvar rtagName = ( /<([\\w:-]+)/ );\r\n\r\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\r\n\r\n\r\n\r\n// We have to close these tags to support XHTML (#13200)\r\nvar wrapMap = {\r\n\r\n\t// Support: IE9\r\n\toption: [ 1, \"\" ],\r\n\r\n\t// XHTML parsers do not magically insert elements in the\r\n\t// same way that tag soup parsers do. So we cannot shorten\r\n\t// this by omitting or other required elements.\r\n\tthead: [ 1, \"\", \"
          \" ],\r\n\tcol: [ 2, \"\", \"
          \" ],\r\n\ttr: [ 2, \"\", \"
          \" ],\r\n\ttd: [ 3, \"\", \"
          \" ],\r\n\r\n\t_default: [ 0, \"\", \"\" ]\r\n};\r\n\r\n// Support: IE9\r\nwrapMap.optgroup = wrapMap.option;\r\n\r\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\r\nwrapMap.th = wrapMap.td;\r\n\r\n\r\nfunction getAll( context, tag ) {\r\n\r\n\t// Support: IE9-11+\r\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\r\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\r\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\r\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\r\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\r\n\t\t\t[];\r\n\r\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\r\n\t\tjQuery.merge( [ context ], ret ) :\r\n\t\tret;\r\n}\r\n\r\n\r\n// Mark scripts as having already been evaluated\r\nfunction setGlobalEval( elems, refElements ) {\r\n\tvar i = 0,\r\n\t\tl = elems.length;\r\n\r\n\tfor ( ; i < l; i++ ) {\r\n\t\tdataPriv.set(\r\n\t\t\telems[ i ],\r\n\t\t\t\"globalEval\",\r\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\r\n\t\t);\r\n\t}\r\n}\r\n\r\n\r\nvar rhtml = /<|&#?\\w+;/;\r\n\r\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\r\n\tvar elem, tmp, tag, wrap, contains, j,\r\n\t\tfragment = context.createDocumentFragment(),\r\n\t\tnodes = [],\r\n\t\ti = 0,\r\n\t\tl = elems.length;\r\n\r\n\tfor ( ; i < l; i++ ) {\r\n\t\telem = elems[ i ];\r\n\r\n\t\tif ( elem || elem === 0 ) {\r\n\r\n\t\t\t// Add nodes directly\r\n\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\r\n\r\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\r\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\r\n\r\n\t\t\t// Convert non-html into a text node\r\n\t\t\t} else if ( !rhtml.test( elem ) ) {\r\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\r\n\r\n\t\t\t// Convert html into DOM nodes\r\n\t\t\t} else {\r\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\r\n\r\n\t\t\t\t// Deserialize a standard representation\r\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\r\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\r\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\r\n\r\n\t\t\t\t// Descend through wrappers to the right content\r\n\t\t\t\tj = wrap[ 0 ];\r\n\t\t\t\twhile ( j-- ) {\r\n\t\t\t\t\ttmp = tmp.lastChild;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\r\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\r\n\r\n\t\t\t\t// Remember the top-level container\r\n\t\t\t\ttmp = fragment.firstChild;\r\n\r\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\r\n\t\t\t\ttmp.textContent = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Remove wrapper from fragment\r\n\tfragment.textContent = \"\";\r\n\r\n\ti = 0;\r\n\twhile ( ( elem = nodes[ i++ ] ) ) {\r\n\r\n\t\t// Skip elements already in the context collection (trac-4087)\r\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\r\n\t\t\tif ( ignored ) {\r\n\t\t\t\tignored.push( elem );\r\n\t\t\t}\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\t// Append to fragment\r\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tif ( contains ) {\r\n\t\t\tsetGlobalEval( tmp );\r\n\t\t}\r\n\r\n\t\t// Capture executables\r\n\t\tif ( scripts ) {\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\r\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\r\n\t\t\t\t\tscripts.push( elem );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn fragment;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar fragment = document.createDocumentFragment(),\r\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\r\n\t\tinput = document.createElement( \"input\" );\r\n\r\n\t// Support: Android 4.0-4.3, Safari<=5.1\r\n\t// Check state lost if the name is set (#11217)\r\n\t// Support: Windows Web Apps (WWA)\r\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\r\n\tinput.setAttribute( \"type\", \"radio\" );\r\n\tinput.setAttribute( \"checked\", \"checked\" );\r\n\tinput.setAttribute( \"name\", \"t\" );\r\n\r\n\tdiv.appendChild( input );\r\n\r\n\t// Support: Safari<=5.1, Android<4.2\r\n\t// Older WebKit doesn't clone checked state correctly in fragments\r\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\r\n\r\n\t// Support: IE<=11+\r\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\r\n\tdiv.innerHTML = \"\";\r\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\r\n} )();\r\n\r\n\r\nvar\r\n\trkeyEvent = /^key/,\r\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\r\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\r\n\r\nfunction returnTrue() {\r\n\treturn true;\r\n}\r\n\r\nfunction returnFalse() {\r\n\treturn false;\r\n}\r\n\r\n// Support: IE9\r\n// See #13393 for more info\r\nfunction safeActiveElement() {\r\n\ttry {\r\n\t\treturn document.activeElement;\r\n\t} catch ( err ) { }\r\n}\r\n\r\nfunction on( elem, types, selector, data, fn, one ) {\r\n\tvar origFn, type;\r\n\r\n\t// Types can be a map of types/handlers\r\n\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t// ( types-Object, selector, data )\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\r\n\t\t\t// ( types-Object, data )\r\n\t\t\tdata = data || selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tfor ( type in types ) {\r\n\t\t\ton( elem, type, selector, data, types[ type ], one );\r\n\t\t}\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( data == null && fn == null ) {\r\n\r\n\t\t// ( types, fn )\r\n\t\tfn = selector;\r\n\t\tdata = selector = undefined;\r\n\t} else if ( fn == null ) {\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\r\n\t\t\t// ( types, selector, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = undefined;\r\n\t\t} else {\r\n\r\n\t\t\t// ( types, data, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t}\r\n\tif ( fn === false ) {\r\n\t\tfn = returnFalse;\r\n\t} else if ( !fn ) {\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( one === 1 ) {\r\n\t\torigFn = fn;\r\n\t\tfn = function( event ) {\r\n\r\n\t\t\t// Can use an empty set, since event contains the info\r\n\t\t\tjQuery().off( event );\r\n\t\t\treturn origFn.apply( this, arguments );\r\n\t\t};\r\n\r\n\t\t// Use same guid so caller can remove using origFn\r\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\r\n\t}\r\n\treturn elem.each( function() {\r\n\t\tjQuery.event.add( this, types, fn, data, selector );\r\n\t} );\r\n}\r\n\r\n/*\r\n * Helper functions for managing events -- not part of the public interface.\r\n * Props to Dean Edwards' addEvent library for many of the ideas.\r\n */\r\njQuery.event = {\r\n\r\n\tglobal: {},\r\n\r\n\tadd: function( elem, types, handler, data, selector ) {\r\n\r\n\t\tvar handleObjIn, eventHandle, tmp,\r\n\t\t\tevents, t, handleObj,\r\n\t\t\tspecial, handlers, type, namespaces, origType,\r\n\t\t\telemData = dataPriv.get( elem );\r\n\r\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\r\n\t\tif ( !elemData ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Caller can pass in an object of custom data in lieu of the handler\r\n\t\tif ( handler.handler ) {\r\n\t\t\thandleObjIn = handler;\r\n\t\t\thandler = handleObjIn.handler;\r\n\t\t\tselector = handleObjIn.selector;\r\n\t\t}\r\n\r\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\r\n\t\tif ( !handler.guid ) {\r\n\t\t\thandler.guid = jQuery.guid++;\r\n\t\t}\r\n\r\n\t\t// Init the element's event structure and main handler, if this is the first\r\n\t\tif ( !( events = elemData.events ) ) {\r\n\t\t\tevents = elemData.events = {};\r\n\t\t}\r\n\t\tif ( !( eventHandle = elemData.handle ) ) {\r\n\t\t\teventHandle = elemData.handle = function( e ) {\r\n\r\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\r\n\t\t\t\t// when an event is called after a page has unloaded\r\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\r\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// Handle multiple events separated by a space\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If event changes its type, use the special event handlers for the changed type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// If selector defined, determine special event api type, otherwise given type\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\r\n\t\t\t// Update special based on newly reset type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// handleObj is passed to all event handlers\r\n\t\t\thandleObj = jQuery.extend( {\r\n\t\t\t\ttype: type,\r\n\t\t\t\torigType: origType,\r\n\t\t\t\tdata: data,\r\n\t\t\t\thandler: handler,\r\n\t\t\t\tguid: handler.guid,\r\n\t\t\t\tselector: selector,\r\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\r\n\t\t\t\tnamespace: namespaces.join( \".\" )\r\n\t\t\t}, handleObjIn );\r\n\r\n\t\t\t// Init the event handler queue if we're the first\r\n\t\t\tif ( !( handlers = events[ type ] ) ) {\r\n\t\t\t\thandlers = events[ type ] = [];\r\n\t\t\t\thandlers.delegateCount = 0;\r\n\r\n\t\t\t\t// Only use addEventListener if the special events handler returns false\r\n\t\t\t\tif ( !special.setup ||\r\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\r\n\r\n\t\t\t\t\tif ( elem.addEventListener ) {\r\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( special.add ) {\r\n\t\t\t\tspecial.add.call( elem, handleObj );\r\n\r\n\t\t\t\tif ( !handleObj.handler.guid ) {\r\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Add to the element's handler list, delegates in front\r\n\t\t\tif ( selector ) {\r\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\r\n\t\t\t} else {\r\n\t\t\t\thandlers.push( handleObj );\r\n\t\t\t}\r\n\r\n\t\t\t// Keep track of which events have ever been used, for event optimization\r\n\t\t\tjQuery.event.global[ type ] = true;\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t// Detach an event or set of events from an element\r\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\r\n\r\n\t\tvar j, origCount, tmp,\r\n\t\t\tevents, t, handleObj,\r\n\t\t\tspecial, handlers, type, namespaces, origType,\r\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\r\n\r\n\t\tif ( !elemData || !( events = elemData.events ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Once for each type.namespace in types; type may be omitted\r\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tfor ( type in events ) {\r\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\t\t\thandlers = events[ type ] || [];\r\n\t\t\ttmp = tmp[ 2 ] &&\r\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\r\n\r\n\t\t\t// Remove matching events\r\n\t\t\torigCount = j = handlers.length;\r\n\t\t\twhile ( j-- ) {\r\n\t\t\t\thandleObj = handlers[ j ];\r\n\r\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\r\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\r\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\r\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\r\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\r\n\t\t\t\t\thandlers.splice( j, 1 );\r\n\r\n\t\t\t\t\tif ( handleObj.selector ) {\r\n\t\t\t\t\t\thandlers.delegateCount--;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( special.remove ) {\r\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\r\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\r\n\t\t\tif ( origCount && !handlers.length ) {\r\n\t\t\t\tif ( !special.teardown ||\r\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\r\n\r\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete events[ type ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove data and the expando if it's no longer used\r\n\t\tif ( jQuery.isEmptyObject( events ) ) {\r\n\t\t\tdataPriv.remove( elem, \"handle events\" );\r\n\t\t}\r\n\t},\r\n\r\n\tdispatch: function( event ) {\r\n\r\n\t\t// Make a writable jQuery.Event from the native event object\r\n\t\tevent = jQuery.event.fix( event );\r\n\r\n\t\tvar i, j, ret, matched, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\targs = slice.call( arguments ),\r\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\r\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\r\n\r\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\r\n\t\targs[ 0 ] = event;\r\n\t\tevent.delegateTarget = this;\r\n\r\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\r\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine handlers\r\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\r\n\r\n\t\t// Run delegates first; they may want to stop propagation beneath us\r\n\t\ti = 0;\r\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\t\t\tevent.currentTarget = matched.elem;\r\n\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\r\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\r\n\r\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\r\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\r\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\r\n\r\n\t\t\t\t\tevent.handleObj = handleObj;\r\n\t\t\t\t\tevent.data = handleObj.data;\r\n\r\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\r\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\r\n\r\n\t\t\t\t\tif ( ret !== undefined ) {\r\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Call the postDispatch hook for the mapped type\r\n\t\tif ( special.postDispatch ) {\r\n\t\t\tspecial.postDispatch.call( this, event );\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\thandlers: function( event, handlers ) {\r\n\t\tvar i, matches, sel, handleObj,\r\n\t\t\thandlerQueue = [],\r\n\t\t\tdelegateCount = handlers.delegateCount,\r\n\t\t\tcur = event.target;\r\n\r\n\t\t// Support (at least): Chrome, IE9\r\n\t\t// Find delegate handlers\r\n\t\t// Black-hole SVG instance trees (#13180)\r\n\t\t//\r\n\t\t// Support: Firefox<=42+\r\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\r\n\t\tif ( delegateCount && cur.nodeType &&\r\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || event.button < 1 ) ) {\r\n\r\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\r\n\r\n\t\t\t\t// Don't check non-elements (#13208)\r\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\r\n\t\t\t\tif ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\r\n\t\t\t\t\tmatches = [];\r\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\r\n\t\t\t\t\t\thandleObj = handlers[ i ];\r\n\r\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\r\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\r\n\r\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\r\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\r\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\r\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( matches[ sel ] ) {\r\n\t\t\t\t\t\t\tmatches.push( handleObj );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( matches.length ) {\r\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add the remaining (directly-bound) handlers\r\n\t\tif ( delegateCount < handlers.length ) {\r\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\r\n\t\t}\r\n\r\n\t\treturn handlerQueue;\r\n\t},\r\n\r\n\t// Includes some event props shared by KeyEvent and MouseEvent\r\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\r\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\r\n\r\n\tfixHooks: {},\r\n\r\n\tkeyHooks: {\r\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\r\n\t\t\t// Add which for key events\r\n\t\t\tif ( event.which == null ) {\r\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tmouseHooks: {\r\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\r\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\r\n\t\tfilter: function( event, original ) {\r\n\t\t\tvar eventDoc, doc, body,\r\n\t\t\t\tbutton = original.button;\r\n\r\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\r\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\r\n\t\t\t\teventDoc = event.target.ownerDocument || document;\r\n\t\t\t\tdoc = eventDoc.documentElement;\r\n\t\t\t\tbody = eventDoc.body;\r\n\r\n\t\t\t\tevent.pageX = original.clientX +\r\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\r\n\t\t\t\tevent.pageY = original.clientY +\r\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\r\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\r\n\t\t\t}\r\n\r\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\r\n\t\t\t// Note: button is not normalized, so don't use it\r\n\t\t\tif ( !event.which && button !== undefined ) {\r\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\r\n\t\t\t}\r\n\r\n\t\t\treturn event;\r\n\t\t}\r\n\t},\r\n\r\n\tfix: function( event ) {\r\n\t\tif ( event[ jQuery.expando ] ) {\r\n\t\t\treturn event;\r\n\t\t}\r\n\r\n\t\t// Create a writable copy of the event object and normalize some properties\r\n\t\tvar i, prop, copy,\r\n\t\t\ttype = event.type,\r\n\t\t\toriginalEvent = event,\r\n\t\t\tfixHook = this.fixHooks[ type ];\r\n\r\n\t\tif ( !fixHook ) {\r\n\t\t\tthis.fixHooks[ type ] = fixHook =\r\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\r\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\r\n\t\t\t\t{};\r\n\t\t}\r\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\r\n\r\n\t\tevent = new jQuery.Event( originalEvent );\r\n\r\n\t\ti = copy.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tprop = copy[ i ];\r\n\t\t\tevent[ prop ] = originalEvent[ prop ];\r\n\t\t}\r\n\r\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\r\n\t\t// All events should have a target; Cordova deviceready doesn't\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = document;\r\n\t\t}\r\n\r\n\t\t// Support: Safari 6.0+, Chrome<28\r\n\t\t// Target should not be a text node (#504, #13143)\r\n\t\tif ( event.target.nodeType === 3 ) {\r\n\t\t\tevent.target = event.target.parentNode;\r\n\t\t}\r\n\r\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\r\n\t},\r\n\r\n\tspecial: {\r\n\t\tload: {\r\n\r\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\r\n\t\t\tnoBubble: true\r\n\t\t},\r\n\t\tfocus: {\r\n\r\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\r\n\t\t\t\t\tthis.focus();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusin\"\r\n\t\t},\r\n\t\tblur: {\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\r\n\t\t\t\t\tthis.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusout\"\r\n\t\t},\r\n\t\tclick: {\r\n\r\n\t\t\t// For checkbox, fire native event so checked state will be right\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\r\n\t\t\t\t\tthis.click();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\r\n\t\t\t_default: function( event ) {\r\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tbeforeunload: {\r\n\t\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t\t// Support: Firefox 20+\r\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\r\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\r\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\njQuery.removeEvent = function( elem, type, handle ) {\r\n\r\n\t// This \"if\" is needed for plain objects\r\n\tif ( elem.removeEventListener ) {\r\n\t\telem.removeEventListener( type, handle );\r\n\t}\r\n};\r\n\r\njQuery.Event = function( src, props ) {\r\n\r\n\t// Allow instantiation without the 'new' keyword\r\n\tif ( !( this instanceof jQuery.Event ) ) {\r\n\t\treturn new jQuery.Event( src, props );\r\n\t}\r\n\r\n\t// Event object\r\n\tif ( src && src.type ) {\r\n\t\tthis.originalEvent = src;\r\n\t\tthis.type = src.type;\r\n\r\n\t\t// Events bubbling up the document may have been marked as prevented\r\n\t\t// by a handler lower down the tree; reflect the correct value.\r\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\r\n\t\t\t\tsrc.defaultPrevented === undefined &&\r\n\r\n\t\t\t\t// Support: Android<4.0\r\n\t\t\t\tsrc.returnValue === false ?\r\n\t\t\treturnTrue :\r\n\t\t\treturnFalse;\r\n\r\n\t// Event type\r\n\t} else {\r\n\t\tthis.type = src;\r\n\t}\r\n\r\n\t// Put explicitly provided properties onto the event object\r\n\tif ( props ) {\r\n\t\tjQuery.extend( this, props );\r\n\t}\r\n\r\n\t// Create a timestamp if incoming event doesn't have one\r\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\r\n\r\n\t// Mark it as fixed\r\n\tthis[ jQuery.expando ] = true;\r\n};\r\n\r\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\r\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\r\njQuery.Event.prototype = {\r\n\tconstructor: jQuery.Event,\r\n\tisDefaultPrevented: returnFalse,\r\n\tisPropagationStopped: returnFalse,\r\n\tisImmediatePropagationStopped: returnFalse,\r\n\tisSimulated: false,\r\n\r\n\tpreventDefault: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isDefaultPrevented = returnTrue;\r\n\r\n\t\tif ( e && !this.isSimulated ) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t},\r\n\tstopPropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isPropagationStopped = returnTrue;\r\n\r\n\t\tif ( e && !this.isSimulated ) {\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\t},\r\n\tstopImmediatePropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isImmediatePropagationStopped = returnTrue;\r\n\r\n\t\tif ( e && !this.isSimulated ) {\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t}\r\n\r\n\t\tthis.stopPropagation();\r\n\t}\r\n};\r\n\r\n// Create mouseenter/leave events using mouseover/out and event-time checks\r\n// so that event delegation works in jQuery.\r\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\r\n//\r\n// Support: Safari 7 only\r\n// Safari sends mouseenter too often; see:\r\n// https://code.google.com/p/chromium/issues/detail?id=470258\r\n// for the description of the bug (it existed in older Chrome versions as well).\r\njQuery.each( {\r\n\tmouseenter: \"mouseover\",\r\n\tmouseleave: \"mouseout\",\r\n\tpointerenter: \"pointerover\",\r\n\tpointerleave: \"pointerout\"\r\n}, function( orig, fix ) {\r\n\tjQuery.event.special[ orig ] = {\r\n\t\tdelegateType: fix,\r\n\t\tbindType: fix,\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar ret,\r\n\t\t\t\ttarget = this,\r\n\t\t\t\trelated = event.relatedTarget,\r\n\t\t\t\thandleObj = event.handleObj;\r\n\r\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\r\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\r\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\r\n\t\t\t\tevent.type = handleObj.origType;\r\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\r\n\t\t\t\tevent.type = fix;\r\n\t\t\t}\r\n\t\t\treturn ret;\r\n\t\t}\r\n\t};\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\ton: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn );\r\n\t},\r\n\tone: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn, 1 );\r\n\t},\r\n\toff: function( types, selector, fn ) {\r\n\t\tvar handleObj, type;\r\n\t\tif ( types && types.preventDefault && types.handleObj ) {\r\n\r\n\t\t\t// ( event ) dispatched jQuery.Event\r\n\t\t\thandleObj = types.handleObj;\r\n\t\t\tjQuery( types.delegateTarget ).off(\r\n\t\t\t\thandleObj.namespace ?\r\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\r\n\t\t\t\t\thandleObj.origType,\r\n\t\t\t\thandleObj.selector,\r\n\t\t\t\thandleObj.handler\r\n\t\t\t);\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t\t// ( types-object [, selector] )\r\n\t\t\tfor ( type in types ) {\r\n\t\t\t\tthis.off( type, selector, types[ type ] );\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( selector === false || typeof selector === \"function\" ) {\r\n\r\n\t\t\t// ( types [, fn] )\r\n\t\t\tfn = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tif ( fn === false ) {\r\n\t\t\tfn = returnFalse;\r\n\t\t}\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.remove( this, types, fn, selector );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\nvar\r\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\r\n\r\n\t// Support: IE 10-11, Edge 10240+\r\n\t// In IE/Edge using regex groups here causes severe slowdowns.\r\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\r\n\trnoInnerhtml = /\\s*$/g;\r\n\r\n// Manipulating tables requires a tbody\r\nfunction manipulationTarget( elem, content ) {\r\n\treturn jQuery.nodeName( elem, \"table\" ) &&\r\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\r\n\r\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\r\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\r\n\t\telem;\r\n}\r\n\r\n// Replace/restore the type attribute of script elements for safe DOM manipulation\r\nfunction disableScript( elem ) {\r\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\r\n\treturn elem;\r\n}\r\nfunction restoreScript( elem ) {\r\n\tvar match = rscriptTypeMasked.exec( elem.type );\r\n\r\n\tif ( match ) {\r\n\t\telem.type = match[ 1 ];\r\n\t} else {\r\n\t\telem.removeAttribute( \"type\" );\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\nfunction cloneCopyEvent( src, dest ) {\r\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\r\n\r\n\tif ( dest.nodeType !== 1 ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// 1. Copy private data: events, handlers, etc.\r\n\tif ( dataPriv.hasData( src ) ) {\r\n\t\tpdataOld = dataPriv.access( src );\r\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\r\n\t\tevents = pdataOld.events;\r\n\r\n\t\tif ( events ) {\r\n\t\t\tdelete pdataCur.handle;\r\n\t\t\tpdataCur.events = {};\r\n\r\n\t\t\tfor ( type in events ) {\r\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\r\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// 2. Copy user data\r\n\tif ( dataUser.hasData( src ) ) {\r\n\t\tudataOld = dataUser.access( src );\r\n\t\tudataCur = jQuery.extend( {}, udataOld );\r\n\r\n\t\tdataUser.set( dest, udataCur );\r\n\t}\r\n}\r\n\r\n// Fix IE bugs, see support tests\r\nfunction fixInput( src, dest ) {\r\n\tvar nodeName = dest.nodeName.toLowerCase();\r\n\r\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\r\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\r\n\t\tdest.checked = src.checked;\r\n\r\n\t// Fails to return the selected option to the default selected state when cloning options\r\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\r\n\t\tdest.defaultValue = src.defaultValue;\r\n\t}\r\n}\r\n\r\nfunction domManip( collection, args, callback, ignored ) {\r\n\r\n\t// Flatten any nested arrays\r\n\targs = concat.apply( [], args );\r\n\r\n\tvar fragment, first, scripts, hasScripts, node, doc,\r\n\t\ti = 0,\r\n\t\tl = collection.length,\r\n\t\tiNoClone = l - 1,\r\n\t\tvalue = args[ 0 ],\r\n\t\tisFunction = jQuery.isFunction( value );\r\n\r\n\t// We can't cloneNode fragments that contain checked, in WebKit\r\n\tif ( isFunction ||\r\n\t\t\t( l > 1 && typeof value === \"string\" &&\r\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\r\n\t\treturn collection.each( function( index ) {\r\n\t\t\tvar self = collection.eq( index );\r\n\t\t\tif ( isFunction ) {\r\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\r\n\t\t\t}\r\n\t\t\tdomManip( self, args, callback, ignored );\r\n\t\t} );\r\n\t}\r\n\r\n\tif ( l ) {\r\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\r\n\t\tfirst = fragment.firstChild;\r\n\r\n\t\tif ( fragment.childNodes.length === 1 ) {\r\n\t\t\tfragment = first;\r\n\t\t}\r\n\r\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\r\n\t\tif ( first || ignored ) {\r\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\r\n\t\t\thasScripts = scripts.length;\r\n\r\n\t\t\t// Use the original fragment for the last item\r\n\t\t\t// instead of the first because it can end up\r\n\t\t\t// being emptied incorrectly in certain situations (#8070).\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tnode = fragment;\r\n\r\n\t\t\t\tif ( i !== iNoClone ) {\r\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\r\n\r\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\r\n\t\t\t\t\tif ( hasScripts ) {\r\n\r\n\t\t\t\t\t\t// Support: Android<4.1, PhantomJS<2\r\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcallback.call( collection[ i ], node, i );\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasScripts ) {\r\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\r\n\r\n\t\t\t\t// Reenable scripts\r\n\t\t\t\tjQuery.map( scripts, restoreScript );\r\n\r\n\t\t\t\t// Evaluate executable scripts on first document insertion\r\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\r\n\t\t\t\t\tnode = scripts[ i ];\r\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\r\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\r\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\r\n\r\n\t\t\t\t\t\tif ( node.src ) {\r\n\r\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\r\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\r\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn collection;\r\n}\r\n\r\nfunction remove( elem, selector, keepData ) {\r\n\tvar node,\r\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\r\n\t\ti = 0;\r\n\r\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\r\n\t\tif ( !keepData && node.nodeType === 1 ) {\r\n\t\t\tjQuery.cleanData( getAll( node ) );\r\n\t\t}\r\n\r\n\t\tif ( node.parentNode ) {\r\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\r\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\r\n\t\t\t}\r\n\t\t\tnode.parentNode.removeChild( node );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\njQuery.extend( {\r\n\thtmlPrefilter: function( html ) {\r\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\r\n\t},\r\n\r\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\r\n\t\tvar i, l, srcElements, destElements,\r\n\t\t\tclone = elem.cloneNode( true ),\r\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\t// Fix IE cloning issues\r\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\r\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\r\n\r\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\r\n\t\t\tdestElements = getAll( clone );\r\n\t\t\tsrcElements = getAll( elem );\r\n\r\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\r\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy the events from the original to the clone\r\n\t\tif ( dataAndEvents ) {\r\n\t\t\tif ( deepDataAndEvents ) {\r\n\t\t\t\tsrcElements = srcElements || getAll( elem );\r\n\t\t\t\tdestElements = destElements || getAll( clone );\r\n\r\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\r\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcloneCopyEvent( elem, clone );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tdestElements = getAll( clone, \"script\" );\r\n\t\tif ( destElements.length > 0 ) {\r\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\r\n\t\t}\r\n\r\n\t\t// Return the cloned set\r\n\t\treturn clone;\r\n\t},\r\n\r\n\tcleanData: function( elems ) {\r\n\t\tvar data, elem, type,\r\n\t\t\tspecial = jQuery.event.special,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\r\n\t\t\tif ( acceptData( elem ) ) {\r\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\r\n\t\t\t\t\tif ( data.events ) {\r\n\t\t\t\t\t\tfor ( type in data.events ) {\r\n\t\t\t\t\t\t\tif ( special[ type ] ) {\r\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\r\n\r\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Support: Chrome <= 35-45+\r\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\r\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\r\n\t\t\t\t}\r\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\r\n\r\n\t\t\t\t\t// Support: Chrome <= 35-45+\r\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\r\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\r\n\t// Keep domManip exposed until 3.0 (gh-2225)\r\n\tdomManip: domManip,\r\n\r\n\tdetach: function( selector ) {\r\n\t\treturn remove( this, selector, true );\r\n\t},\r\n\r\n\tremove: function( selector ) {\r\n\t\treturn remove( this, selector );\r\n\t},\r\n\r\n\ttext: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\treturn value === undefined ?\r\n\t\t\t\tjQuery.text( this ) :\r\n\t\t\t\tthis.empty().each( function() {\r\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\t\t\tthis.textContent = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\tappend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.appendChild( elem );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tprepend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tbefore: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tafter: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tempty: function() {\r\n\t\tvar elem,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\r\n\t\t\tif ( elem.nodeType === 1 ) {\r\n\r\n\t\t\t\t// Prevent memory leaks\r\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\r\n\t\t\t\t// Remove any remaining nodes\r\n\t\t\t\telem.textContent = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\r\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\r\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\r\n\r\n\t\treturn this.map( function() {\r\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\r\n\t\t} );\r\n\t},\r\n\r\n\thtml: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\tvar elem = this[ 0 ] || {},\r\n\t\t\t\ti = 0,\r\n\t\t\t\tl = this.length;\r\n\r\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\r\n\t\t\t\treturn elem.innerHTML;\r\n\t\t\t}\r\n\r\n\t\t\t// See if we can take a shortcut and just use innerHTML\r\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\r\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\r\n\r\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\t\t\telem = this[ i ] || {};\r\n\r\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t\t\t\t\telem.innerHTML = value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telem = 0;\r\n\r\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\r\n\t\t\t\t} catch ( e ) {}\r\n\t\t\t}\r\n\r\n\t\t\tif ( elem ) {\r\n\t\t\t\tthis.empty().append( value );\r\n\t\t\t}\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\treplaceWith: function() {\r\n\t\tvar ignored = [];\r\n\r\n\t\t// Make the changes, replacing each non-ignored context element with the new content\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tvar parent = this.parentNode;\r\n\r\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( this ) );\r\n\t\t\t\tif ( parent ) {\r\n\t\t\t\t\tparent.replaceChild( elem, this );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Force callback invocation\r\n\t\t}, ignored );\r\n\t}\r\n} );\r\n\r\njQuery.each( {\r\n\tappendTo: \"append\",\r\n\tprependTo: \"prepend\",\r\n\tinsertBefore: \"before\",\r\n\tinsertAfter: \"after\",\r\n\treplaceAll: \"replaceWith\"\r\n}, function( name, original ) {\r\n\tjQuery.fn[ name ] = function( selector ) {\r\n\t\tvar elems,\r\n\t\t\tret = [],\r\n\t\t\tinsert = jQuery( selector ),\r\n\t\t\tlast = insert.length - 1,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; i <= last; i++ ) {\r\n\t\t\telems = i === last ? this : this.clone( true );\r\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\r\n\r\n\t\t\t// Support: QtWebKit\r\n\t\t\t// .get() because push.apply(_, arraylike) throws\r\n\t\t\tpush.apply( ret, elems.get() );\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\n\r\n\r\nvar iframe,\r\n\telemdisplay = {\r\n\r\n\t\t// Support: Firefox\r\n\t\t// We have to pre-define these values for FF (#10227)\r\n\t\tHTML: \"block\",\r\n\t\tBODY: \"block\"\r\n\t};\r\n\r\n/**\r\n * Retrieve the actual display of a element\r\n * @param {String} name nodeName of the element\r\n * @param {Object} doc Document object\r\n */\r\n\r\n// Called only from within defaultDisplay\r\nfunction actualDisplay( name, doc ) {\r\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\r\n\r\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\r\n\r\n\t// We don't have any data stored on the element,\r\n\t// so use \"detach\" method as fast way to get rid of the element\r\n\telem.detach();\r\n\r\n\treturn display;\r\n}\r\n\r\n/**\r\n * Try to determine the default display value of an element\r\n * @param {String} nodeName\r\n */\r\nfunction defaultDisplay( nodeName ) {\r\n\tvar doc = document,\r\n\t\tdisplay = elemdisplay[ nodeName ];\r\n\r\n\tif ( !display ) {\r\n\t\tdisplay = actualDisplay( nodeName, doc );\r\n\r\n\t\t// If the simple way fails, read from inside an iframe\r\n\t\tif ( display === \"none\" || !display ) {\r\n\r\n\t\t\t// Use the already-created iframe if possible\r\n\t\t\tiframe = ( iframe || jQuery( \"